lishuangjiang@potevio.com 1 год назад
Родитель
Сommit
f323564b8c

+ 5 - 0
iot-dao/iot-data-model/src/main/java/cc/iotkit/model/system/SysOperLog.java

@@ -30,6 +30,11 @@ public class SysOperLog extends BaseModel implements Id<Long>, Serializable {
      */
     private String tenantId;
 
+    /**
+     * 创建部门
+     */
+    private Long createDept;
+
     /**
      * 模块标题
      */

+ 5 - 1
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysOperLog.java

@@ -1,5 +1,6 @@
 package cc.iotkit.data.model;
 
+import cc.iotkit.common.tenant.dao.TenantAware;
 import cc.iotkit.model.system.SysOperLog;
 import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
@@ -21,7 +22,7 @@ import java.util.Date;
 @Table(name = "oper_log")
 @AutoMapper(target = SysOperLog.class)
 @ApiModel(value = "操作日志记录表")
-public class TbSysOperLog implements Serializable {
+public class TbSysOperLog extends BaseEntity implements TenantAware {
     private static final long serialVersionUID = 1L;
 
     /**
@@ -39,6 +40,9 @@ public class TbSysOperLog implements Serializable {
     @ApiModelProperty(value = "租户编号")
     private String tenantId;
 
+
+
+
     /**
      * 操作模块
      */

+ 30 - 3
iot-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysOperLogDataImpl.java

@@ -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));
+
+    }
+
 }

+ 2 - 0
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysOperLogServiceImpl.java

@@ -3,6 +3,7 @@ package cc.iotkit.system.service.impl;
 import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.log.event.OperLogEvent;
+import cc.iotkit.common.satoken.utils.LoginHelper;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.common.utils.ip.AddressUtils;
 import cc.iotkit.data.system.ISysOperLogData;
@@ -41,6 +42,7 @@ public class SysOperLogServiceImpl implements ISysOperLogService {
         SysOperLogBo operLog = MapstructUtils.convert(operLogEvent, SysOperLogBo.class);
         // 远程查询操作地点
         operLog.setOperLocation(AddressUtils.getRealAddressByIP(operLog.getOperIp()));
+        operLog.setCreateDept(LoginHelper.getDeptId());
         insertOperlog(operLog);
     }