| | |
| | | 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; |
| | |
| | | private RedissonClient redissonClient; |
| | | |
| | | @Resource |
| | | private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsService; |
| | | private IUserLotteryEventQuestionsService userLotteryEventQuestionsAnswersService; |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | |
| | | /** |
| | |
| | | */ |
| | | @Override |
| | | public LotteryEventVo getLotteryEvent(String id) { |
| | | Long userId = SecurityUtils.getUserId(); |
| | | LotteryEvent lotteryEvent = this.getById(id); |
| | | //构建返回结果 |
| | | LotteryEventVo vo = new LotteryEventVo(); |
| | |
| | | //查询抽检活动奖品 |
| | | 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); |
| | |
| | | @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("答题抽奖失败,答题正确率低于活动要求"); |
| | | } |
| | | } |
| | |
| | | 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); |
| | |
| | | } |
| | | 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) { |