From 49d0dcc34d89838c32e33cf326039b6b059410a7 Mon Sep 17 00:00:00 2001 From: luogw <3132758203@qq.com> Date: Wed, 5 Aug 2026 09:19:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E6=97=A5=E5=BF=97=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ClassicPaperDescriptionStrategy.java | 91 +++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/main/java/com/project/operation/domain/service/impl/description/ClassicPaperDescriptionStrategy.java diff --git a/src/main/java/com/project/operation/domain/service/impl/description/ClassicPaperDescriptionStrategy.java b/src/main/java/com/project/operation/domain/service/impl/description/ClassicPaperDescriptionStrategy.java new file mode 100644 index 0000000..365e0a1 --- /dev/null +++ b/src/main/java/com/project/operation/domain/service/impl/description/ClassicPaperDescriptionStrategy.java @@ -0,0 +1,91 @@ +package com.project.operation.domain.service.impl.description; + +import com.project.classicpaper.domain.dto.ClassicCategoryDTO; +import com.project.classicpaper.domain.dto.ClassicPaperSetDTO; +import com.project.classicpaper.domain.entity.ClassicCategoryEntity; +import com.project.classicpaper.domain.entity.ClassicPaperSetEntity; +import com.project.classicpaper.mapper.ClassicCategoryMapper; +import com.project.classicpaper.mapper.ClassicPaperSetMapper; +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.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +/** + * 套题管理 + */ +@Component +public class ClassicPaperDescriptionStrategy implements DescriptionStrategy { + + @Autowired + private ClassicCategoryMapper classicCategoryMapper; + @Autowired + private ClassicPaperSetMapper classicPaperSetMapper; + + @Override + public Boolean process(Object[] args, OperationLogDTO operationLogDTO, String methodName) { + // ClassicCategoryController.save — 添加套题分类 + if (methodName.equals("save") && ObjectUtils.isNotEmpty(args) && args[0] instanceof ClassicCategoryDTO dto) { + if (StringUtils.isBlank(dto.getName())) { + return false; + } + operationLogDTO.setDescription("【套题分类】【" + dto.getName() + "】"); + } + + // ClassicCategoryController.delete — 删除套题分类 + if (methodName.equals("delete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof Long id) { + ClassicCategoryEntity entity = classicCategoryMapper.selectByIdIncludeDeleted(id); + if (entity == null || StringUtils.isBlank(entity.getName())) { + return false; + } + operationLogDTO.setDescription("【套题分类】【" + entity.getName() + "】"); + } + + // ClassicPaperSetController.generate — 添加套题 + if (methodName.equals("generate") && ObjectUtils.isNotEmpty(args) && args[0] instanceof ClassicPaperSetDTO dto) { + if (StringUtils.isBlank(dto.getName())) { + return false; + } + operationLogDTO.setDescription("【" + dto.getName() + "】"); + } + + // ClassicPaperSetController.delete — 删除套题 + if (methodName.equals("delete") && ObjectUtils.isNotEmpty(args) && args[0] instanceof String ids) { + if (StringUtils.isBlank(ids)) { + return false; + } + List idList = Arrays.stream(ids.split(",")) + .filter(StringUtils::isNotBlank) + .map(Long::valueOf) + .collect(Collectors.toList()); + if (idList.isEmpty()) { + return false; + } + List entities = classicPaperSetMapper.selectBatchIdsIncludeDeleted(idList); + if (CollectionUtils.isEmpty(entities)) { + return false; + } + operationLogDTO.setAction(idList.size() == 1 ? "删除" : "批量删除"); + String description = entities.stream() + .map(e -> "【" + Optional.ofNullable(e.getName()).orElse("未知文件") + "】") + .collect(Collectors.joining(",")); + operationLogDTO.setDescription(description); + } + + return true; + } + + @Override + public String getStrategyName() { + return ModuleEnum.CLASSIC_PAPER.name(); + } +} \ No newline at end of file