From d6a0c57043e8cc20694a3c678bf8e3a8f28f6499 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期四, 29 五月 2025 11:20:14 +0800
Subject: [PATCH] 新增加用户端接口

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java |   78 +++++++++++++++++++++++++++++++++------
 1 files changed, 66 insertions(+), 12 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 5c1bc6a..b83e9cb 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
@@ -10,22 +10,27 @@
 import com.ruoyi.goods.api.domain.LotteryEvent;
 import com.ruoyi.goods.api.domain.LotteryEventPrize;
 import com.ruoyi.goods.api.domain.UserLotteryEvent;
+import com.ruoyi.goods.api.domain.UserLotteryEventQuestions;
 import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo;
 import com.ruoyi.goods.domain.vo.LotteryEventVo;
 import com.ruoyi.goods.domain.vo.UserLotteryEventVo;
 import com.ruoyi.goods.mapper.lottery.LotteryEventMapper;
 import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService;
 import com.ruoyi.goods.service.lottery.ILotteryEventService;
-import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsAnswersService;
+import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsService;
 import com.ruoyi.goods.service.lottery.IUserLotteryEventService;
+import com.ruoyi.system.api.domain.poji.member.Member;
+import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
+import com.ruoyi.system.api.domain.poji.shop.Shop;
 import com.ruoyi.system.api.service.RemoteCouponService;
 import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -54,7 +59,10 @@
 	private RedissonClient redissonClient;
 	
 	@Resource
-	private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsService;
+	private IUserLotteryEventQuestionsService userLotteryEventQuestionsAnswersService;
+	
+	@Resource
+	private RemoteShopService remoteShopService;
 	
 	
 	/**
@@ -65,6 +73,7 @@
 	 */
 	@Override
 	public LotteryEventVo getLotteryEvent(String id) {
+		Long userId = SecurityUtils.getUserId();
 		LotteryEvent lotteryEvent = this.getById(id);
 		//构建返回结果
 		LotteryEventVo vo = new LotteryEventVo();
@@ -76,14 +85,30 @@
 		//查询抽检活动奖品
 		List<LotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<LotteryEventPrize>().eq("lottery_event_id", id));
 		vo.setPrizeList(lotteryEventPrizeList);
-		
+		//答题正确率
+		if (5 == lotteryEvent.getActivityType()) {
+			UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
+			if (null == questionsServiceOne) {
+				vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate());
+			}
+		}
 		//构建我的奖品明细
+		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());
-			userLotteryEventVo.setVerifyCode(s.getVerifyCode());
+			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);
@@ -100,11 +125,12 @@
 	@Override
 	public R lotteryDraw(String id) {
 		Long userId = SecurityUtils.getUserId();
+		Member member = remoteMemberService.getMember(userId).getData();
 		LotteryEvent lotteryEvent = this.getById(id);
 		//判断答题抽奖是否满足抽奖条件
 		if (lotteryEvent.getActivityType() == 5) {
-			BigDecimal correctAnswerRate = userLotteryEventQuestionsService.getCorrectAnswerRate(userId, id);
-			if (correctAnswerRate.compareTo(lotteryEvent.getAccuracy()) < 0) {
+			UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
+			if (questionsServiceOne.getCorrectAnswerRate().compareTo(lotteryEvent.getAccuracy()) < 0) {
 				return R.fail("答题抽奖失败,答题正确率低于活动要求");
 			}
 		}
@@ -145,11 +171,6 @@
 				userLotteryEvent.setObjectId(lotteryEventPrize.getObjectId());
 				userLotteryEvent.setObjectName(lotteryEventPrize.getObjectName());
 				userLotteryEvent.setNumber(lotteryEventPrize.getNumber());
-				//商品需要生成核销码和核销状态
-				if (Arrays.asList(2, 3).contains(lotteryEventPrize.getPrizeType())) {
-					userLotteryEvent.setVerifyCode(IdUtils.simpleUUID());
-					userLotteryEvent.setIsVerify(0);
-				}
 				//中奖优惠券
 				if (1 == lotteryEventPrize.getPrizeType()) {
 					remoteCouponService.addMemberCoupon(lotteryEventPrize.getObjectId(), lotteryEventPrize.getNumber(), userId);
@@ -160,6 +181,39 @@
 				}
 				userLotteryEvent.setCreateTime(LocalDateTime.now());
 				userLotteryEventService.save(userLotteryEvent);
+				//添加奖品数据
+				MemberGiftRecord memberGiftRecord = new MemberGiftRecord();
+				memberGiftRecord.setPrizeId(IdUtils.simpleUUID());
+				memberGiftRecord.setDelFlag(0);
+				memberGiftRecord.setUserId(userId);
+				memberGiftRecord.setGiftId(userLotteryEvent.getId());
+				memberGiftRecord.setGiftFrom(1);
+				memberGiftRecord.setShopId(member.getRelationShopId());
+				switch (lotteryEventPrize.getPrizeType()) {
+					case 1:
+						memberGiftRecord.setGiftType(1);
+						memberGiftRecord.setCouponId(userLotteryEvent.getObjectId());
+						memberGiftRecord.setCouponNumber(userLotteryEvent.getNumber());
+						break;
+					case 2:
+						memberGiftRecord.setGiftType(2);
+						memberGiftRecord.setGoodsId(userLotteryEvent.getObjectId());
+						memberGiftRecord.setGoodsNumber(userLotteryEvent.getNumber());
+						break;
+					case 3:
+						memberGiftRecord.setGiftType(4);
+						memberGiftRecord.setGiftName(userLotteryEvent.getObjectName());
+						memberGiftRecord.setGiftNumber(userLotteryEvent.getNumber());
+						break;
+					case 4:
+						memberGiftRecord.setGiftType(5);
+						memberGiftRecord.setIntegralNumber(userLotteryEvent.getNumber());
+						break;
+				}
+				memberGiftRecord.setPrizeFrom(2);
+				memberGiftRecord.setCreateTime(new Date());
+				memberGiftRecord.setVerifyStatus(1);
+				remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
 				return R.ok();
 			}
 		} catch (Exception e) {

--
Gitblit v1.7.1