puzhibing
2025-07-29 c4b2a916399eee796bbf93d24bf41fd18c4d9f44
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java
@@ -25,6 +25,7 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
@@ -144,6 +145,12 @@
         vo.setContinueAnswer(null != questionsServiceOne ? questionsServiceOne.getStatus() : 0);
         vo.setAnswerStartTime(null != questionsServiceOne ? questionsServiceOne.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null);
         vo.setAnswerTimeLimit(lotteryEvent.getAnsweringTime());
         if (vo.getContinueAnswer() == 1) {
            long remainingTime = (lotteryEvent.getAnsweringTime() * 60) - (LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) - questionsServiceOne.getCreateTime().toEpochSecond(ZoneOffset.of("+8")));
            int count1 = userLotteryEventQuestionsAnswersService.count(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", id).eq("user_id", userId));
            vo.setRemainingTime(remainingTime);
            vo.setCurrent(count1 - 1);
         }
      }
      return R.ok(vo);
   }
@@ -263,7 +270,12 @@
      TLotteryEvent lotteryEvent = lotteryEventService.getById(id);
      TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
      if (null == questionsServiceOne) {
         return R.fail("请先进行答题操作");
         questionsServiceOne = new TUserLotteryEventQuestions();
         questionsServiceOne.setId(IdUtils.simpleUUID());
         questionsServiceOne.setUserId(userId);
         questionsServiceOne.setLotteryEventId(id);
         questionsServiceOne.setStatus(1);
         questionsServiceOne.setCreateTime(LocalDateTime.now());
      }
      questionsServiceOne.setStatus(2);
      questionsServiceOne.setEndTime(LocalDateTime.now());
@@ -273,7 +285,7 @@
      int right = list.stream().filter(item -> 1 == item.getIsCorrect()).collect(Collectors.toList()).size();
      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.updateById(questionsServiceOne);
      userLotteryEventQuestionsService.saveOrUpdate(questionsServiceOne);
      if (multiply.compareTo(lotteryEvent.getAccuracy()) >= 0) {
         return R.ok(true);
      }