hjl
2024-05-21 ffb13ddfb98ddc0f360caa313a93b5dc8d6483f5
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -7,10 +7,10 @@
import com.ruoyi.common.core.constant.RedisConstants;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.exception.GlobalException;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.redis.service.RedisService;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.common.security.utils.SecurityUtils;
import com.ruoyi.goods.api.feignClient.GoodsClient;
import com.ruoyi.goods.api.model.TGoodsVO;
import com.ruoyi.study.domain.*;
@@ -606,9 +606,13 @@
     */
    @GetMapping("/weekList")
    @ApiOperation(value = "周目列表", tags = {"周目列表"})
    public R<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "所属类型", name = "type", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "季度", name = "quarter", dataType = "Integer", required = true)
    })
    public AjaxResult<List<StudyWeekDTO>> weekList(@RequestParam(defaultValue = "1") Integer type, @RequestParam Integer quarter) {
        List<StudyWeekDTO> result = studyService.weekList(type, quarter);
        return R.ok(result);
        return AjaxResult.success(result);
    }
    /**
@@ -619,9 +623,13 @@
     */
    @GetMapping("/studySchedule")
    @ApiOperation(value = "获取用户学习进度", tags = {"获取用户学习进度"})
    public R<TUserStudy> studySchedule(Integer week, Integer day) {
        TUserStudy result = studyService.studySchedule(String.valueOf(SecurityUtils.getUserId()), week, day);
        return R.ok(result);
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<TUserStudy> studySchedule(@RequestParam Integer week,@RequestParam Integer day) {
        TUserStudy result = studyService.studySchedule(String.valueOf(tokenService.getLoginUserStudy().getUserid()), week, day);
        return AjaxResult.success(result);
    }
    /**
@@ -630,7 +638,7 @@
    @GetMapping("/goodRecommend")
    @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"})
    public R<List<TGoodsVO>> studySchedule() {
        return goodsClient.goodRecommend(String.valueOf(SecurityUtils.getUserId()));
        return goodsClient.goodRecommend(String.valueOf(tokenService.getLoginUserStudy().getUserid()));
    }
    /**
@@ -638,9 +646,9 @@
     */
    @PostMapping("/exitLearning")
    @ApiOperation(value = "退出学习(记录学习进度等信息)", tags = {"退出学习(记录学习进度等信息)"})
    public R<Boolean> exitLearning(@RequestBody TUserStudy userStudy) {
    public AjaxResult<Boolean> exitLearning(@RequestBody TUserStudy userStudy) {
        // 学习时长处理
        return R.ok(userStudyService.updateById(userStudy));
        return AjaxResult.success(userStudyService.updateById(userStudy));
    }
    /**
@@ -651,12 +659,16 @@
     */
    @GetMapping("/listenSelectPicture")
    @ApiOperation(value = "自主学习1-听音选图", tags = {"自主学习1-听音选图"})
    public R<Map<String, Object>> listenSelectPicture(@RequestParam Integer week, @RequestParam Integer day) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> listenSelectPicture(@RequestParam Integer week, @RequestParam Integer day) {
        // 判断当前登录用户是否为 会员
        Boolean isVip = userService.isVip();
        List<TStudyListen> studyListens = studyListenService.lambdaQuery().eq(TStudyListen::getWeek, week)
                .eq(TStudyListen::getDay, day).eq(TStudyListen::getDisabled, 0).list();
        return R.ok(studyService.listenSelectPicture(week, day, studyListens));
        return AjaxResult.success(studyService.listenSelectPicture(week, day, studyListens));
    }
    /**
@@ -667,7 +679,11 @@
     */
    @GetMapping("/pictureSelectVoice")
    @ApiOperation(value = "自主学习2-看图选音", tags = {"自主学习2-看图选音"})
    public R<Map<String, Object>> pictureSelectVoice(@RequestParam Integer week, @RequestParam Integer day) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> pictureSelectVoice(@RequestParam Integer week, @RequestParam Integer day) {
        // 判断当前登录用户是否为 会员
        Boolean isVip = userService.isVip();
        LambdaQueryChainWrapper<TStudyLook> wrapper = studyLookService.lambdaQuery().eq(TStudyLook::getWeek, week)
@@ -678,7 +694,7 @@
        }
        List<TStudyLook> lookList = studyLookService.lambdaQuery().eq(TStudyLook::getWeek, week)
                .eq(TStudyLook::getDay, day).eq(TStudyLook::getDisabled, 0).list();
        return R.ok(studyService.pictureSelectVoice(week, day, lookList));
        return AjaxResult.success(studyService.pictureSelectVoice(week, day, lookList));
    }
    /**
@@ -689,7 +705,11 @@
     */
    @GetMapping("/induceExclude")
    @ApiOperation(value = "自主学习3-归纳排除", tags = {"自主学习3-归纳排除"})
    public R<Map<String, Object>> induceExclude(@RequestParam Integer week, @RequestParam Integer day) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> induceExclude(@RequestParam Integer week, @RequestParam Integer day) {
        // 判断当前登录用户是否为 会员
        Boolean isVip = userService.isVip();
        LambdaQueryChainWrapper<TStudyInduction> wrapper = studyInductionService.lambdaQuery().eq(TStudyInduction::getWeek, week)
@@ -699,7 +719,7 @@
            wrapper.eq(TStudyInduction::getIsVip, 0);
        }
        List<TStudyInduction> inductionList = wrapper.list();
        return R.ok(studyService.induceExclude(week, day, inductionList));
        return AjaxResult.success(studyService.induceExclude(week, day, inductionList));
    }
    /**
@@ -710,7 +730,11 @@
     */
    @GetMapping("/questionsAndAnswers")
    @ApiOperation(value = "自主学习4-有问有答", tags = {"自主学习4-有问有答"})
    public R<Map<String, Object>> questionsAndAnswers(@RequestParam Integer week, @RequestParam Integer day) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> questionsAndAnswers(@RequestParam Integer week, @RequestParam Integer day) {
        // 判断当前登录用户是否为 会员
        Boolean isVip = userService.isVip();
        LambdaQueryChainWrapper<TStudyAnswer> wrapper = studyAnswerService.lambdaQuery().eq(TStudyAnswer::getWeek, week)
@@ -720,7 +744,7 @@
            wrapper.eq(TStudyAnswer::getIsVip, 0);
        }
        List<TStudyAnswer> answerList = wrapper.list();
        return R.ok(studyService.questionsAndAnswers(week, day, answerList));
        return AjaxResult.success(studyService.questionsAndAnswers(week, day, answerList));
    }
    /**
@@ -731,11 +755,15 @@
     */
    @GetMapping("/pictureMateVoice")
    @ApiOperation(value = "自主学习5-音图相配", tags = {"自主学习5-音图相配"})
    public R<Map<String, Object>> pictureMateVoice(@RequestParam Integer week, @RequestParam Integer day) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "周目", name = "week", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属day", name = "day", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> pictureMateVoice(@RequestParam Integer week, @RequestParam Integer day) {
        // 判断当前登录用户是否为 会员 todo
        TStudyPair pair = studyPairService.lambdaQuery().eq(TStudyPair::getWeek, week)
                .eq(TStudyPair::getDay, day).eq(TStudyPair::getDisabled, 0).one();
        return R.ok(studyService.pictureMateVoice(week, day, pair));
        return AjaxResult.success(studyService.pictureMateVoice(week, day, pair));
    }
    /**
@@ -746,7 +774,11 @@
     */
    @GetMapping("/gameHearing")
    @ApiOperation(value = "自主游戏1-超级听力", tags = {"自主游戏1-超级听力(difficulty: 0入门、1中级、2高级)"})
    public R<Map<String, Object>> gameHearing(@RequestParam Integer difficulty, @RequestParam Integer week) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "难度(0入门、1中级、2困难)", name = "difficulty", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> gameHearing(@RequestParam Integer difficulty, @RequestParam Integer week) {
        Map<String, Object> result = new HashMap<>(8);
        TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week)
                .eq(TGame::getDisabled, 0).one();
