From 9f5f1acad7471dc6dcd377e6bf595474532cff35 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Tue, 16 Apr 2024 18:26:31 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=8F=AF=E6=9F=A5=E7=9C=8B=E8=80=85=E6=9F=A5=E8=AF=A2=20=20?= =?UTF-8?q?=E5=85=B3=E9=97=AD=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E6=A0=A1?= =?UTF-8?q?=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/system/dal/mysql/worklog/LogInstanceMapper.java | 2 ++ 1 file changed, 2 insertions(+) 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 cd3dec6e..313112c8 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 @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.system.dal.mysql.worklog; +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; @@ -44,6 +45,7 @@ public interface LogInstanceMapper extends BaseMapperX { LogInstanceRespVO selectPageResult(@Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId, @Param("pagingType") Integer pagingType, @Param("logId") Long logId); + @DataPermission(enable = false) List selectRaedUser(Long deptId); /** From 24eb502c1ecc5c77f3b8b95b03a1302777ea652f Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Wed, 17 Apr 2024 11:12:40 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AF=A6=E6=83=85=20?= =?UTF-8?q?=E5=8F=91=E8=B5=B7=E4=BA=BA=E5=90=8D=E7=A7=B0=E3=80=81=E5=A4=B4?= =?UTF-8?q?=E5=83=8F=20=E6=9F=A5=E8=AF=A2=E4=BF=AE=E6=94=B9=20=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=9F=A5=E7=9C=8B=E8=80=85sql=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9D=A1=E4=BB=B6=20=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=99=A4=E6=9C=AC=E4=BA=BA=E6=84=8F=E5=A4=96=E6=89=80=E6=9C=89?= =?UTF-8?q?=E5=8F=AF=E6=9F=A5=E7=9C=8B=E8=80=85=20=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E8=80=85=E6=B7=BB=E5=8A=A0=20=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E6=83=85=E5=86=B5=EF=BC=8C=E7=A0=94=E5=8F=91=E9=83=A8?= =?UTF-8?q?=E6=97=B6=E6=89=8B=E5=8A=A8=E6=B7=BB=E5=8A=A0=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E8=80=85=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/worklog/LogInstanceController.java | 13 ++++++++++ .../vo/loginstance/LogInstancePageReqVO.java | 6 ----- .../dal/dataobject/worklog/LogInstanceDO.java | 10 -------- .../dal/mysql/worklog/LogInstanceMapper.java | 7 ++---- .../worklog/LogInstanceServiceImpl.java | 24 ++++++++++++------- .../service/worklog/LogReadServiceImpl.java | 5 ++-- .../mapper/worklog/LogInstanceMapper.xml | 10 ++++---- 7 files changed, 37 insertions(+), 38 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java index c69915ac..d2879650 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/LogInstanceController.java @@ -12,6 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.worklog.LogInstanceService; import cn.iocoder.yudao.module.system.service.worklog.LogReadService; @@ -84,7 +85,16 @@ public class LogInstanceController { //查看日志详情时,变更当前用户日志的阅读状态 logReadService.updateReadStatus(id, getLoginUserId()); + //获取日志详情 LogInstanceRespVO logInstance = logInstanceService.getLogInstance(id); + + //用户日志发起人详情 + AdminUserDO userDO = adminUserService.getUser(logInstance.getStartUserId()); + //设置日志发起人名称 + logInstance.setStartUserName(userDO.getNickname()); + //设置日志发起人头像 + logInstance.setAvatar(userDO.getAvatar()); + return success(logInstance); } @@ -145,9 +155,12 @@ public class LogInstanceController { List> readUserVO = new ArrayList<>(); + //获取可查看者用户列表 Map> usrMap = logReadService.getUserId(logId); + //获取未读用户详情 List unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class); + //获取已读用户详情 List readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class); Map unReadMap = new HashMap<>(); diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java index 92e013e2..c97a8fb8 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/vo/loginstance/LogInstancePageReqVO.java @@ -23,12 +23,6 @@ public class LogInstancePageReqVO extends PageParam { @Schema(description = "日志发起人的部门编号", example = "24292") private Long deptId; - @Schema(description = "日志发起人的用户名称", example = "张三") - private String startUserName; - - @Schema(description = "日志发起人的用户头像", example = "https://www.iocoder.cn/xxx.png") - private String avatar; - @Schema(description = "日志实例的名字", example = "张三的XX日报") private String name; diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java index 0144d16c..133d9fb6 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/worklog/LogInstanceDO.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; -import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.List; @@ -41,15 +40,6 @@ public class LogInstanceDO extends BaseDO { */ private Long deptId; - /** - * 日志发起人的用户名称 - */ - private String startUserName; - - /** - * 用户头像 - */ - private String avatar; /** * 日志名称 */ 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 313112c8..0227b550 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 @@ -40,13 +40,10 @@ public interface LogInstanceMapper extends BaseMapperX { } IPage selectPageResult(@Param("page") Page page, @Param("reqVO") LogInstancePageReqVO reqVO, - @Param("userId") Long userId, @Param("pagingType") Integer pagingType, @Param("logId") Long logId); - - LogInstanceRespVO selectPageResult(@Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId, - @Param("pagingType") Integer pagingType, @Param("logId") Long logId); + @Param("userId") Long userId, @Param("pagingType") Integer pagingType); @DataPermission(enable = false) - List selectRaedUser(Long deptId); + List selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId); /** * 获取上一篇下一篇 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 9c6b7904..9ab899a8 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 @@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstancePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO; import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceSaveReqVO; +import cn.iocoder.yudao.module.system.convert.worklog.LogInstanceConvert; import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogFormDO; @@ -100,10 +101,6 @@ public class LogInstanceServiceImpl implements LogInstanceService { logInstance.setStartUserId(userId); //设置发起人部门编号 logInstance.setDeptId(adminUserDO.getDeptId()); - //设置发起人用户名称 - logInstance.setStartUserName(adminUserDO.getNickname()); - //设置发起人用户头像 - logInstance.setAvatar(adminUserDO.getAvatar()); //设置日志类型 logInstance.setType(logRuleDO.getType()); //设置日志名称 @@ -135,7 +132,17 @@ public class LogInstanceServiceImpl implements LogInstanceService { //创建日志时,查询可以查看发起人日志的用户组 用线程控制 new Thread(() -> { - List respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId()); + List respDTOS = logInstanceMapper.selectRaedUser(userId, adminUserDO.getDeptId()); + + //特殊情况, 日志发起人为研发部时 手动添加查看者 + if (adminUserDO.getDeptId() == 128L && adminUserDO.getId() != 126L) { + + LogReadUserRespDTO dto = new LogReadUserRespDTO(); + dto.setUserId(126L); + dto.setDeptId(128L); + respDTOS.add(dto); + } + logReadService.createLogRule(respDTOS, logInstance.getId(), logInstance.getStartUserId()); }).start(); @@ -213,17 +220,18 @@ public class LogInstanceServiceImpl implements LogInstanceService { public LogInstanceRespVO getLogInstance(Long id) { //获取日志详情 - LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id); + LogInstanceDO logInstanceDO = logInstanceMapper.selectById(id); +// LogInstanceRespVO logInstanceRespVO = logInstanceMapper.selectPageResult(new LogInstancePageReqVO(), getLoginUserId(), null, id); //设置日志详情 模板内容和时间 - return setContentFun(logInstanceRespVO); + return setContentFun(LogInstanceConvert.INSTANCE.convert(logInstanceDO)); } @Override public IPage getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) { Page page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); - IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, null); + IPage pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType); List records = pageList.getRecords(); if (!records.isEmpty()) { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java index eb908e5d..0628adfb 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogReadServiceImpl.java @@ -35,10 +35,9 @@ public class LogReadServiceImpl implements LogReadService{ logReadDo.setLogInstanceId(logInstanceId); logReadDo.setStartUserId(startUserId); logReadDo.setReadUserDept(user.getDeptId()); - if (!user.getUserId().toString().equals(startUserId.toString())) { - logReadDo.setReadUserId(user.getUserId()); - } + logReadDo.setReadUserId(user.getUserId()); logReadDo.setReadStatus(0); + logReadDo.setCreator(String.valueOf(startUserId)); return logReadDo; }) .collect(Collectors.toList()); 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 254bb29c..072fb52a 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 @@ -76,11 +76,12 @@ AND read_user.data_scope != 5 ) result WHERE - 1= 1 - and ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 ) + result.user_id != #{userId} + and + ( ( LOCATE(#{deptId},result.ids) and result.data_scope = 4 ) or ( LOCATE(#{deptId},result.ids) and result.data_scope = 2 ) or ( result.dept_id = #{deptId} and result.data_scope = 3 ) - or result.data_scope = 1 + or result.data_scope = 1 )