From 4478f5f23c32bb7928a20e52cc41d98963977d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E5=BF=A0=E6=9E=97?= <170083662@qq.com> Date: Tue, 4 Aug 2026 11:13:08 +0800 Subject: [PATCH] =?UTF-8?q?feat(cms):=20=E6=B7=BB=E5=8A=A0=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E9=98=85=E8=AF=BB=E9=87=8F=E5=B1=95=E7=A4=BA=E4=B8=8E?= =?UTF-8?q?=E5=AE=9E=E9=99=85=E9=98=85=E8=AF=BB=E9=87=8F=E5=8E=9F=E5=AD=90?= =?UTF-8?q?=E9=80=92=E5=A2=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在CmsArticle实体中新增views字段,表示实际阅读量与虚拟阅读量之和,供展示使用 - 实现views字段的getter方法,动态计算实际阅读量和虚拟阅读量的总和 - 修改CmsArticleServiceImpl中阅读量更新逻辑,采用SQL原子递增实际阅读量,防止并发覆盖 - 更新内存中article的实际阅读量值,保持与数据库同步 --- .../java/com/gxwebsoft/cms/entity/CmsArticle.java | 10 ++++++++++ .../cms/service/impl/CmsArticleServiceImpl.java | 12 +++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java b/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java index e6832e8..edcf75f 100644 --- a/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java +++ b/src/main/java/com/gxwebsoft/cms/entity/CmsArticle.java @@ -109,6 +109,16 @@ public class CmsArticle implements Serializable { @Schema(description = "实际阅读量") private Integer actualViews; + @Schema(description = "阅读量(实际阅读量 + 虚拟阅读量,仅用于展示)") + @TableField(exist = false) + private Integer views; + + public Integer getViews() { + int actual = actualViews == null ? 0 : actualViews; + int virtual = virtualViews == null ? 0 : virtualViews; + return actual + virtual; + } + @Schema(description = "评分") private BigDecimal rate; diff --git a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java index 9cbe74b..55b3254 100644 --- a/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java +++ b/src/main/java/com/gxwebsoft/cms/service/impl/CmsArticleServiceImpl.java @@ -112,9 +112,15 @@ public class CmsArticleServiceImpl extends ServiceImpl().eq(CmsModel::getModel, article.getModel()).last("limit 1")); // if (ObjectUtil.isNotEmpty(model)) {