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