@@ -773,7 +805,7 @@
            subjectData.add(subjectId.get(randomIndex));
        }
        result.put("subject", subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list());
        return R.ok(result);
        return AjaxResult.success(result);
    }
    /**
@@ -784,7 +816,11 @@
     */
    @GetMapping("/gameMemory")
    @ApiOperation(value = "自主游戏2-超级记忆", tags = {"自主游戏2-超级记忆(difficulty: 0入门、1中级、2高级)"})
    public R<Map<String, Object>> gameMemory(@RequestParam Integer difficulty, @RequestParam Integer week) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "难度(0入门、1中级、2困难)", name = "difficulty", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> gameMemory(@RequestParam Integer difficulty, @RequestParam Integer week) {
        Map<String, Object> result = new HashMap<>(8);
        TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week).eq(TGame::getDisabled, 0).one();
        result.put("game", game);
@@ -808,7 +844,7 @@
            subjectData.add(subjectId.get(randomIndex));
        }
        result.put("subject", subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list());
        return R.ok(result);
        return AjaxResult.success(result);
    }
    /**
@@ -819,14 +855,14 @@
     */
    @PostMapping("/gameAchievement")
    @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"完成游戏-记录游戏测试成绩"})
    public R<?> gameAchievement(@RequestBody CompleteGameDTO completeStudy) {
    public AjaxResult<?> gameAchievement(@RequestBody CompleteGameDTO completeStudy) {
        TGame game = gameService.getById(completeStudy.getGameId());
        // 游戏测试记录
        Boolean add = gameRecordService.add(completeStudy);
        // 添加积分明细记录
        add = add && integralRecordService.add(game.getIntegral(), completeStudy.getMethod());
        // 用户账户添加积分
        return R.ok(add);
        return AjaxResult.success(add);
    }
    private List<String> getSubjectId(Integer week) {
@@ -861,7 +897,10 @@
     */
    @GetMapping("/lookPictureDbu")
    @ApiOperation(value = "自主故事1-看图配音", tags = {"自主故事1-看图配音"})
    public R<Map<String, Object>> lookPictureDbu(@RequestParam Integer week) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> lookPictureDbu(@RequestParam Integer week) {
        // 看图配音信息
        TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one();
        // 获取对应图片语音
@@ -869,7 +908,7 @@
        Map<String, Object> result = new HashMap<>(8);
        result.put("listen", listen);
        result.put("info", subjectService.lambdaQuery().in(TSubject::getId, list).list());
        return R.ok(result);
        return AjaxResult.success(result);
    }
    /**
@@ -879,7 +918,10 @@
     */
    @GetMapping("/frameworkMemory")
    @ApiOperation(value = "自主故事2-框架记忆", tags = {"自主故事2-框架记忆"})
    public R<Map<String, Object>> frameworkMemory(@RequestParam Integer week) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true)
    })
    public AjaxResult<Map<String, Object>> frameworkMemory(@RequestParam Integer week) {
        // 看图配音信息
        TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one();
        // 获取对应图片语音
@@ -887,7 +929,7 @@
        Map<String, Object> result = new HashMap<>(8);
        result.put("listen", listen);
        result.put("info", subjectService.lambdaQuery().in(TSubject::getId, list).list());
        return R.ok(result);
        return AjaxResult.success(result);
    }
    /**
@@ -897,9 +939,9 @@
     */
    @PostMapping("/completeLearning")
    @ApiOperation(value = "完成学习", tags = {"完成学习"})
    public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
    public AjaxResult<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
        // 登录用户id
        Long userId = SecurityUtils.getUserId();
        Integer userId = tokenService.getLoginUserStudy().getUserid();
        // 获取user详细信息,改变积分
        TUser user = userService.getById(userId);
        user.setIntegral(user.getIntegral() + completeStudy.getIntegral());
