Prechádzať zdrojové kódy

feat(business): 新增物品变更后Redis消息通知功能- 在ItemsServiceImpl中新增RedisUtil依赖并注入- 物品创建和更新成功后发送item_reload消息到Redis频道- 注释掉RewardClaimsServiceImpl和UserServiceImpl中的冗余消息发布代码
-优化日志记录,明确区分不同类型的Redis消息
- 引入RedisKeys和RedisUtil工具类以支持消息发布功能

fugui001 2 mesiacov pred
rodič
commit
766062f0ec

+ 15 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/ItemsServiceImpl.java

@@ -10,6 +10,8 @@ import org.dromara.business.domain.dto.ItemsPrizeDto;
 import org.dromara.business.domain.vo.ItemsVo;
 import org.dromara.business.mapper.ItemsMapper;
 import org.dromara.business.service.IItemsService;
+import org.dromara.business.utils.RedisKeys;
+import org.dromara.business.utils.RedisUtil;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -19,6 +21,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 
@@ -41,6 +44,9 @@ public class ItemsServiceImpl implements IItemsService {
 
     private final ItemsMapper baseMapper;
 
+    @Autowired
+    RedisUtil redisUtil;
+
     // 在类中添加 ObjectMapper 实例
     private static final ObjectMapper objectMapper = new ObjectMapper();
     /**
@@ -178,9 +184,14 @@ public class ItemsServiceImpl implements IItemsService {
             add.setItemValue(totalValue);     // 假设 add 对象有 setTotalValue 方法,存储总价值
             add.setItemTypeCode(bo.getItemTypeCode());
        }
+
         boolean flag = baseMapper.insertItems(add) > 0;
         if (flag) {
             bo.setId(add.getId());
+            JSONObject jsonObject2 = new JSONObject();
+            jsonObject2.put("channelType", "item_reload");
+            jsonObject2.put("value", add.getId());
+            redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject2);
         }
         return flag;
     }
@@ -242,6 +253,10 @@ public class ItemsServiceImpl implements IItemsService {
             update.setItemDesc(itemDesc);         // 如:三湘杯资格卡*1+高级参赛卡*6
             update.setItemValue(totalValue);     // 假设 add 对象有 setTotalValue 方法,存储总价值
         }
+        JSONObject jsonObject2 = new JSONObject();
+        jsonObject2.put("channelType", "item_reload");
+        jsonObject2.put("value", update.getId());
+        redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject2);
         update.setItemTypeCode(bo.getItemTypeCode());
         return baseMapper.updateItemsById(update) > 0;
     }

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/RewardClaimsServiceImpl.java

@@ -755,6 +755,13 @@ public class RewardClaimsServiceImpl implements IRewardClaimsService {
                 jsonObject.put("channelType", "item_update");
                 jsonObject.put("value", rewardClaimsVo.getPlayerId());
                 redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject);
+
+
+/*                JSONObject jsonObject2 = new JSONObject();
+                jsonObject2.put("channelType", "item_reload");
+                jsonObject2.put("value", rewardClaimsVo.getPlayerId());
+                redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject2);*/
+
                 return Boolean.TRUE;
             }else{
                 throw new RuntimeException("该奖励已处理,请勿重复操作");

+ 7 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/business/service/impl/UserServiceImpl.java

@@ -406,8 +406,14 @@ public class UserServiceImpl implements IUserService {
                 jsonObject.put("channelType", "item_update");
                 jsonObject.put("value", bo.getUserId());
                 redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject);
-                logger.info("已发布 Redis 消息: channel={}, data={}", RedisKeys.CHANNEL_ADMIN, jsonObject);
+                logger.info("已发布 item_update Redis 消息: channel={}, data={}", RedisKeys.CHANNEL_ADMIN, jsonObject);
 
+
+              /*  JSONObject jsonObject2 = new JSONObject();
+                jsonObject2.put("channelType", "item_reload");
+                jsonObject2.put("value", bo.getUserId());
+                redisUtil.publish(RedisKeys.CHANNEL_ADMIN, jsonObject2);
+                logger.info("已发布 item_reload Redis 消息: channel={}, data={}", RedisKeys.CHANNEL_ADMIN, jsonObject);*/
                 return Boolean.TRUE;
 
             } finally {