From ddee28676ae16b682651eea38f0c1071cf1565b8 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期三, 22 五月 2024 15:33:43 +0800 Subject: [PATCH] feat: 接口返回VO类;接口调试修改BUG --- ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java | 30 +- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 37 +-- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java | 12 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyModelVO.java | 23 ++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyGamerResultVO.java | 33 +++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyLookResultVO.java | 33 +++ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/feignClient/GoodsClient.java | 3 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyRecordResultVO.java | 36 +++ ruoyi-service/ruoyi-goods/src/main/resources/mapper/goods/TGoodsMapper.xml | 4 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListenResultVO.java | 32 ++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyInductionResultVO.java | 33 +++ ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java | 4 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyPairResultVO.java | 33 +++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 110 ++++++--- ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/GoodsFallbackFactory.java | 2 ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java | 5 ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java | 11 + ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerResultVO.java | 33 +++ ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyStoryListenResultVO.java | 32 ++ ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/vo/GoodDetailVO.java | 55 +++++ ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java | 38 ++- ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/factory/StudyFallbackFactory.java | 5 ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/feignClient/StudyClient.java | 12 + 23 files changed, 502 insertions(+), 114 deletions(-) diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/GoodsFallbackFactory.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/GoodsFallbackFactory.java index 76f4cfd..a8b2a02 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/GoodsFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/GoodsFallbackFactory.java @@ -70,7 +70,7 @@ } @Override - public R<List<TGoodsVO>> goodRecommend(String userId) { + public R<List<TGoodsVO>> goodRecommend() { return R.fail("获取商品推荐列表" + cause.getMessage()); } }; diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/feignClient/GoodsClient.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/feignClient/GoodsClient.java index e953e27..ec96ea0 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/feignClient/GoodsClient.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/feignClient/GoodsClient.java @@ -49,11 +49,10 @@ /** * 可兑换商品推荐 * - * @param userId 用户id * @return 推荐商品信息 */ @GetMapping("/goodRecommend") @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"}) - R<List<TGoodsVO>> goodRecommend(String userId); + R<List<TGoodsVO>> goodRecommend(); } diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/factory/StudyFallbackFactory.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/factory/StudyFallbackFactory.java index 7d60d21..c59897b 100644 --- a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/factory/StudyFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/factory/StudyFallbackFactory.java @@ -134,6 +134,11 @@ public R<Boolean> addIntegralDetail(String integral, String method) { return R.fail("生成积分明细信息失败" + cause.getMessage()); } + + @Override + public R<Boolean> exchangeIntegral(Integer integral, String method) { + return R.fail("用户积分变动失败" + cause.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/feignClient/StudyClient.java b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/feignClient/StudyClient.java index e73edc1..c72d5cc 100644 --- a/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/feignClient/StudyClient.java +++ b/ruoyi-api/ruoyi-api-study/src/main/java/com/ruoyi/study/api/feignClient/StudyClient.java @@ -186,8 +186,20 @@ * * @param integral 积分变动信息 * @param method 变动源 + * @return 操作结果 */ @GetMapping("/base/study/addIntegralDetail") R<Boolean> addIntegralDetail(@RequestParam("integral") String integral, @RequestParam("method") String method); + /** + * 用户积分变动(增加或减少)-用于远程调用 + * + * @param integral 积分变动信息 + * @param method 变动源 + * @return 操作结果 + */ + @GetMapping("/base/study/exchangeIntegral") + @ApiOperation(value = "用户积分变动", tags = {"用户积分变动"}) + R<Boolean> exchangeIntegral(@RequestParam("integral") Integer integral, @RequestParam("method") String method); + } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java index 621bca4..1ae5275 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java @@ -149,6 +149,11 @@ public static final String BURDEN = "-"; /** + * 积分明细 符号 - + */ + public static final String INCREASE = "+"; + + /** * 积分明细来源 商城消费 */ public static final String SHOPPING_CONSUME = "商城消费"; diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java index 7ee95af..b5320aa 100644 --- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java +++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java @@ -11,6 +11,7 @@ import com.ruoyi.goods.dto.GoodQueryDTO; import com.ruoyi.goods.dto.GoodsTypeQuery; import com.ruoyi.goods.service.*; +import com.ruoyi.goods.vo.GoodDetailVO; import com.ruoyi.goods.vo.TGoodsVO; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -22,9 +23,7 @@ import javax.annotation.Resource; import java.util.Arrays; -import java.util.HashMap; import java.util.List; -import java.util.Map; /** * <p> @@ -176,6 +175,9 @@ */ @GetMapping("/confirm") @ApiOperation(value = "确认收货", tags = {"兑换记录"}) + @ApiImplicitParams({ + @ApiImplicitParam(value = "订单id", name = "id", dataType = "String", required = true) + }) public AjaxResult confirm(@RequestParam Integer id) { TOrder byId = orderService.getById(id); byId.setState(3); @@ -241,12 +243,10 @@ /** * 可兑换商品推荐 + * 远程调用 */ @GetMapping("/goodRecommend") @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"}) - @ApiImplicitParams({ - @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) - }) public R<List<TGoodsVO>> goodRecommend() { return R.ok(goodsService.goodRecommend(tokenService.getLoginUserStudy().getUserid())); } @@ -261,21 +261,14 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) - public AjaxResult<Map<String, Object>> goodDetail(@RequestParam String goodId) { - Map<String, Object> result = new HashMap<>(8); + public AjaxResult<GoodDetailVO> goodDetail(@RequestParam String goodId) { // 商品详情 TGoods goods = goodsService.lambdaQuery().eq(TGoods::getId, goodId).one(); - result.put("goodDetail", goods); // 商品分类详情 - result.put("goodTypeDetail", goodsTypeService.lambdaQuery().in(TGoodsType::getId, Arrays.asList(goods.getTypeIds().split(","))).list()); + List<TGoodsType> goodsTypes = goodsTypeService.lambdaQuery().in(TGoodsType::getId, Arrays.asList(goods.getTypeIds().split(","))).list(); // 已兑换人数 - result.put("number", goods.getBasicCount() + orderService.getGoodBuyNumber(goods.getId())); - // 用户收货地址 - if (tokenService.getLoginUserStudy().getUserid() != null) { - result.put("address", recipientService.lambdaQuery() - .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid()).eq(Recipient::getIsDefault, 1).one()); - } - return AjaxResult.success(result); + int number = goods.getBasicCount() + orderService.getGoodBuyNumber(goods.getId()); + return AjaxResult.success(new GoodDetailVO(goods, goodsTypes, number)); } /** @@ -286,9 +279,10 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "商品id", name = "goodId", dataType = "String", required = true) }) - public AjaxResult<Map<String, Object>> redeemNow(@RequestParam String goodId) { + public AjaxResult<GoodDetailVO> redeemNow(@RequestParam String goodId) { Recipient recipient = recipientService.lambdaQuery() - .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid()).eq(Recipient::getIsDefault, 1).one(); + .eq(Recipient::getUserId, tokenService.getLoginUserStudy().getUserid()) + .eq(Recipient::getIsDefault, 1).one(); return AjaxResult.success(goodsService.redeemNow(goodId, recipient)); } diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java index 2a8c81e..607532e 100644 --- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java +++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/ITGoodsService.java @@ -5,10 +5,10 @@ import com.ruoyi.goods.domain.Recipient; import com.ruoyi.goods.domain.TGoods; import com.ruoyi.goods.dto.GoodExchangeDTO; +import com.ruoyi.goods.vo.GoodDetailVO; import com.ruoyi.goods.vo.TGoodsVO; import java.util.List; -import java.util.Map; /** * <p> @@ -35,7 +35,7 @@ * @param recipient 默认收货地址 * @return 立即兑换页面数据 */ - Map<String, Object> redeemNow(String goodId, Recipient recipient); + GoodDetailVO redeemNow(String goodId, Recipient recipient); /** * 商品兑换 diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java index b2c3d61..7bd0908 100644 --- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java +++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java @@ -12,6 +12,7 @@ import com.ruoyi.goods.mapper.TGoodsMapper; import com.ruoyi.goods.service.ITGoodsService; import com.ruoyi.goods.service.ITOrderService; +import com.ruoyi.goods.vo.GoodDetailVO; import com.ruoyi.goods.vo.TGoodsVO; import com.ruoyi.study.api.domain.TUser; import com.ruoyi.study.api.feignClient.StudyClient; @@ -22,9 +23,8 @@ import javax.annotation.Resource; import java.util.Date; -import java.util.HashMap; import java.util.List; -import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -52,18 +52,14 @@ } @Override - public Map<String, Object> redeemNow(String goodId, Recipient recipient) { + public GoodDetailVO redeemNow(String goodId, Recipient recipient) { // 商品详情 TGoods goods = lambdaQuery().eq(TGoods::getId, goodId).one(); - Map<String, Object> result = new HashMap<>(8); - result.put("goodDetail", goods); - // 用户收货地址 - result.put("address", recipient); // 库存预热,redisson分布式锁 String key = String.format(RedisConstants.GOOD_STOCK, goods.getId()); RSemaphore semaphore = redissonClient.getSemaphore(key); semaphore.trySetPermits(goods.getSurplus()); - return result; + return new GoodDetailVO(goods,recipient); } @Override @@ -81,25 +77,37 @@ if (user.getIntegral() < needIntegral) { throw new GlobalException("兑换失败,当前剩余积分不足!"); } + // 检查用户兑换数量是否超过单用户最大兑换数量 + List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getUserId, user.getId()).eq(TOrder::getGoodsId, goodId).list(); + // 该商品订单为空、订单数量未超过商品的单个用户兑换上限数量时,可以进行兑换 + int totalNumber = orderList.stream().map(TOrder::getCount).collect(Collectors.toList()).stream().mapToInt(Integer::intValue).sum(); + boolean canExchange = orderList.isEmpty() || null == good.getUserCount() || (totalNumber + number) <= good.getUserCount(); + if (!canExchange) { + throw new GlobalException("兑换失败,当前兑换数量已超过最大兑换数量,剩余兑换数量为: " + (good.getUserCount() - totalNumber) + "!"); + } // redisson分布式锁,防止超卖 String key = String.format(RedisConstants.GOOD_STOCK, good.getId()); RSemaphore semaphore = redissonClient.getSemaphore(key); boolean tried = semaphore.tryAcquire(number); // 兑换失败,库存不足 if (!tried) { + semaphore.release(number); throw new GlobalException("当前商品库存不足!"); } // 兑换成功,生成订单信息、生成积分明细(积分明细需要远程调用rouyi-study服务) TOrder order = orderInfo(goodExchange, recipient, number, goodId, needIntegral); - if (!orderService.save(order)) { - throw new GlobalException("订单生成失败!"); - } + boolean result = orderService.save(order); // 远程调用,生成积分明细 - Boolean boo = studyClient.addIntegralDetail(Constants.BURDEN + needIntegral, Constants.SHOPPING_CONSUME).getData(); - if (!boo) { - throw new GlobalException("生成积分明细失败,请稍后重试!"); + result = result && studyClient.addIntegralDetail(Constants.BURDEN + needIntegral, Constants.SHOPPING_CONSUME).getData(); + // 扣除用户积分 + result = result && studyClient.exchangeIntegral(needIntegral, Constants.BURDEN).getData(); + // 扣除库存 + result = result && this.lambdaUpdate().set(TGoods::getSurplus, good.getSurplus() - number).eq(TGoods::getId, good.getId()).update(); + if (!result) { + semaphore.release(number); + throw new GlobalException("商品兑换失败!"); } - return true; + return result; } private TOrder orderInfo(GoodExchangeDTO goodExchange, Recipient recipient, Integer number, Integer goodId, int needIntegral) { diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/vo/GoodDetailVO.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/vo/GoodDetailVO.java new file mode 100644 index 0000000..3be3b17 --- /dev/null +++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/vo/GoodDetailVO.java @@ -0,0 +1,55 @@ +package com.ruoyi.goods.vo; + +import com.ruoyi.goods.domain.Recipient; +import com.ruoyi.goods.domain.TGoods; +import com.ruoyi.goods.domain.TGoodsType; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@Data +@ApiModel("商品详情返回信息类") +public class GoodDetailVO { + + /** + * 商品信息 + */ + @ApiModelProperty("商品信息") + private TGoods good; + + /** + * 商品分类信息 + */ + @ApiModelProperty("商品分类信息") + private List<TGoodsType> goodTypes; + + /** + * 已兑换人数 + */ + @ApiModelProperty("已兑换人数") + private Integer exchangeNumber; + + /** + * 用户默认收货地址 + */ + @ApiModelProperty("用户默认收货地址(为:null则调用获取收货地址接口)") + private Recipient recipient; + + public GoodDetailVO(TGoods good, List<TGoodsType> goodTypes, Integer exchangeNumber) { + this.good = good; + this.goodTypes = goodTypes; + this.exchangeNumber = exchangeNumber; + } + + public GoodDetailVO(TGoods good, Recipient recipient) { + this.good = good; + this.recipient = recipient; + } +} diff --git a/ruoyi-service/ruoyi-goods/src/main/resources/mapper/goods/TGoodsMapper.xml b/ruoyi-service/ruoyi-goods/src/main/resources/mapper/goods/TGoodsMapper.xml index 33f079b..2c5fdfe 100644 --- a/ruoyi-service/ruoyi-goods/src/main/resources/mapper/goods/TGoodsMapper.xml +++ b/ruoyi-service/ruoyi-goods/src/main/resources/mapper/goods/TGoodsMapper.xml @@ -38,8 +38,8 @@ <select id="goodRecommend" resultType="com.ruoyi.goods.vo.TGoodsVO"> select * from t_goods g - where g.price <![CDATA[ <= ]]> (select integral from t_user u where u.id = #{userId}) - ORDER BY g.price desc + where g.integral <![CDATA[ <= ]]> (select integral from t_user u where u.id = #{userId}) + ORDER BY g.integral desc limit 3 </select> </mapper> 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 dc1d7d3..6c68a05 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.constant.RedisConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.GlobalException; @@ -17,6 +18,7 @@ import com.ruoyi.study.dto.*; import com.ruoyi.study.service.*; import com.ruoyi.study.vo.*; +import com.ruoyi.system.api.model.LoginUserParent; import io.swagger.annotations.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; @@ -114,8 +116,8 @@ public R<PageInfo<TSubject>> subjectList(@RequestBody ChoiceSubject query) { PageInfo<TSubject> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); QueryWrapper<TSubject> wrapper = new QueryWrapper<>(); - if (StringUtils.hasLength(query.getName())){ - wrapper.like("name",query.getName()); + if (StringUtils.hasLength(query.getName())) { + wrapper.like("name", query.getName()); } if (StringUtils.hasLength(query.getEnglish())) { wrapper.like("english", query.getEnglish()); @@ -627,7 +629,7 @@ @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) { + 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); } @@ -637,8 +639,8 @@ */ @GetMapping("/goodRecommend") @ApiOperation(value = "可兑换商品推荐", tags = {"可兑换商品推荐"}) - public R<List<TGoodsVO>> studySchedule() { - return goodsClient.goodRecommend(String.valueOf(tokenService.getLoginUserStudy().getUserid())); + public AjaxResult<List<TGoodsVO>> studySchedule() { + return AjaxResult.success(goodsClient.goodRecommend()); } /** @@ -663,7 +665,7 @@ @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) { + public AjaxResult<StudyListenResultVO> listenSelectPicture(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyListen> wrapper = studyListenService.lambdaQuery().eq(TStudyListen::getWeek, week) @@ -688,7 +690,7 @@ @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) { + public AjaxResult<StudyLookResultVO> pictureSelectVoice(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyLook> wrapper = studyLookService.lambdaQuery().eq(TStudyLook::getWeek, week) @@ -714,7 +716,7 @@ @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) { + public AjaxResult<StudyInductionResultVO> induceExclude(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyInduction> wrapper = studyInductionService.lambdaQuery().eq(TStudyInduction::getWeek, week) @@ -739,7 +741,7 @@ @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) { + public AjaxResult<StudyAnswerResultVO> questionsAndAnswers(@RequestParam Integer week, @RequestParam Integer day) { // 判断当前登录用户是否为 会员 Boolean isVip = userService.isVip(); LambdaQueryChainWrapper<TStudyAnswer> wrapper = studyAnswerService.lambdaQuery().eq(TStudyAnswer::getWeek, week) @@ -764,10 +766,16 @@ @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(); + public AjaxResult<StudyPairResultVO> pictureMateVoice(@RequestParam Integer week, @RequestParam Integer day) { + // 判断当前登录用户是否为 会员 + Boolean isVip = userService.isVip(); + LambdaQueryChainWrapper<TStudyPair> wrapper = studyPairService.lambdaQuery().eq(TStudyPair::getWeek, week) + .eq(TStudyPair::getDay, day).eq(TStudyPair::getDisabled, 0); + // 非会员只能查看非会员题目,会员可以查看所有题目 + if (!isVip) { + wrapper.eq(TStudyPair::getIsVip, 0); + } + TStudyPair pair = wrapper.one(); return AjaxResult.success(studyService.pictureMateVoice(week, day, pair)); } @@ -783,13 +791,11 @@ @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); + public AjaxResult<StudyGamerResultVO> gameHearing(@RequestParam Integer difficulty, @RequestParam Integer week) { TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week) .eq(TGame::getDisabled, 0).one(); game.setIntegral(game.getIntegral().split(",")[difficulty]); game.setTime(game.getTime().split(",")[difficulty]); - result.put("game", game); // 检验是否完成难度 studyService.checkDifficulty(difficulty, week, game); List<String> subjectId = getSubjectId(week); @@ -809,8 +815,8 @@ // 获取对应的数据并加入结果列表 subjectData.add(subjectId.get(randomIndex)); } - result.put("subject", subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list()); - return AjaxResult.success(result); + return AjaxResult.success(new StudyGamerResultVO(game, + subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list())); } /** @@ -825,10 +831,8 @@ @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); + public AjaxResult<StudyGamerResultVO> gameMemory(@RequestParam Integer difficulty, @RequestParam Integer week) { TGame game = gameService.lambdaQuery().eq(TGame::getWeek, week).eq(TGame::getDisabled, 0).one(); - result.put("game", game); // 检验是否完成难度 studyService.checkDifficulty(difficulty, week, game); List<String> subjectId = getSubjectId(week); @@ -848,8 +852,8 @@ // 获取对应的数据并加入结果列表 subjectData.add(subjectId.get(randomIndex)); } - result.put("subject", subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list()); - return AjaxResult.success(result); + return AjaxResult.success(new StudyGamerResultVO(game, + subjectService.lambdaQuery().in(TSubject::getId, subjectData).eq(TSubject::getState, 1).list())); } /** @@ -860,7 +864,7 @@ */ @PostMapping("/gameAchievement") @ApiOperation(value = "完成游戏-记录游戏测试成绩", tags = {"完成游戏-记录游戏测试成绩"}) - public AjaxResult<?> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { + public AjaxResult<Boolean> gameAchievement(@RequestBody CompleteGameDTO completeStudy) { TGame game = gameService.getById(completeStudy.getGameId()); // 游戏测试记录 Boolean add = gameRecordService.add(completeStudy); @@ -905,15 +909,13 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) - public AjaxResult<Map<String, Object>> lookPictureDbu(@RequestParam Integer week) { + public AjaxResult<StudyStoryListenResultVO> lookPictureDbu(@RequestParam Integer week) { // 看图配音信息 TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getLookStory().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("listen", listen); - result.put("info", subjectService.lambdaQuery().in(TSubject::getId, list).list()); - return AjaxResult.success(result); + return AjaxResult.success(new StudyStoryListenResultVO(listen, + subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); } /** @@ -926,15 +928,13 @@ @ApiImplicitParams({ @ApiImplicitParam(value = "所属周目", name = "week", dataType = "Integer", required = true) }) - public AjaxResult<Map<String, Object>> frameworkMemory(@RequestParam Integer week) { + public AjaxResult<StudyStoryListenResultVO> frameworkMemory(@RequestParam Integer week) { // 看图配音信息 TStoryListen listen = storyListenService.lambdaQuery().eq(TStoryListen::getWeek, week).one(); // 获取对应图片语音 List<String> list = Arrays.asList(listen.getStory().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("listen", listen); - result.put("info", subjectService.lambdaQuery().in(TSubject::getId, list).list()); - return AjaxResult.success(result); + return AjaxResult.success(new StudyStoryListenResultVO(listen, + subjectService.lambdaQuery().in(TSubject::getId, list).eq(TSubject::getState, 1).list())); } /** @@ -970,7 +970,7 @@ @ApiImplicitParam(value = "完成答题/完成听故事", name = "method", dataType = "String", required = true) }) public AjaxResult<Boolean> completeStory(@RequestParam Integer integral, @RequestParam Integer storyId, - @RequestParam String method) { + @RequestParam String method) { // 添加积分明细记录 Boolean add = integralRecordService.add(String.valueOf(integral), method); // 用户信息 @@ -983,16 +983,15 @@ @GetMapping("/studyRecord") @ApiOperation(value = "个人中心-学习记录", tags = {"个人中心-学习记录"}) - public AjaxResult<Map<String, Object>> studyRecord() { + public AjaxResult<StudyRecordResultVO> studyRecord() { Integer userId = tokenService.getLoginUserStudy().getUserid(); - Map<String, Object> result = new HashMap<>(8); // 学习记录 - result.put("record", userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId) - .eq(TUserStudy::getDisabled, 0).one()); + TUserStudy studyRecord = userStudyService.lambdaQuery().eq(TUserStudy::getUserId, userId) + .eq(TUserStudy::getDisabled, 0).one(); // 游戏测试成绩 - result.put("gameAchievement", gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId) - .eq(TGameRecord::getDisabled, 0).list()); - return AjaxResult.success(result); + List<TGameRecord> gameRecordList = gameRecordService.lambdaQuery().eq(TGameRecord::getUserId, userId) + .eq(TGameRecord::getDisabled, 0).list(); + return AjaxResult.success(new StudyRecordResultVO(studyRecord,gameRecordList)); } @GetMapping("/integralDetail") @@ -1021,13 +1020,38 @@ @ApiImplicitParam(value = "变动源(完成学习、完成游戏...)", name = "method", dataType = "String", required = true) }) public R<Boolean> addIntegralDetail(@RequestParam("integral") String integral, @RequestParam("method") String method) { + // 当前登录用户 + LoginUserParent userStudy = tokenService.getLoginUserStudy(); + // 生成积分明细信息 TIntegralRecord integralRecord = new TIntegralRecord(); integralRecord.setIntegral(integral); integralRecord.setMethod(method); - integralRecord.setUserId(tokenService.getLoginUserStudy().getUserid()); + integralRecord.setUserId(userStudy.getUserid()); integralRecord.setDisabled(Boolean.FALSE); + integralRecord.setCreateBy(userStudy.getPhone()); + integralRecord.setCreateTime(new Date()); + integralRecord.setUpdateBy(userStudy.getPhone()); + integralRecord.setUpdateTime(new Date()); return R.ok(integralRecordService.save(integralRecord)); } + /** + * 用户积分变动(增加或减少)-用于远程调用 + * + * @param integral 积分变动信息 + * @param method 变动源 + */ + @GetMapping("/exchangeIntegral") + @ApiOperation(value = "用户积分变动", tags = {"用户积分变动"}) + public R<Boolean> exchangeIntegral(@RequestParam("integral") Integer integral, @RequestParam("method") String method) { + TUser user = userService.getById(tokenService.getLoginUserStudy().getUserid()); + if (Constants.BURDEN.equals(method)) { + user.setIntegral(user.getIntegral() - integral); + } else { + user.setIntegral(user.getIntegral() + integral); + } + return R.ok(userService.updateById(user)); + } + } diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java index d55f8cb..72e3f0d 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TUserController.java @@ -496,6 +496,17 @@ return AjaxResult.success(); } + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("/userInfo") + @ApiOperation(value = "用户详情", tags = {"用户详情"}) + public R<TUser> userInfo() { + return R.ok(userService.lambdaQuery().eq(TUser::getId,tokenService.getLoginUserStudy().getUserid()).one()); + } + @PostMapping("/deleteUser") @ApiOperation(value = "注销当前帐号", tags = {"家长端-个人中心"}) @ApiImplicitParams({ diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java index 81afdb0..512b46c 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITStudyService.java @@ -3,9 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.study.domain.*; import com.ruoyi.study.dto.StudyWeekDTO; +import com.ruoyi.study.vo.*; import java.util.List; -import java.util.Map; /** * <p> @@ -44,7 +44,7 @@ * @param studyListens 数据集合 * @return 单个题组下所包含的所有图片及语音 */ - Map<String, Object> listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens); + StudyListenResultVO listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens); /** * 自主游戏1-超级听力 @@ -63,7 +63,7 @@ * @param lookList 数据集合 * @return 单个题组下所包含的所有图片及语音 */ - Map<String, Object> pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList); + StudyLookResultVO pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList); /** * 自主学习3-归纳排除 @@ -73,7 +73,7 @@ * @param inductionList 归纳排除 * @return 题目信息 */ - Map<String, Object> induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList); + StudyInductionResultVO induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList); /** * 自主学习4-有问有答 @@ -83,7 +83,7 @@ * @param answerList 有问有答 * @return 题目信息 */ - Map<String, Object> questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList); + StudyAnswerResultVO questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList); /** * 自主学习5-音图相配 @@ -93,6 +93,6 @@ * @param pair 音图相配 * @return 题目信息 */ - Map<String, Object> pictureMateVoice(Integer week, Integer day, TStudyPair pair); + StudyPairResultVO pictureMateVoice(Integer week, Integer day, TStudyPair pair); } diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java index 15966db..977f9c3 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java @@ -10,6 +10,7 @@ import com.ruoyi.study.service.ITStudyService; import com.ruoyi.study.service.ITSubjectService; import com.ruoyi.study.service.ITUserStudyService; +import com.ruoyi.study.vo.*; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -70,64 +71,50 @@ } @Override - public Map<String, Object> listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens) { + public StudyListenResultVO listenSelectPicture(Integer week, Integer day, List<TStudyListen> studyListens) { // 随机获取一组题 Random rand = new Random(); TStudyListen data = studyListens.get(rand.nextInt(studyListens.size())); List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("data", data); - result.put("subject", subjectList); - return result; + return new StudyListenResultVO(data, subjectList); } @Override - public Map<String, Object> pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList) { + public StudyLookResultVO pictureSelectVoice(Integer week, Integer day, List<TStudyLook> lookList) { // 随机获取一组题 Random rand = new Random(); TStudyLook data = lookList.get(rand.nextInt(lookList.size())); List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("data", data); - result.put("subject", subjectList); - return result; + return new StudyLookResultVO(data, subjectList); } @Override - public Map<String, Object> induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList) { + public StudyInductionResultVO induceExclude(Integer week, Integer day, List<TStudyInduction> inductionList) { // 随机获取一组题 Random rand = new Random(); TStudyInduction data = inductionList.get(rand.nextInt(inductionList.size())); List<TSubject> subjectList = getSubjects(data.getSubject().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("data", data); - result.put("subject", subjectList); - return result; + return new StudyInductionResultVO(data, subjectList); } @Override - public Map<String, Object> questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList) { + public StudyAnswerResultVO questionsAndAnswers(Integer week, Integer day, List<TStudyAnswer> answerList) { // 随机获取一组题 Random rand = new Random(); TStudyAnswer data = answerList.get(rand.nextInt(answerList.size())); // 获取问题题目 和 回答题目 - Map<String, Object> result = new HashMap<>(8); List<String> ids = new ArrayList<>(); ids.add(String.valueOf(data.getSubject())); ids.add(String.valueOf(data.getAnswerSubject())); - result.put("data", data); // 有问有答 - result.put("subject", getSubjects(ids.toArray(ids.toArray(new String[0])))); - return result; + List<TSubject> subjects = getSubjects(ids.toArray(ids.toArray(new String[0]))); + return new StudyAnswerResultVO(data, subjects); } @Override - public Map<String, Object> pictureMateVoice(Integer week, Integer day, TStudyPair pair) { + public StudyPairResultVO pictureMateVoice(Integer week, Integer day, TStudyPair pair) { List<TSubject> subjectList = getSubjects(pair.getSubject().split(",")); - Map<String, Object> result = new HashMap<>(8); - result.put("data", pair); - result.put("subject", subjectList); - return result; + return new StudyPairResultVO(pair, subjectList); } /** diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerResultVO.java new file mode 100644 index 0000000..1630385 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyAnswerResultVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStudyAnswer; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("有问有答返回信息类") +public class StudyAnswerResultVO extends StudyModelVO { + + /** + * 自主学习题目信息 + */ + @ApiModelProperty("自主学习题目信息") + private TStudyAnswer data; + + public StudyAnswerResultVO(TStudyAnswer data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyGamerResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyGamerResultVO.java new file mode 100644 index 0000000..26771f0 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyGamerResultVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TGame; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("超级听力&&超级记忆返回信息类") +public class StudyGamerResultVO extends StudyModelVO { + + /** + * 趣味游戏题目信息 + */ + @ApiModelProperty("趣味游戏题目信息") + private TGame data; + + public StudyGamerResultVO(TGame data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyInductionResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyInductionResultVO.java new file mode 100644 index 0000000..277b200 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyInductionResultVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStudyInduction; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("归纳排除返回信息类") +public class StudyInductionResultVO extends StudyModelVO { + + /** + * 自主学习题目信息 + */ + @ApiModelProperty("自主学习题目信息") + private TStudyInduction data; + + public StudyInductionResultVO(TStudyInduction data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListenResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListenResultVO.java new file mode 100644 index 0000000..f023a6c --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyListenResultVO.java @@ -0,0 +1,32 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStudyListen; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:39 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("听音选图返回信息类") +public class StudyListenResultVO extends StudyModelVO { + + /** + * 自主学习题目信息 + */ + @ApiModelProperty("自主学习题目信息") + private TStudyListen data; + + public StudyListenResultVO(TStudyListen data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyLookResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyLookResultVO.java new file mode 100644 index 0000000..3af3b8a --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyLookResultVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStudyLook; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("看图选音返回信息类") +public class StudyLookResultVO extends StudyModelVO{ + + /** + * 自主学习题目信息 + */ + @ApiModelProperty("自主学习题目信息") + private TStudyLook data; + + public StudyLookResultVO(TStudyLook data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyModelVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyModelVO.java new file mode 100644 index 0000000..8060b5b --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyModelVO.java @@ -0,0 +1,23 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:47 + */ +@Data +public class StudyModelVO { + + /** + * 自主学习题目所包含录音图片等 + */ + @ApiModelProperty("自主学习题目所包含录音图片等") + private List<TSubject> subjectList; + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyPairResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyPairResultVO.java new file mode 100644 index 0000000..1823fdb --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyPairResultVO.java @@ -0,0 +1,33 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStudyPair; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:48 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("音图相配返回信息类") +public class StudyPairResultVO extends StudyModelVO { + + /** + * 自主学习题目信息 + */ + @ApiModelProperty("自主学习题目信息") + private TStudyPair data; + + public StudyPairResultVO(TStudyPair data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } + +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyRecordResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyRecordResultVO.java new file mode 100644 index 0000000..c24eccd --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyRecordResultVO.java @@ -0,0 +1,36 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TGameRecord; +import com.ruoyi.study.domain.TUserStudy; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:39 + */ +@Data +@ApiModel("个人中心-学习记录返回信息类") +public class StudyRecordResultVO{ + + /** + * 学习记录 + */ + @ApiModelProperty("学习记录") + private TUserStudy record; + + /** + * 游戏测试成绩 + */ + @ApiModelProperty("游戏测试成绩") + private List<TGameRecord> gameRecordList; + + public StudyRecordResultVO(TUserStudy record, List<TGameRecord> gameRecordList) { + this.record = record; + this.gameRecordList = gameRecordList; + } +} diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyStoryListenResultVO.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyStoryListenResultVO.java new file mode 100644 index 0000000..9962987 --- /dev/null +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/vo/StudyStoryListenResultVO.java @@ -0,0 +1,32 @@ +package com.ruoyi.study.vo; + +import com.ruoyi.study.domain.TStoryListen; +import com.ruoyi.study.domain.TSubject; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +/** + * @author HJL + * @version 1.0 + * @since 2024-05-22 14:39 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@ApiModel("自主故事-看图配音&&框架记忆返回信息类") +public class StudyStoryListenResultVO extends StudyModelVO { + + /** + * 自主故事-看图配音&&框架记忆题目信息 + */ + @ApiModelProperty("自主故事-看图配音&&框架记忆题目信息") + private TStoryListen data; + + public StudyStoryListenResultVO(TStoryListen data, List<TSubject> subjectList) { + this.data = data; + super.setSubjectList(subjectList); + } +} -- Gitblit v1.7.1