|
|
@@ -2,6 +2,9 @@ package cc.iotkit.data.service;
|
|
|
|
|
|
import cc.iotkit.common.api.PageRequest;
|
|
|
import cc.iotkit.common.api.Paging;
|
|
|
+import cc.iotkit.common.constant.GlobalConstants;
|
|
|
+import cc.iotkit.common.redis.utils.RedisUtils;
|
|
|
+import cc.iotkit.common.satoken.utils.LoginHelper;
|
|
|
import cc.iotkit.common.utils.MapstructUtils;
|
|
|
import cc.iotkit.common.utils.StringUtils;
|
|
|
import cc.iotkit.data.dao.IJPACommData;
|
|
|
@@ -11,6 +14,8 @@ import cc.iotkit.data.system.ISysLogininforData;
|
|
|
import cc.iotkit.data.util.PageBuilder;
|
|
|
import cc.iotkit.data.util.PredicateBuilder;
|
|
|
import cc.iotkit.model.system.SysLoginInfo;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.querydsl.core.types.Predicate;
|
|
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -19,8 +24,13 @@ import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.jpa.repository.JpaRepository;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
+import static cc.iotkit.data.model.QTbSysDept.tbSysDept;
|
|
|
import static cc.iotkit.data.model.QTbSysLogininfor.tbSysLogininfor;
|
|
|
|
|
|
/**
|
|
|
@@ -66,11 +76,31 @@ public class SysLogininfoDataImpl implements ISysLogininforData, IJPACommData<Sy
|
|
|
}
|
|
|
|
|
|
private static Predicate genPredicate(SysLoginInfo data) {
|
|
|
- return PredicateBuilder.instance()
|
|
|
+ PredicateBuilder predicateBuilder = PredicateBuilder.instance()
|
|
|
+// .and(StringUtils.isNotBlank(LoginHelper.getTenantId()),()->tbSysLogininfor.tenantId.eq(LoginHelper.getTenantId()))
|
|
|
.and(StringUtils.isNotBlank(data.getIpaddr()), () -> tbSysLogininfor.ipaddr.like(data.getIpaddr()))
|
|
|
.and(StringUtils.isNotBlank(data.getStatus()), () -> tbSysLogininfor.status.eq(data.getStatus()))
|
|
|
- .and(StringUtils.isNotBlank(data.getUserName()), () -> tbSysLogininfor.userName.like(data.getUserName()))
|
|
|
- .build();
|
|
|
+ .and(StringUtils.isNotBlank(data.getUserName()), () -> tbSysLogininfor.userName.like(data.getUserName()));
|
|
|
+ //增加数据权限
|
|
|
+ checkDataPermission(predicateBuilder, LoginHelper.getTenantId());
|
|
|
+ return predicateBuilder.build();
|
|
|
+ }
|
|
|
+
|
|
|
+ private static void checkDataPermission(PredicateBuilder predicateBuilder, String tenantId){
|
|
|
+ Long deptId = LoginHelper.getDeptId();
|
|
|
+ List<Long> deptList = new ArrayList<>();
|
|
|
+ if(ObjectUtil.isNotNull(deptId)){
|
|
|
+ String ChildDept = RedisUtils.getCacheObject(GlobalConstants.DEPT_CHILD_PREFIX+tenantId+":"+LoginHelper.getDeptId());
|
|
|
+ if(StringUtils.isNotEmpty(ChildDept)){
|
|
|
+ deptList= Arrays.stream(StringUtils.split(ChildDept,",")).map(Long::parseLong).collect(Collectors.toList());
|
|
|
+ deptList.add(LoginHelper.getDeptId());
|
|
|
+ }else{
|
|
|
+ deptList = Collections.singletonList(LoginHelper.getDeptId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Long> finalDeptList = deptList;
|
|
|
+ predicateBuilder.and(CollectionUtil.isNotEmpty(deptList),()->tbSysLogininfor.createDept.in(finalDeptList));
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -89,4 +119,6 @@ public class SysLogininfoDataImpl implements ISysLogininforData, IJPACommData<Sy
|
|
|
logininfoRepository.deleteAll();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
}
|