修改 日志部门列表查询借口

This commit is contained in:
furongxin 2024-09-08 02:41:42 +08:00
parent 8f31993994
commit b5edcd0197
6 changed files with 79 additions and 10 deletions

View File

@ -13,10 +13,16 @@ 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.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
import cn.iocoder.yudao.module.system.service.permission.PermissionService;
import cn.iocoder.yudao.module.system.service.permission.RoleService;
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;
import cn.iocoder.yudao.module.system.service.worklog.LogUseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -35,6 +41,7 @@ import java.util.List;
import java.util.Map;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@ -53,6 +60,18 @@ public class LogInstanceController {
@Resource
private AdminUserService adminUserService;
@Resource
private RoleService roleService;
@Resource
private PermissionService permissionService;
@Resource
private LogUseService logUseService;
@Resource
private DeptService deptService;
@PostMapping("/create")
@Operation(summary = "创建日志实例")
@PreAuthorize("@ss.hasPermission('system:log-instance:create')")
@ -132,8 +151,19 @@ public class LogInstanceController {
@PreAuthorize("@ss.hasPermission('system:view-log:query')")
public CommonResult<List<DeptRespVO>> getReadDept() {
List<DeptRespVO> deptInfo = logInstanceService.getDeptInfo();
return success(deptInfo);
// 获得用户角色
List<RoleDO> userRoles = roleService.getRoleListFromCache(permissionService.getUserRoleIdListByUserId(getLoginUserId()));
List<String> codes = convertList(userRoles, RoleDO::getCode);
if (codes.contains("super_admin")) {
List<Long> deptIds = logUseService.getUseDeptList();
List<DeptDO> deptDOS = deptService.getDeptList(deptIds);
return success(BeanUtils.toBean(deptDOS, DeptRespVO.class));
}else {
List<DeptRespVO> deptInfo = logInstanceService.getDeptInfo();
return success(deptInfo);
}
}
@GetMapping("/get-upLog")

View File

@ -12,10 +12,7 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.loginstance.Lo
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;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogInstanceDO;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogRuleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogStatisticsDO;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.*;
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogInstanceMapper;
import cn.iocoder.yudao.module.system.enums.ErrorCodeConstants;
import cn.iocoder.yudao.module.system.service.dept.DeptService;
@ -37,6 +34,7 @@ import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
@ -304,10 +302,16 @@ public class LogInstanceServiceImpl implements LogInstanceService {
@Override
public List<DeptRespVO> getDeptInfo() {
List<LogInstanceDO> logInstanceDOS = logInstanceMapper.selectList();
List<Long> deptIds = logInstanceDOS.stream()
.map(LogInstanceDO::getDeptId) // 获取每个LogInstanceDO的 deptId
.collect(Collectors.toList()); // 收集成List
// 根据日志规则 获取当前登录用户可以查看日志的用户信息
List<LogReadDo> logInstanceIds = logReadService.getReadListByReadUserId(getLoginUserId());
List<Long> startUserIds = convertList(logInstanceIds, LogReadDo::getStartUserId);
List<AdminUserDO> adminUserDOS = adminUserService.getUserList(startUserIds);
// 获得部门信息
List<Long> deptIds = adminUserDOS.stream()
.map(AdminUserDO::getDeptId)
.distinct()
.collect(Collectors.toList());
List<DeptDO> deptDOS = deptService.getDeptList(deptIds);
return BeanUtils.toBean(deptDOS, DeptRespVO.class);

View File

@ -1,6 +1,7 @@
package cn.iocoder.yudao.module.system.service.worklog;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogReadDo;
import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO;
import javax.validation.Valid;
@ -34,4 +35,11 @@ public interface LogReadService {
* @param userId 查看者用户编号
*/
void updateReadStatus(Long logId, Long userId);
/**
* 获取当前登录用户可查看的日志列表
* @param userId 用户编号
* @return 日志列表
*/
List<LogReadDo> getReadListByReadUserId(Long userId);
}

View File

@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.worklog;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogReadDo;
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogReadMapper;
import cn.iocoder.yudao.module.system.service.worklog.dto.LogReadUserRespDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -64,4 +65,14 @@ public class LogReadServiceImpl implements LogReadService{
logReadMapper.updateReadStatus(logId, userId);
}
@Override
public List<LogReadDo> getReadListByReadUserId(Long userId) {
QueryWrapper<LogReadDo> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT start_user_id");
queryWrapper.eq("read_user_id", userId);
return logReadMapper.selectList(queryWrapper);
}
}

View File

@ -62,4 +62,9 @@ public interface LogUseService {
* @param formId 模板编号
*/
void deletByFormId(Long formId);
/**
* 获取需要填写日志的部门列表
*/
List<Long> getUseDeptList();
}

View File

@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.system.dal.dataobject.worklog.LogUseDO;
import cn.iocoder.yudao.module.system.dal.mysql.worklog.LogUseMapper;
import cn.iocoder.yudao.module.system.service.worklog.dto.LogUseSaveReqDTO;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -93,4 +94,14 @@ public class LogUseServiceImpl implements LogUseService {
logUseMapper.delete(LogUseDO::getFormId, formId);
}
@Override
public List<Long> getUseDeptList() {
QueryWrapper<LogUseDO> queryWrapper = new QueryWrapper<>();
queryWrapper.select("DISTINCT use_user_dept");
List<LogUseDO> logUseDOS = logUseMapper.selectList(queryWrapper);
return convertList(logUseDOS, LogUseDO::getUseUserDept);
}
}