From d7dddd305899c2c37b27c82d328f2ee5dc1ddbc3 Mon Sep 17 00:00:00 2001 From: zhonghua Date: Thu, 9 Apr 2026 16:44:44 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=AC=E4=BC=97=E7=AB=AF=E5=B9=BF?= =?UTF-8?q?=E5=9C=BA=E6=8C=89=E6=A0=87=E7=AD=BEID=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E4=BD=9C=E5=93=81=E5=B9=B6=E8=A1=A5=E5=85=85=E8=AE=BE=E8=AE=A1?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Made-with: Cursor --- .../modules/pub/service/PublicGalleryService.java | 6 ++++++ docs/design/public/ugc-platform-upgrade.md | 2 ++ docs/design/super-admin/content-management.md | 2 ++ 3 files changed, 10 insertions(+) diff --git a/backend-java/src/main/java/com/competition/modules/pub/service/PublicGalleryService.java b/backend-java/src/main/java/com/competition/modules/pub/service/PublicGalleryService.java index d7c10a5..2fb0d10 100644 --- a/backend-java/src/main/java/com/competition/modules/pub/service/PublicGalleryService.java +++ b/backend-java/src/main/java/com/competition/modules/pub/service/PublicGalleryService.java @@ -36,6 +36,9 @@ public class PublicGalleryService { /** * 获取广场作品列表 + * + * @param tagId 可选,按 {@code t_ugc_work_tag} 关联筛选;与超管维护的标签 ID 一致 + * @param category 预留(按标签大类筛选),当前未接前端传参,忽略 */ public PageResult> getGalleryList(int page, int pageSize, Long tagId, String category, String sortBy, String keyword) { @@ -43,6 +46,9 @@ public class PublicGalleryService { wrapper.in(UgcWork::getStatus, ST_COMPLETED, ST_CATALOGED, ST_DUBBED) .eq(UgcWork::getVisibility, Visibility.PUBLIC.getValue()) .eq(UgcWork::getIsDeleted, 0); + if (tagId != null) { + wrapper.apply("EXISTS (SELECT 1 FROM t_ugc_work_tag r WHERE r.work_id = t_ugc_work.id AND r.tag_id = {0})", tagId); + } if (StringUtils.hasText(keyword)) { wrapper.like(UgcWork::getTitle, keyword); } diff --git a/docs/design/public/ugc-platform-upgrade.md b/docs/design/public/ugc-platform-upgrade.md index cea5035..58c3e75 100644 --- a/docs/design/public/ugc-platform-upgrade.md +++ b/docs/design/public/ugc-platform-upgrade.md @@ -120,6 +120,8 @@ UserWork(用户作品) **实现说明(与库表对齐)**:当前后端表 `t_ugc_work.status` 为 **整型**(如 `0` 草稿、`1` 待审、`3` 生成完成、`4` 已编目、`5` 已配音、`-1` 已拒绝、`-2` 已下架)。产品文档中的 **`published`(已发布/可对外展示)** 在查询与 API 筛选语义上对应 **`status ∈ {3, 4, 5}`**,且需配合 `visibility=public`、未删除;公众端广场与推荐接口按此过滤。勿与竞赛/作业等业务里使用的字符串型 `PublishStatus` 混用于 UGC 作品表。 +**广场标签筛选**:`GET /public/gallery` 支持查询参数 **`tagId`**,后端通过表 **`t_ugc_work_tag`**(作品—标签关联)过滤,仅返回绑定了该标签 ID 的公开已上架作品;与超管「标签管理」中的标签主键一致。 + ### 2.3 社区互动模型(新增) ``` diff --git a/docs/design/super-admin/content-management.md b/docs/design/super-admin/content-management.md index fcfb2bd..0586ecb 100644 --- a/docs/design/super-admin/content-management.md +++ b/docs/design/super-admin/content-management.md @@ -389,5 +389,7 @@ POST /api/tags/batch-sort — 标签批量排序 **公众端广场与 `status`(实现约定)**:`t_ugc_work.status` 为整型;管理端筛选参数里的 `published` 语义对应 **`status ∈ {3, 4, 5}`**(生成完成 / 已编目 / 已配音)。公众端 `GET /public/gallery`、`/public/gallery/recommended` 仅查询上述状态且 `visibility=public`、未删除;**不得**复用赛事/作业等模块的 `PublishStatus.PUBLISHED`(字符串 `"published"`)与整型列比较。 +**标签筛选**:`GET /public/gallery` 查询参数 **`tagId`**(可选,对应 `t_ugc_tag.id`)表示仅返回在 **`t_ugc_work_tag`** 中与该标签有关联的公开已上架作品;`category` 参数预留,按标签大类筛选可后续与 `t_ugc_tag.category` 对齐。 + #### 数据库变更 - `work_tags` 表新增 `color` 字段(VARCHAR(20),标签颜色)