puzhibing
3 天以前 2a873a04ab9c600b8e0836d1f866a66d87c4b64f
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,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).eq("user_id", userId));
      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 -> {
@@ -121,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;
   }
   
@@ -132,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);
@@ -150,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("抽奖次数已用完");
            }
@@ -180,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();
@@ -234,6 +242,14 @@
                  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);
@@ -244,7 +260,9 @@
            }
            memberGiftRecord.setPrizeFrom(2);
            memberGiftRecord.setCreateTime(new Date());
            remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
            if(5 != lotteryEventPrize.getPrizeType()){
               remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
            }
            return R.ok(lotteryEventPrize);
         }
      } catch (Exception e) {
@@ -431,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 {
@@ -457,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()));
@@ -495,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);
   }