|
|
@@ -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,7 +14,9 @@ import cc.iotkit.data.system.ISysOperLogData;
|
|
|
import cc.iotkit.data.util.PageBuilder;
|
|
|
import cc.iotkit.data.util.PredicateBuilder;
|
|
|
import cc.iotkit.model.system.SysOperLog;
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.util.ArrayUtil;
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.querydsl.core.types.Predicate;
|
|
|
import com.querydsl.jpa.impl.JPAQueryFactory;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
@@ -19,8 +24,11 @@ import org.springframework.context.annotation.Primary;
|
|
|
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.QTbSysOperLog.tbSysOperLog;
|
|
|
|
|
|
@@ -86,12 +94,31 @@ public class SysOperLogDataImpl implements ISysOperLogData, IJPACommData<SysOper
|
|
|
}
|
|
|
|
|
|
private Predicate buildQueryCondition(SysOperLog data) {
|
|
|
- return PredicateBuilder.instance()
|
|
|
+ PredicateBuilder predicateBuilder = PredicateBuilder.instance()
|
|
|
.and(StringUtils.isNotBlank(data.getTitle()), () -> tbSysOperLog.title.like(data.getTitle()))
|
|
|
.and(data.getBusinessType() != null && data.getBusinessType() > 0, () -> tbSysOperLog.businessType.eq(data.getBusinessType()))
|
|
|
.and(ArrayUtil.isNotEmpty(data.getBusinessTypes()), () -> tbSysOperLog.businessType.in(Arrays.asList(data.getBusinessTypes())))
|
|
|
.and(data.getStatus() != null && data.getStatus() > 0, () -> tbSysOperLog.status.eq(data.getStatus()))
|
|
|
- .and(StringUtils.isNotBlank(data.getOperName()), () -> tbSysOperLog.operName.like(data.getOperName()))
|
|
|
- .build();
|
|
|
+ .and(StringUtils.isNotBlank(data.getOperName()), () -> tbSysOperLog.operName.like(data.getOperName()));
|
|
|
+ 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),()->tbSysOperLog.createDept.in(finalDeptList));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|