This commit is contained in:
aikai 2024-04-17 14:49:05 +08:00
commit 3d2d5df62c
7 changed files with 39 additions and 38 deletions

View File

@ -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<Map<String, Object>> readUserVO = new ArrayList<>();
//获取可查看者用户列表
Map<Integer, List<Long>> usrMap = logReadService.getUserId(logId);
//获取未读用户详情
List<UserRespVO> unReadUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(0)), UserRespVO.class);
//获取已读用户详情
List<UserRespVO> readUserInfo = BeanUtils.toBean(adminUserService.getUserList(usrMap.get(1)), UserRespVO.class);
Map<String, Object> unReadMap = new HashMap<>();

View File

@ -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;

View File

@ -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;
/**
* 日志名称
*/

View File

@ -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;
@ -39,12 +40,10 @@ public interface LogInstanceMapper extends BaseMapperX<LogInstanceDO> {
}
IPage<LogInstanceRespVO> selectPageResult(@Param("page") Page<LogInstanceRespVO> page, @Param("reqVO") LogInstancePageReqVO reqVO,
@Param("userId") Long userId, @Param("pagingType") Integer pagingType, @Param("logId") Long logId);
@Param("userId") Long userId, @Param("pagingType") Integer pagingType);
LogInstanceRespVO selectPageResult(@Param("reqVO") LogInstancePageReqVO reqVO, @Param("userId") Long userId,
@Param("pagingType") Integer pagingType, @Param("logId") Long logId);
List<LogReadUserRespDTO> selectRaedUser(Long deptId);
@DataPermission(enable = false)
List<LogReadUserRespDTO> selectRaedUser(@Param("userId")Long userId, @Param("deptId")Long deptId);
/**
* 获取上一篇下一篇

View File

@ -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());
//设置日志名称
@ -136,7 +133,17 @@ public class LogInstanceServiceImpl implements LogInstanceService {
//创建日志时查询可以查看发起人日志的用户组 用线程控制
new Thread(() -> {
List<LogReadUserRespDTO> respDTOS = logInstanceMapper.selectRaedUser(adminUserDO.getDeptId());
List<LogReadUserRespDTO> 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();
@ -214,17 +221,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<LogInstanceRespVO> getLogInstancePage(LogInstancePageReqVO pageReqVO, Integer pagingType) {
Page<LogInstanceRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType, null);
IPage<LogInstanceRespVO> pageList = logInstanceMapper.selectPageResult(page, pageReqVO, getLoginUserId(), pagingType);
List<LogInstanceRespVO> records = pageList.getRecords();
if (!records.isEmpty()) {

View File

@ -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());

View File

@ -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 )
</select>
<select id="selectPageResult" resultType="cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.LogInstanceRespVO">
@ -97,9 +98,6 @@
LEFT JOIN (SELECT log_instance_id, COUNT(log_instance_id) AS unReadCount FROM work_log_read where read_status = 0 GROUP BY log_instance_id ) AS d ON a.id = d.log_instance_id
LEFT JOIN (SELECT work_log_id, COUNT(work_log_id) AS comment FROM work_log_comment GROUP BY work_log_id) AS b ON a.id = b.work_log_id
<where>
<if test="logId != null">
and a.id = #{logId}
</if>
<if test="reqVO.type != null">
and a.type = #{reqVO.type}
</if>