浏览代码

新增点赞功能

jin 6 月之前
父节点
当前提交
26d074a3da

+ 4 - 1
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java

@@ -176,9 +176,12 @@ 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", "com.ruoyi.generator" };
 
-
     /**
      * 微信接口前缀
      */
     public static final String WX_URI = "/wx/";
+    /**
+     * 点赞key
+     */
+    public static final String THUMBS_UP = "give_the_thumbs-up";
 }

+ 11 - 0
ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java

@@ -265,4 +265,15 @@ public class RedisCache
     {
         return redisTemplate.keys(pattern);
     }
+
+    /**
+     * 获得key中对应的内容并自增1
+     *
+     *
+     */
+    public boolean increment(final String key, final String hKey) {
+        // 原子性地增加点赞数
+        Long increment = redisTemplate.opsForHash().increment(key, hKey, 1);
+        return increment > 0;
+    }
 }

+ 23 - 12
ruoyi-framework/src/main/java/com/ruoyi/framework/recovery/domain/RecSaleInfo.java

@@ -9,7 +9,7 @@ import com.ruoyi.common.core.domain.BaseEntity;
 
 /**
  * 发售信息详情对象 rec_sale_info
- * 
+ *
  * @author jin
  * @date 2024-11-18
  */
@@ -39,6 +39,8 @@ public class RecSaleInfo extends BaseEntity
     @Excel(name = "货号")
     private String catalog;
 
+    private String images;
+
     /** 创建时间 */
     @JsonFormat(pattern = "yyyy-MM-dd")
     @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
@@ -49,39 +51,39 @@ public class RecSaleInfo extends BaseEntity
     @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
     private Date updateDate;
 
-    public void setId(Long id) 
+    public void setId(Long id)
     {
         this.id = id;
     }
 
-    public Long getId() 
+    public Long getId()
     {
         return id;
     }
-    public void setSaleName(String saleName) 
+    public void setSaleName(String saleName)
     {
         this.saleName = saleName;
     }
 
-    public String getSaleName() 
+    public String getSaleName()
     {
         return saleName;
     }
-    public void setSalePrice(String salePrice) 
+    public void setSalePrice(String salePrice)
     {
         this.salePrice = salePrice;
     }
 
-    public String getSalePrice() 
+    public String getSalePrice()
     {
         return salePrice;
     }
-    public void setMarket(String market) 
+    public void setMarket(String market)
     {
         this.market = market;
     }
 
-    public String getMarket() 
+    public String getMarket()
     {
         return market;
     }
@@ -99,16 +101,16 @@ public class RecSaleInfo extends BaseEntity
         this.createDate = createDate;
     }
 
-    public Date getCreateDate() 
+    public Date getCreateDate()
     {
         return createDate;
     }
-    public void setUpdateDate(Date updateDate) 
+    public void setUpdateDate(Date updateDate)
     {
         this.updateDate = updateDate;
     }
 
-    public Date getUpdateDate() 
+    public Date getUpdateDate()
     {
         return updateDate;
     }
@@ -121,6 +123,14 @@ public class RecSaleInfo extends BaseEntity
         this.catalog = catalog;
     }
 
