From d33b041f4b2a63a22682c9b3f344ef35f84b4542 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 30 九月 2025 14:37:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/user_action' into user_action

---
 framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java |  109 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 96 insertions(+), 13 deletions(-)

diff --git a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java
index b550cc6..5a03622 100644
--- a/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java
+++ b/framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java
@@ -16,6 +16,8 @@
 import cn.lili.modules.lmk.domain.vo.PrizeResultVO;
 import cn.lili.modules.lmk.enums.general.*;
 import cn.lili.modules.lmk.service.*;
+import cn.lili.modules.member.entity.dos.Member;
+import cn.lili.modules.member.service.MemberService;
 import cn.lili.modules.order.order.entity.dos.Order;
 import cn.lili.modules.order.order.service.OrderService;
 import cn.lili.modules.promotion.entity.dos.Coupon;
@@ -74,6 +76,9 @@
     private final ShareActionService shareActionService;
     private final AddNumCheekService addNumCheekService;
     private final OrderService orderService;
+    private final MemberService memberService;
+    private final VideoService videoService;
+    private final VideoAuditRecordService videoAuditRecordService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -548,6 +553,37 @@
             addPrizeNumForm.setUserId(currentUser.getId());
 
         }
+        String extend = addPrizeNumForm.getExtend();
+        JSONObject jsonObject = JSONObject.parseObject(extend);
+        String shareId =null;
+        if (jsonObject != null) {
+            shareId  = jsonObject.getString("shareId");
+        }
+        Date date = new Date();
+        ShareAction shareAction =null;
+        //鍒嗕韩杩涙潵鐨勯渶瑕佹坊鍔犲垎浜殑鐢ㄦ埛
+        if (StringUtils.isNotBlank(shareId)) {
+            shareAction  = shareActionService.getById(shareId);
+            String userId = shareAction.getUserId();
+            addPrizeNumForm.setUserId(userId);
+            Date createTime = shareAction.getCreateTime();
+            Calendar calendar = Calendar.getInstance();
+            calendar.setTime(createTime); // 灏咲ate璁剧疆鍒癈alendar涓�
+            calendar.add(Calendar.DAY_OF_MONTH, 1); // 鍔犱竴澶�
+            Date nextDay = calendar.getTime();
+            //鍒ゆ柇鏄惁鏄柊鐢ㄦ埛
+            if (nextDay.before(date)) {
+                //褰撳墠鍒嗕韩涓嶆槸浠婂ぉ鐨勫垎浜�
+                log.info("褰撳墠鍒嗕韩涓嶆槸浠婂ぉ鐨勫垎浜珄}",shareId);
+                return Result.ok().data(0);
+            }
+            if (currentUser.getId().equals(userId)) {
+                //鍒嗕韩鐨勭敤鎴疯嚜宸辩偣鍑讳簡
+                log.info("鐢ㄦ埛鑷繁鐐瑰嚮浜嗚嚜宸辩殑鍒嗕韩");
+                return Result.ok().data(0);
+            }
+        }
+
         String userId = addPrizeNumForm.getUserId();
         RLock lock = redissonClient.getLock(PRIZE_ADD_NUM + userId);
         try {
@@ -560,7 +596,6 @@
             if (!PrizeActivityStatusEnum.ON.name().equals(activity.getEnableStatus())) {
                 throw new ServiceException("褰撳墠娲诲姩娌″紑鍚�");
             }
-            Date date = new Date();
             //娲诲姩缁撴潫涓嶉渶瑕佹坊鍔�
             if (date.after(activity.getEndTime())) {
                 throw new ServiceException("褰撳墠娲诲姩宸茬粨鏉�");
@@ -595,8 +630,6 @@
                     break;
                 }
             }
-            String extend = addPrizeNumForm.getExtend();
-            JSONObject jsonObject = JSONObject.parseObject(extend);
             LambdaQueryWrapper<AddNumCheek> query = Wrappers.lambdaQuery();
             AddNumCheek addNumCheek = null;
             String orderSn = null;
