Prechádzať zdrojové kódy

直播脚本提交;定时任务刷新点赞数

yuhongqi 6 dní pred
rodič
commit
9a8235b112

+ 35 - 3
fs-live-socket/src/main/java/com/fs/live/task/Task.java

@@ -407,18 +407,50 @@ public class Task {
             liveRewardRecordService.insertLiveRewardRecord(record);
         }
     }
+    /**
+     * 从Redis获取对象并转换为Long类型
+     * @param redisCache Redis缓存操作对象
+     * @param key 缓存键
+     * @return 转换后的Long值(若为null或转换失败则返回0L)
+     */
+    public static Long getAsLong(RedisCache redisCache, String key) {
+        // 从Redis获取原始对象
+        Object value = redisCache.getCacheObject(key);
+        if (value == null) {
+            return 0L; // 若缓存不存在,返回默认值0
+        }
+
+        // 根据实际类型转换为Long
+        if (value instanceof Long) {
+            return (Long) value;
+        } else if (value instanceof Integer) {
+            return ((Integer) value).longValue();
+        } else if (value instanceof String) {
+            // 处理字符串类型(可能是数字字符串,如"123")
+            try {
+                return Long.parseLong((String) value);
+            } catch (NumberFormatException e) {
+                // 若字符串无法转为数字,返回0(或根据业务抛异常)
+                return 0L;
+            }
+        } else {
+            // 其他类型(如Double等),根据业务需求处理,这里默认返回0
+            return 0L;
+        }
+    }
 
     /**
      *定期将缓存的数据写入数据库
      */
-    @Scheduled(cron = "0 0/1 * * * ?")// 每分钟执行一次
+    @Scheduled(cron = "0/10 * * * * ?")// 每分钟执行一次
     public void syncLiveDataToDB() {
         List<LiveData> liveDatas = liveDataService.getAllLiveDatas(); // 获取所有正在直播的直播间数据
         if(liveDatas == null)
             return;
         liveDatas.forEach(liveData ->{
-            Long likeCount = Long.valueOf(redisCache.getCacheObject("live:like:" + liveData.getLiveId()));
-            long resultLikeCount = liveData.getLikes() + (Objects.isNull(likeCount) ? 0L : likeCount);
+
+            Long likeCount = getAsLong(redisCache, "live:like:" + liveData.getLiveId());
+            long resultLikeCount = liveData.getLikes() + likeCount;
             redisCache.setCacheObject("live:like:" + liveData.getLiveId(), resultLikeCount);
             redisCache.expire("live:like:" + liveData.getLiveId(), 30, TimeUnit.MINUTES);
             liveData.setLikes(

+ 1 - 1
fs-service-system/src/main/java/com/fs/live/service/impl/LiveAutoTaskServiceImpl.java

@@ -131,7 +131,7 @@ public class LiveAutoTaskServiceImpl implements ILiveAutoTaskService {
             }
             liveAutoTask.setContent(JSON.toJSONString(liveLotteryConf));
             baseMapper.insertLiveAutoTask(liveAutoTask);
-        } else if(liveAutoTask.getTaskType() != 3L){
+        } else if(liveAutoTask.getTaskType() == 3L){
             baseMapper.insertLiveAutoTask(liveAutoTask);
 
         } else {