From 82d0f09da0e5f58b3bbaeafdd3d4bf00cbde73d7 Mon Sep 17 00:00:00 2001 From: 44323 <443237572@qq.com> Date: 星期五, 24 五月 2024 09:04:37 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/DolphinEnglish --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 125 +++++++++++++++++++++++++++++------------ 1 files changed, 87 insertions(+), 38 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java index 9ec5522..98d2a9c 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java @@ -76,6 +76,8 @@ private ITUserService userService; @Resource private TokenService tokenService; + @Resource + private ITSubjectRecordService subjectRecordService; @PostMapping("/storyList") @ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"}) @@ -429,7 +431,7 @@ List<TStudy> list8 = studyService.list(new QueryWrapper<TStudy>() .eq("type", dto.getType()) .eq("week", dto.getWeek())); - if (!list8.isEmpty()){ + if (!list8.isEmpty()) { res.setQuarter(list8.get(0).getQuarter()); res.setTitle(list8.get(0).getTitle()); } @@ -693,13 +695,31 @@ } /** + * 进入题组后,获取题组学习进度信息 + * + * @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)); } /** @@ -829,6 +849,31 @@ } /** + * 学习完成,生成学习记录,积分明细记录 + * + * @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困难) @@ -914,12 +959,27 @@ @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); } @@ -987,28 +1047,6 @@ } /** - * 学习完成,生成学习记录,积分明细记录 - * - * @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") @@ -1019,15 +1057,26 @@ @ApiImplicitParam(value = "完成答题/完成听故事", name = "method", dataType = "String", required = true) }) public R<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId, - @RequestParam String method) { - // 添加积分明细记录 - Boolean add = integralRecordService.add(String.valueOf(integral), method); + @RequestParam String 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(); - TUser user = userService.lambdaQuery().eq(TUser::getId, userId).one(); - // 返回结果 - user.setIntegral(user.getIntegral() + integral); - return R.ok(add && userService.updateById(user)); + // 故事只有首次才能获取积分 + 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); + result = result && userService.updateById(user); + } + return R.ok(result); } @GetMapping("/studyRecord") @@ -1040,7 +1089,7 @@ // 游戏测试成绩 List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId) .eq(TGameRecord::getDisabled, 0).list(); - return R.ok(new StudyRecordResultVO(studyRecord,gameRecordList)); + return R.ok(new StudyRecordResultVO(studyRecord, gameRecordList)); } @GetMapping("/integralDetail") @@ -1051,8 +1100,8 @@ @ApiImplicitParam(value = "每页显示条数", name = "pageSize", dataType = "Integer", required = true) }) public R<IPage<TIntegralRecord>> integralDetail(String time, - @RequestParam("pageNum") Integer pageNum, - @RequestParam("pageSize") Integer pageSize) { + @RequestParam("pageNum") Integer pageNum, + @RequestParam("pageSize") Integer pageSize) { return R.ok(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), tokenService.getLoginUserStudy().getUserid(), time)); } -- Gitblit v1.7.1