From c3ec0952127956fc2f90500126d52ed154e98ddd Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 26 Sep 2024 19:12:03 +0800 Subject: [PATCH] =?UTF-8?q?commit=20message:```=20=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97=E7=9A=84?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E6=9F=A5=E8=AF=A2=E5=92=8C=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 对系统日志模块的日志查询功能进行了优化,通过动态SQL查询条件实现更灵活的数据权限管理。同时,通过调用配置API,实现了对日志查询角色配置的可配置化,增强了系统的灵活性和可维护性。 ``` --- .../yudao/module/infra/api/config/ConfigApiImpl.java | 6 +----- .../system/dal/mysql/worklog/LogInstanceMapper.java | 3 ++- .../framework/rpc/config/RpcConfiguration.java | 3 ++- .../service/worklog/LogInstanceServiceImpl.java | 12 +++++++++++- .../resources/mapper/worklog/LogInstanceMapper.xml | 8 ++++++-- 5 files changed, 22 insertions(+), 10 deletions(-) diff --git a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApiImpl.java b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApiImpl.java index 137655a4..68d8a15c 100644 --- a/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApiImpl.java +++ b/yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/api/config/ConfigApiImpl.java @@ -2,14 +2,12 @@ package cn.iocoder.yudao.module.infra.api.config; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO; -import cn.iocoder.yudao.module.infra.enums.ErrorCodeConstants; import cn.iocoder.yudao.module.infra.service.config.ConfigService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @RestController // 提供 RESTful API 接口,给 Feign 调用 @@ -26,9 +24,7 @@ public class ConfigApiImpl implements ConfigApi{ if (config == null) { return success(null); } - if (!config.getVisible()) { - throw exception(ErrorCodeConstants.CONFIG_GET_VALUE_ERROR_IF_VISIBLE); - } + return success(config.getValue()); } } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java index 966f338e..755b2b57 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/worklog/LogInstanceMapper.java @@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Collection; import java.util.List; /** @@ -97,7 +98,7 @@ public interface LogInstanceMapper extends BaseMapperX { @Param("userId") Long userId); @DataPermission(enable = false) - List selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId); + List selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId, @Param("roleIds")Collection roleIds); /** * 获取上一篇下一篇 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java index e34db831..f6484473 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/framework/rpc/config/RpcConfiguration.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.framework.rpc.config; import cn.iocoder.yudao.module.bpm.api.model.BpmModelApi; import cn.iocoder.yudao.module.bpm.api.oa.BpmOAEntryApi; import cn.iocoder.yudao.module.bpm.api.oa.BpmOAGoOutApi; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.infra.api.file.FileApi; import cn.iocoder.yudao.module.infra.api.websocket.WebSocketSenderApi; import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.FactoryInfoApi; @@ -10,6 +11,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(proxyBeanMethods = false) -@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, FactoryInfoApi.class, BpmModelApi.class, BpmOAGoOutApi.class, BpmOAEntryApi.class}) +@EnableFeignClients(clients = {FileApi.class, WebSocketSenderApi.class, FactoryInfoApi.class, BpmModelApi.class, BpmOAGoOutApi.class, BpmOAEntryApi.class, ConfigApi.class}) public class RpcConfiguration { } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java index 873fc912..e8c59607 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogInstanceServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.json.JSONObject; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptRespVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceNextOrUpVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; @@ -23,6 +24,7 @@ import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.mapstruct.ap.internal.util.Strings; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -73,6 +75,9 @@ public class LogInstanceServiceImpl implements LogInstanceService { @Lazy private LogStatisticsService logStatisticsService; + @Resource + private ConfigApi configApi; + @Override public Long createLogInstance(LogInstanceSaveReqVO createReqVO) { @@ -132,7 +137,12 @@ public class LogInstanceServiceImpl implements LogInstanceService { //创建日志时,查询可以查看发起人日志的用户组 用线程控制 new Thread(() -> { - List respDTOS = logInstanceMapper.selectRaedUser(userId, adminUserDO.getDeptId()); + List roleIds = Arrays.asList(1L,101L); + String roleId = configApi.getConfigKey("system_work_log_role_id").getCheckedData(); + if (Strings.isNotEmpty(roleId)) { + roleIds = Arrays.stream(roleId.split(",")).map(Long::valueOf).collect(Collectors.toList()); + } + List respDTOS = logInstanceMapper.selectRaedUser(userId, adminUserDO.getDeptId(), roleIds); //特殊情况, 日志发起人为研发部时 手动添加查看者 if (adminUserDO.getDeptId() == 128L && adminUserDO.getId() != 126L) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml index bbb92770..a2a617f7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogInstanceMapper.xml @@ -70,9 +70,13 @@ LEFT JOIN system_menu role ON a.menu_id = role.id WHERE role.permission = 'system:view-log:query' - AND a.role_id != 1 - AND a.role_id != 101 AND a.deleted = 0 + + AND a.role_id NOT IN + + #{roleId} + + ) menu LEFT JOIN system_role role on role.id = menu.role_id ) role_id ON u_role.role_id = role_id.id