From c62e9f81b2072473b084abb30f7c005ed341a336 Mon Sep 17 00:00:00 2001 From: hjl <1657978663@qq.com> Date: 星期四, 06 六月 2024 15:05:34 +0800 Subject: [PATCH] feat: 修复代码冲突 --- ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 109 insertions(+), 3 deletions(-) diff --git a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java index f6019c3..2116119 100644 --- a/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java +++ b/ruoyi-service/ruoyi-study/src/main/java/com/ruoyi/study/service/impl/TUserStudyServiceImpl.java @@ -1,13 +1,19 @@ package com.ruoyi.study.service.impl; +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; -import com.ruoyi.study.domain.TGame; +import com.ruoyi.common.core.constant.Constants; +import com.ruoyi.study.domain.TStudy; import com.ruoyi.study.domain.TUserStudy; -import com.ruoyi.study.mapper.TGameMapper; +import com.ruoyi.study.dto.CompleteStudyDTO; import com.ruoyi.study.mapper.TUserStudyMapper; -import com.ruoyi.study.service.ITGameService; import com.ruoyi.study.service.ITUserStudyService; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * <p> @@ -20,4 +26,104 @@ @Service public class TUserStudyServiceImpl extends ServiceImpl<TUserStudyMapper, TUserStudy> implements ITUserStudyService { + /** + * 所属day map + */ + private static final Map<String, Integer> DAY_MAP = new HashMap<>(12); + + static { + DAY_MAP.put(Constants.ONE_STR, Constants.TWO); + DAY_MAP.put(Constants.TWO_STR, Constants.THREE); + DAY_MAP.put(Constants.THREE_STR, Constants.FOUR); + DAY_MAP.put(Constants.FOUR_STR, Constants.FIVE); + DAY_MAP.put(Constants.FIVE_STR, Constants.ONE); +// DAY_MAP.put(Constants.SIX_STR, Constants.SEVEN); +// DAY_MAP.put(Constants.SEVEN_STR, Constants.ONE); + } + + @Override + public TUserStudy studySchedule(String userId, Integer week) { + LambdaQueryChainWrapper<TUserStudy> wrapper = lambdaQuery().eq(TUserStudy::getUserId, userId); + wrapper = null != week ? wrapper.eq(TUserStudy::getWeek, week) : wrapper; + return wrapper.eq(TUserStudy::getDisabled, 0).one(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void resettingStudyRecord(String time) { + List<TUserStudy> list = lambdaQuery().eq(TUserStudy::getDisabled, 0).list(); + switch (time) { + case Constants.DAY: + list.forEach(data -> data.setTodayStudy(0)); + break; + case Constants.WEEK: + list.forEach(data -> data.setWeekStudy(0)); + break; + case Constants.MONTH: + list.forEach(data -> data.setMonthStudy(0)); + break; + default: + } + // 自旋重试 + int number = 0; + boolean update = this.updateBatchById(list); + while (!update) { + if (number >= 3) { + break; + } + update = this.updateBatchById(list); + number++; + } + } + + @Override + public Boolean exchangeStudyRecord(List<TStudy> studyList, Integer userId, CompleteStudyDTO completeStudy) { + Integer studyTime = completeStudy.getStudyTime(); + // 学习记录 + TUserStudy userStudyRecord = lambdaQuery().eq(TUserStudy::getUserId, userId) + .eq(TUserStudy::getDisabled, 0).one(); + Integer type = completeStudy.getType(); + if (Constants.ONE.equals(type)) { + userStudyRecord.setListen(Constants.ONE_HUNDRED); + } else if (Constants.TWO.equals(type)) { + userStudyRecord.setLook(Constants.ONE_HUNDRED); + } else if (Constants.THREE.equals(type)) { + userStudyRecord.setInduction(Constants.ONE_HUNDRED); + } else if (Constants.FOUR.equals(type)) { + userStudyRecord.setAnswer(Constants.ONE_HUNDRED); + } else if (Constants.FIVE.equals(type)) { + // 类型五,说明当前day已经全部完成,更新学习记录的 day + Integer nextDay = DAY_MAP.get(String.valueOf(userStudyRecord.getDay())); + userStudyRecord.setDay(nextDay); + // 学习day已切换更新学习进度及学习时长 + userStudyRecord.setListen(Constants.ZERO); + userStudyRecord.setLook(Constants.ZERO); + userStudyRecord.setInduction(Constants.ZERO); + userStudyRecord.setAnswer(Constants.ZERO); + userStudyRecord.setPair(Constants.ZERO); + // 下一day为 1说明该周目已完成,应更改为下一周目 + if (Constants.ONE.equals(nextDay)) { + // 获取下一周目信息 + int index = -1; + for (int i = 0; i < studyList.size(); i++) { + if (studyList.get(i).getWeek().equals(userStudyRecord.getWeek())) { + index = i; + break; + } + } + int nextIndex = (index + 1) % studyList.size(); + TStudy nextStudy = studyList.get(nextIndex); + // 更新学习进度及学习时长 + userStudyRecord.setWeek(nextStudy.getWeek()); + } + } + // 更新学习时长 + userStudyRecord.setTotalStudy(userStudyRecord.getTotalStudy() + studyTime); + userStudyRecord.setTodayStudy(userStudyRecord.getTodayStudy() + studyTime); + userStudyRecord.setWeekStudy(userStudyRecord.getWeekStudy() + studyTime); + userStudyRecord.setMonthStudy(userStudyRecord.getMonthStudy() + studyTime); + // 更新学习进度及学习时长 + return this.updateById(userStudyRecord); + } + } -- Gitblit v1.7.1