Browse Source

申诉审核开发

master
luogw 1 month ago
parent
commit
8bbd777367
  1. 2
      src/main/java/com/project/appeal/controller/AppealController.java
  2. 16
      src/main/java/com/project/operation/aop/OperationLogAspect.java
  3. 29
      src/main/java/com/project/operation/domain/service/impl/description/AppealDescriptionStrategy.java
  4. 8
      src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java
  5. 5
      src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java

2
src/main/java/com/project/appeal/controller/AppealController.java

@ -5,6 +5,7 @@ import com.project.appeal.application.AppealApplication;
import com.project.appeal.domain.dto.AppealDTO; import com.project.appeal.domain.dto.AppealDTO;
import com.project.appeal.domain.param.AppealParam; import com.project.appeal.domain.param.AppealParam;
import com.project.base.domain.result.Result; import com.project.base.domain.result.Result;
import com.project.operation.annotation.OperationLog;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -20,6 +21,7 @@ public class AppealController {
private AppealApplication appealApplication; private AppealApplication appealApplication;
@PostMapping("saveOrUpdate") @PostMapping("saveOrUpdate")
@OperationLog(module = "申诉审批")
public Result<AppealDTO> saveOrUpdate(@RequestBody AppealDTO appealDTO){ public Result<AppealDTO> saveOrUpdate(@RequestBody AppealDTO appealDTO){
return appealApplication.saveOrUpdate(appealDTO); return appealApplication.saveOrUpdate(appealDTO);
} }

16
src/main/java/com/project/operation/aop/OperationLogAspect.java

@ -3,6 +3,7 @@ package com.project.operation.aop;
import com.project.base.domain.result.Result; import com.project.base.domain.result.Result;
import com.project.ding.domain.dto.LoginDTO; import com.project.ding.domain.dto.LoginDTO;
import com.project.ding.utils.JwtUtils; import com.project.ding.utils.JwtUtils;
import com.project.ding.utils.SecurityUtils;
import com.project.operation.annotation.OperationLog; import com.project.operation.annotation.OperationLog;
import com.project.operation.application.impl.OperationLogApplicationService; import com.project.operation.application.impl.OperationLogApplicationService;
import com.project.operation.domain.dto.OperationLogDTO; import com.project.operation.domain.dto.OperationLogDTO;
@ -12,14 +13,11 @@ import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut; import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature; import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
@ -90,15 +88,9 @@ public class OperationLogAspect {
operationLogDTO.setClientIp(request.getRemoteAddr()); operationLogDTO.setClientIp(request.getRemoteAddr());
// 收集登录用户ID // 收集登录用户ID
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); String userId = SecurityUtils.getUserId();
if (authentication != null && authentication.getPrincipal() != null) { if (userId != null) {
Object principal = authentication.getPrincipal(); operationLogDTO.setCreatorId(Long.parseLong(userId.toString()));
try {
Long userId = Long.parseLong(principal.toString());
operationLogDTO.setCreatorId(userId);
} catch (NumberFormatException e) {
log.warn("解析用户ID失败,principal:{}", principal, e);
}
} }
} }

29
src/main/java/com/project/operation/domain/service/impl/description/AppealDescriptionStrategy.java

@ -1,23 +1,48 @@
package com.project.operation.domain.service.impl.description; package com.project.operation.domain.service.impl.description;
import com.project.appeal.domain.dto.AppealDTO;
import com.project.appeal.domain.enums.StatusEnum;
import com.project.operation.domain.dto.OperationLogDTO; import com.project.operation.domain.dto.OperationLogDTO;
import com.project.operation.domain.enums.ModuleEnum; import com.project.operation.domain.enums.ModuleEnum;
import com.project.operation.domain.service.DescriptionStrategy; import com.project.operation.domain.service.DescriptionStrategy;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/** /**
* 申诉审批 * 申诉审批
*/ */
@Component @Component
public class AppealDescriptionStrategy implements DescriptionStrategy { public class AppealDescriptionStrategy implements DescriptionStrategy {
private static final Map<Integer, String> STATUS_ACTION_MAP = new HashMap<>();
static {
// 枚举值与操作文案映射,后续新增状态只需加这行
STATUS_ACTION_MAP.put(StatusEnum.PASS_REVIEW.getValue(), "通过");
STATUS_ACTION_MAP.put(StatusEnum.REFUSE_REVIEW.getValue(), "拒绝");
}
@Override @Override
public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) { public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) {
if (!methodName.equals("saveOrUpdate")) {
return false;
}
if (ObjectUtils.isNotEmpty(args) && args[0] instanceof AppealDTO) {
AppealDTO appealDTO = (AppealDTO) args[0];
if (appealDTO == null || ObjectUtils.isEmpty(appealDTO.getId())) {
return false;
}
if (methodName.equals("save")) { String action = STATUS_ACTION_MAP.getOrDefault(appealDTO.getStatus(), "未知操作");
String description = String.format("申诉ID【%s】", appealDTO.getId());
// 设置日志字段
operationLogDTO.setAction(action);
operationLogDTO.setDescription(description);
} }
return null; return true;
} }
@Override @Override

