huliguo
2025-07-29 0440f99f2874e54532c80d644644e04febf51a50
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查询抽奖活动信息
@@ -83,7 +87,7 @@
      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));
      List<TUserLotteryEvent> userLotteryEvents = userLotteryEventService.list(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
      vo.setLaveTimes(lotteryEvent.getTimes() - userLotteryEvents.size());
      //查询抽检活动奖品
      List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
@@ -91,7 +95,7 @@
      //答题正确率
      if (5 == lotteryEvent.getActivityType()) {
         TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
         if (null == questionsServiceOne) {
         if (null != questionsServiceOne) {
            vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate());
         }
      }
@@ -102,10 +106,12 @@
         userLotteryEventVo.setName(s.getObjectName());
         userLotteryEventVo.setPrizeType(s.getPrizeType());
         userLotteryEventVo.setNumber(s.getNumber());
         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()));
         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()) {
@@ -126,7 +132,7 @@
    * @return
    */
   @Override
   public R lotteryDraw(String id) {
   public R<TLotteryEventPrize> lotteryDraw(String id) {
      Long userId = SecurityUtils.getUserId();
      Member member = remoteMemberService.getMember(userId).getData();
      TLotteryEvent lotteryEvent = this.getById(id);
@@ -163,7 +169,7 @@
            Collections.shuffle(list);
            //开始获取随机数
            int random = new Random().nextInt(list.size());
            TLotteryEventPrize lotteryEventPrize = lotteryEventPrizeList.get(random);
            TLotteryEventPrize lotteryEventPrize = list.get(random);
            //添加中奖商品
            TUserLotteryEvent userLotteryEvent = new TUserLotteryEvent();
            userLotteryEvent.setId(IdUtils.simpleUUID());
@@ -176,11 +182,19 @@
            userLotteryEvent.setNumber(lotteryEventPrize.getNumber());
            //中奖优惠券
            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);
@@ -192,17 +206,29 @@
            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);
@@ -212,13 +238,14 @@
               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);
            return R.ok();
            return R.ok(lotteryEventPrize);
         }
      } catch (Exception e) {
         e.printStackTrace();
@@ -263,6 +290,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()) {
@@ -396,10 +425,11 @@
      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 {
            //线下抽奖,获取门店名称
@@ -479,6 +509,7 @@
      //1.奖品数据删除
/*      lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>()
            .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/
      lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId());
      //2.答题类型
      if (lotteryEvent.getActivityType().equals(5)) {