From 8059e9b991c15edbac508e6b658a0d9571d11b1c Mon Sep 17 00:00:00 2001
From: huliguo <2023611923@qq.com>
Date: 星期五, 01 八月 2025 12:46:00 +0800
Subject: [PATCH] bug修改

---
 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java |  111 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 80 insertions(+), 31 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 d9047dd..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
@@ -16,12 +16,13 @@
 import com.ruoyi.goods.domain.vo.*;
 import com.ruoyi.goods.mapper.lottery.LotteryEventMapper;
 import com.ruoyi.goods.service.lottery.*;
+import com.ruoyi.system.api.domain.dto.IntegralChangeDto;
 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 com.ruoyi.system.api.model.AddIntegralRecordVo;
+import com.ruoyi.system.api.model.AddOrderVo;
+import com.ruoyi.system.api.service.*;
 import org.redisson.api.RLock;
 import org.redisson.api.RedissonClient;
 import org.springframework.stereotype.Service;
@@ -67,6 +68,9 @@
 
 	@Resource
 	private ILotteryEventQuestionsService lotteryEventQuestionsService;
+
+	@Resource
+	private RemoteOrderService remoteOrderService;
 	
 	/**
 	 * 根据id查询抽奖活动信息
@@ -75,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);
 		//构建返回结果
@@ -83,18 +87,14 @@
 		vo.setId(lotteryEvent.getId());
 		vo.setName(lotteryEvent.getName());
 		vo.setActivityProfile(lotteryEvent.getActivityProfile());
-		List<TUserLotteryEvent> userLotteryEvents = userLotteryEventService.list(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id));
-		vo.setLaveTimes(lotteryEvent.getTimes() - userLotteryEvents.size());
-		//查询抽检活动奖品
-		List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
-		vo.setPrizeList(lotteryEventPrizeList);
-		//答题正确率
-		if (5 == lotteryEvent.getActivityType()) {
-			TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
-			if (null != questionsServiceOne) {
-				vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate());
-			}
+		QueryWrapper<TUserLotteryEvent> wrapper = new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId);
+		//下单抽奖
+		if(2 == lotteryEvent.getActivityType()){
+			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 -> {
@@ -117,6 +117,17 @@
 			return userLotteryEventVo;
 		}).collect(Collectors.toList());
 		vo.setYourPrizeList(collect);
+
+		//查询抽奖活动奖品
+		List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
+		vo.setPrizeList(lotteryEventPrizeList);
+		//答题正确率
+		if (5 == lotteryEvent.getActivityType()) {
+			TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
+			if (null != questionsServiceOne) {
+				vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate());
+			}
+		}
 		return vo;
 	}
 	
@@ -128,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);
@@ -146,7 +157,7 @@
 			boolean tryLock = lock.tryLock(30, TimeUnit.SECONDS);
 			if (tryLock) {
 				//判断抽奖次数是否用完
-				int count = userLotteryEventService.count(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
+				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("抽奖次数已用完");
 				}
@@ -176,13 +187,22 @@
 				userLotteryEvent.setObjectId(lotteryEventPrize.getObjectId());
 				userLotteryEvent.setObjectName(lotteryEventPrize.getObjectName());
 				userLotteryEvent.setNumber(lotteryEventPrize.getNumber());
+				userLotteryEvent.setOrderId(orderId);
 				//中奖优惠券
 				if (1 == lotteryEventPrize.getPrizeType()) {
-					remoteCouponService.addMemberCoupon(lotteryEventPrize.getObjectId(), lotteryEventPrize.getNumber(), userId);
+					AddMemberCoupon addMemberCoupon = new AddMemberCoupon();
+					addMemberCoupon.setCouponId(lotteryEventPrize.getObjectId());
+					addMemberCoupon.setNumber(lotteryEventPrize.getNumber());
+					addMemberCoupon.setUserId(userId);
+					remoteCouponService.addMemberCoupon(addMemberCoupon);
 				}
 				//中奖积分
 				if (4 == lotteryEventPrize.getPrizeType()) {
-					remoteMemberService.addIntegralRecord(lotteryEventPrize.getNumber(), userId, id);
+					AddIntegralRecordVo addIntegralRecordVo = new AddIntegralRecordVo();
+					addIntegralRecordVo.setIntegral(lotteryEventPrize.getNumber());
+					addIntegralRecordVo.setUserId(userId);
+					addIntegralRecordVo.setOrderId(id);
+					remoteMemberService.addIntegralRecord(addIntegralRecordVo);
 				}
 				userLotteryEvent.setCreateTime(LocalDateTime.now());
 				userLotteryEventService.save(userLotteryEvent);
@@ -194,32 +214,55 @@
 				memberGiftRecord.setGiftId(userLotteryEvent.getId());
 				memberGiftRecord.setGiftFrom(1);
 				memberGiftRecord.setShopId(member.getRelationShopId());
+				memberGiftRecord.setVerifyStatus(1);
 				switch (lotteryEventPrize.getPrizeType()) {
 					case 1:
 						memberGiftRecord.setGiftType(1);
 						memberGiftRecord.setCouponId(userLotteryEvent.getObjectId());
 						memberGiftRecord.setCouponNumber(userLotteryEvent.getNumber());
+						memberGiftRecord.setCouponName(userLotteryEvent.getObjectName());
+						memberGiftRecord.setVerifyStatus(2);
+						memberGiftRecord.setVerifyTime(new Date());
 						break;
 					case 2:
 						memberGiftRecord.setGiftType(2);
 						memberGiftRecord.setGoodsId(userLotteryEvent.getObjectId());
-						memberGiftRecord.setGiftName(userLotteryEvent.getObjectName());
 						memberGiftRecord.setGoodsNumber(userLotteryEvent.getNumber());
+						memberGiftRecord.setGoodsName(userLotteryEvent.getObjectName());
+						//添加待核销订单
+						AddOrderVo orderVo = new AddOrderVo();
+						orderVo.setShopId(member.getRelationShopId());
+						orderVo.setUserId(member.getUserId());
+						orderVo.setId(userLotteryEvent.getId());
+						orderVo.setGoodsId(userLotteryEvent.getObjectId());
+						orderVo.setGoodsNum(userLotteryEvent.getNumber());
+						remoteOrderService.addOrder(orderVo);
 						break;
 					case 3:
 						memberGiftRecord.setGiftType(4);
 						memberGiftRecord.setGiftName(userLotteryEvent.getObjectName());
 						memberGiftRecord.setGiftNumber(userLotteryEvent.getNumber());
+						//添加待核销订单
+						AddOrderVo orderVo1 = new AddOrderVo();
+						orderVo1.setShopId(member.getRelationShopId());
+						orderVo1.setUserId(member.getUserId());
+						orderVo1.setId(userLotteryEvent.getId());
+						orderVo1.setGoodsName(userLotteryEvent.getObjectName());
+						orderVo1.setGoodsNum(userLotteryEvent.getNumber());
+						remoteOrderService.addOrder(orderVo1);
 						break;
 					case 4:
 						memberGiftRecord.setGiftType(5);
 						memberGiftRecord.setIntegralNumber(userLotteryEvent.getNumber());
+						memberGiftRecord.setVerifyStatus(2);
+						memberGiftRecord.setVerifyTime(new Date());
 						break;
 				}
 				memberGiftRecord.setPrizeFrom(2);
 				memberGiftRecord.setCreateTime(new Date());
-				memberGiftRecord.setVerifyStatus(1);
-				remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
+				if(5 != lotteryEventPrize.getPrizeType()){
+					remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
+				}
 				return R.ok(lotteryEventPrize);
 			}
 		} catch (Exception e) {
@@ -265,6 +308,8 @@
 				.eq(TLotteryEvent::getActivityType, dto.getActivityType())//类型相同的
 				.between(TLotteryEvent::getStartTime, dto.getStartTime(), dto.getEndTime())//开始时间在这个活动的(开始-结束)范围内的
 				.or()
+				.eq(TLotteryEvent::getDelFlag, 0)//未删除的
+				.eq(TLotteryEvent::getActivityType, dto.getActivityType())//类型相同的
 				.between(TLotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的
 		);
 		if (null != lotteryEvents && !lotteryEvents.isEmpty()) {
@@ -398,13 +443,16 @@
 		page.setCurrent(dto.getPageNum());
 		page.setPages(total/dto.getPageSize());
         //获取分页信息
+		dto.setOffset((dto.getPageNum() - 1) * dto.getPageSize());
 		List<MgtLotteryEventPageVo> voList = this.baseMapper.pageMgtLotteryEvent(dto);
 		//填充创建对象
 		voList.forEach(x->{
-			if (x.getActivityType()!=6){
+			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 {
@@ -429,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()));
@@ -467,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);
 	}
 
@@ -481,6 +529,7 @@
 		//1.奖品数据删除
 /*		lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>()
 				.eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/
+		
 		lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId());
 		//2.答题类型
 		if (lotteryEvent.getActivityType().equals(5)) {

--
Gitblit v1.7.1