Administrator 1 rok pred
rodič
commit
80a0539c27

+ 6 - 0
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -172,4 +172,10 @@ public class Constants
      */
     public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
             "org.springframework", "org.apache", "com.ruoyi.common.utils.file", "com.ruoyi.common.config" };
+
+    /**
+     * 新闻阅读数量
+     */
+    public static final String NEW_RED_NUM ="new_red_num:";
+
 }

+ 40 - 23
ruoyi-system/src/main/java/com/ruoyi/news/service/impl/BomanNewsServiceImpl.java

@@ -1,98 +1,115 @@
 package com.ruoyi.news.service.impl;
 
-
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.news.domain.BomanNews;
 import com.ruoyi.news.mapper.BomanNewsMapper;
 import com.ruoyi.news.service.IBomanNewsService;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
 import java.util.List;
 
 
 /**
  * boman_newsService业务层处理
- * 
+ *
  * @author boman
  * @date 2024-01-18
  */
 @Service
-public class BomanNewsServiceImpl implements IBomanNewsService
-{
+public class BomanNewsServiceImpl implements IBomanNewsService {
     @Autowired
     private BomanNewsMapper bomanNewsMapper;
+    @Resource
+    private RedisCache redisCache;
 
     /**
      * 查询boman_news
-     * 
+     *
      * @param newsId boman_news主键
      * @return boman_news
      */
     @Override
-    public BomanNews selectBomanNewsByNewsId(Long newsId)
-    {
-        return bomanNewsMapper.selectBomanNewsByNewsId(newsId);
+    public BomanNews selectBomanNewsByNewsId(Long newsId) {
+        String key = Constants.NEW_RED_NUM + newsId;
+        //从redis中获取该文章的阅读数量,如果没有则新增,如果能被100整除,记录到数据库
+        String redNum = redisCache.getCacheObject(key);
+        BomanNews bomanNews = bomanNewsMapper.selectBomanNewsByNewsId(newsId);
+        if (StringUtils.isEmpty(redNum)) {
+            redisCache.setCacheObject(key, 1);
+            bomanNews.setReadnumber(1);
+        } else {
+            int num = Integer.parseInt(redNum) + 1;
+            if (num % 100 == 0){
+                bomanNews.setReadnumber(num);
+                //更新到数据库
+                bomanNewsMapper.updateBomanNews(bomanNews);
+            }
+            redisCache.setCacheObject(key, num);
+        }
+        return bomanNews;
     }
 
     /**
      * 查询boman_news列表
-     * 
+     *
      * @param bomanNews boman_news
      * @return boman_news
      */
     @Override
-    public List<BomanNews> selectBomanNewsList(BomanNews bomanNews)
-    {
+    public List<BomanNews> selectBomanNewsList(BomanNews bomanNews) {
         return bomanNewsMapper.selectBomanNewsList(bomanNews);
     }
 
     /**
      * 新增boman_news
-     * 
+     *
      * @param bomanNews boman_news
      * @return 结果
      */
     @Override
-    public int insertBomanNews(BomanNews bomanNews)
-    {
+    public int insertBomanNews(BomanNews bomanNews) {
+        bomanNews.setReadnumber(0);
         bomanNews.setCreateTime(DateUtils.getNowDate());
         return bomanNewsMapper.insertBomanNews(bomanNews);
     }
 
     /**
      * 修改boman_news
-     * 
+     *
      * @param bomanNews boman_news
      * @return 结果
      */
     @Override
-    public int updateBomanNews(BomanNews bomanNews)
-    {
+    public int updateBomanNews(BomanNews bomanNews) {
         bomanNews.setUpdateTime(DateUtils.getNowDate());
         return bomanNewsMapper.updateBomanNews(bomanNews);
     }
 
     /**
      * 批量删除boman_news
-     * 
+     *
      * @param newsIds 需要删除的boman_news主键
      * @return 结果
      */
     @Override
-    public int deleteBomanNewsByNewsIds(Long[] newsIds)
-    {
+    public int deleteBomanNewsByNewsIds(Long[] newsIds) {
         return bomanNewsMapper.deleteBomanNewsByNewsIds(newsIds);
     }
 
     /**
      * 删除boman_news信息
-     * 
+     *
      * @param newsId boman_news主键
      * @return 结果
      */
     @Override
-    public int deleteBomanNewsByNewsId(Long newsId)
-    {
+    public int deleteBomanNewsByNewsId(Long newsId) {
         return bomanNewsMapper.deleteBomanNewsByNewsId(newsId);
     }
 }