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.param.AppealParam;
import com.project.base.domain.result.Result;
import com.project.operation.annotation.OperationLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -20,6 +21,7 @@ public class AppealController {
private AppealApplication appealApplication;
@PostMapping("saveOrUpdate")
@OperationLog(module = "申诉审批")
public Result<AppealDTO> saveOrUpdate(@RequestBody AppealDTO 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.ding.domain.dto.LoginDTO;
import com.project.ding.utils.JwtUtils;
import com.project.ding.utils.SecurityUtils;
import com.project.operation.annotation.OperationLog;
import com.project.operation.application.impl.OperationLogApplicationService;
import com.project.operation.domain.dto.OperationLogDTO;
@ -12,14 +13,11 @@ import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
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.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@ -90,15 +88,9 @@ public class OperationLogAspect {
operationLogDTO.setClientIp(request.getRemoteAddr());
// 收集登录用户ID
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.getPrincipal() != null) {
Object principal = authentication.getPrincipal();
try {
Long userId = Long.parseLong(principal.toString());
operationLogDTO.setCreatorId(userId);
} catch (NumberFormatException e) {
log.warn("解析用户ID失败,principal:{}", principal, e);
}
String userId = SecurityUtils.getUserId();
if (userId != null) {
operationLogDTO.setCreatorId(Long.parseLong(userId.toString()));
}
}

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;
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.enums.ModuleEnum;
import com.project.operation.domain.service.DescriptionStrategy;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
/**
* 申诉审批
*/
@Component
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
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

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;
import cn.hutool.core.util.ObjectUtil;
import com.project.appeal.domain.dto.AppealDTO;
import com.project.base.domain.result.Result;
import com.project.information.application.InformationApplicationService;
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.task.domain.dto.TaskDTO;
import lombok.SneakyThrows;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -36,7 +38,7 @@ public class DataDescriptionStrategy implements DescriptionStrategy {
@SneakyThrows
@Override
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];
if (productLineDTO.getLeaf() == null || StringUtils.isBlank(productLineDTO.getName())) {
@ -50,7 +52,7 @@ public class DataDescriptionStrategy implements DescriptionStrategy {
operationLogDTO.setDescription("【"+ productLineDTO.getName()+"】");
}
if(methodName.equals("delete")){
if(methodName.equals("delete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof Long){
Long id = (Long) args[0];
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];
if (StringUtils.isBlank(ids)){
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 org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@ -27,7 +28,7 @@ public class TaskDescriptionStrategy implements DescriptionStrategy {
@Override
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];
//设置操作
if (taskDTO.getId() == null){
@ -43,7 +44,7 @@ public class TaskDescriptionStrategy implements DescriptionStrategy {
return true;
}
if (methodName.equals("batchDelete")) {
if (methodName.equals("batchDelete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof TaskDTO) {
String taskIds = (String) args[0];
if (StringUtils.isBlank(taskIds)){
return false;

Loading…
Cancel
Save