hjl
2024-05-27 f991c73f56f35665bcbe8ce2252c04ea82032b10
feat: 修复登录bug;数据校验规则优化
17个文件已修改
158 ■■■■ 已修改文件
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/StudyLoginException.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TGame.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStoryListen.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyAnswer.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyInduction.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyListen.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyLook.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyPair.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TSubject.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TGameServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/RedisConstants.java
@@ -29,5 +29,9 @@
     */
    public final static String HEARING_TREE = "game_subject";
    /**
     * 过期时间 30
     */
    public final static Integer THIRTY = 30;
}
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/StudyLoginException.java
@@ -1,6 +1,8 @@
package com.ruoyi.common.core.exception.user;
/**
 * 学生端登录异常信息
 *
 * @author HJL
 * @version 1.0
 * @since 2024-05-24 11:35
ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/service/TokenService.java
@@ -145,7 +145,7 @@
    public LoginUserParent getLoginUserStudy() {
        LoginUserParent userStudy = getLoginUserStudy(ServletUtils.getRequest());
        if (null == userStudy) {
            throw new StudyLoginException("登录失效,请重新登录!", 505);
            throw new StudyLoginException("登录失效,请重新登录!", 504);
        }
        return userStudy;
    }
@@ -219,6 +219,10 @@
        if (StringUtils.isNotEmpty(token)) {
            String userkey = JwtUtils.getUserKeyStudy(token);
            user = redisService.getCacheObject(getTokenKeyStudy(userkey));
            // 再次判断登录状态是否已过期
            if (null == user) {
                throw new StudyLoginException("登录信息已过期,请重新登录!", 504);
            }
            // 优先判断当前账号是否已在其他设备登录
            if (!user.getIsCanLogin()) {
                throw new StudyLoginException("当前登录账号在其他设备登录!", 505);
@@ -345,6 +349,10 @@
            LoginUserParent redisUserInfo = JSONObject.parseObject(JSONObject.toJSONString(redisCacheUserInfo), LoginUserParent.class);
            // 单点逻辑,如果当前用户已处于登录状态并再次登录,则清除该用户上一次登录token
            if (dto.getUserid().equals(redisUserInfo.getUserid())) {
                // 被挤账户 可登录状态 已经为 false时,跳出循环
                if (!redisUserInfo.getIsCanLogin()) {
                    continue;
                }
                // 设置能否登录字段为 否,当该token登录时,isCanLogin为false表示账号被挤
                redisUserInfo.setIsCanLogin(Boolean.FALSE);
                redisService.setCacheObject(strKey, redisUserInfo, redisService.getExpire(strKey), TimeUnit.SECONDS);
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.web.domain.AjaxResult;
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.goods.domain.*;
@@ -169,7 +168,7 @@
     * 兑换记录
     */
    @GetMapping("/exchangeRecord")
    @ApiOperation(value = "兑换记录", tags = {"兑换记录"})
    @ApiOperation(value = "学习端-兑换记录", tags = {"学习端-兑换记录"})
    public R<List<TOrder>> exchangeRecord() {
        return R.ok(orderService.lambdaQuery().eq(TOrder::getUserId, tokenService.getLoginUserStudy().getUserid())
                .orderByDesc(TOrder::getCreateTime).list());
@@ -203,7 +202,7 @@
     * 新增收货地址/修改收货地址
     */
    @PostMapping("/addressSaveOrUpdate")
    @ApiOperation(value = "新增收货地址/修改收货地址", tags = {"新增收货地址/修改收货地址"})
    @ApiOperation(value = "学习端-新增收货地址/修改收货地址", tags = {"新增收货地址/修改收货地址"})
    public R<String> addressSave(@RequestBody Recipient recipient) {
        recipient.setUserId(tokenService.getLoginUserStudy().getUserid());
        return R.ok(recipientService.addressSaveOrUpdate(recipient));
@@ -213,7 +212,7 @@
     * 删除收货地址
     */
    @GetMapping("/addressDelete")
    @ApiOperation(value = "删除收货地址", tags = {"删除收货地址"})
    @ApiOperation(value = "学习端-删除收货地址", tags = {"学习端-删除收货地址"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "地址信息id", name = "id", dataType = "String", required = true)
    })
@@ -227,7 +226,7 @@
     * @param orderId 订单id
     */
    @GetMapping("/updateOrderAddress")
    @ApiOperation(value = "修改订单收货地址", tags = {"修改订单收货地址"})
    @ApiOperation(value = "学习端-修改订单收货地址", tags = {"学习端-修改订单收货地址"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "订单id", name = "orderId", dataType = "String", required = true),
            @ApiImplicitParam(value = "完整收货地址", name = "address", dataType = "String", required = true)
@@ -242,7 +241,7 @@
     * 收货地址省市区三级联动
     */
    @GetMapping("/addressTree")
    @ApiOperation(value = "收货地址省市区三级联动", tags = {"收货地址省市区三级联动"})
    @ApiOperation(value = "学习端-收货地址省市区三级联动", tags = {"学习端-收货地址省市区三级联动"})
    public R<List<Region>> addressTree() {
        return R.ok(regionService.addressTree());
    }
@@ -252,7 +251,7 @@
     * 远程调用
     */
    @GetMapping("/goodRecommend")
    @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"})
    @ApiOperation(value = "学习端-可兑换商品推荐", tags = {"学习端-可兑换商品推荐"})
    public R<List<TGoodsVO>> goodRecommend() {
        return R.ok(goodsService.goodRecommend(tokenService.getLoginUserStudy().getUserid()));
    }
@@ -263,7 +262,7 @@
     * @param goodId 商品id
     */
    @GetMapping("/goodDetail")
    @ApiOperation(value = "商品详情", tags = {"商品详情"})
    @ApiOperation(value = "学习端-商品详情", tags = {"学习端-商品详情"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true)
    })
@@ -281,7 +280,7 @@
     * 商城-立即兑换
     */
    @GetMapping("/redeemNow")
    @ApiOperation(value = "商城-立即兑换", tags = {"立即兑换"})
    @ApiOperation(value = "学习端-商城立即兑换", tags = {"学习端-商城立即兑换"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true)
    })
