puzhibing
9 天以前 a95d0c4bdd96b09342c7ccf9aa1aef4b26b31302
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java
@@ -56,20 +56,20 @@
   private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsAnswersService;
   
   @Resource
   private ILotteryEventQuestionsService lotteryEventServiceQuestionsService;
   private ILotteryEventQuestionsService lotteryEventQuestionsService;
   
   @Resource
   private ILotteryEventQuestionsAnswersService lotteryEventQuestionsAnswersService;
   
   
   @ResponseBody
   @PostMapping("/getLotteryEvent/{id}")
   @PostMapping("/getLotteryEvent/{id}/{orderId}")
   @ApiOperation(value = "获取抽奖页详情【2.0】", tags = "抽奖活动")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "id", value = "抽奖活动id", required = true, dataType = "String", paramType = "path")
   })
   public R<LotteryEventVo> getLotteryEvent(@PathVariable("id") String id) {
      LotteryEventVo lotteryEvent = lotteryEventService.getLotteryEvent(id);
   public R<LotteryEventVo> getLotteryEvent(@PathVariable("id") String id, @PathVariable("orderId") String orderId) {
      LotteryEventVo lotteryEvent = lotteryEventService.getLotteryEvent(id, orderId);
      TLotteryEvent event = lotteryEventService.getById(id);
      if (LocalDateTime.now().isBefore(event.getStartTime())) {
         lotteryEvent.setStatus(1);
@@ -85,13 +85,13 @@
   
   
   @ResponseBody
   @PostMapping("/lotteryDraw/{id}")
   @PostMapping("/lotteryDraw/{id}/{orderId}")
   @ApiOperation(value = "抽奖操作【2.0】", tags = "抽奖活动", notes = "返回奖品ID")
   @ApiImplicitParams({
         @ApiImplicitParam(name = "id", value = "抽奖活动id", required = true, dataType = "String", paramType = "path")
   })
   public R<TLotteryEventPrize> lotteryDraw(@PathVariable("id") String id) {
      return lotteryEventService.lotteryDraw(id);
   public R<TLotteryEventPrize> lotteryDraw(@PathVariable("id") String id, @PathVariable("orderId") String orderId) {
      return lotteryEventService.lotteryDraw(id, orderId);
   }
   
   
@@ -162,14 +162,15 @@
      Long userId = SecurityUtils.getUserId();
      TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).eq("user_id", userId));
      LotteryEventQuestionsVo vo = new LotteryEventQuestionsVo();
      int count = lotteryEventServiceQuestionsService.count(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()));
      vo.setId(dto.getId());
      int count = lotteryEventQuestionsService.count(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()));
      vo.setTotal(count);
      //没有答题,直接从第一题开始
      if (null == questionsServiceOne) {
         if (-1 == dto.getStepOrDown()) {
            return R.fail("操作失败");
         }
         TLotteryEventQuestions questions = lotteryEventServiceQuestionsService.getOne(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort").last(" limit 1"));
         TLotteryEventQuestions questions = lotteryEventQuestionsService.getOne(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort").last(" limit 1"));
         vo.setCurrent(0);
         vo.setName(questions.getName());
         List<TLotteryEventQuestionsAnswers> list = lotteryEventQuestionsAnswersService.list(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", questions.getId()));
@@ -190,14 +191,13 @@
            }
            current--;
         } else {
            current++;
            //下一题
            current++;
            if (current >= count) {
               current = count - 1;
            }
         }
         List<TLotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort"));
         List<TLotteryEventQuestions> list = lotteryEventQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort"));
         TLotteryEventQuestions lotteryEventQuestions = list.get(current);
         vo.setCurrent(current);
         vo.setName(lotteryEventQuestions.getName());
@@ -209,12 +209,18 @@
            map.put("name", item.getAnswers());
            return map;
         }).collect(Collectors.toList());
         if (-1 == dto.getStepOrDown()) {
            TUserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", dto.getId()).eq("user_id", userId).orderByDesc("create_time").last(" limit 0, 1"));
            if (null != one) {
               vo.setAnswer(lotteryEventQuestionsAnswersService.getById(one.getLotteryEventQuestionsAnswersId()).getAnswers());
            }
         TUserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_question_id", lotteryEventQuestions.getId()).eq("user_id", userId).orderByDesc("create_time").last(" limit 0, 1"));
         if (null != one) {
            vo.setAnswer(lotteryEventQuestionsAnswersService.getById(one.getLotteryEventQuestionsAnswersId()).getAnswers());
         }
//         if (-1 == dto.getStepOrDown() || current == list.size() - 1) {
//            TUserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_question_id", lotteryEventQuestions.getId()).eq("user_id", userId).orderByDesc("create_time").last(" limit 0, 1"));
//            if (null != one) {
//               vo.setAnswer(lotteryEventQuestionsAnswersService.getById(one.getLotteryEventQuestionsAnswersId()).getAnswers());
//            }
//         }
         vo.setOptions(options);
      }
      return R.ok(vo);
@@ -224,7 +230,7 @@
   @PostMapping("/answerQuestion")
   @ApiOperation(value = "答题操作【2.0】", tags = "抽奖活动")
   public R answerQuestion(@RequestBody AnswerQuestionDto dto) {
      List<TLotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort"));
      List<TLotteryEventQuestions> list = lotteryEventQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort"));
      TLotteryEventQuestions lotteryEventQuestions = list.get(dto.getCurrent());
      List<TLotteryEventQuestionsAnswers> list1 = lotteryEventQuestionsAnswersService.list(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", lotteryEventQuestions.getId()));
      TLotteryEventQuestionsAnswers lotteryEventQuestionsAnswers = list1.stream().filter(item -> item.getAnswers().equals(dto.getAnswer())).findAny().orElse(null);
@@ -273,6 +279,9 @@
   public R<Boolean> endAnswerQuestion(@PathVariable("id") String id) {
      Long userId = SecurityUtils.getUserId();
      TLotteryEvent lotteryEvent = lotteryEventService.getById(id);
      if(null == lotteryEvent){
         return R.fail("无效的抽奖活动id");
      }
      TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
      if (null == questionsServiceOne) {
         questionsServiceOne = new TUserLotteryEventQuestions();
@@ -285,9 +294,8 @@
      questionsServiceOne.setStatus(2);
      questionsServiceOne.setEndTime(LocalDateTime.now());
      //计算正确率
      List<TUserLotteryEventQuestionsAnswers> list = userLotteryEventQuestionsAnswersService.list(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", id).eq("user_id", userId));
      int count = list.size();
      int right = list.stream().filter(item -> 1 == item.getIsCorrect()).collect(Collectors.toList()).size();
      int count = lotteryEventQuestionsService.count(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", id));
      int right = userLotteryEventQuestionsAnswersService.count(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", id).eq("user_id", userId).eq("is_correct", 1));
      BigDecimal multiply = new BigDecimal(right).divide(new BigDecimal(count), 4, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100));
      questionsServiceOne.setCorrectAnswerRate(multiply);
      userLotteryEventQuestionsService.saveOrUpdate(questionsServiceOne);