@@ -604,9 +637,8 @@
             String ruleValue = null;
             switch (actionEnum) {
                 case SHARE_GOODS_VIDEO:
-                    String shareId = jsonObject.getString("shareId");
-                    ShareAction shareAction = shareActionService.getById(shareId);
                     if (shareAction == null) {
+                        log.info("褰撳墠鐢ㄦ埛娌℃湁鍒嗕韩{}",userId);
                         return Result.ok().data(0);
                     }
                     if (addFlag) {
@@ -615,17 +647,32 @@
                     }
                     break;
                 case SHARE_USER_REGISTRY:
-                    String memberId = jsonObject.getString("memberId");
+                    if (shareAction == null) {
+                        log.info("褰撳墠鐢ㄦ埛娌℃湁鍒嗕韩{}",userId);
+                        return Result.ok().data(0);
+                    }
+                    Member member = memberService.getById(shareAction.getUserId());
+                    Date createTime = member.getCreateTime();
+                    Calendar calendar = Calendar.getInstance();
+                    calendar.setTime(createTime); // 灏咲ate璁剧疆鍒癈alendar涓�
+                    calendar.add(Calendar.DAY_OF_MONTH, 1); // 鍔犱竴澶�
+                    Date nextDay = calendar.getTime();
+                    //鍒ゆ柇鏄惁鏄柊鐢ㄦ埛
+                    if (nextDay.before(date)) {
+                        //褰撳墠鐢ㄦ埛涓嶆槸鏂扮敤鎴�
+                        log.info("褰撳墠鐢ㄦ埛涓嶆槸鏂扮敤鎴穥}",currentUser.getId());
+                        return Result.ok().data(0);
+                    }
                     query.eq(AddNumCheek::getType, PrizeUserActionEnum.SHARE_USER_REGISTRY.name())
-                            .eq(AddNumCheek::getCheckNo, memberId);
+                            .eq(AddNumCheek::getCheckNo, currentUser.getId());
                     if (addNumCheekService.getOne(query) != null) {
-                        log.info("褰撳墠鐢ㄦ埛宸茬粡琚個璇疯繃浜�----------------->{}", memberId);
+                        log.info("褰撳墠鐢ㄦ埛宸茬粡琚個璇疯繃浜�----------------->{}", currentUser.getId());
                         return Result.ok().data(0);
                     }
                     addNumCheek = new AddNumCheek();
                     addNumCheek.setType(PrizeUserActionEnum.SHARE_USER_REGISTRY.name());
                     addNumCheek.setUserId(userId);
-                    addNumCheek.setCheckNo(memberId);
+                    addNumCheek.setCheckNo(currentUser.getId());
                     addNumCheekService.save(addNumCheek);
                     break;
                 case SHARE_USER_SHOPPING:
@@ -649,11 +696,18 @@
                     addNumCheekService.save(addNumCheek);
                     break;
                 case USER_STAY_TIME:
-                    //todo 閫氳繃鐢ㄦ埛琛屼负鍒嗘瀽鑾峰彇鏁版嵁杩涜鍒ゆ柇
-                    ruleValue = addPrizeRule.getRuleValue();
-
                     if (addFlag) {
                         log.info("褰撳墠鐢ㄦ埛褰撳ぉ宸茬粡娣诲姞杩囦簡鍋滅暀鏃堕棿娣诲姞娆℃暟浜�-------->{}", userId);
+                        return Result.ok().data(0);
+                    }
+                    ruleValue = addPrizeRule.getRuleValue();
+                    LocalDate now = LocalDate.now();
+                    LocalDateTime begin = LocalDateTime.of(now, LocalTime.MIN);
+                    LocalDateTime end = LocalDateTime.of(now, LocalTime.MAX);
+                    BigDecimal toDayStayTime = actionRecordService.getToDayStayTime(currentUser.getId(), begin, end);
+                    BigDecimal divide = toDayStayTime.divide(new BigDecimal(60), 2, RoundingMode.HALF_UP);
+                    if (divide.compareTo(new BigDecimal(ruleValue)) < 0) {
+                        log.info("褰撳墠鐢ㄦ埛鍋滅暀鏃堕棿涓嶈冻鏃犳硶澧炲姞娆℃暟");
                         return Result.ok().data(0);
                     }
                     break;
@@ -707,7 +761,36 @@
                 case USER_SCAN_STORE:
                     break;
                 case USER_PUBLISH_EXAMINE:
-
+                    String videoId = jsonObject.getString("videoId");
+                    query.eq(AddNumCheek::getType, PrizeUserActionEnum.USER_PUBLISH_EXAMINE.name())
+                            .eq(AddNumCheek::getCheckNo, videoId);
+                    if (addNumCheekService.getOne(query) != null) {
+                        log.info("褰撳墠瑙嗛瀹℃牳宸茬粡鍙戞斁杩囦簡----------------->{}", videoId);
+                        return Result.ok().data(0);
+                    }
+                    Video video = videoService.getById(videoId);
+                    if (video == null) {
+                        log.info("褰撳墠瑙嗛涓嶅瓨鍦▄}",videoId);
+                        return Result.ok().data(0);
+                    }
+                    String status = video.getStatus();
+                    if (!"1".equals(status)) {
+                        log.info("褰撳墠瑙嗛娌℃湁瀹℃牳閫氳繃{}",videoId);
+                        return Result.ok().data(0);
+                    }
+                    LambdaQueryWrapper<VideoAuditRecord> eq = Wrappers.<VideoAuditRecord>lambdaQuery()
+                            .eq(VideoAuditRecord::getVideoId, videoId)
+                            .eq(VideoAuditRecord::getAuditSuccess, true);
+                    List<VideoAuditRecord> list = videoAuditRecordService.list(eq);
+                    if (list.isEmpty()) {
+                        log.info("褰撳墠瑙嗛娌℃湁瀹℃牳閫氳繃{}",videoId);
+                        return Result.ok().data(0);
+                    }
+                    addNumCheek = new AddNumCheek();
+                    addNumCheek.setType(PrizeUserActionEnum.USER_PUBLISH_EXAMINE.name());
+                    addNumCheek.setUserId(userId);
+                    addNumCheek.setCheckNo(videoId);
+                    addNumCheekService.save(addNumCheek);
                     break;
                 default:
                     return Result.ok().data(0);

--
Gitblit v1.8.0