@@ -299,7 +298,7 @@
     * @param goodExchange 商品信息
     */
    @PostMapping("/goodExchange")
    @ApiOperation(value = "商品兑换-确认", tags = {"商品兑换-确认"})
    @ApiOperation(value = "学习端-商品兑换确认", tags = {"学习端-商品兑换确认"})
    public R<Boolean> goodExchange(@RequestBody GoodExchangeDTO goodExchange) {
        Recipient recipient = recipientService.getById(goodExchange.getRecipientId());
        return R.ok(goodsService.goodExchange(goodExchange, recipient));
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java
@@ -59,7 +59,7 @@
        String key = String.format(RedisConstants.GOOD_STOCK, goods.getId());
        RSemaphore semaphore = redissonClient.getSemaphore(key);
        semaphore.trySetPermits(goods.getSurplus());
        return new GoodDetailVO(goods,recipient);
        return new GoodDetailVO(goods, recipient);
    }
    @Override
@@ -88,6 +88,8 @@
        // redisson分布式锁,防止超卖
        String key = String.format(RedisConstants.GOOD_STOCK, good.getId());
        RSemaphore semaphore = redissonClient.getSemaphore(key);
        // 请求超时时间 单位:毫秒
        semaphore.trySetPermits(1000);
        boolean tried = semaphore.tryAcquire(number);
        // 兑换失败,库存不足
        if (!tried) {
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java
@@ -28,6 +28,7 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/**
@@ -344,13 +345,13 @@
        TStudy one = studyService.getOne(new QueryWrapper<TStudy>()
                .eq("week", dto.getWeek())
                .eq("type", dto.getType()));
        if (one!=null){
        if (one != null) {
            one.setType(dto.getType());
            one.setWeek(dto.getWeek());
            one.setTitle(dto.getTitle());
            one.setQuarter(dto.getQuarter());
            studyService.saveOrUpdate(one);
        }else{
        } else {
            TStudy tStudy = new TStudy();
            tStudy.setType(dto.getType());
            tStudy.setWeek(dto.getWeek());
@@ -453,7 +454,7 @@
        for (TStudyListen tStudyListen : list) {
            StringBuilder temp = new StringBuilder();
            StudyListenVO studyListenVO = new StudyListenVO();
            if (StringUtils.hasLength(tStudyListen.getSubject())){
            if (StringUtils.hasLength(tStudyListen.getSubject())) {
                for (String s : tStudyListen.getSubject().split(",")) {
                    TSubject byId = subjectService.getById(s);
                    temp.append(byId.getName()).append(",");
@@ -477,7 +478,7 @@
            StringBuilder names = new StringBuilder();
            StringBuilder sorts = new StringBuilder();
            StudyLookVO studyLookVO1 = new StudyLookVO();
            if (StringUtils.hasLength(tStudyLook.getSubject())){
            if (StringUtils.hasLength(tStudyLook.getSubject())) {
                for (String s : tStudyLook.getSubject().split(",")) {
                    TSubject byId = subjectService.getById(s);
                    names.append(byId.getName()).append(",");
@@ -505,7 +506,7 @@
        for (TStudyInduction tStudyInduction : list2) {
            StringBuilder names = new StringBuilder();
            StudyInductionVO studyInductionVO = new StudyInductionVO();
            if (StringUtils.hasLength(tStudyInduction.getSubject())){
            if (StringUtils.hasLength(tStudyInduction.getSubject())) {
                for (String s : tStudyInduction.getSubject().split(",")) {
                    String replace = s.replace("-", "");
                    TSubject byId = subjectService.getById(replace);
@@ -527,34 +528,34 @@
        for (TStudyAnswer tStudyAnswer : list3) {
            StringBuilder names = new StringBuilder();
            StudyAnswerVO studyAnswerVO = new StudyAnswerVO();
            if (tStudyAnswer.getIsAnswer() != null){
            if (tStudyAnswer.getIsAnswer() != null) {
                if (tStudyAnswer.getIsAnswer() == 1) {
                    if (tStudyAnswer.getSubject()!=null){
                    if (tStudyAnswer.getSubject() != null) {
                        TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
                        names.append(byId.getName()).append(",");
                    }
                    if (tStudyAnswer.getAnswerSubject()!=null) {
                    if (tStudyAnswer.getAnswerSubject() != null) {
                        TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
                        names.append(byId1.getName()).append(",");
                    }
                } else {
                    if (tStudyAnswer.getSubject()!=null) {
                    if (tStudyAnswer.getSubject() != null) {
                        TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
                        names.append(byId.getName()).append(",");
                    }
                    if (tStudyAnswer.getAnswerSubject()!=null) {
                    if (tStudyAnswer.getAnswerSubject() != null) {
                        TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
                        names.append(byId1.getName()).append(",");
                    }
                }
            }
            if (StringUtils.hasLength(names)){
            if (StringUtils.hasLength(names)) {
                String string = names.toString();
                studyAnswerVO.setName(string.substring(0, string.length() - 1));
                studyAnswerVO.setIntegral(tStudyAnswer.getIntegral());
                studyAnswerVO.setIsVip(tStudyAnswer.getIsVip());
                studyAnswerVO.setIsAnswer(tStudyAnswer.getIsAnswer());
                studyAnswerVO.setSubject(tStudyAnswer.getSubject()+","+tStudyAnswer.getAnswerSubject());
                studyAnswerVO.setSubject(tStudyAnswer.getSubject() + "," + tStudyAnswer.getAnswerSubject());
                answerVOS.add(studyAnswerVO);
            }
@@ -567,7 +568,7 @@
        for (TStudyPair tStudyPair : list4) {
            StringBuilder names = new StringBuilder();
            StudyPairVO studyPairVO = new StudyPairVO();
            if (StringUtils.hasLength(tStudyPair.getSubject())){
            if (StringUtils.hasLength(tStudyPair.getSubject())) {
                for (String s : tStudyPair.getSubject().split(",")) {
                    TSubject byId = subjectService.getById(s);
                    names.append(byId.getName()).append(",");
@@ -603,38 +604,41 @@
            StringBuilder names1 = new StringBuilder();
            StringBuilder sort = new StringBuilder();
            StringBuilder sort1 = new StringBuilder();
            if (StringUtils.hasLength(tStory.getStory())){
            if (StringUtils.hasLength(tStory.getStory())) {
                for (String s : tStory.getStory().split(",")) {
                    TStory byId = storyService.getById(s);
                    names.append(byId.getName()).append(",");
                }
            }
            if (StringUtils.hasLength(tStory.getLookStory())){
            if (StringUtils.hasLength(tStory.getLookStory())) {
                for (String s : tStory.getLookStory().split(",")) {
                    TStory byId = storyService.getById(s);
                    names1.append(byId.getName()).append(",");
                }
            }
            if (StringUtils.hasLength(tStory.getSort())){
            if (StringUtils.hasLength(tStory.getSort())) {
                for (String s : tStory.getSort().split(",")) {
                    sort.append(s).append(",");
                }
            }
            if (StringUtils.hasLength(tStory.getLookSort())){
            if (StringUtils.hasLength(tStory.getLookSort())) {
                for (String s : tStory.getLookSort().split(",")) {
                    sort1.append(s).append(",");
                }
            }
            if (StringUtils.hasLength(names)){
            if (StringUtils.hasLength(names)) {
                storyVO.setName(names.substring(0, names.length() - 1));
            }if (StringUtils.hasLength(sort)){
            }
            if (StringUtils.hasLength(sort)) {
                storyVO.setSort(sort.substring(0, sort.length() - 1));
            }if (StringUtils.hasLength(names1)){
            }
            if (StringUtils.hasLength(names1)) {
                storyVO.setLookName(names1.substring(0, names1.length() - 1));
            }if (StringUtils.hasLength(sort1)){
            }
            if (StringUtils.hasLength(sort1)) {
                storyVO.setLookSort(sort1.substring(0, sort1.length() - 1));
            }
            storyVO.setIntegral(tStory.getIntegral());
@@ -658,7 +662,7 @@
     * @param quarter 季度
     */
    @GetMapping("/weekList")
    @ApiOperation(value = "周目列表", tags = {"周目列表"})
    @ApiOperation(value = "根据季度获取周目列表", tags = {"根据季度获取周目列表"})
    @ApiImplicitParams({
            @ApiImplicitParam(value = "所属类型", name = "type", dataType = "Integer", required = true),
            @ApiImplicitParam(value = "季度", name = "quarter", dataType = "Integer", required = true)
@@ -854,7 +858,7 @@
     * @param completeStudy 完成学习信息
     */
    @PostMapping("/completeLearning")
    @ApiOperation(value = "完成学习", tags = {"完成学习/其他积分来源(分享...)"})
    @ApiOperation(value = "完成学习", tags = {"完成学习"})
    public R<Boolean> completeLearning(@RequestBody CompleteStudyDTO completeStudy) {
        // 登录用户id
        Integer userId = tokenService.getLoginUserStudy().getUserid();
@@ -1004,6 +1008,7 @@
                subjectId.addAll(Arrays.asList(subject.split(",")));
            }
            redisService.setCacheList(RedisConstants.HEARING_TREE, subjectId);
            redisService.expire(RedisConstants.HEARING_TREE, RedisConstants.THIRTY, TimeUnit.MINUTES);
        }
        return subjectId;
    }
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java
@@ -511,7 +511,7 @@
    @ApiImplicitParams({
            @ApiImplicitParam(value = "手机号", name = "phone", dataType = "string", required = true),
    })
    public R sendPhoneCode(@RequestParam String phone) {
    public R<?> sendPhoneCode(@RequestParam String phone) {
        return userService.phoneCode(phone) ? R.ok() : R.fail();
    }
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TGame.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,6 +29,7 @@
    /**
     * 所属周目
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * 学习id
@@ -37,29 +39,34 @@
    /**
     * 题目数量
     */
    @ApiModelProperty("题目数量")
    private Integer count;
    /**
     * 积分逗号隔开 第一个对应入门第二个对应中级...
     */
    @ApiModelProperty("对应可获取积分数量(第一个为入门难度;第二个为中级难度;第三个为困难难度)")
    private String integral;
    /**
     * 时间逗号隔开 第一个对应入门第二个对应中级...
     */
    @ApiModelProperty("时间范围(第一个为入门难度;第二个为中级难度;第三个为困难难度)")
    private String time;
    /**
     * 超级记忆存储该字段 答题时间
     */
    @ApiModelProperty("超级记忆 - 答题时间(第一个为入门难度;第二个为中级难度;第三个为困难难度)")
    private Integer answerTime;
    /**
     * 超级记忆存储该字段 可获积分总数
     */
    @ApiModelProperty("超级记忆 - 可获积分总数")
    private Integer answerIntegral;
    /**
     * 超级记忆游戏题目数量
     */
    @ApiModelProperty("超级记忆游戏题目数量")
    private Integer answerCount;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStoryListen.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,31 +29,38 @@
    /**
     * 看图配音可获积分
     */
    @ApiModelProperty("看图配音可获积分")
    private Integer lookIntegral;
    /**
     * 框架记忆可获积分
     */
    @ApiModelProperty("框架记忆可获积分")
    private Integer integral;
    /**
     * 所属周目
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * 框架记忆故事ids 多个逗号隔开
     */
    @ApiModelProperty("框架记忆故事ids 多个逗号隔开")
    private String story;
    /**
     * 框架记忆排序 多个逗号隔开和故事ids一一对应
     */
    @ApiModelProperty("框架记忆排序 多个逗号隔开和故事ids一一对应")
    private String sort;
    /**
     * 看图配音故事ids 多个逗号隔开
     */
    @ApiModelProperty("看图配音故事ids 多个逗号隔开")
    private String lookStory;
    /**
     * 看图配音排序 多个逗号隔开
     */
    @ApiModelProperty("看图配音排序 多个逗号隔开")
    private String lookSort;
    /**
     * 学习id
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyAnswer.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,10 +29,12 @@
    /**
     * 周目x
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * Dayx
     */
    @ApiModelProperty("所属day")
    private Integer day;
    /**
     * 问题题目id
@@ -43,20 +46,24 @@
    private Integer answerSubject;
    /**
     * 完成答题可获积分
     */
    private Integer integral;
    /**
     * 问题题目是否为答案图片 0否1是 为0 那么回答题目是答案图片
     */
    @ApiModelProperty("问题题目是否为答案图片 0否1是 为0 那么回答题目是答案图片")
    private Integer isAnswer;
    /**
     * 完成答题可获积分
     */
    @ApiModelProperty("完成答题可获积分")
    private Integer integral;
    /**
     * 学习id
     */
    @ApiModelProperty("学习id")
    private Integer studyId;
    /**
     * 非会员是否查看 0否1是
     */
    @ApiModelProperty("非会员是否查看 0否1是")
    private Integer isVip;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyInduction.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,10 +29,12 @@
    /**
     * 周目x
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * Dayx
     */
    @ApiModelProperty("所属day")
    private Integer day;
    /**
     * 题目 多个题目逗号隔开,带有负号为答题选项
@@ -41,13 +44,16 @@
    /**
     * 完成答题可获积分
     */
    @ApiModelProperty("完成答题可获积分")
    private Integer integral;
    /**
     * 学习id
     */
    @ApiModelProperty("学习id")
    private Integer studyId;
    /**
     * 非会员是否查看 0否1是
     */
    @ApiModelProperty("非会员是否查看 0否1是")
    private Integer isVip;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyListen.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,26 +29,32 @@
    /**
     * 周目x
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * Dayx
     */
    @ApiModelProperty("所属day")
    private Integer day;
    /**
     * 题目
     */
    @ApiModelProperty("题目录音及图片id")
    private String subject;
    /**
     * 完成答题可获积分
     */
    @ApiModelProperty("完成答题可获积分")
    private Integer integral;
    /**
     * 学习id
     */
    @ApiModelProperty("学习id")
    private Integer studyId;
    /**
     * 非会员是否查看 0否1是
     */
    @ApiModelProperty("非会员是否查看 0否1是")
    private Integer isVip;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyLook.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,10 +29,12 @@
    /**
     * 周目x
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * Dayx
     */
    @ApiModelProperty("所属day")
    private Integer day;
    /**
     * 题目
@@ -41,17 +44,21 @@
    /**
     * 排序
     */
    @ApiModelProperty("排序")
    private String sort;
    /**
     * 完成答题可获积分
     */
    @ApiModelProperty("完成答题可获积分")
    private Integer integral;
    /**
     * 学习id
     */
    @ApiModelProperty("学习id")
    private Integer studyId;
    /**
     * 非会员是否查看 0否1是
     */
    @ApiModelProperty("非会员是否查看 0否1是")
    private Integer isVip;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TStudyPair.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
@@ -28,10 +29,12 @@
    /**
     * 周目x
     */
    @ApiModelProperty("所属周目")
    private Integer week;
    /**
     * Dayx
     */
    @ApiModelProperty("所属day")
    private Integer day;
    /**
     * 题目
@@ -41,13 +44,16 @@
    /**
     * 完成答题可获积分
     */
    @ApiModelProperty("完成答题可获积分")
    private Integer integral;
    /**
     * 学习id
     */
    @ApiModelProperty("学习id")
    private Integer studyId;
    /**
     * 非会员是否查看 0否1是
     */
    @ApiModelProperty("非会员是否查看 0否1是")
    private Integer isVip;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TSubject.java
@@ -44,18 +44,22 @@
    /**
     * 状态1上架2下架3删除
     */
    @ApiModelProperty(value = "状态:1上架、2下架、3删除")
    private Integer state;
    /**
     * 图片
     */
    @ApiModelProperty(value = "图片")
    private String img;
    /**
     * 正确语音
     */
    @ApiModelProperty(value = "正确语音")
    private String correct;
    /**
     * 错误语音 多个逗号拼接 这里只要填入就必须是两个 可以不填入
     */
    @ApiModelProperty(value = "错误语音 多个逗号拼接")
    private String error;
}
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TGameServiceImpl.java
@@ -30,7 +30,7 @@
        if (integralRecordList.isEmpty()) {
            return availableIntegral;
        } else {
            // 积分明细不为空,计算已获取的积分数量
            // 积分明细不为空,根据正确率及已获取积分数量计算本次答题可获取的积分数量
            List<Integer> integralList = integralRecordList.stream().map(TIntegralRecord::getIntegral).collect(Collectors.toList()).stream().map(Integer::parseInt).collect(Collectors.toList());
            int sumIntegral = integralList.stream().mapToInt(Integer::intValue).sum();
            if (availableIntegral > sumIntegral) {
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java
@@ -67,7 +67,7 @@
        List<TGameRecord> list = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId).eq(TGameRecord::getGameId, game.getId()).list();
        boolean contains = list.stream().map(TGameRecord::getGameDifficulty).collect(Collectors.toList()).contains(level);
        if (!contains) {
            throw new GlobalException("请先完成上一难度再挑战");
            throw new GlobalException("请先完成上一难度再挑战当前难度!");
        }
    }