From ba6b781b146b2e941489149fb23594067cb2fa43 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期二, 30 九月 2025 13:35:03 +0800 Subject: [PATCH] 添加抽奖次数调整 --- 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