| | |
| | | package com.ruoyi.study.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.constant.Constants; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.GlobalException; |
| | | import com.ruoyi.common.core.web.domain.BaseModel; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.goods.api.feignClient.GoodsClient; |
| | |
| | | import java.io.File; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URL; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | subjectRecordDetailService.save(tSubjectRecordDetail); |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Autowired |
| | | private ICategoryService categoryService; |
| | | |
| | | @PostMapping("/storyList") |
| | | // @ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"}) |
| | | public R<PageInfo<TStory>> storyList(@RequestBody ChoiceStory query) { |
| | |
| | | .eq("week", week) |
| | | .eq("type", type)); |
| | | one.setQuarter(dto.getQuarter()); |
| | | one.setQuarterRate(dto.getQuarterRate()); |
| | | one.setTitle(dto.getTitle()); |
| | | studyService.updateById(one); |
| | | GameDTO game = dto.getGame(); |
| | |
| | | tStudyListen.setIntegral(studyListenDTO.getIntegral()); |
| | | tStudyListen.setWeek(week); |
| | | tStudyListen.setIsVip(studyListenDTO.getIsVip()); |
| | | tStudyListen.setRate(dto.getListenRate()); |
| | | studyListenService.save(tStudyListen); |
| | | } |
| | | studyLookService.remove(new QueryWrapper<TStudyLook>() |
| | |
| | | tStudyLook.setIntegral(studyLookDTO.getIntegral()); |
| | | tStudyLook.setWeek(week); |
| | | tStudyLook.setIsVip(studyLookDTO.getIsVip()); |
| | | tStudyLook.setRate(dto.getLookRate()); |
| | | |
| | | studyLookService.save(tStudyLook); |
| | | } |
| | | studyInductionService.remove(new QueryWrapper<TStudyInduction>() |
| | |
| | | tStudyInduction.setSubject(studyInductionDTO.getSubject()); |
| | | tStudyInduction.setIntegral(studyInductionDTO.getIntegral()); |
| | | tStudyInduction.setWeek(week); |
| | | tStudyInduction.setRate(dto.getInductionRate()); |
| | | |
| | | tStudyInduction.setIsVip(studyInductionDTO.getIsVip()); |
| | | studyInductionService.save(tStudyInduction); |
| | | } |
| | |
| | | tStudyAnswer.setAnswerSubject(studyAnswerDTO.getAnswerSubject()); |
| | | tStudyAnswer.setIntegral(studyAnswerDTO.getIntegral()); |
| | | tStudyAnswer.setWeek(week); |
| | | tStudyAnswer.setRate(dto.getAnswerRate()); |
| | | |
| | | tStudyAnswer.setIsVip(studyAnswerDTO.getIsVip()); |
| | | studyAnswerService.save(tStudyAnswer); |
| | | } |
| | |
| | | tStudyPair.setSubject(studyPairDTO.getSubject()); |
| | | tStudyPair.setIntegral(studyPairDTO.getIntegral()); |
| | | tStudyPair.setWeek(week); |
| | | tStudyPair.setRate(dto.getPairRate()); |
| | | tStudyPair.setIsVip(studyPairDTO.getIsVip()); |
| | | studyPairService.save(tStudyPair); |
| | | } |
| | |
| | | double temp =1.687; |
| | | System.err.println((int)temp); |
| | | } |
| | | |
| | | /** |
| | | * 添加周目 |
| | | * |
| | |
| | | if (!list8.isEmpty()) { |
| | | res.setQuarter(list8.get(0).getQuarter()); |
| | | res.setTitle(list8.get(0).getTitle()); |
| | | res.setQuarterRate(list8.get(0).getQuarterRate()); |
| | | } |
| | | List<StudyListenVO> listenVOS = new ArrayList<>(); |
| | | List<GameVO> gameVOS = new ArrayList<>(); |
| | |
| | | studyListenVO.setIsVip(tStudyListen.getIsVip()); |
| | | listenVOS.add(studyListenVO); |
| | | } |
| | | res.setListenRate(tStudyListen.getRate()); |
| | | |
| | | } |
| | | // 看音选图 |
| | |
| | | studyLookVO1.setIsVip(tStudyLook.getIsVip()); |
| | | lookVOS.add(studyLookVO1); |
| | | } |
| | | res.setLookRate(tStudyLook.getRate()); |
| | | |
| | | } |
| | | // 归纳排除 |
| | |
| | | studyInductionVO.setIsVip(tStudyInduction.getIsVip()); |
| | | inductionVOS.add(studyInductionVO); |
| | | } |
| | | res.setInductionRate(tStudyInduction.getRate()); |
| | | |
| | | } |
| | | // 有问有答 |
| | |
| | | studyAnswerVO.setIsAnswer(tStudyAnswer.getIsAnswer()); |
| | | studyAnswerVO.setSubject(tStudyAnswer.getSubject() + "," + tStudyAnswer.getAnswerSubject()); |
| | | answerVOS.add(studyAnswerVO); |
| | | res.setAnswerRate(tStudyAnswer.getRate()); |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | studyPairVO.setIsVip(tStudyPair.getIsVip()); |
| | | pairVOS.add(studyPairVO); |
| | | } |
| | | res.setPairRate(tStudyPair.getRate()); |
| | | |
| | | } |
| | | List<TGame> list5 = gameService.list(new QueryWrapper<TGame>() |
| | | .eq("week", week)); |
| | |
| | | @GetMapping("/studySchedule") |
| | | @ApiOperation(value = "获取用户学习进度", tags = {"学习端-首页"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true) |
| | | @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), |
| | | }) |
| | | public R<TUserStudy> studySchedule(@RequestParam Integer week) { |
| | | LoginUserParent loginStudy = tokenService.getLoginUserStudy(); |
| | |
| | | if (listen != 100 && listen != -1) { |
| | | studyRecord.setListen(100 - listen); |
| | | } |
| | | // // 自主学习答题记录 查询通关率 |
| | | // List<TSubjectRecordDetail> list = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userid) |
| | | // .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list(); |
| | | // List<TSubjectRecordDetail> listenList = list.stream().filter(e -> e.getType() == 1).collect(Collectors.toList()); |
| | | // int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | // List<TSubjectRecordDetail> lookList = list.stream().filter(e -> e.getType() == 2).collect(Collectors.toList()); |
| | | // int lookPass = (int) lookList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | // List<TSubjectRecordDetail> inductionList = list.stream().filter(e -> e.getType() == 3).collect(Collectors.toList()); |
| | | // int inductionPass = (int) inductionList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | // List<TSubjectRecordDetail> answerList = list.stream().filter(e -> e.getType() == 4).collect(Collectors.toList()); |
| | | // int answerPass = (int) answerList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | // List<TSubjectRecordDetail> pairList = list.stream().filter(e -> e.getType() == 5).collect(Collectors.toList()); |
| | | // int pairPass = (int) pairList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | // int listenSize = listenList.size(); |
| | | // if (listenSize!=0){ |
| | | // double listenRate = (double) listenPass /listenSize; |
| | | // studyRecord.setListen((int)listenRate); |
| | | // }else{ |
| | | // studyRecord.setListen(-1); |
| | | // } |
| | | // int lookSize = lookList.size(); |
| | | // if (lookSize!=0) { |
| | | // double lookRate = (double) lookPass / lookSize; |
| | | // studyRecord.setLook((int) lookRate); |
| | | // }else{ |
| | | // studyRecord.setLook(-1); |
| | | // } |
| | | // int inductionSize = inductionList.size(); |
| | | // |
| | | // if (inductionSize!=0) { |
| | | // double inductionRate = (double) inductionPass /inductionSize; |
| | | // studyRecord.setInduction((int)inductionRate); |
| | | // }else{ |
| | | // studyRecord.setInduction(-1); |
| | | // } |
| | | // |
| | | // int answerSize = answerList.size(); |
| | | // if (answerSize!=0) { |
| | | // double answerRate = (double) answerPass /answerSize; |
| | | // studyRecord.setAnswer((int)answerRate); |
| | | // }else{ |
| | | // studyRecord.setAnswer(-1); |
| | | // } |
| | | // |
| | | // int pairSize = pairList.size(); |
| | | // if (pairSize!=0) { |
| | | // double pairRate = (double) pairPass /pairSize; |
| | | // studyRecord.setPair((int)pairRate); |
| | | // }else{ |
| | | // studyRecord.setPair(-1); |
| | | // } |
| | | |
| | | } |
| | | return R.ok(studyRecord); |
| | | } |
| | |
| | | List<StudyWeekDTO> result = studyService.weekList(type, quarter, loginUserStudy.getUserid()); |
| | | return R.ok(result); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 获取在线时间赠送积分信息 |
| | |
| | | @RequestParam Integer day) { |
| | | // 判断当前登录用户是否为 会员 |
| | | Boolean isVip = userService.isVip(); |
| | | |
| | | // 非会员只能查看非会员题目,会员可以查看所有题目 |
| | | List<TStudyListen> studyListens = studyListenService.listenSelectPicture(quarter, week, day); |
| | | for (TStudyListen studyListen : studyListens) { |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.ok(studyService.pictureSelectVoice(week, day, lookList,tokenService.getLoginUserStudy().getUserid())); |
| | | return studyService.pictureSelectVoice(week, day, lookList, tokenService.getLoginUserStudy().getUserid()); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.ok(studyService.induceExclude(week, day, inductionList,tokenService.getLoginUserStudy().getUserid())); |
| | | return studyService.induceExclude(week, day, inductionList, tokenService.getLoginUserStudy().getUserid()); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.ok(studyService.questionsAndAnswers(week, day, answerList,tokenService.getLoginUserStudy().getUserid())); |
| | | return studyService.questionsAndAnswers(week, day, answerList, tokenService.getLoginUserStudy().getUserid()); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | } |
| | | } |
| | | return R.ok(studyService.pictureMateVoice(week, day, pairList,tokenService.getLoginUserStudy().getUserid())); |
| | | return studyService.pictureMateVoice(week, day, pairList, tokenService.getLoginUserStudy().getUserid()); |
| | | } |
| | | |
| | | /** |
| | | * 2.0新增-记录答题状态 |
| | | * |
| | | */ |
| | | @PostMapping("/answerQuestion") |
| | | @ApiOperation(value = "2.0新增-记录答题状态", tags = {"学习端-听-自主学习"}) |
| | |
| | | subjectRecordDetailService.updateById(byId); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 2.0新增-重新开始 |
| | | * |
| | | */ |
| | | @PostMapping("/restart") |
| | | @ApiOperation(value = "2.0新增-重新开始", tags = {"学习端-听-自主学习"}) |
| | |
| | | if (null == userStudy) { |
| | | return R.tokenError("登录失效!"); |
| | | } |
| | | List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userStudy.getUserid()) |
| | | .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list(); |
| | | List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 5).collect(Collectors.toList()); |
| | | int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | int listenSize = listenList.size(); |
| | | if (listenSize!=0){ |
| | | // 先计算上一天的通关率 设置为两位小数 |
| | | double listenRate = (double) listenPass /listenSize; |
| | | BigDecimal divide = new BigDecimal(listenPass).divide(new BigDecimal(listenSize), 2, RoundingMode.HALF_UP); |
| | | TStudyPair one = studyPairService.lambdaQuery().eq(TStudyPair::getWeek, week) |
| | | .eq(TStudyPair::getDay, 5).last("limit 1").one(); |
| | | if (one!=null){ |
| | | if (listenRate<(Double.parseDouble(one.getRate())/100)){ |
| | | return R.fail("音图相配未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%"); |
| | | } |
| | | } |
| | | } |
| | | Integer[] array = {0, 1, 2}; |
| | | if (!Arrays.stream(array).collect(Collectors.toList()).contains(difficulty)) { |
| | | throw new GlobalException("请选择符合规则的游戏难度!"); |
| | |
| | | if (null == userStudy) { |
| | | return R.tokenError("登录失效!"); |
| | | } |
| | | List<TSubjectRecordDetail> subjectRecordDetails = subjectRecordDetailService.lambdaQuery().eq(TSubjectRecordDetail::getUserId, userStudy.getUserid()) |
| | | .eq(TSubjectRecordDetail::getWeek, week).ne(BaseModel::getDisabled, 0).list(); |
| | | List<TSubjectRecordDetail> listenList = subjectRecordDetails.stream().filter(e -> e.getType() == 5).collect(Collectors.toList()); |
| | | int listenPass = (int) listenList.stream().filter(e -> e.getStatus() == 2).count(); |
| | | int listenSize = listenList.size(); |
| | | if (listenSize!=0){ |
| | | // 先计算上一天的通关率 设置为两位小数 |
| | | double listenRate = (double) listenPass /listenSize; |
| | | BigDecimal divide = new BigDecimal(listenPass).divide(new BigDecimal(listenSize), 2, RoundingMode.HALF_UP); |
| | | TStudyPair one = studyPairService.lambdaQuery().eq(TStudyPair::getWeek, week) |
| | | .eq(TStudyPair::getDay, 5).last("limit 1").one(); |
| | | if (one!=null){ |
| | | if (listenRate<(Double.parseDouble(one.getRate())/100)){ |
| | | return R.fail("音图相配未达到通关率"+one.getRate()+"%,"+"当前通关率:"+divide+"%"); |
| | | } |
| | | } |
| | | } |
| | | TGame game = gameService.gameHearing(quarter, week); |
| | | if (null == game) { |
| | | throw new GlobalException("当前季度该周目暂无配置游戏数据!"); |