From bba5859343eb870bd82425c4a6f0132f614be716 Mon Sep 17 00:00:00 2001 From: wangys <3401275564@qq.com> Date: Mon, 12 Jan 2026 14:46:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/news/resource/ResourceService.java | 7 +++ .../news/controller/ResourceController.java | 8 +++ .../service/impl/NCResourceServiceImpl.java | 55 +++++++++++++++++++ schoolNewsWeb/src/apis/resource/resource.ts | 10 ++++ .../manage/resource/ArticleManagementView.vue | 34 ++++++++++++ 5 files changed, 114 insertions(+) diff --git a/schoolNewsServ/api/api-news/src/main/java/org/xyzh/api/news/resource/ResourceService.java b/schoolNewsServ/api/api-news/src/main/java/org/xyzh/api/news/resource/ResourceService.java index f680bce..2185baa 100644 --- a/schoolNewsServ/api/api-news/src/main/java/org/xyzh/api/news/resource/ResourceService.java +++ b/schoolNewsServ/api/api-news/src/main/java/org/xyzh/api/news/resource/ResourceService.java @@ -113,6 +113,13 @@ public interface ResourceService { */ ResultDomain publishResource(String resourceID); + /** + * @description 强制发布资源(跳过敏感词校验) + * @param resourceID 资源ID + * @return ResultDomain 发布结果 + */ + ResultDomain forcePublishResource(String resourceID); + /** * @description 下架资源 * @param resourceID 资源ID diff --git a/schoolNewsServ/news/src/main/java/org/xyzh/news/controller/ResourceController.java b/schoolNewsServ/news/src/main/java/org/xyzh/news/controller/ResourceController.java index ba24fe1..e3a2064 100644 --- a/schoolNewsServ/news/src/main/java/org/xyzh/news/controller/ResourceController.java +++ b/schoolNewsServ/news/src/main/java/org/xyzh/news/controller/ResourceController.java @@ -123,6 +123,14 @@ public class ResourceController { return resourceService.publishResource(resourceID); } + /** + * 强制发布资源(跳过敏感词校验) + */ + @PostMapping("/resource/{resourceID}/force-publish") + public ResultDomain forcePublishResource(@PathVariable("resourceID") String resourceID) { + return resourceService.forcePublishResource(resourceID); + } + /** * 下架资源 */ diff --git a/schoolNewsServ/news/src/main/java/org/xyzh/news/service/impl/NCResourceServiceImpl.java b/schoolNewsServ/news/src/main/java/org/xyzh/news/service/impl/NCResourceServiceImpl.java index 1225765..71752c4 100644 --- a/schoolNewsServ/news/src/main/java/org/xyzh/news/service/impl/NCResourceServiceImpl.java +++ b/schoolNewsServ/news/src/main/java/org/xyzh/news/service/impl/NCResourceServiceImpl.java @@ -647,6 +647,61 @@ public class NCResourceServiceImpl implements ResourceService { } } + @Override + @Transactional(rollbackFor = Exception.class) + public ResultDomain forcePublishResource(String resourceID) { + ResultDomain resultDomain = new ResultDomain<>(); + try { + // 参数验证 + if (!StringUtils.hasText(resourceID)) { + resultDomain.fail("资源ID不能为空"); + return resultDomain; + } + + // 查询资源 + TbResource resource = resourceMapper.selectByResourceId(resourceID); + if (resource == null || resource.getDeleted()) { + resultDomain.fail("资源不存在"); + return resultDomain; + } + + // 强制发布:跳过敏感词校验,直接设置为已审核通过 + resource.setIsAudited(true); + resource.setStatus(1); + resource.setPublishTime(new Date()); + resource.setUpdateTime(new Date()); + + int result = resourceMapper.updateResource(resource); + if (result > 0) { + logger.info("强制发布资源成功: {}", resourceID); + // 重新查询返回完整数据 + TbResource updated = resourceMapper.selectByResourceId(resourceID); + + // 异步将文章导入知识库 + try { + ResultDomain knowledgeResult = articleKnowledgeService.importArticleToDefaultKnowledge(updated); + if (knowledgeResult.isSuccess() && knowledgeResult.getData() != null) { + logger.info("强制发布文章已成功导入知识库: {}", resourceID); + } else { + logger.warn("强制发布文章导入知识库跳过或失败: {}, 原因: {}", resourceID, knowledgeResult.getMessage()); + } + } catch (Exception e) { + logger.error("强制发布文章导入知识库异常,但不影响发布: {}", e.getMessage(), e); + } + + resultDomain.success("强制发布资源成功", updated); + return resultDomain; + } else { + resultDomain.fail("强制发布资源失败"); + return resultDomain; + } + } catch (Exception e) { + logger.error("强制发布资源异常: {}", e.getMessage(), e); + resultDomain.fail("强制发布资源失败: " + e.getMessage()); + return resultDomain; + } + } + @Override @Transactional(rollbackFor = Exception.class) public ResultDomain unpublishResource(String resourceID) { diff --git a/schoolNewsWeb/src/apis/resource/resource.ts b/schoolNewsWeb/src/apis/resource/resource.ts index fc90a4d..bde9cf8 100644 --- a/schoolNewsWeb/src/apis/resource/resource.ts +++ b/schoolNewsWeb/src/apis/resource/resource.ts @@ -118,6 +118,16 @@ export const resourceApi = { return response.data; }, + /** + * 强制发布资源(跳过敏感词校验) + * @param resourceID 资源ID + * @returns Promise> + */ + async forcePublishResource(resourceID: string): Promise> { + const response = await api.post(`/news/resources/resource/${resourceID}/force-publish`); + return response.data; + }, + /** * 下架资源 * @param resourceID 资源ID diff --git a/schoolNewsWeb/src/views/admin/manage/resource/ArticleManagementView.vue b/schoolNewsWeb/src/views/admin/manage/resource/ArticleManagementView.vue index 5c9ab5c..d435451 100644 --- a/schoolNewsWeb/src/views/admin/manage/resource/ArticleManagementView.vue +++ b/schoolNewsWeb/src/views/admin/manage/resource/ArticleManagementView.vue @@ -52,6 +52,14 @@ > {{ getActionButtonText(row.status) }} + + 强制发布 + 编辑