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