puzhibing
4 天以前 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,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);
   }