From 095c52c6ec7882ce11177178b49d33e6c886af61 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期一, 17 十一月 2025 15:02:38 +0800
Subject: [PATCH] 添加已完成标识

---
 framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java |  165 +++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 148 insertions(+), 17 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..2c80580 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
@@ -10,12 +10,11 @@
 import cn.lili.modules.lmk.domain.entity.*;
 import cn.lili.modules.lmk.domain.form.AddPrizeNumForm;
 import cn.lili.modules.lmk.domain.query.PrizeRecordTimeQuery;
-import cn.lili.modules.lmk.domain.vo.PrizeDetailVO;
-import cn.lili.modules.lmk.domain.vo.PrizeProbabilityVO;
-import cn.lili.modules.lmk.domain.vo.PrizeRecordTimeVO;
-import cn.lili.modules.lmk.domain.vo.PrizeResultVO;
+import cn.lili.modules.lmk.domain.vo.*;
 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 +73,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 +550,46 @@
             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);
+            }
+            // 闄や簡瑙嗛澶栭渶瑕佹牎楠岀敤鎴锋槸鍚﹁嚜宸辩偣鍑讳簡鑷繁鐨勫垎浜�
+            PrizeUserActionEnum actionEnum = PrizeUserActionEnum.select(addPrizeNumForm.getAddType());
+            if (actionEnum == null) {
+                log.info("褰撳墠绫诲瀷涓嶅瓨鍦�");
+                return Result.ok().data(0);
+            }
+            if (!PrizeUserActionEnum.SHARE_GOODS_VIDEO.name().equals(actionEnum.name())) {
+                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 +602,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 +636,6 @@
                     break;
                 }
             }
-            String extend = addPrizeNumForm.getExtend();
-            JSONObject jsonObject = JSONObject.parseObject(extend);
             LambdaQueryWrapper<AddNumCheek> query = Wrappers.lambdaQuery();
             AddNumCheek addNumCheek = null;
             String orderSn = null;
@@ -604,9 +643,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 +653,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 +702,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 +767,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);
@@ -746,4 +835,46 @@
         LambdaQueryWrapper<AddPrizeRule> one = Wrappers.<AddPrizeRule>lambdaQuery().eq(AddPrizeRule::getRuleCode, ruleCode);
         return addPrizeRuleService.getOne(one);
     }
+
+    @Override
+    public Result getPrizeRule() {
+        List<AddPrizeRule> list = addPrizeRuleService.list(Wrappers.<AddPrizeRule>lambdaQuery().orderByDesc(AddPrizeRule::getId));
+        AuthUser currentUser = UserContext.getCurrentUser();
+        if (Objects.nonNull(currentUser)) {
+            String id = currentUser.getId();
+            LambdaQueryWrapper<PrizeActivity> eq = Wrappers.<PrizeActivity>lambdaQuery()
+                    .eq(PrizeActivity::getDeleteFlag, Boolean.FALSE)
+                    .eq(PrizeActivity::getEnableStatus, PrizeActivityStatusEnum.ON.name())
+                    .eq(PrizeActivity::getPopup, Boolean.TRUE);
+            List<PrizeActivity> activities = prizeActivityService.list(eq);
+            PrizeActivity activity = activities.get(0);
+            if (Objects.nonNull(activity)) {
+                try {
+                    List<PrizeNumber> prizeNumberList = getPrizeNumberList(activity.getId(), id);
+                    Set<String> completedActionSet = prizeNumberList.stream().map(PrizeNumber::getUserAction).collect(Collectors.toSet());
+                    List<AddPrizeRule> finalRuleList = list.stream()
+                            .map(rule -> {
+                                if (Objects.isNull(rule.getRuleCode())) {
+                                    return rule;
+                                }
+                                boolean isCompleted = completedActionSet.contains(rule.getRuleCode());
+                                if (!isCompleted) {
+                                    return rule;
+                                }
+                                AddPrizeRule completedRule = new AddPrizeRule();
+                                BeanUtils.copyProperties(rule, completedRule);
+                                String originalName = Optional.ofNullable(completedRule.getRuleName()).orElse("");
+                                if (!originalName.contains("(宸插畬鎴�)")) {
+                                    completedRule.setRuleName(originalName + "(宸插畬鎴�)");
+                                }
+                                return completedRule;
+                            }).collect(Collectors.toList());
+                    return Result.ok().data(finalRuleList);
+                } catch (Exception e) {
+                    return Result.ok().data(list);
+                }
+            }
+        }
+        return Result.ok().data(list);
+    }
 }

--
Gitblit v1.8.0