diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java index 25d2684..5de6b67 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/config/LoginInterceptor.java @@ -25,6 +25,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; +import java.util.Optional; @Component @Slf4j @@ -107,9 +108,11 @@ public class LoginInterceptor implements HandlerInterceptor { UserOperation userOperation = ((HandlerMethod) handler).getMethod().getAnnotation(UserOperation.class); String reqArgs = UserThreadLocal.getReqArgs(); + UserLoginInfo user = Optional.of(UserThreadLocal.getUser()).orElse(new UserLoginInfo()); + UserAccessLog userAccessLog = UserAccessLog.builder() .id(IdWorker.getSnowFlakeIdString()) - .userId(UserThreadLocal.getUserId()) + .userId(user.getUserId()) .accessStartTime(DateUtil.date(accessStartTime)) .accessEndTime(DateUtil.date(accessEndTime)) .accessDuration(accessEndTime - accessStartTime) @@ -122,9 +125,11 @@ public class LoginInterceptor implements HandlerInterceptor { .createTime(new Date()) .operationModule(userOperation.modelName().key) .operationMsg(UserThreadLocal.getUser().getSuccessMsg()) + .dataId(user.getDataId()) + .parentId(user.getParentId()) .build(); - ElectromagneticResult result = UserThreadLocal.getResult(); + ElectromagneticResult result = user.getResult(); if (result != null) { if (!result.getSuccess()) { userAccessLog.setAccessSuccess(false); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AccessLogController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AccessLogController.java index 45279ff..fffbe27 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AccessLogController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/AccessLogController.java @@ -1,11 +1,39 @@ package com.electromagnetic.industry.software.manage.controller; +import cn.hutool.core.lang.Assert; +import com.electromagnetic.industry.software.common.annotations.UserOperation; +import com.electromagnetic.industry.software.common.enums.AdminTypeEnum; +import com.electromagnetic.industry.software.common.enums.UserOperationModuleEnum; +import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; +import com.electromagnetic.industry.software.common.util.UserThreadLocal; +import com.electromagnetic.industry.software.manage.pojo.req.AccessLogQueryDTO; +import com.electromagnetic.industry.software.manage.service.UserAccessLogService; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + @RestController +@RequestMapping("/data/ed/log/") public class AccessLogController { + @Resource + private UserAccessLogService userAccessLogService; + @UserOperation(value = "查看操作记录", modelName = UserOperationModuleEnum.LOG) + @RequestMapping("file") + public ElectromagneticResult file(@RequestBody AccessLogQueryDTO accessLogQueryDTO) { + return userAccessLogService.info(accessLogQueryDTO, false); + } + + + @UserOperation(value = "查看审计", modelName = UserOperationModuleEnum.LOG) + @RequestMapping("audit") + public ElectromagneticResult audit(@RequestBody AccessLogQueryDTO accessLogQueryDTO) { + Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.AUDIT.getValue()), "当前用户没有查看审计的权限"); + return userAccessLogService.info(accessLogQueryDTO, true); + } } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java index 5291757..adcd93c 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/EdFileInfoController.java @@ -161,8 +161,4 @@ public class EdFileInfoController { return edFileInfoService.preview(id, response, DataOwnEnum.COMMON.code); } - - - - } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/RespPageVO.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/RespPageVO.java index b723ae8..c1cab80 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/RespPageVO.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/pojo/resp/RespPageVO.java @@ -11,12 +11,12 @@ import java.util.List; public class RespPageVO implements Serializable { private static final long serialVersionUID = 1L; - private List list; + private List records; private long total; - public RespPageVO(long total, List list) { - this.list = list; + public RespPageVO(long total, List records) { + this.records = records; this.total = total; } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java index 2241ba6..0ab151d 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/EdFileInfoServiceImpl.java @@ -1251,20 +1251,32 @@ public class EdFileInfoServiceImpl extends ServiceImpl logs = this.baseMapper.selectPage(new Page<>(pars.getPageNum(), pars.getPageSize()), queryWrapper); List records = logs.getRecords(); List res = BeanUtil.copyToList(records, AccessLogQueryVO.class); - setUserName(res); + setOtherInfo(res); return ElectromagneticResultUtil.success(new RespPageVO<>(logs.getTotal(), res)); } - private void setUserName(List res) { + private void setOtherInfo(List res) { List userIds = res.stream().map(AccessLogQueryVO::getUserId).collect(Collectors.toList()); LambdaQueryWrapper wrapper = Wrappers.lambdaQuery(User.class).select(User::getUserId, User::getUserName).in(User::getUserId, userIds); Map idNameMap = userMapper.selectList(wrapper).stream().collect(Collectors.toMap(User::getUserId, User::getUserName)); - res.forEach(e -> e.setUsername(idNameMap.get(e.getUserId()))); + + res.forEach(e -> { + e.setUsername(idNameMap.get(e.getUserId())); + e.setOperationModule(UserOperationModuleEnum.getDesc(e.getOperationModule())); + }); + } } diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java index 7ec9525..401c133 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/enums/UserOperationModuleEnum.java @@ -2,6 +2,8 @@ package com.electromagnetic.industry.software.common.enums; import lombok.AllArgsConstructor; +import java.util.Objects; + @AllArgsConstructor public enum UserOperationModuleEnum { @@ -11,9 +13,20 @@ public enum UserOperationModuleEnum { USER("user", "人员管理"), USER_PRJ("userPrj", "个人数据"), TAG("tag","标签管理"), + LOG("log", "操作记录审计"), PERMISSION("permission", "权限管理"); public final String key; public final String desc; + + public static String getDesc(String key) { + for (UserOperationModuleEnum e : UserOperationModuleEnum.values()) { + if (Objects.equals(e.key, key)) { + return e.desc; + } + } + return ""; + } + }