+    public String getImages() {
+        return images;
+    }
+
+    public void setImages(String images) {
+        this.images = images;
+    }
+
     @Override
     public String toString() {
         final StringBuffer sb = new StringBuffer("RecSaleInfo{");
@@ -130,6 +140,7 @@ public class RecSaleInfo extends BaseEntity
         sb.append(", market='").append(market).append('\'');
         sb.append(", storeId='").append(storeId).append('\'');
         sb.append(", catalog='").append(catalog).append('\'');
+        sb.append(", images='").append(images).append('\'');
         sb.append(", createDate=").append(createDate);
         sb.append(", updateDate=").append(updateDate);
         sb.append('}');

+ 30 - 0
ruoyi-framework/src/main/java/com/ruoyi/framework/tesk/ThumbsTask.java

@@ -0,0 +1,30 @@
+package com.ruoyi.framework.tesk;
+
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.redis.RedisCache;
+import com.ruoyi.framework.recovery.domain.RecContent;
+import com.ruoyi.framework.recovery.service.IRecContentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Component("ThumbsTask")
+public class ThumbsTask {
+    @Autowired
+    private RedisCache redisCache;
+
+    @Autowired
+    private IRecContentService recContentService;
+
+    public void ThumbsTaskSaveMysql() {
+        List<RecContent> contents = recContentService.selectRecContentList(new RecContent());
+        for (RecContent content : contents) {
+            Object value = redisCache.getCacheMapValue(Constants.THUMBS_UP + content.getId(), "like");
+            if (value != null) {
+                content.setThumbs(Long.parseLong(value.toString()));
+                recContentService.updateRecContent(content);
+            }
+        }
+    }
+}

+ 11 - 6
ruoyi-system/src/main/resources/mapper/system/RecSaleInfoMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.framework.recovery.mapper.RecSaleInfoMapper">
-    
+
     <resultMap type="RecSaleInfo" id="RecSaleInfoResult">
         <result property="id"    column="id"    />
         <result property="saleName"    column="sale_name"    />
@@ -15,15 +15,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="updateBy"    column="update_by"    />
         <result property="updateDate"    column="update_date"    />
         <result property="catalog"    column="catalog"    />
+        <result property="images"    column="images"    />
     </resultMap>
 
     <sql id="selectRecSaleInfoVo">
-        select id, sale_name,catalog, sale_price, market, store_id, create_by, create_date, update_by, update_date from rec_sale_info
+        select id, sale_name,catalog, sale_price, market, store_id, create_by, create_date, update_by, update_date, images from rec_sale_info
     </sql>
 
     <select id="selectRecSaleInfoList" parameterType="RecSaleInfo" resultMap="RecSaleInfoResult">
         <include refid="selectRecSaleInfoVo"/>
-        <where>  
+        <where>
             <if test="saleName != null  and saleName != ''"> and sale_name like concat('%', #{saleName}, '%')</if>
             <if test="salePrice != null  and salePrice != ''"> and sale_price = #{salePrice}</if>
             <if test="market != null  and market != ''"> and market = #{market}</if>
@@ -31,9 +32,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createDate != null "> and create_date = #{createDate}</if>
             <if test="updateDate != null "> and update_date = #{updateDate}</if>
             <if test="catalog != null "> and catalog = #{catalog}</if>
+            <if test="images != null "> and images = #{images}</if>
         </where>
     </select>
-    
+
     <select id="selectRecSaleInfoById" parameterType="Long" resultMap="RecSaleInfoResult">
         <include refid="selectRecSaleInfoVo"/>
         where id = #{id}
@@ -52,6 +54,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by,</if>
             <if test="updateDate != null">update_date,</if>
             <if test="catalog != null">catalog,</if>
+            <if test="images != null">images,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="id != null">#{id},</if>
@@ -64,6 +67,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">#{updateBy},</if>
             <if test="updateDate != null">#{updateDate},</if>
             <if test="catalog != null">#{catalog},</if>
+            <if test="images != null">#{images},</if>
          </trim>
     </insert>
 
@@ -79,6 +83,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="updateBy != null">update_by = #{updateBy},</if>
             <if test="updateDate != null">update_date = #{updateDate},</if>
             <if test="catalog != null">update_date = #{catalog},</if>
+            <if test="images != null">images = #{images},</if>
         </trim>
         where id = #{id}
     </update>
@@ -88,9 +93,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </delete>
 
     <delete id="deleteRecSaleInfoByIds" parameterType="String">
-        delete from rec_sale_info where id in 
+        delete from rec_sale_info where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
+</mapper>

+ 10 - 0
ruoyi-wx/src/main/java/com/ruoyi/wx/web/controller/WxHomeController.java

@@ -54,4 +54,14 @@ public class WxHomeController {
             return AjaxResult.error(ExceptionUtil.getExceptionMessage(e));
         }
     }
+
+    @GetMapping("/thumbs/{id}")
+    public AjaxResult thumbs(@PathVariable("id") Long id) {
+        try {
+            Long thumbs = wxHomeService.thumbs(id);
+            return AjaxResult.success(thumbs);
+        } catch (Exception e) {
+            return AjaxResult.error(ExceptionUtil.getExceptionMessage(e));
+        }
+    }
 }

+ 8 - 0
ruoyi-wx/src/main/java/com/ruoyi/wx/web/service/IWxHomeService.java

@@ -28,4 +28,12 @@ public interface IWxHomeService {
      * @return 结果集
      */
     List<SaleInfoVo> getSaleCalendar();
+
+    /**
+     * 点赞操作
+     *
+     * @param id
+     * @return
+     */
+    Long thumbs(Long id);
 }

+ 24 - 4
ruoyi-wx/src/main/java/com/ruoyi/wx/web/service/impl/WxHomeServiceImpl.java

@@ -1,11 +1,11 @@
 package com.ruoyi.wx.web.service.impl;
 
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.framework.recovery.domain.RecCommodity;
+import com.ruoyi.common.core.redis.RedisCache;
 import com.ruoyi.framework.recovery.domain.RecContent;
 import com.ruoyi.framework.recovery.domain.RecSaleInfo;
 import com.ruoyi.framework.recovery.domain.RecStores;
-import com.ruoyi.framework.recovery.mapper.RecCommodityMapper;
 import com.ruoyi.framework.recovery.mapper.RecSaleInfoMapper;
 import com.ruoyi.framework.recovery.service.IRecContentService;
 import com.ruoyi.framework.recovery.service.IRecSaleInfoService;
@@ -18,7 +18,10 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.*;
 import java.util.stream.Collectors;
 
@@ -36,6 +39,9 @@ public class WxHomeServiceImpl implements IWxHomeService {
     @Autowired
     private WxHomeMapper wxHomeMapper;
 
+    @Autowired
+    private RedisCache redisCache;
+
     private final static ArrayBlockingQueue<Runnable> WORK_QUEUE = new ArrayBlockingQueue<>(9);
 
     private final static RejectedExecutionHandler HANDLER = new ThreadPoolExecutor.CallerRunsPolicy();
@@ -57,8 +63,16 @@ public class WxHomeServiceImpl implements IWxHomeService {
 
         executorService.submit(saleInfoTask);
         executorService.submit(contentTask);
+        List<RecContent> contents = contentTask.get();
+        for (RecContent content : contents) {
+            Object value = redisCache.getCacheMapValue(Constants.THUMBS_UP + content.getId(), "like");
+            if (value != null) {
+                content.setThumbs(Long.parseLong(value.toString()));
+            }
+            redisCache.setCacheMapValue(Constants.THUMBS_UP + content.getId(), "like", content.getThumbs());
+        }
         result.put("saleInfo", saleInfoTask.get());
-        result.put("content", contentTask.get());
+        result.put("content", contents);
         return result;
     }
 
@@ -97,4 +111,10 @@ public class WxHomeServiceImpl implements IWxHomeService {
         }
         return result;
     }
+
+    @Override
+    public Long thumbs(Long id) {
+        redisCache.increment(Constants.THUMBS_UP + id, "like");
+        return redisCache.getCacheMapValue(Constants.THUMBS_UP + id, "like");
+    }
 }