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 260ab04..f39785e 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 @@ -6,6 +6,7 @@ import cn.hutool.json.JSONUtil; import com.electromagnetic.industry.software.common.annotations.UserOperation; import com.electromagnetic.industry.software.common.cons.UserConstants; import com.electromagnetic.industry.software.common.enums.AdminTypeEnum; +import com.electromagnetic.industry.software.common.pojo.AccessSuccessInfo; import com.electromagnetic.industry.software.common.pojo.UserLoginInfo; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import com.electromagnetic.industry.software.common.util.IdWorker; @@ -26,6 +27,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Date; +import java.util.List; import java.util.Optional; @Component @@ -134,37 +136,40 @@ public class LoginInterceptor implements HandlerInterceptor { String reqArgs = UserThreadLocal.getReqArgs(); UserLoginInfo user = Optional.of(UserThreadLocal.getUser()).orElse(new UserLoginInfo()); + List successInfoList = user.getSuccessInfoList(); + for (AccessSuccessInfo accessSuccessInfo : successInfoList) { + UserAccessLog userAccessLog = new UserAccessLog() + .setId(IdWorker.getSnowFlakeIdString()) + .setUserId(user.getUserId()) + .setAccessStartTime(DateUtil.date(accessStartTime)) + .setAccessEndTime(DateUtil.date(accessEndTime)) + .setAccessDuration(accessEndTime - accessStartTime) + .setAction(userOperation.value()) + .setRequestUrl(request.getRequestURL().toString()) + .setRequestIp(parseIpFromUrl(request.getRequestURL().toString())) + .setReqArgs(reqArgs) + .setRemoteAddr(getRealIp(request)) + .setAccessSuccess(true) + .setCreateTime(new Date()) + .setOperationModule(userOperation.modelName().key) + .setOperationMsg(accessSuccessInfo.getSuccessMsg()) + .setDataId(accessSuccessInfo.getDataId()) + .setParentId(accessSuccessInfo.getParentId()); - UserAccessLog userAccessLog = new UserAccessLog() - .setId(IdWorker.getSnowFlakeIdString()) - .setUserId(user.getUserId()) - .setAccessStartTime(DateUtil.date(accessStartTime)) - .setAccessEndTime(DateUtil.date(accessEndTime)) - .setAccessDuration(accessEndTime - accessStartTime) - .setAction(userOperation.value()) - .setRequestUrl(request.getRequestURL().toString()) - .setRequestIp(parseIpFromUrl(request.getRequestURL().toString())) - .setReqArgs(reqArgs) - .setRemoteAddr(getRealIp(request)) - .setAccessSuccess(true) - .setCreateTime(new Date()) - .setOperationModule(userOperation.modelName().key) - .setOperationMsg(UserThreadLocal.getUser().getSuccessMsg()) - .setDataId(user.getDataId()) - .setParentId(user.getParentId()); - - ElectromagneticResult result = user.getResult(); - if (result != null) { - userAccessLog.setResponse(JSONUtil.toJsonStr(result)); - if (!result.getSuccess()) { + ElectromagneticResult result = user.getResult(); + if (result != null) { + userAccessLog.setResponse(JSONUtil.toJsonStr(result)); + if (!result.getSuccess()) { + userAccessLog.setAccessSuccess(false); + userAccessLog.setOperationMsg(result.getErrorMessage()); + userAccessLog.setExceptionDetail(UserThreadLocal.getUser().getExceptionDetail()); + } + } else { // 返回为ResponseEntity,且状态为失败。 userAccessLog.setAccessSuccess(false); - userAccessLog.setOperationMsg(result.getErrorMessage()); - userAccessLog.setExceptionDetail(UserThreadLocal.getUser().getExceptionDetail()); } - } else { // 返回为ResponseEntity,且状态为失败。 - userAccessLog.setAccessSuccess(false); + userAccessLogMapper.insert(userAccessLog); } - userAccessLogMapper.insert(userAccessLog); + UserThreadLocal.remove(); } diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/FileRecycleController.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/FileRecycleController.java index 20aeced..a92ecae 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/FileRecycleController.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/controller/FileRecycleController.java @@ -23,20 +23,20 @@ public class FileRecycleController { private FileRecycleService fileRecycleService; @RequestMapping("list") - @UserOperation(value = "查看回收站", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE) + @UserOperation(value = "查看回收站", modelName = UserOperationModuleEnum.BACKUP_FILE) public ElectromagneticResult list(@RequestBody RecycleFileQueryDTO pars) { return fileRecycleService.list(pars); } @RequestMapping("remove") - @UserOperation(value = "彻底清除文件", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE) + @UserOperation(value = "彻底清除文件", modelName = UserOperationModuleEnum.BACKUP_FILE) public ElectromagneticResult remove(@RequestParam String fileId) { Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue()), "当前用户没有删除文件权限"); return fileRecycleService.remove(fileId); } @RequestMapping("recover") - @UserOperation(value = "文件恢复", modelName = UserOperationModuleEnum.SYS_PRJ_DATABASE) + @UserOperation(value = "文件恢复", modelName = UserOperationModuleEnum.BACKUP_FILE) public ElectromagneticResult recover(@RequestParam String fileId) { Assert.isTrue(UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue()), "当前用户没有文件恢复权限"); return fileRecycleService.recover(fileId); diff --git a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java index a30723d..c989c26 100644 --- a/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java +++ b/electrmangnetic/src/main/java/com/electromagnetic/industry/software/manage/service/serviceimpl/FileRecycleServiceImpl.java @@ -34,9 +34,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.File; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; @Service @@ -98,10 +96,12 @@ public class FileRecycleServiceImpl implements FileRecycleService { } if (!UserThreadLocal.getAdminType().equals(AdminTypeEnum.SYSTEM.getValue())) { - List ids = edFileInfoMapper.selectList(Wrappers.lambdaQuery().select(EdFileInfo::getId).eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_FILE.code)) - .stream() - .map(EdFileInfo::getId) - .collect(Collectors.toList()); + LambdaQueryWrapper userPrjWrapper = Wrappers.lambdaQuery().select(EdFileInfo::getId, EdFileInfo::getFileCode) + .eq(EdFileInfo::getDataOwn, DataOwnEnum.USER_FILE.code) + .eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) + .eq(EdFileInfo::getAllDeleted, true) + .eq(EdFileInfo::getPermanentDeleted, false); + List ids = edFileInfoMapper.selectList(userPrjWrapper).stream().map(EdFileInfo::getFileCode).map(e -> e.substring(0, 6)).collect(Collectors.toList()); List accessibleTree = permissionService.getAccessibleTree(); accessibleTree.addAll(ids); if (CollUtil.isNotEmpty(accessibleTree)) { @@ -133,7 +133,7 @@ public class FileRecycleServiceImpl implements FileRecycleService { .set(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code) .set(EdFileInfo::getPermanentDeleted, true) .set(EdFileInfo::getAllDeleted, true)); - UserThreadLocal.setSuccessInfo("", "", "删除文件 {} 成功,文件id {}", edFileInfos.get(0).getFileName() + "." + edFileInfos.get(0).getFileType(), fileId); + UserThreadLocal.setSuccessInfo(edFileInfo.getParentId(), edFileInfo.getId(), "删除文件 {} 成功,文件id {}", edFileInfos.get(0).getFileName() + "." + edFileInfos.get(0).getFileType(), fileId); BackupFileResLog resLog = backupHandler.deleteFile(edFileInfo.getId()); if (!Optional.ofNullable(resLog).map(BackupFileResLog::getBackupSuccess).orElse(false)) { log.warn("删除备份文件异常"); diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/AccessSuccessInfo.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/AccessSuccessInfo.java new file mode 100644 index 0000000..e5668e5 --- /dev/null +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/AccessSuccessInfo.java @@ -0,0 +1,14 @@ +package com.electromagnetic.industry.software.common.pojo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class AccessSuccessInfo { + private String successMsg; + private String dataId; + private String parentId; +} diff --git a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/UserLoginInfo.java b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/UserLoginInfo.java index 5d4bb82..c147908 100644 --- a/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/UserLoginInfo.java +++ b/electromagnetic-common/src/main/java/com/electromagnetic/industry/software/common/pojo/UserLoginInfo.java @@ -3,6 +3,9 @@ package com.electromagnetic.industry.software.common.pojo; import com.electromagnetic.industry.software.common.resp.ElectromagneticResult; import lombok.Data; +import java.util.ArrayList; +import java.util.List; + @Data public class UserLoginInfo { @@ -54,10 +57,11 @@ public class UserLoginInfo { private String dataId; + private List successInfoList = new ArrayList<>(); + public void setSuccessInfo(String parentId, String successMsg, String dataId) { - this.successMsg = successMsg; - this.dataId = dataId; - this.parentId = parentId; + AccessSuccessInfo successInfo = new AccessSuccessInfo(dataId, parentId, successMsg); + successInfoList.add(successInfo); } }