zyp 1 week ago
parent
commit
63ad9cea0f

+ 2 - 2
fs-service/src/main/java/com/fs/course/mapper/FsUserCourseMapper.java

@@ -233,9 +233,9 @@ public interface FsUserCourseMapper
 
     @Select("select course_id dict_value, course_name dict_label,img_url dict_imgUrl  from fs_user_course where is_del = 0 and is_private = 1 ")
     List<OptionsVO> selectFsUserCourseAllList();
-    
+
     @Select("select course_id dict_value, course_name dict_label,img_url dict_imgUrl  from fs_user_course where is_del = 0 and is_private = 1" +
-            " and find_in_set(#{companyId},company_ids) ")
+            " and find_in_set(#{companyId},company_ids) ORDER BY sort ASC, course_id DESC ")
     List<OptionsVO> selectFsUserCourseByCompany(@Param("companyId") Long companyId);
 
     @Select("select course_id ,project   from fs_user_course where is_del = 0 and is_private = 1")

+ 30 - 0
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -89,6 +89,7 @@ import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.ChronoUnit;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
@@ -989,6 +990,10 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     @Override
     @Transactional
     public R sendReward(FsCourseSendRewardUParam param) {
+//        boolean isWithin10Minutes = isWithin10Minutes(param.getUserId());
+//        if (isWithin10Minutes){
+//            return R.error("非有效期内,不允许领取!");
+//        }
         // 获取用户信息
         FsUser user = fsUserMapper.selectFsUserByUserId(param.getUserId());
 //        if (StringUtils.isEmpty(user.getMpOpenId())){
@@ -1057,6 +1062,29 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
         }
     }
 
+
+    /**
+     * 检查是否在10分钟有效期内
+     */
+    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
+    private static final int EXPIRE_MINUTES = 10;
+    private boolean isWithin10Minutes(Long userId) {
+        String key = "h5user:redPacket:" + userId;
+
+        String storedTimeStr = redisCache.getCacheObject(key);
+        if (storedTimeStr == null) {
+            return false;
+        }
+
+        try {
+            LocalDateTime storedTime = LocalDateTime.parse(storedTimeStr, FORMATTER);
+            long minutes = Duration.between(storedTime, LocalDateTime.now()).toMinutes();
+            return minutes <= EXPIRE_MINUTES;
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
     @Override
     public R sendRewardByFsUser(FsCourseSendRewardUParam param) {
         log.info("进入用户判断");
@@ -1262,6 +1290,8 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             log.setRewardType(config.getRewardType());
             courseWatchLogMapper.updateFsCourseWatchLog(log);
 
+//            redisCache.setCacheObject("h5user:redPacket:"+param.getUserId(),LocalDateTime.now().toString());
+
             return sendRedPacket;
         } else {
             return R.error("奖励发送失败,请联系客服");