From 2a873a04ab9c600b8e0836d1f866a66d87c4b64f Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期一, 22 九月 2025 22:16:22 +0800
Subject: [PATCH] 修改bug

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java |   87 ++++++++++++++++++++++---------------------
 1 files changed, 44 insertions(+), 43 deletions(-)

diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
index 934697e..c85351c 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
@@ -79,7 +79,7 @@
 	 * @return
 	 */
 	@Override
-	public LotteryEventVo getLotteryEvent(String id) {
+	public LotteryEventVo getLotteryEvent(String id, String orderId) {
 		Long userId = SecurityUtils.getUserId();
 		TLotteryEvent lotteryEvent = this.getById(id);
 		//构建返回结果
@@ -87,36 +87,36 @@
 		vo.setId(lotteryEvent.getId());
 		vo.setName(lotteryEvent.getName());
 		vo.setActivityProfile(lotteryEvent.getActivityProfile());
-		//订单抽奖,每次进去都是新的抽奖机会
+		QueryWrapper<TUserLotteryEvent> wrapper = new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId);
+		//下单抽奖
 		if(2 == lotteryEvent.getActivityType()){
-			vo.setLaveTimes(lotteryEvent.getTimes());
-		}else{
-			List<TUserLotteryEvent> userLotteryEvents = userLotteryEventService.list(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
-			vo.setLaveTimes(lotteryEvent.getTimes() - userLotteryEvents.size());
-
-			//构建我的奖品明细
-			SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
-			List<UserLotteryEventVo> collect = userLotteryEvents.stream().map(s -> {
-				UserLotteryEventVo userLotteryEventVo = new UserLotteryEventVo();
-				userLotteryEventVo.setName(s.getObjectName());
-				userLotteryEventVo.setPrizeType(s.getPrizeType());
-				userLotteryEventVo.setNumber(s.getNumber());
-				if (Arrays.asList(2, 3).contains(s.getPrizeType())) {
-					MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrizeByGiftId(s.getId()).getData();
-					userLotteryEventVo.setVerifyCode("3-" + memberGiftRecord.getPrizeId());
-					userLotteryEventVo.setIsVerify(1 == memberGiftRecord.getVerifyStatus() ? 0 : 1);
-					userLotteryEventVo.setVerifyTime(null == memberGiftRecord.getVerifyTime() ? "" : sdf.format(memberGiftRecord.getVerifyTime()));
-				}
-				Member member = remoteMemberService.getMember(userId).getData();
-				userLotteryEventVo.setVerifyShop("全部门店");
-				if (null != member && null != member.getRelationShopId()) {
-					Shop shop = remoteShopService.getShop(member.getRelationShopId()).getData();
-					userLotteryEventVo.setVerifyShop(shop.getShopName());
-				}
-				return userLotteryEventVo;
-			}).collect(Collectors.toList());
-			vo.setYourPrizeList(collect);
+			wrapper.eq("order_id", orderId);
 		}
+		List<TUserLotteryEvent> userLotteryEvents = userLotteryEventService.list(wrapper);
+		vo.setLaveTimes(lotteryEvent.getTimes() - userLotteryEvents.size());
+
+		//构建我的奖品明细
+		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
+		List<UserLotteryEventVo> collect = userLotteryEvents.stream().map(s -> {
+			UserLotteryEventVo userLotteryEventVo = new UserLotteryEventVo();
+			userLotteryEventVo.setName(s.getObjectName());
+			userLotteryEventVo.setPrizeType(s.getPrizeType());
+			userLotteryEventVo.setNumber(s.getNumber());
+			if (Arrays.asList(2, 3).contains(s.getPrizeType())) {
+				MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrizeByGiftId(s.getId()).getData();
+				userLotteryEventVo.setVerifyCode("3-" + memberGiftRecord.getPrizeId());
+				userLotteryEventVo.setIsVerify(1 == memberGiftRecord.getVerifyStatus() ? 0 : 1);
+				userLotteryEventVo.setVerifyTime(null == memberGiftRecord.getVerifyTime() ? "" : sdf.format(memberGiftRecord.getVerifyTime()));
+			}
+			Member member = remoteMemberService.getMember(userId).getData();
+			userLotteryEventVo.setVerifyShop("全部门店");
+			if (null != member && null != member.getRelationShopId()) {
+				Shop shop = remoteShopService.getShop(member.getRelationShopId()).getData();
+				userLotteryEventVo.setVerifyShop(shop.getShopName());
+			}
+			return userLotteryEventVo;
+		}).collect(Collectors.toList());
+		vo.setYourPrizeList(collect);
 
 		//查询抽奖活动奖品
 		List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
@@ -139,7 +139,7 @@
 	 * @return
 	 */
 	@Override
-	public R<TLotteryEventPrize> lotteryDraw(String id) {
+	public R<TLotteryEventPrize> lotteryDraw(String id, String orderId) {
 		Long userId = SecurityUtils.getUserId();
 		Member member = remoteMemberService.getMember(userId).getData();
 		TLotteryEvent lotteryEvent = this.getById(id);
@@ -157,11 +157,9 @@
 			boolean tryLock = lock.tryLock(30, TimeUnit.SECONDS);
 			if (tryLock) {
 				//判断抽奖次数是否用完
-				if(2 != lotteryEvent.getActivityType()){
-					int count = userLotteryEventService.count(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
-					if (lotteryEvent.getTimes() <= count) {
-						return R.fail("抽奖次数已用完");
-					}
+				int count = userLotteryEventService.count(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId).eq("order_id", orderId));
+				if (lotteryEvent.getTimes() <= count) {
+					return R.fail("抽奖次数已用完");
 				}
 				List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
 				//开始抽奖,根据中奖概率来抽奖
@@ -189,6 +187,7 @@
 				userLotteryEvent.setObjectId(lotteryEventPrize.getObjectId());
 				userLotteryEvent.setObjectName(lotteryEventPrize.getObjectName());
 				userLotteryEvent.setNumber(lotteryEventPrize.getNumber());
+				userLotteryEvent.setOrderId(orderId);
 				//中奖优惠券
 				if (1 == lotteryEventPrize.getPrizeType()) {
 					AddMemberCoupon addMemberCoupon = new AddMemberCoupon();
@@ -450,8 +449,10 @@
 		voList.forEach(x->{
 			if (null == x.getShopId()){
 				x.setCreateObject("平台创建");
+
 			}else {
 				//线下抽奖,获取门店名称
+				x.setActivityType(6);
 				if(map.containsKey(Long.valueOf(x.getShopId()))){
 					x.setCreateObject(map.get(Long.valueOf(x.getShopId())).getShopName());
 				}else {
@@ -476,13 +477,7 @@
 		}
 		MgtLotteryEventDetailVO vo = new MgtLotteryEventDetailVO();
 		BeanUtils.copyProperties(lotteryEvent, vo);
-		if (lotteryEvent.getActivityType()==6) {
-			//线下抽奖 取商户名称
-			Shop data = remoteShopService.getShop(Long.valueOf(lotteryEvent.getShopId())).getData();
-			if (null != data) {
-				vo.setShopName(data.getShopName());
-			}
-		}
+
 		if(lotteryEvent.getActivityType()==5){
 			//题干数据
 			List<TLotteryEventQuestions> questionsList = lotteryEventQuestionsService.getBaseMapper().selectList(new LambdaQueryWrapper<TLotteryEventQuestions>().eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId()));
@@ -514,7 +509,13 @@
 				.eq(TLotteryEventPrize::getLotteryEventId, lotteryEvent.getId()));*/
 		List<TLotteryEventPrize> prizeList = lotteryEventPrizeService.getPrizeListByLotteryEventId(lotteryEvent.getId());
 		vo.setLotteryEventPrizeList(prizeList);
-		
+		if(null!=lotteryEvent.getShopId()){
+			//线下抽奖 取商户名称
+			Shop data = remoteShopService.getShop(Long.valueOf(lotteryEvent.getShopId())).getData();
+			if (null != data) {
+				vo.setShopName(data.getShopName());
+			}
+		}
 		return R.ok(vo);
 	}
 

--
Gitblit v1.7.1