From 5834f09b81da45bd7500495d64b1f6549718035f Mon Sep 17 00:00:00 2001 From: luoweijian <1329394916@qq.com> Date: Mon, 6 Jul 2026 08:40:55 +0800 Subject: [PATCH] =?UTF-8?q?=E7=9F=A5=E8=AF=86=E7=82=B9=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=EF=BC=8C=E8=B5=84=E6=96=99=E5=90=8D=E7=A7=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DraftReviewApplicationService.java | 2 +- .../DraftReviewApplicationServiceImpl.java | 23 ++++++++++++++----- .../controller/InformationController.java | 4 ++-- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/project/information/application/DraftReviewApplicationService.java b/src/main/java/com/project/information/application/DraftReviewApplicationService.java index 3922b8d..b31000f 100644 --- a/src/main/java/com/project/information/application/DraftReviewApplicationService.java +++ b/src/main/java/com/project/information/application/DraftReviewApplicationService.java @@ -26,5 +26,5 @@ public interface DraftReviewApplicationService { * 批量保存草稿并确认(替代逐条编辑+单独确认) * 前端编辑完所有草稿后一次性提交,提交后自动固化 */ - Result batchSaveAndConfirm(Long informationId, List draftList); + Result batchSaveAndConfirm(Long informationId, List draftList, String name); } diff --git a/src/main/java/com/project/information/application/impl/DraftReviewApplicationServiceImpl.java b/src/main/java/com/project/information/application/impl/DraftReviewApplicationServiceImpl.java index 762f605..fd41b21 100644 --- a/src/main/java/com/project/information/application/impl/DraftReviewApplicationServiceImpl.java +++ b/src/main/java/com/project/information/application/impl/DraftReviewApplicationServiceImpl.java @@ -1,5 +1,6 @@ package com.project.information.application.impl; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.project.base.domain.exception.BusinessErrorException; import com.project.base.config.CustomIdGenerator; @@ -148,12 +149,8 @@ public class DraftReviewApplicationServiceImpl implements DraftReviewApplication return confirmKnowledgePointDraftDomainService.confirm(informationId); } - /** - * 批量保存草稿并确认(替代逐条编辑+单独确认) - * 前端编辑完所有草稿后一次性提交,提交后自动固化 - */ @Override - public Result batchSaveAndConfirm(Long informationId, List draftList) { + public Result batchSaveAndConfirm(Long informationId, List draftList, String name) { if (informationId == null) { throw new BusinessErrorException("资料ID不能为空"); } @@ -173,7 +170,21 @@ public class DraftReviewApplicationServiceImpl implements DraftReviewApplication throw new BusinessErrorException("该资料不在待审核状态"); } - // 2. 获取该资料下所有待审核草稿ID(仅查ID,减少数据传输) + // 2. 如果传了名称且与原名不同,查重并更新 + if (StrUtil.isNotBlank(name) && !StrUtil.equals(name, information.getName())) { + boolean exists = informationBaseService.lambdaQuery() + .eq(InformationEntity::getSubLineId, information.getSubLineId()) + .eq(InformationEntity::getName, name) + .ne(InformationEntity::getId, informationId) + .exists(); + if (exists) { + throw new BusinessErrorException("该子产品线下已存在同名资料「" + name + "」,请修改文件名"); + } + information.setName(name); + informationBaseService.updateById(information); + } + + // 3. 获取该资料下所有待审核草稿ID(仅查ID,减少数据传输) List existingIds = knowledgePointDraftBaseService.lambdaQuery() .select(KnowledgePointDraftEntity::getId) .eq(KnowledgePointDraftEntity::getInformationId, informationId) diff --git a/src/main/java/com/project/information/controller/InformationController.java b/src/main/java/com/project/information/controller/InformationController.java index dabd71b..100d932 100644 --- a/src/main/java/com/project/information/controller/InformationController.java +++ b/src/main/java/com/project/information/controller/InformationController.java @@ -135,14 +135,14 @@ public class InformationController { * 使用 form-data 传参:informationId + draftList(JSON字符串) */ @PostMapping("/draft/batchSaveAndConfirm") - public Result batchSaveAndConfirm(Long informationId, @RequestParam("draftList") String draftListJson) throws Exception { + public Result batchSaveAndConfirm(Long informationId, @RequestParam("draftList") String draftListJson, String name) throws Exception { // Postman form-data 会对 JSON 字符串做 URL 编码,先解码 // String decodedJson = java.net.URLDecoder.decode(draftListJson, java.nio.charset.StandardCharsets.UTF_8); ObjectMapper objectMapper = new ObjectMapper(); // 直接使用 draftListJson List draftList = objectMapper.readValue(draftListJson, objectMapper.getTypeFactory().constructCollectionType(List.class, DraftSaveDTO.class)); - return draftReviewApplicationService.batchSaveAndConfirm(informationId, draftList); + return draftReviewApplicationService.batchSaveAndConfirm(informationId, draftList, name); } // =============== 测试用:模拟算法服务回调生成草稿 ===============