| | |
| | | private ITUserService userService; |
| | | @Resource |
| | | private TokenService tokenService; |
| | | @Resource |
| | | private ITSubjectRecordService subjectRecordService; |
| | | |
| | | @PostMapping("/storyList") |
| | | @ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"}) |
| | |
| | | } |
| | | |
| | | /** |
| | | * 进入题组后,获取题组学习进度信息 |
| | | * |
| | | * @param week 周目 |
| | | * @param day 所属day |
| | | */ |
| | | @GetMapping("/teamSchedule") |
| | | @ApiOperation(value = "获取题组学习进度信息", tags = {"获取题组学习进度信息"}) |
| | | @ApiImplicitParams({ |
| | | @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true), |
| | | @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true) |
| | | }) |
| | | public R<TSubjectRecord> teamSchedule(@RequestParam Integer week, @RequestParam Integer day) { |
| | | TSubjectRecord subjectRecord = subjectRecordService.lambdaQuery().eq(TSubjectRecord::getWeek, week).eq(TSubjectRecord::getDay, day) |
| | | .eq(TSubjectRecord::getUserId, tokenService.getLoginUserStudy().getUserid()).eq(TSubjectRecord::getDisabled, 0).one(); |
| | | return R.ok(subjectRecord); |
| | | } |
| | | |
| | | /** |
| | | * 退出学习,记录学习进度、当日学习时长... |
| | | */ |
| | | @PostMapping("/exitLearning") |
| | | @ApiOperation(value = "退出学习(记录学习进度等信息)", tags = {"退出学习(记录学习进度等信息)"}) |
| | | public R<Boolean> exitLearning(@RequestBody TUserStudy userStudy) { |
| | | public R<Boolean> exitLearning(@RequestBody TSubjectRecord subjectRecord) { |
| | | // 学习时长处理 |
| | | return R.ok(userStudyService.updateById(userStudy)); |
| | | return R.ok(subjectRecordService.updateById(subjectRecord)); |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * 学习完成,生成学习记录,积分明细记录 |
| | | * |
| | | * @param completeStudy 完成学习信息 |
| | | */ |
| | | @PostMapping("/completeLearning") |
| | | @ApiOperation(value = "完成学习", tags = {"完成学习/其他积分来源(分享...)"}) |
| | | public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { |
| | | // 登录用户id |
| | | Integer userId = tokenService.getLoginUserStudy().getUserid(); |
| | | // 获取user详细信息,改变积分 |
| | | boolean update = true; |
| | | if (completeStudy.getIsComplete()) { |
| | | TUser user = userService.getById(userId); |
| | | user.setIntegral(user.getIntegral() + completeStudy.getIntegral()); |
| | | update = userService.updateById(user); |
| | | } |
| | | // 生成积分明细记录 |
| | | TIntegralRecord integralRecord = new TIntegralRecord(); |
| | | integralRecord.setIntegral(String.valueOf(completeStudy.getIntegral())); |
| | | integralRecord.setMethod(completeStudy.getMethod()); |
| | | integralRecord.setUserId(userId); |
| | | return R.ok(update && integralRecordService.save(integralRecord)); |
| | | } |
| | | |
| | | /** |
| | | * 自主游戏1-超级听力 |
| | | * |
| | | * @param difficulty 难度(0入门、1中级、2困难) |
| | |
| | | @PostMapping("/gameAchievement") |
| | | @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"完成游戏-记录游戏测试成绩"}) |
| | | public R<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { |
| | | /* |
| | | * 游戏测试需要根据正确率计算本次测试可获得积分 |
| | | * 并且需要判断如果该游戏用户已获取一部分积分,再次测试后正确率增长,只能获取高于上次正确率的部分积分 |
| | | * 例如:游戏配置的积分是100,他的正确率是50%那么拿50分,下次他再玩这个游戏 正确率是60% 那么他该获得60分 但是上次已经拿了50 所以这次就只给他加10积分 |
| | | */ |
| | | Integer userid = tokenService.getLoginUserStudy().getUserid(); |
| | | TGame game = gameService.getById(completeStudy.getGameId()); |
| | | // 积分明细 |
| | | List<TIntegralRecord> integralRecordList = integralRecordService.lambdaQuery().eq(TIntegralRecord::getUserId, userid) |
| | | .eq(TIntegralRecord::getGameId, game.getId()).eq(TIntegralRecord::getDisabled, 0).list(); |
| | | Integer availableIntegral = gameService.countIntegral(userid, game, completeStudy, integralRecordList); |
| | | // 游戏测试记录 |
| | | Boolean add = gameRecordService.add(completeStudy); |
| | | // 添加积分明细记录 |
| | | add = add && integralRecordService.add(game.getIntegral(), completeStudy.getMethod()); |
| | | // 可获得积分不为null时,才添加积分明细记录 |
| | | if (null != availableIntegral) { |
| | | add = add && integralRecordService.add(String.valueOf(availableIntegral), completeStudy.getMethod(), completeStudy.getGameId(), null); |
| | | // 用户账户添加积分 |
| | | TUser user = userService.getById(userid); |
| | | user.setIntegral(user.getIntegral() + availableIntegral); |
| | | add = add && userService.updateById(user); |
| | | } |
| | | return R.ok(add); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * 学习完成,生成学习记录,积分明细记录 |
| | | * |
| | | * @param completeStudy 完成学习信息 |
| | | */ |
| | | @PostMapping("/completeLearning") |
| | | @ApiOperation(value = "完成学习", tags = {"完成学习/其他积分来源(分享...)"}) |
| | | public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) { |
| | | // 登录用户id |
| | | Integer userId = tokenService.getLoginUserStudy().getUserid(); |
| | | // 获取user详细信息,改变积分 |
| | | TUser user = userService.getById(userId); |
| | | user.setIntegral(user.getIntegral() + completeStudy.getIntegral()); |
| | | boolean update = userService.updateById(user); |
| | | // 生成积分明细记录 |
| | | TIntegralRecord integralRecord = new TIntegralRecord(); |
| | | integralRecord.setIntegral(String.valueOf(completeStudy.getIntegral())); |
| | | integralRecord.setMethod(completeStudy.getMethod()); |
| | | integralRecord.setUserId(userId); |
| | | return R.ok(update && integralRecordService.save(integralRecord)); |
| | | } |
| | | |
| | | /** |
| | | * 完成故事类型 |
| | | */ |
| | | @GetMapping("/completeStory") |
| | |
| | | }) |
| | | public R<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId, |
| | | @RequestParam String method) { |
| | | // 添加积分明细记录 |
| | | Boolean add = integralRecordService.add(String.valueOf(integral), method); |
| | | TStoryListen storyListen = storyListenService.lambdaQuery().eq(TStoryListen::getId, storyId).eq(TStoryListen::getDisabled, 0).one(); |
| | | if (null == storyListen) { |
| | | throw new GlobalException("当前故事学习失败,故事信息异常,请重试!"); |
| | | } |
| | | // 用户信息 |
| | | Integer userId = tokenService.getLoginUserStudy().getUserid(); |
| | | // 故事只有首次才能获取积分 |
| | | TIntegralRecord integralRecord = integralRecordService.lambdaQuery().eq(TIntegralRecord::getUserId, userId) |
| | | .eq(TIntegralRecord::getStoryId, storyId).eq(TIntegralRecord::getDisabled, 0).one(); |
| | | Boolean result = true; |
| | | if (null == integralRecord) { |
| | | // 添加积分明细记录 |
| | | result = integralRecordService.add(String.valueOf(integral), method, null, storyId); |
| | | TUser user = userService.lambdaQuery().eq(TUser::getId, userId).one(); |
| | | // 返回结果 |
| | | // 添加积分 |
| | | user.setIntegral(user.getIntegral() + integral); |
| | | return R.ok(add && userService.updateById(user)); |
| | | result = result && userService.updateById(user); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @GetMapping("/studyRecord") |