@@ -908,8 +950,8 @@
        TIntegralRecord integralRecord = new TIntegralRecord();
        integralRecord.setIntegral(String.valueOf(completeStudy.getIntegral()));
        integralRecord.setMethod(completeStudy.getMethod());
        integralRecord.setUserId(SecurityUtils.getUserId().intValue());
        return R.ok(update && integralRecordService.save(integralRecord));
        integralRecord.setUserId(tokenService.getLoginUserStudy().getUserid());
        return AjaxResult.success(update && integralRecordService.save(integralRecord));
    }
    /**
@@ -917,22 +959,27 @@
     */
    @GetMapping("/completeStory")
    @ApiOperation(value = "完成故事学习", tags = {"完成故事学习"})
    public R<?> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId,
                              @RequestParam @ApiParam("完成答题/完成听故事") String method) {
    @ApiImplicitParams({
            @ApiImplicitParam(value = "积分数量", name = "integral", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "故事id", name = "storyId", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "完成答题/完成听故事", name = "method", dataType = "String", required = true)
    })
    public AjaxResult<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId,
                              @RequestParam String method) {
        // 添加积分明细记录
        Boolean add = integralRecordService.add(String.valueOf(integral), method);
        // 用户信息
        Long userId = SecurityUtils.getUserId();
        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));
        return AjaxResult.success(add && userService.updateById(user));
    }
    @GetMapping("/studyRecord")
    @ApiOperation(value = "个人中心-学习记录", tags = {"个人中心-学习记录"})
    public R<Map<String, Object>> studyRecord() {
        Long userId = SecurityUtils.getUserId();
    public AjaxResult<Map<String, Object>> studyRecord() {
        Integer userId = tokenService.getLoginUserStudy().getUserid();
        Map<String, Object> result = new HashMap<>(8);
        // 学习记录
        result.put("record", userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId)
@@ -940,15 +987,20 @@
        // 游戏测试成绩
        result.put("gameAchievement", gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId)
                .eq(TGameRecord::getDisabled, 0).list());
        return R.ok(result);
        return AjaxResult.success(result);
    }
    @GetMapping("/integralDetail")
    @ApiOperation(value = "个人中心-积分明细", tags = {"个人中心-积分明细"})
    public R<IPage<TIntegralRecord>> integralDetail(String time,
    @ApiImplicitParams({
            @ApiImplicitParam(value = "查询时间", name = "time", dataType = "Integer"),
            @ApiImplicitParam(value = "页码", name = "pageNum", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "每页显示条数", name = "pageSize", dataType = "Integer", required = true)
    })
    public AjaxResult<IPage<TIntegralRecord>> integralDetail(String time,
                                                    @RequestParam("pageNum") Integer pageNum,
                                                    @RequestParam("pageSize") Integer pageSize) {
        return R.ok(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), SecurityUtils.getUserId(), time));
        return AjaxResult.success(integralRecordService.integralDetail(new Page<>(pageNum, pageSize), tokenService.getLoginUserStudy().getUserid(), time));
    }
    /**
@@ -959,11 +1011,15 @@
     */
    @GetMapping("/addIntegralDetail")
    @ApiOperation(value = "添加-积分明细", tags = {"添加-积分明细"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "积分数量", name = "integral", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "变动源(完成学习、完成游戏...)", name = "method", dataType = "String", required = true)
    })
    public R<Boolean> addIntegralDetail(@RequestParam("integral") String integral, @RequestParam("method") String method) {
        TIntegralRecord integralRecord = new TIntegralRecord();
        integralRecord.setIntegral(integral);
        integralRecord.setMethod(method);
        integralRecord.setUserId(SecurityUtils.getUserId().intValue());
        integralRecord.setUserId(tokenService.getLoginUserStudy().getUserid());
        integralRecord.setDisabled(Boolean.FALSE);
        return R.ok(integralRecordService.save(integralRecord));
    }