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 1/6] =?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 ) + \ No newline at end of file From 2e20af061ed5e1b19ab1c571991da06f000c6732 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 17 Apr 2024 15:19:01 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=8E=BB=E9=99=A4?= =?UTF-8?q?=E5=BF=85=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/service/worklog/LogStatisticsServiceImpl.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java index b5b75bc2..bfa6eab7 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/worklog/LogStatisticsServiceImpl.java @@ -335,7 +335,10 @@ public class LogStatisticsServiceImpl implements LogStatisticsService { @Override public List getNeedWriteHistory(NeedWriteHistoryDTO dto) { - List dateList = DateUtils.betweenDayList(dto.getBeginTime(), dto.getEndTime()); + List dateList = new ArrayList<>(); + if (dto.getBeginTime() != null && dto.getEndTime() != null) { + dateList = DateUtils.betweenDayList(dto.getBeginTime(), dto.getEndTime()); + } dto.setUserId(SecurityFrameworkUtils.getLoginUserId()); // 这里将区间转换为具体的日期 因为mysql BETWEEN 会导致索引失效 return logStatisticsMapper.getNeedWriteHistory(dto, dateList); From 7dc595508d8b8efd3b8f3f7dc5508d4cdbe9ffdc Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 17 Apr 2024 16:37:36 +0800 Subject: [PATCH 4/6] =?UTF-8?q?sql=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/worklog/LogStatisticsMapper.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml index 8c1c0aa7..01762795 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml +++ b/yudao-module-system/yudao-module-system-biz/src/main/resources/mapper/worklog/LogStatisticsMapper.xml @@ -137,7 +137,7 @@ - AND b.type = #{dto.type} + AND a.type = #{dto.type} From 1321f78cc20ec86bb29dbc1f0533bd73fe47ff99 Mon Sep 17 00:00:00 2001 From: aikai Date: Wed, 17 Apr 2024 16:52:37 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/worklog/dto/statistics/NeedWriteHistoryDTO.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java index 45bb2f55..dfdae276 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/worklog/dto/statistics/NeedWriteHistoryDTO.java @@ -19,8 +19,8 @@ public class NeedWriteHistoryDTO { private Integer type; @Schema(description = "开始时间 格式yyyy-MM-dd") - @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) - @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY) + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY, timezone = TIME_ZONE_DEFAULT) private Date beginTime; @Schema(description = "结束时间 格式yyyy-MM-dd") From b731f509a954a515687838020be714a2f796204b Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Wed, 17 Apr 2024 18:30:34 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=97=A5=E5=BF=97=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=E5=AD=97=E6=AE=B5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/worklog/vo/loginstance/LogInstancePageReqVO.java | 4 ++-- .../src/main/resources/mapper/worklog/LogInstanceMapper.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) 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 c97a8fb8..65878d4f 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 @@ -39,6 +39,6 @@ public class LogInstancePageReqVO extends PageParam { @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; - @Schema(description = "未读", example = "0") - private Integer unRead; + @Schema(description = "已读、未读 | 0:未读、1:已读", example = "0") + private Integer readStatus; } \ No newline at end of file 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 072fb52a..f6548b3e 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 @@ -115,8 +115,8 @@ and a.create_time <= #{reqVO.createTime[1]} - - and e.read_status = 0 + + and e.read_status = #{reqVO.readStatus} and a.start_user_id != #{userId}