From d900bdc7b712666cdeafe36f01e485f4672e4651 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期一, 17 十一月 2025 15:14:33 +0800
Subject: [PATCH] 修改奖品bug
---
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