8
src/main/java/com/project/operation/domain/service/impl/description/DataDescriptionStrategy.java

@ -1,6 +1,7 @@
package com.project.operation.domain.service.impl.description; package com.project.operation.domain.service.impl.description;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.project.appeal.domain.dto.AppealDTO;
import com.project.base.domain.result.Result; import com.project.base.domain.result.Result;
import com.project.information.application.InformationApplicationService; import com.project.information.application.InformationApplicationService;
import com.project.information.application.ProductLineApplicationService; import com.project.information.application.ProductLineApplicationService;
@ -12,6 +13,7 @@ import com.project.operation.domain.enums.ModuleEnum;
import com.project.operation.domain.service.DescriptionStrategy; import com.project.operation.domain.service.DescriptionStrategy;
import com.project.task.domain.dto.TaskDTO; import com.project.task.domain.dto.TaskDTO;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -36,7 +38,7 @@ public class DataDescriptionStrategy implements DescriptionStrategy {
@SneakyThrows @SneakyThrows
@Override @Override
public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) { public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) {
if (methodName.equals("save")) { if (methodName.equals("save") && ObjectUtils.isNotEmpty(args) && args[0] instanceof ProductLineDTO) {
ProductLineDTO productLineDTO = (ProductLineDTO) args[0]; ProductLineDTO productLineDTO = (ProductLineDTO) args[0];
if (productLineDTO.getLeaf() == null || StringUtils.isBlank(productLineDTO.getName())) { if (productLineDTO.getLeaf() == null || StringUtils.isBlank(productLineDTO.getName())) {
@ -50,7 +52,7 @@ public class DataDescriptionStrategy implements DescriptionStrategy {
operationLogDTO.setDescription("【"+ productLineDTO.getName()+"】"); operationLogDTO.setDescription("【"+ productLineDTO.getName()+"】");
} }
if(methodName.equals("delete")){ if(methodName.equals("delete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof Long){
Long id = (Long) args[0]; Long id = (Long) args[0];
if(id==null){ if(id==null){
@ -88,7 +90,7 @@ public class DataDescriptionStrategy implements DescriptionStrategy {
} }
} }
if (methodName.equals("batchDelete")) { if (methodName.equals("batchDelete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof String) {
String ids = (String) args[0]; String ids = (String) args[0];
if (StringUtils.isBlank(ids)){ if (StringUtils.isBlank(ids)){
return false; return false;

5
src/main/java/com/project/operation/domain/service/impl/description/TaskDescriptionStrategy.java

@ -7,6 +7,7 @@ import com.project.task.application.TaskApplicationService;
import com.project.task.domain.dto.TaskDTO; import com.project.task.domain.dto.TaskDTO;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -27,7 +28,7 @@ public class TaskDescriptionStrategy implements DescriptionStrategy {
@Override @Override
public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) { public Boolean process(Object[] args, OperationLogDTO operationLogDTO,String methodName) {
if (methodName.equals("save")) { if (methodName.equals("save") && ObjectUtils.isNotEmpty(args) && args[0] instanceof TaskDTO) {
TaskDTO taskDTO = (TaskDTO) args[0]; TaskDTO taskDTO = (TaskDTO) args[0];
//设置操作 //设置操作
if (taskDTO.getId() == null){ if (taskDTO.getId() == null){
@ -43,7 +44,7 @@ public class TaskDescriptionStrategy implements DescriptionStrategy {
return true; return true;
} }
if (methodName.equals("batchDelete")) { if (methodName.equals("batchDelete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof TaskDTO) {
String taskIds = (String) args[0]; String taskIds = (String) args[0];
if (StringUtils.isBlank(taskIds)){ if (StringUtils.isBlank(taskIds)){
return false; return false;

Loading…
Cancel
Save