From 079aed72e8e139b8f546817b904a6da1620798a2 Mon Sep 17 00:00:00 2001 From: zhonghua Date: Wed, 15 Apr 2026 11:14:04 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8F=90=E4=BA=A4=E5=AE=A1=E6=A0=B8?= =?UTF-8?q?=E6=97=B6=E9=97=B4=20submit=5Freview=5Ftime=20=E4=B8=8E?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=8F=B0=20createTime=20=E8=AF=AD=E4=B9=89?= =?UTF-8?q?=E5=AF=B9=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 t_ugc_work.submit_review_time,publish/withdraw/revoke 维护 - 内容审核 VO:createTime 优先为提交审核时间,补充 workCreateTime Made-with: Cursor --- .../pub/service/PublicContentReviewService.java | 9 ++++++++- .../modules/pub/service/PublicUserWorkService.java | 2 ++ .../java/com/lesingle/modules/ugc/entity/UgcWork.java | 4 ++++ .../db/migration/V21__ugc_work_submit_review_time.sql | 11 +++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 lesingle-creation-backend/src/main/resources/db/migration/V21__ugc_work_submit_review_time.sql diff --git a/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicContentReviewService.java b/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicContentReviewService.java index 2e62a73..f938065 100644 --- a/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicContentReviewService.java +++ b/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicContentReviewService.java @@ -211,6 +211,7 @@ public class PublicContentReviewService { uw.eq(UgcWork::getId, id) .set(UgcWork::getStatus, WorkPublishStatus.PENDING_REVIEW.getValue()) .set(UgcWork::getReviewTime, null) + .set(UgcWork::getSubmitReviewTime, LocalDateTime.now()) .set(UgcWork::getReviewerId, null) .set(UgcWork::getReviewNote, null) .set(UgcWork::getModifyTime, LocalDateTime.now()); @@ -316,11 +317,14 @@ public class PublicContentReviewService { } else if ("views".equals(sortBy)) { wrapper.orderByDesc(UgcWork::getViewCount); } else if ("oldest".equals(sortBy)) { + wrapper.orderByAsc(UgcWork::getSubmitReviewTime); wrapper.orderByAsc(UgcWork::getCreateTime); } else if ("latest".equals(sortBy) || !StringUtils.hasText(sortBy)) { + wrapper.orderByDesc(UgcWork::getSubmitReviewTime); wrapper.orderByDesc(UgcWork::getPublishTime); wrapper.orderByDesc(UgcWork::getCreateTime); } else { + wrapper.orderByDesc(UgcWork::getSubmitReviewTime); wrapper.orderByDesc(UgcWork::getCreateTime); } } @@ -420,7 +424,10 @@ public class PublicContentReviewService { vo.put("reviewNote", work.getReviewNote()); vo.put("reviewTime", work.getReviewTime()); vo.put("publishTime", work.getPublishTime()); - vo.put("createTime", work.getCreateTime()); + // 审核台「创建时间」语义:优先展示提交审核时间(与 POST /public/works/{id}/publish 一致),非作品首次入库时间 + vo.put("submitReviewTime", work.getSubmitReviewTime()); + vo.put("workCreateTime", work.getCreateTime()); + vo.put("createTime", work.getSubmitReviewTime() != null ? work.getSubmitReviewTime() : work.getCreateTime()); // 补充作者信息(user 与 creator 同构,便于前端组件复用) if (work.getUserId() != null) { diff --git a/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicUserWorkService.java b/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicUserWorkService.java index fe5620b..476758a 100644 --- a/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicUserWorkService.java +++ b/lesingle-creation-backend/src/main/java/com/lesingle/modules/pub/service/PublicUserWorkService.java @@ -196,6 +196,7 @@ public class PublicUserWorkService { throw new BusinessException(400, "当前状态不可发布"); } work.setStatus(WorkPublishStatus.PENDING_REVIEW.getValue()); + work.setSubmitReviewTime(LocalDateTime.now()); work.setModifyTime(LocalDateTime.now()); ugcWorkMapper.updateById(work); } @@ -217,6 +218,7 @@ public class PublicUserWorkService { uw.eq(UgcWork::getId, id) .set(UgcWork::getStatus, WorkPublishStatus.UNPUBLISHED.getValue()) .set(UgcWork::getReviewTime, null) + .set(UgcWork::getSubmitReviewTime, null) .set(UgcWork::getReviewerId, null) .set(UgcWork::getReviewNote, null) .set(UgcWork::getModifyTime, LocalDateTime.now()); diff --git a/lesingle-creation-backend/src/main/java/com/lesingle/modules/ugc/entity/UgcWork.java b/lesingle-creation-backend/src/main/java/com/lesingle/modules/ugc/entity/UgcWork.java index 8a1fafc..10f1796 100644 --- a/lesingle-creation-backend/src/main/java/com/lesingle/modules/ugc/entity/UgcWork.java +++ b/lesingle-creation-backend/src/main/java/com/lesingle/modules/ugc/entity/UgcWork.java @@ -57,6 +57,10 @@ public class UgcWork implements Serializable { @TableField("review_time") private LocalDateTime reviewTime; + @Schema(description = "提交审核时间(用户发起上架审核,非作品创建时间)") + @TableField("submit_review_time") + private LocalDateTime submitReviewTime; + @Schema(description = "审核人ID") @TableField("reviewer_id") private Long reviewerId; diff --git a/lesingle-creation-backend/src/main/resources/db/migration/V21__ugc_work_submit_review_time.sql b/lesingle-creation-backend/src/main/resources/db/migration/V21__ugc_work_submit_review_time.sql new file mode 100644 index 0000000..ad29e06 --- /dev/null +++ b/lesingle-creation-backend/src/main/resources/db/migration/V21__ugc_work_submit_review_time.sql @@ -0,0 +1,11 @@ +-- 用户发起「提交审核」时间(与作品 create_time 区分,供内容审核台列表/详情展示) +ALTER TABLE t_ugc_work + ADD COLUMN submit_review_time DATETIME(3) NULL COMMENT '提交审核时间(用户 POST /public/works/{id}/publish)' AFTER review_time; + +-- 历史待审核数据:用 modify_time 近似提交时间(通常为最近一次提交审核时更新) +UPDATE t_ugc_work +SET submit_review_time = modify_time +WHERE status = 'pending_review' + AND submit_review_time IS NULL; + +CREATE INDEX idx_ugc_work_submit_review ON t_ugc_work (submit_review_time);