From eed4e2af4645f1dfc3abc047a86e90ad8fe149b3 Mon Sep 17 00:00:00 2001
From: hjl <1657978663@qq.com>
Date: 星期四, 20 六月 2024 18:04:24 +0800
Subject: [PATCH] fix: 学习端bug
---
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/TGoodsController.java | 36 ++++++-
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserPresentRecordService.java | 16 +++
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TStudyServiceImpl.java | 48 ++++++++-
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserStudyRecord.java | 7 +
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/TOrder.java | 28 +++--
ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserPresentRecordMapper.xml | 4
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/controller/TStudyController.java | 39 +++++++
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserPresentRecord.java | 49 +++++++++
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserPresentRecordServiceImpl.java | 21 ++++
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/Constants.java | 7 +
ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserPresentRecordMapper.java | 16 +++
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/vo/GoodDetailVO.java | 12 ++
ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/TGoodsServiceImpl.java | 2
13 files changed, 254 insertions(+), 31 deletions(-)
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 b3e1213..99da36f 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
@@ -231,6 +231,13 @@
public static final Integer SEVEN = 7;
/**
+ * 数字10
+ */
+ public static final Integer TEN = 10;
+
+
+
+ /**
* -1
*/
public static final Integer BURDEN_ONE = -1;
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 48c5d95..e335244 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
@@ -164,9 +164,9 @@
@PostMapping("/addGoods")
@ApiOperation(value = "添加", tags = {"后台-商品管理"})
public R addGoods(@RequestBody TGoods dto) {
- if (dto.getTotal()!=null){
+ if (dto.getTotal() != null) {
dto.setSurplus(dto.getTotal());
- }else{
+ } else {
dto.setSurplus(0);
}
goodsService.save(dto);
@@ -184,9 +184,9 @@
@PostMapping("/updateGoods")
@ApiOperation(value = "修改", tags = {"后台-商品管理"})
public R updateGoods(@RequestBody TGoods dto) {
- if (dto.getTotal()!=null){
+ if (dto.getTotal() != null) {
dto.setSurplus(dto.getTotal());
- }else{
+ } else {
dto.setSurplus(0);
}
goodsService.updateById(dto);
@@ -647,7 +647,19 @@
number += goods.getBasicCount();
}
number += orderService.getGoodBuyNumber(goods.getId());
- return R.ok(new GoodDetailVO(goods, goodsTypes, number));
+ // 剩余兑换数量
+ Integer residueNumber = null;
+ if (null != goods.getTotal()) {
+ // 计算剩余兑换数量
+ List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId)
+ .eq(TOrder::getDisabled, 0).list();
+ Integer item = 0;
+ for (TOrder order : orderList) {
+ item += order.getCount();
+ }
+ residueNumber = goods.getTotal() - item;
+ }
+ return R.ok(new GoodDetailVO(goods, goodsTypes, number, residueNumber));
}
/**
@@ -678,7 +690,19 @@
number += goods.getBasicCount();
}
number += orderService.getGoodBuyNumber(goods.getId());
- return R.ok(new GoodDetailVO(goods, goodsTypes, number));
+ // 剩余兑换数量
+ Integer residueNumber = null;
+ if (null != goods.getTotal()) {
+ // 计算剩余兑换数量
+ List<TOrder> orderList = orderService.lambdaQuery().eq(TOrder::getGoodsId, goodId)
+ .eq(TOrder::getDisabled, 0).list();
+ Integer item = 0;
+ for (TOrder order : orderList) {
+ item += order.getCount();
+ }
+ residueNumber = goods.getTotal() - item;
+ }
+ return R.ok(new GoodDetailVO(goods, goodsTypes, number, residueNumber));
}
/**
diff --git a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/TOrder.java b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/TOrder.java
index 7511431..68bc8c1 100644
--- a/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/TOrder.java
+++ b/ruoyi-service/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/TOrder.java
@@ -103,6 +103,10 @@
@ApiModelProperty(value = "收货人地址")
private String consigneeAddress;
+ @ApiModelProperty(value = "订单备注")
+ @TableField("remark")
+ private String remark;
+
public Integer getId() {
return id;
@@ -195,17 +199,17 @@
@Override
public String toString() {
return "TOrder{" +
- ", id=" + id +
- ", orderNumber=" + orderNumber +
- ", userId=" + userId +
- ", insertTime=" + insertTime +
- ", goodsId=" + goodsId +
- ", count=" + count +
- ", state=" + state +
- ", express=" + express +
- ", expressNumber=" + expressNumber +
- ", expressTime=" + expressTime +
- ", integral=" + integral +
- "}";
+ ", id=" + id +
+ ", orderNumber=" + orderNumber +
+ ", userId=" + userId +
+ ", insertTime=" + insertTime +
+ ", goodsId=" + goodsId +
+ ", count=" + count +
+ ", state=" + state +
+ ", express=" + express +
+ ", expressNumber=" + expressNumber +
+ ", expressTime=" + expressTime +
+ ", integral=" + integral +
+ "}";
}
}
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 cfc617e..ca60bf3 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
@@ -239,6 +239,7 @@
order.setGoodsId(goodId);
order.setCount(number);
order.setState(1);
+ order.setRemark(goodExchange.getRemark());
order.setIntegral(needIntegral);
order.setConsigneeName(recipient.getRecipient());
order.setConsigneePhone(recipient.getRecipientPhone());
@@ -255,6 +256,7 @@
order.setGoodsId(goodId);
order.setCount(number);
order.setState(1);
+ order.setRemark(goodExchange.getRemark());
order.setIntegral(needIntegral);
order.setConsigneeName(recipient.getRecipient());
order.setConsigneePhone(recipient.getRecipientPhone());
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
index e5ca522..2f7212a 100644
--- 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
@@ -31,12 +31,19 @@
private List<TGoodsType> goodTypes;
/**
+ * 商品剩余数量
+ */
+ @ApiModelProperty("商品剩余数量")
+ private Integer residueNumber;
+
+ /**
* 已兑换人数
*/
@ApiModelProperty("已兑换人数")
private Integer exchangeNumber;
+
/**
- * 已兑换人数
+ * 订单编号
*/
@ApiModelProperty("订单编号")
private String orderNumber;
@@ -47,10 +54,11 @@
@ApiModelProperty("用户默认收货地址(为:null则调用获取收货地址接口)")
private Recipient recipient;
- public GoodDetailVO(TGoods good, List<TGoodsType> goodTypes, Integer exchangeNumber) {
+ public GoodDetailVO(TGoods good, List<TGoodsType> goodTypes, Integer exchangeNumber, Integer residueNumber) {
this.good = good;
this.goodTypes = goodTypes;
this.exchangeNumber = exchangeNumber;
+ this.residueNumber = residueNumber;
}
public GoodDetailVO(TGoods good, Recipient recipient) {
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 d35dab6..93247df 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
@@ -79,6 +79,8 @@
private IUserStudyRecordService studyRecordService;
@Resource
private ManagementClient managementClient;
+ @Resource
+ private ITUserPresentRecordService userPresentRecordService;
@PostMapping("/storyList")
// @ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"})
@@ -755,7 +757,7 @@
if (null == loginUserStudy) {
return R.tokenError("登录失效!");
}
- List<StudyWeekDTO> result = studyService.weekList(type, quarter,loginUserStudy.getUserid());
+ List<StudyWeekDTO> result = studyService.weekList(type, quarter, loginUserStudy.getUserid());
return R.ok(result);
}
@@ -788,11 +790,39 @@
throw new GlobalException("获取在线时间赠送积分信息失败!");
}
String integral = sysSet.getIntegral();
+ // 计算时间间隔
+ TUserPresentRecord record = userPresentRecordService.lambdaQuery()
+ .eq(TUserPresentRecord::getUserId, loginStudy.getUserid())
+ .orderByDesc(TUserPresentRecord::getPresentTime)
+ .eq(TUserPresentRecord::getIsDelete, 0).last("limit 1").one();
+ boolean result = true;
TUser user = userService.lambdaQuery().eq(TUser::getId, loginStudy.getUserid())
.eq(TUser::getDisabled, 0).one();
- boolean update = userService.lambdaUpdate().set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral))
- .eq(TUser::getId, loginStudy.getUserid()).update();
- return R.ok(update);
+ if (null == record) {
+ // 赠送积分
+ result = userService.lambdaUpdate().set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral))
+ .eq(TUser::getId, loginStudy.getUserid()).update();
+ // 添加赠送积分记录
+ TUserPresentRecord data = new TUserPresentRecord();
+ data.setUserId(loginStudy.getUserid());
+ data.setPresentTime(new Date());
+ data.setIsDelete(0);
+ result = result && userPresentRecordService.save(data);
+ } else {
+ if (System.currentTimeMillis() - record.getPresentTime().getTime() >= 10 * 60) {
+ // 赠送积分
+ result = userService.lambdaUpdate()
+ .set(TUser::getIntegral, user.getIntegral() + Integer.parseInt(integral))
+ .eq(TUser::getId, loginStudy.getUserid()).update();
+ // 添加赠送积分记录
+ TUserPresentRecord data = new TUserPresentRecord();
+ data.setUserId(loginStudy.getUserid());
+ data.setPresentTime(new Date());
+ data.setIsDelete(0);
+ result = result && userPresentRecordService.save(data);
+ }
+ }
+ return R.ok(result);
}
/**
@@ -1105,6 +1135,7 @@
.eq(TUserStudyRecord::getWeek, completeStudy.getWeek())
.eq(TUserStudyRecord::getDay, completeStudy.getDay())
.eq(TUserStudyRecord::getType, 0)
+ .eq(TUserStudyRecord::getStudyType, completeStudy.getType())
.eq(TUserStudyRecord::getUserId, userId).list();
if (list.isEmpty()) {
obtainedIntegral = 0;
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserPresentRecord.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserPresentRecord.java
new file mode 100644
index 0000000..11b6dc3
--- /dev/null
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserPresentRecord.java
@@ -0,0 +1,49 @@
+package com.ruoyi.study.domain;
+
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * <p>
+ * 用户赠送积分记录表
+ * </p>
+ *
+ * @author hjl
+ * @since 2024-06-20
+ */
+@Data
+@TableName("t_user_present_record")
+public class TUserPresentRecord {
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Integer id;
+
+ /**
+ * 用户id
+ */
+ @ApiModelProperty("用户id")
+ @TableField("user_id")
+ private Integer userId;
+
+ /**
+ * 赠送时间
+ */
+ @ApiModelProperty("赠送时间")
+ @TableField("present_time")
+ private Date presentTime;
+
+ /**
+ * 是否软删除
+ */
+ @ApiModelProperty("是否软删除(0:未删除;1:已删除)")
+ @TableField("is_delete")
+ private Integer isDelete;
+
+}
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserStudyRecord.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserStudyRecord.java
index ef7e136..785e1dd 100644
--- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserStudyRecord.java
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/domain/TUserStudyRecord.java
@@ -70,6 +70,13 @@
private Integer type;
/**
+ * 题目类型(1:听音选图;2:看图选音;3:归纳排除;4:有问有答;5:音图相配)
+ */
+ @ApiModelProperty("题目类型(1:听音选图;2:看图选音;3:归纳排除;4:有问有答;5:音图相配)")
+ @TableField("study_type")
+ private Integer studyType;
+
+ /**
* 自主故事id
*/
@ApiModelProperty("自主故事id")
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserPresentRecordMapper.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserPresentRecordMapper.java
new file mode 100644
index 0000000..bdce60d
--- /dev/null
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/mapper/TUserPresentRecordMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.study.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.study.domain.TUserPresentRecord;
+
+/**
+ * <p>
+ * 用户赠送积分记录表 Mapper 接口
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-04-26
+ */
+public interface TUserPresentRecordMapper extends BaseMapper<TUserPresentRecord> {
+
+}
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserPresentRecordService.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserPresentRecordService.java
new file mode 100644
index 0000000..bca8999
--- /dev/null
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/ITUserPresentRecordService.java
@@ -0,0 +1,16 @@
+package com.ruoyi.study.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.study.domain.TUserPresentRecord;
+
+/**
+ * <p>
+ * 用户赠送积分记录表 服务类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-04-26
+ */
+public interface ITUserPresentRecordService extends IService<TUserPresentRecord> {
+
+}
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 68186aa..5e15dec 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
@@ -3,7 +3,6 @@
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.exception.GlobalException;
-import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.study.domain.*;
import com.ruoyi.study.dto.StudyWeekDTO;
import com.ruoyi.study.mapper.TStudyMapper;
@@ -279,12 +278,35 @@
for (TStudyInduction data : inductionList) {
List<String> subjectIds = Arrays.stream(data.getSubject().split(",")).collect(Collectors.toList());
List<TSubject> subjectLists = new ArrayList<>();
- for (String id : subjectIds) {
- if (id.startsWith("-")) {
- id = id.replace("-", "");
+ // 第一组题 固定下标为0,1,2的题
+ for (int i = 0; i < Constants.THREE; i++) {
+ String id = subjectIds.get(i);
+ if (!id.startsWith("-")) {
+ subjectLists.add(subjectService.getById(id));
}
- subjectLists.add(subjectService.getById(id));
}
+ for (int i = 0; i < Constants.THREE; i++) {
+ String id = subjectIds.get(i);
+ if (id.startsWith("-")) {
+ id = id.replace("-","");
+ subjectLists.add(subjectService.getById(id));
+ }
+ }
+ // 第二组题,固定下标为3,4的题
+ for (int i = Constants.THREE; i < Constants.FIVE; i++) {
+ String id = subjectIds.get(i);
+ if (!id.startsWith("-")) {
+ subjectLists.add(subjectService.getById(id));
+ }
+ }
+ for (int i = Constants.THREE; i < Constants.FIVE; i++) {
+ String id = subjectIds.get(i);
+ if (id.startsWith("-")) {
+ id = id.replace("-","");
+ subjectLists.add(subjectService.getById(id));
+ }
+ }
+ subjectLists.add(subjectService.getById(subjectIds.get(subjectIds.size() - 1).replace("-","")));
subjectList.add(subjectLists);
}
return new StudyInductionResultVO(learnStudy, subjectList);
@@ -329,12 +351,12 @@
QuestionsAnswersSubjectVO oneVO = new QuestionsAnswersSubjectVO();
TSubject one1 = subjectService.lambdaQuery().eq(TSubject::getId, subject)
.eq(TSubject::getDisabled, 0).one();
- BeanUtils.copyProperties(one1, oneVO);
+ copyProperties(one1, oneVO);
// 回答题目信息
QuestionsAnswersSubjectVO twoVO = new QuestionsAnswersSubjectVO();
TSubject two1 = subjectService.lambdaQuery().eq(TSubject::getId, answerSubject)
.eq(TSubject::getDisabled, 0).one();
- BeanUtils.copyProperties(two1, twoVO);
+ copyProperties(two1, twoVO);
// 判断第一组题目的问题题目及回答题目,哪个是答案
if (Constants.ZERO.equals(one.getIsAnswer())) {
oneVO.setIsQuestion(0);
@@ -347,6 +369,18 @@
voList.add(twoVO);
}
+ private void copyProperties(TSubject subject, QuestionsAnswersSubjectVO vo) {
+ vo.setId(subject.getId());
+ vo.setName(subject.getName());
+ vo.setEnglish(subject.getEnglish());
+ vo.setType(subject.getType());
+ vo.setState(subject.getState());
+ vo.setImg(subject.getImg());
+ vo.setCorrect(subject.getCorrect());
+ vo.setError(subject.getError());
+ vo.setSort(subject.getSort());
+ }
+
@Override
public StudyPairResultVO pictureMateVoice(Integer week, Integer day, List<TStudyPair> pair) {
if (pair.isEmpty()) {
diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserPresentRecordServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserPresentRecordServiceImpl.java
new file mode 100644
index 0000000..989b2f3
--- /dev/null
+++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserPresentRecordServiceImpl.java
@@ -0,0 +1,21 @@
+package com.ruoyi.study.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.study.domain.TUserPresentRecord;
+import com.ruoyi.study.mapper.TUserPresentRecordMapper;
+import com.ruoyi.study.service.ITUserPresentRecordService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 用户赠送积分记录表 服务实现类
+ * </p>
+ *
+ * @author 无关风月
+ * @since 2024-04-26
+ */
+@Service
+public class TUserPresentRecordServiceImpl extends ServiceImpl<TUserPresentRecordMapper, TUserPresentRecord> implements ITUserPresentRecordService {
+
+
+}
diff --git a/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserPresentRecordMapper.xml b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserPresentRecordMapper.xml
new file mode 100644
index 0000000..18ca6f4
--- /dev/null
+++ b/ruoyi-service/ruoyi-study/src/main/resources/mapper/sutdy/TUserPresentRecordMapper.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.study.mapper.TUserPresentRecordMapper">
+</mapper>
--
Gitblit v1.7.1