From 076c7f1df538ed9c04701ebda3f6fe11c47e91e4 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期四, 25 九月 2025 17:16:11 +0800
Subject: [PATCH] 订单统计
---
framework/src/main/java/cn/lili/modules/lmk/service/impl/PrizeServiceImpl.java | 49 ++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 46 insertions(+), 3 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 60f23e6..60c0963 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
@@ -5,6 +5,7 @@
import cn.lili.common.properties.RocketmqCustomProperties;
import cn.lili.common.security.AuthUser;
import cn.lili.common.security.context.UserContext;
+import cn.lili.common.utils.BeanUtil;
import cn.lili.common.utils.StringUtils;
import cn.lili.modules.lmk.domain.entity.*;
import cn.lili.modules.lmk.domain.form.AddPrizeNumForm;
@@ -12,20 +13,26 @@
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.enums.general.*;
import cn.lili.modules.lmk.service.*;
+import cn.lili.modules.promotion.entity.dos.Coupon;
+import cn.lili.modules.promotion.service.CouponService;
import cn.lili.mybatis.BaseEntity;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.utils.COSUtil;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.core.RocketMQTemplate;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
+import org.springframework.beans.BeanUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -42,6 +49,7 @@
import java.util.function.Function;
import java.util.stream.Collectors;
+@Slf4j
@Service
@RequiredArgsConstructor
public class PrizeServiceImpl implements PrizeService {
@@ -57,6 +65,7 @@
private final RocketmqCustomProperties rocketmqCustomProperties;
private final RocketMQTemplate rocketMQTemplate;
private final COSUtil cosUtil;
+ private final CouponService couponService;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -216,6 +225,12 @@
}
BigDecimal max = currentProbability.multiply(BigDecimal.valueOf(100));
BigDecimal bigDecimal = generateRandom(BigDecimal.ONE, max);
+ try {
+ log.info("鎶藉鍙风爜涓�---------------------------->{}", bigDecimal);
+ log.info("鎶藉姒傜巼闆嗗悎涓�------------------------->{}", JSONObject.toJSONString(prizeProbabilityList));
+ } catch (Exception e) {
+ log.error("鎵撳嵃鎶藉淇℃伅鎶ラ敊----------------------->", e);
+ }
for (PrizeProbabilityVO prizeProbabilityVO : prizeProbabilityList) {
BigDecimal minP = prizeProbabilityVO.getProbability()[0][0];
BigDecimal maxP = prizeProbabilityVO.getProbability()[0][1];
@@ -223,6 +238,31 @@
prizeWon = prizeProbabilityVO.getActivityPrizeRefId();
break;
}
+ }
+ Coupon coupon = null;
+ //鏍¢獙浼樻儬鍗锋槸鍚﹀厑璁哥敤鎴峰棰嗕笉鍏佽褰撴湭涓澶勭悊
+ if (prizeWon != null) {
+ ActivityRefPrize activityRefPrize = canPrizeMap.get(prizeWon);
+ String prizeDrawId = activityRefPrize.getPrizeId();
+ PrizeDraw prizeDraw = prizeDrawService.getById(prizeDrawId);
+ String couponId = prizeDraw.getCouponId();
+ coupon = couponService.getById(couponId);
+ if (coupon == null) {
+ prizeWon = null;
+ } else {
+ Integer couponLimitNum = coupon.getCouponLimitNum();
+ //鑾峰彇鐢ㄦ埛杩欎釜浼樻儬鍗风殑涓鎯呭喌
+ LambdaQueryWrapper<PrizeRecord> eq = Wrappers.<PrizeRecord>lambdaQuery()
+ .eq(PrizeRecord::getUserId, userId)
+ .eq(PrizeRecord::getPrizeActivityId, prizeId)
+ .eq(PrizeRecord::getPrizeId, prizeDrawId);
+ int size = prizeRecordService.list(eq).size();
+ if ( couponLimitNum>0 && size >= couponLimitNum) {
+ log.info("瑙﹀彂浼樻儬鍗烽鍙栭檺鍒�---------->{}",prizeWon);
+ prizeWon = null;
+ }
+ }
+
}
//鏈腑濂栫殑鎯呭喌
if (prizeWon == null) {
@@ -290,6 +330,7 @@
// if (!lock.equals(nowLock)) {
// throw new RuntimeException("褰撳墠娲诲姩澶伀鐖嗕簡璇风◢鍚庡啀璇�");
// }
+ String couponId = coupon.getId();
// 璧癿q寮傛澶勭悊
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override
@@ -298,7 +339,10 @@
rocketMQTemplate.asyncSend(destination, JSON.toJSONString(prizeRecord), RocketmqSendCallbackBuilder.commonCallback());
}
});
- return Result.ok().data(activityRefPrize);
+ PrizeResultVO prizeResultVO = new PrizeResultVO();
+ BeanUtils.copyProperties(activityRefPrize, prizeResultVO);
+ prizeResultVO.setCouponId(couponId);
+ return Result.ok().data(prizeResultVO);
}
public static BigDecimal generateRandom(BigDecimal min, BigDecimal max) {
@@ -468,8 +512,7 @@
if (actionEnum == null) {
throw new ServiceException("褰撳墠绫诲瀷涓嶅瓨鍦�");
}
- Boolean check ;
- //todo 杩涜鏁版嵁鏍¢獙
+ //todo 杩涜鏁版嵁鏍¢獙
switch (actionEnum) {
case BUY:
System.err.println("BUY");
--
Gitblit v1.8.0