package com.ruoyi.study.controller;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.ruoyi.common.core.domain.R;
|
import com.ruoyi.common.core.web.page.PageInfo;
|
import com.ruoyi.study.domain.*;
|
import com.ruoyi.study.dto.*;
|
import com.ruoyi.study.service.*;
|
import com.ruoyi.study.vo.*;
|
import io.swagger.annotations.ApiOperation;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* <p>
|
* 学习类型前端控制器
|
* </p>
|
*
|
* @author 无关风月
|
* @since 2024-04-26
|
*/
|
@RestController
|
@RequestMapping("/base/study")
|
public class TStudyController {
|
@Autowired
|
private ITStudyAnswerService studyAnswerService;
|
@Autowired
|
private ITStudyInductionService studyInductionService;
|
@Autowired
|
private ITStudyLookService studyLookService;
|
@Autowired
|
private ITStudyListenService studyListenService;
|
@Autowired
|
private ITStudyPairService studyPairService;
|
@Autowired
|
private ITGameService gameService;
|
@Autowired
|
private ITStoryListenService storyListenService;
|
@Autowired
|
private ITSubjectService subjectService;
|
@Autowired
|
private ITStoryService storyService;
|
@Autowired
|
private ITStudyService studyService;
|
|
@PostMapping("/storyList")
|
@ApiOperation(value = "配置学习类型选择故事", tags = {"题目管理"})
|
public R<PageInfo<TStory>> storyList(@RequestBody ChoiceStory query) {
|
PageInfo<TStory> res = new PageInfo<>(query.getPageNumber(), query.getPageSize());
|
QueryWrapper<TStory> wrapper = new QueryWrapper<>();
|
if (StringUtils.hasLength(query.getName())){
|
wrapper.like("name",query.getName());
|
}
|
if (StringUtils.hasLength(query.getEnglish())){
|
wrapper.like("english",query.getEnglish());
|
}
|
if (StringUtils.hasLength(query.getType())){
|
wrapper.like("type",query.getType());
|
}
|
wrapper.eq("state",1);
|
switch (query.getStoryType()){
|
case 2:
|
List<TStory> list = storyService.list(wrapper);
|
res.setRecords(list);
|
res.setTotal(list.size());
|
return R.ok(res);
|
case 1:
|
// 查询出error字段不为空的数据
|
wrapper.isNotNull("error");
|
List<TStory> list1 = storyService.list(wrapper);
|
res.setRecords(list1);
|
res.setTotal(list1.size());
|
return R.ok(res);
|
|
}
|
List<TStory> objects = new ArrayList<>();
|
res.setRecords(objects);
|
res.setTotal(0);
|
return R.ok(res);
|
}
|
@PostMapping("/subjectList")
|
@ApiOperation(value = "配置学习类型选择题目", tags = {"题目管理"})
|
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.getEnglish())){
|
wrapper.like("english",query.getEnglish());
|
}
|
if (StringUtils.hasLength(query.getType())){
|
wrapper.like("type",query.getType());
|
}
|
wrapper.eq("state",1);
|
switch (query.getStudyType()){
|
case 1:
|
List<TSubject> list = subjectService.list(wrapper);
|
res.setRecords(list);
|
res.setTotal(list.size());
|
return R.ok(res);
|
case 2:
|
// 查询出error字段不为空的数据
|
wrapper.isNotNull("error");
|
List<TSubject> list1 = subjectService.list(wrapper);
|
res.setRecords(list1);
|
res.setTotal(list1.size());
|
return R.ok(res);
|
case 3:
|
List<TSubject> list2 = subjectService.list(wrapper);
|
res.setRecords(list2);
|
res.setTotal(list2.size());
|
return R.ok(res);
|
case 4:
|
List<TSubject> list3 = subjectService.list(wrapper);
|
res.setRecords(list3);
|
res.setTotal(list3.size());
|
return R.ok(res);
|
case 5:
|
List<TSubject> list4 = subjectService.list(wrapper);
|
res.setRecords(list4);
|
res.setTotal(list4.size());
|
return R.ok(res);
|
}
|
List<TSubject> objects = new ArrayList<>();
|
res.setRecords(objects);
|
res.setTotal(0);
|
return R.ok(res);
|
}
|
/**
|
* 添加学习配置
|
* @param dto
|
* @return
|
*/
|
@PostMapping("/addStudySet")
|
public R<Object> addStudySet(@RequestBody AddStudySetDTO dto) {
|
Integer week = dto.getWeek();
|
Integer day = dto.getDay();
|
Integer type = dto.getType();
|
TStudy one = studyService.getOne(new QueryWrapper<TStudy>()
|
.eq("week", week)
|
.eq("type", type));
|
GameDTO game = dto.getGame();
|
StoryListenDTO storyListen = dto.getStoryListen();
|
if (day == 6){
|
// 先判断有没有配置
|
TGame studyId = gameService.getOne(new QueryWrapper<TGame>()
|
.eq("studyId", one.getId())
|
.eq("week",week));
|
if (studyId!=null){
|
studyId.setWeek(dto.getWeek());
|
studyId.setStudyId(one.getId());
|
studyId.setCount(game.getCount());
|
studyId.setIntegral(game.getIntegral());
|
studyId.setTime(game.getTime());
|
studyId.setAnswerTime(game.getAnswerTime());
|
studyId.setAnswerIntegral(game.getAnswerIntegral());
|
studyId.setAnswerCount(game.getAnswerCount());
|
gameService.updateById(studyId);
|
}else{
|
TGame tGame = new TGame();
|
tGame.setWeek(dto.getWeek());
|
tGame.setStudyId(one.getId());
|
tGame.setCount(game.getCount());
|
tGame.setIntegral(game.getIntegral());
|
tGame.setTime(game.getTime());
|
tGame.setAnswerTime(game.getAnswerTime());
|
tGame.setAnswerIntegral(game.getAnswerIntegral());
|
tGame.setAnswerCount(game.getAnswerCount());
|
gameService.save(tGame);
|
}
|
|
}else if(day == 7){
|
String story = storyListen.getStory();
|
TStoryListen studyId = storyListenService.getOne(new QueryWrapper<TStoryListen>()
|
.eq("studyId", one.getId())
|
.eq("week",week));
|
if (studyId!=null){
|
String sort = storyListen.getSort();
|
String lookStory = storyListen.getLookStory();
|
String lookSort = storyListen.getLookSort();
|
Integer integral = storyListen.getIntegral();
|
Integer lookIntegral = storyListen.getLookIntegral();
|
studyId.setLookIntegral(lookIntegral);
|
studyId.setIntegral(integral);
|
studyId.setWeek(week);
|
studyId.setStory(story);
|
studyId.setSort(sort);
|
studyId.setLookStory(lookStory);
|
studyId.setLookSort(lookSort);
|
studyId.setStudyId(one.getId());
|
storyListenService.updateById(studyId);
|
}else{
|
String sort = storyListen.getSort();
|
String lookStory = storyListen.getLookStory();
|
String lookSort = storyListen.getLookSort();
|
Integer integral = storyListen.getIntegral();
|
Integer lookIntegral = storyListen.getLookIntegral();
|
TStoryListen tStoryListen = new TStoryListen();
|
tStoryListen.setLookIntegral(lookIntegral);
|
tStoryListen.setIntegral(integral);
|
tStoryListen.setWeek(week);
|
tStoryListen.setStory(story);
|
tStoryListen.setSort(sort);
|
tStoryListen.setLookStory(lookStory);
|
tStoryListen.setLookSort(lookSort);
|
tStoryListen.setStudyId(one.getId());
|
storyListenService.save(tStoryListen);
|
}
|
}else{
|
// 删除原有数据
|
studyListenService.remove(new QueryWrapper<TStudyListen>()
|
.eq("studyId", one.getId())
|
.eq("week",week)
|
.eq("day",day));
|
List<StudyListenDTO> studyListen = dto.getStudyListen();
|
for (StudyListenDTO studyListenDTO : studyListen) {
|
TStudyListen tStudyListen = new TStudyListen();
|
tStudyListen.setStudyId(one.getId());
|
tStudyListen.setDay(day);
|
tStudyListen.setSubject(studyListenDTO.getSubject());
|
tStudyListen.setIntegral(studyListenDTO.getIntegral());
|
tStudyListen.setWeek(week);
|
tStudyListen.setIsVip(studyListenDTO.getIsVip());
|
studyListenService.save(tStudyListen);
|
}
|
studyLookService.remove(new QueryWrapper<TStudyLook>()
|
.eq("studyId", one.getId())
|
.eq("week",week)
|
.eq("day",day));
|
List<StudyLookDTO> studyLook = dto.getStudyLook();
|
for (StudyLookDTO studyLookDTO : studyLook) {
|
TStudyLook tStudyLook = new TStudyLook();
|
tStudyLook.setStudyId(one.getId());
|
tStudyLook.setDay(day);
|
tStudyLook.setSubject(studyLookDTO.getSubject());
|
tStudyLook.setIntegral(studyLookDTO.getIntegral());
|
tStudyLook.setWeek(week);
|
tStudyLook.setIsVip(studyLookDTO.getIsVip());
|
studyLookService.save(tStudyLook);
|
}
|
studyInductionService.remove(new QueryWrapper<TStudyInduction>()
|
.eq("studyId", one.getId())
|
.eq("week",week)
|
.eq("day",day));
|
List<StudyInductionDTO> studyInduction = dto.getStudyInduction();
|
for (StudyInductionDTO studyInductionDTO : studyInduction) {
|
TStudyInduction tStudyInduction = new TStudyInduction();
|
tStudyInduction.setStudyId(one.getId());
|
tStudyInduction.setDay(day);
|
tStudyInduction.setSubject(studyInductionDTO.getSubject());
|
tStudyInduction.setIntegral(studyInductionDTO.getIntegral());
|
tStudyInduction.setWeek(week);
|
tStudyInduction.setIsVip(studyInductionDTO.getIsVip());
|
}
|
studyAnswerService.remove(new QueryWrapper<TStudyAnswer>()
|
.eq("studyId", one.getId())
|
.eq("week",week)
|
.eq("day",day));
|
List<StudyAnswerDTO> studyAnswer = dto.getStudyAnswer();
|
for (StudyAnswerDTO studyAnswerDTO : studyAnswer) {
|
TStudyAnswer tStudyAnswer = new TStudyAnswer();
|
tStudyAnswer.setStudyId(one.getId());
|
tStudyAnswer.setDay(day);
|
tStudyAnswer.setIsAnswer(studyAnswerDTO.getIsAnswer());
|
tStudyAnswer.setSubject(studyAnswerDTO.getSubject());
|
tStudyAnswer.setAnswerSubject(studyAnswerDTO.getAnswerSubject());
|
tStudyAnswer.setIntegral(studyAnswerDTO.getIntegral());
|
tStudyAnswer.setWeek(week);
|
tStudyAnswer.setIsVip(studyAnswerDTO.getIsVip());
|
studyAnswerService.save(tStudyAnswer);
|
}
|
studyPairService.remove(new QueryWrapper<TStudyPair>()
|
.eq("studyId", one.getId())
|
.eq("week",week)
|
.eq("day",day));
|
List<StudyPairDTO> studyPair = dto.getStudyPair();
|
for (StudyPairDTO studyPairDTO : studyPair) {
|
TStudyPair tStudyPair = new TStudyPair();
|
tStudyPair.setStudyId(one.getId());
|
tStudyPair.setDay(day);
|
tStudyPair.setSubject(studyPairDTO.getSubject());
|
tStudyPair.setIntegral(studyPairDTO.getIntegral());
|
tStudyPair.setWeek(week);
|
tStudyPair.setIsVip(studyPairDTO.getIsVip());
|
studyPairService.save(tStudyPair);
|
}
|
}
|
return R.ok();
|
}
|
|
/**
|
* 添加周目
|
* @param dto
|
* @return
|
*/
|
@PostMapping("/addWeek")
|
public R<Object> addWeek(@RequestBody AddWeekDTO dto) {
|
TStudy tStudy = new TStudy();
|
tStudy.setType(dto.getType());
|
tStudy.setWeek(dto.getWeek());
|
tStudy.setTitle(dto.getTitle());
|
tStudy.setQuarter(dto.getQuarter());
|
studyService.save(tStudy);
|
return R.ok();
|
}
|
/**
|
* 学习类型列表查询
|
* @return
|
*/
|
@PostMapping("/getStudyList")
|
public R<List<StudyListVO>> getStudyList() {
|
List<StudyListVO> res = new ArrayList<>();
|
StudyListVO studyListVO = new StudyListVO();
|
List<TStudy> count = studyService.list(new QueryWrapper<TStudy>()
|
.eq("type", 1));
|
studyListVO.setWeeks(count.size());
|
|
// todo 补充开始学习人数
|
studyListVO.setCount(0);
|
studyListVO.setName("听");
|
// 查询听类型有多少周目
|
res.add(studyListVO);
|
// 后续类型 不在1.0功能中
|
StudyListVO studyListVO1 = new StudyListVO();
|
studyListVO1.setWeeks(0);
|
studyListVO1.setCount(0);
|
studyListVO1.setName("说");
|
res.add(studyListVO1);
|
StudyListVO studyListVO2 = new StudyListVO();
|
studyListVO2.setWeeks(0);
|
studyListVO2.setCount(0);
|
studyListVO2.setName("认读");
|
res.add(studyListVO2);
|
StudyListVO studyListVO3 = new StudyListVO();
|
studyListVO3.setWeeks(0);
|
studyListVO3.setCount(0);
|
studyListVO3.setName("阅读");
|
res.add(studyListVO3);
|
StudyListVO studyListVO4 = new StudyListVO();
|
studyListVO4.setWeeks(0);
|
studyListVO4.setCount(0);
|
studyListVO4.setName("练习");
|
res.add(studyListVO4);
|
StudyListVO studyListVO5 = new StudyListVO();
|
studyListVO5.setWeeks(0);
|
studyListVO5.setCount(0);
|
studyListVO5.setName("智能互动问答");
|
res.add(studyListVO5);
|
StudyListVO studyListVO6 = new StudyListVO();
|
studyListVO6.setWeeks(0);
|
studyListVO6.setCount(0);
|
studyListVO6.setName("智能识别");
|
res.add(studyListVO6);
|
return R.ok(res);
|
}
|
/**
|
* 通过类型、周目、day查询学习配置
|
* @return
|
*/
|
@PostMapping("/getStudySet")
|
public R<StudyVO> getStudySet(@RequestBody StudyDTO dto) {
|
StudyVO res = new StudyVO();
|
// todo 开始学习人数后续补充
|
res.setCount(0);
|
int type = studyService.list(new QueryWrapper<TStudy>()
|
.eq("type", dto.getType())).size();
|
res.setWeeks(type);
|
List<StudyListenVO> listenVOS = new ArrayList<>();
|
List<GameVO> gameVOS = new ArrayList<>();
|
List<StoryVO> storyVOS = new ArrayList<>();
|
List<StudyAnswerVO> answerVOS = new ArrayList<>();
|
List<StudyInductionVO> inductionVOS = new ArrayList<>();
|
List<StudyLookVO> lookVOS = new ArrayList<>();
|
List<StudyPairVO> pairVOS = new ArrayList<>();
|
// Integer type = dto.getType();
|
Integer week = dto.getWeek();
|
Integer day = dto.getDay();
|
// 根据类型 周目 day 查询对应数据
|
// 听音选图
|
List<TStudyListen> list = studyListenService.list(new QueryWrapper<TStudyListen>()
|
.eq("week", week)
|
.eq("day", day));
|
for (TStudyListen tStudyListen : list) {
|
StringBuilder temp = new StringBuilder();
|
StudyListenVO studyListenVO = new StudyListenVO();
|
for (String s : tStudyListen.getSubject().split(",")) {
|
TSubject byId = subjectService.getById(s);
|
temp.append(byId.getName()).append(",");
|
}
|
String string = temp.toString();
|
studyListenVO.setName(string.substring(0, string.length() - 1));
|
studyListenVO.setIntegral(tStudyListen.getIntegral());
|
listenVOS.add(studyListenVO);
|
}
|
// 看音选图
|
List<TStudyLook> list1 = studyLookService.list(new QueryWrapper<TStudyLook>()
|
.eq("week", week)
|
.eq("day", day)
|
);
|
for (TStudyLook tStudyLook : list1) {
|
int index = 0;
|
StringBuilder names = new StringBuilder();
|
StringBuilder sorts = new StringBuilder();
|
StudyLookVO studyLookVO1 = new StudyLookVO();
|
for (String s : tStudyLook.getSubject().split(",")) {
|
TSubject byId = subjectService.getById(s);
|
names.append(byId.getName()).append(",");
|
String[] split = tStudyLook.getSort().split(",");
|
String s1 = split[index];
|
sorts.append(s1).append(",");
|
index++;
|
}
|
String string = names.toString();
|
String string1 = sorts.toString();
|
studyLookVO1.setName(string.substring(0, string.length() - 1));
|
studyLookVO1.setSort(string1.substring(0, string1.length() - 1));
|
studyLookVO1.setIntegral(tStudyLook.getIntegral());
|
lookVOS.add(studyLookVO1);
|
}
|
// 归纳排除
|
List<TStudyInduction> list2 = studyInductionService.list(new QueryWrapper<TStudyInduction>()
|
.eq("week", week)
|
.eq("day", day)
|
);
|
for (TStudyInduction tStudyInduction : list2) {
|
StringBuilder names = new StringBuilder();
|
StudyInductionVO studyInductionVO = new StudyInductionVO();
|
for (String s : tStudyInduction.getSubject().split(",")) {
|
String replace = s.replace("-", "");
|
if (s.contains("-")){
|
TSubject byId = subjectService.getById(replace);
|
names.append("-").append(byId.getName()).append(",");
|
}else{
|
TSubject byId = subjectService.getById(s);
|
names.append(byId.getName()).append(",");
|
}
|
}
|
String string = names.toString();
|
studyInductionVO.setName(string.substring(0, string.length() - 1));
|
studyInductionVO.setIntegral(tStudyInduction.getIntegral());
|
inductionVOS.add(studyInductionVO);
|
}
|
// 有问有答
|
List<TStudyAnswer> list3 = studyAnswerService.list(new QueryWrapper<TStudyAnswer>()
|
.eq("week", week)
|
.eq("day", day));
|
for (TStudyAnswer tStudyAnswer : list3) {
|
StringBuilder names = new StringBuilder();
|
StudyAnswerVO studyAnswerVO = new StudyAnswerVO();
|
if (tStudyAnswer.getIsAnswer() == 1){
|
TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
|
names.append("-").append(byId.getName()).append(",");
|
TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
|
names.append("-").append(byId1.getName()).append(",");
|
}else{
|
TSubject byId = subjectService.getById(tStudyAnswer.getSubject());
|
names.append(byId.getName()).append(",");
|
TSubject byId1 = subjectService.getById(tStudyAnswer.getAnswerSubject());
|
names.append("-").append(byId1.getName()).append(",");
|
}
|
String string = names.toString();
|
studyAnswerVO.setName(string.substring(0, string.length() - 1));
|
studyAnswerVO.setIntegral(tStudyAnswer.getIntegral());
|
answerVOS.add(studyAnswerVO);
|
}
|
// 音图相配
|
List<TStudyPair> list4 = studyPairService.list(new QueryWrapper<TStudyPair>()
|
.eq("week", week)
|
.eq("day", day)
|
);
|
for (TStudyPair tStudyPair : list4) {
|
StringBuilder names = new StringBuilder();
|
StudyPairVO studyPairVO = new StudyPairVO();
|
for (String s : tStudyPair.getSubject().split(",")) {
|
TSubject byId = subjectService.getById(s);
|
names.append(byId.getName()).append(",");
|
}
|
String string = names.toString();
|
studyPairVO.setName(string.substring(0, string.length() - 1));
|
studyPairVO.setIntegral(tStudyPair.getIntegral());
|
pairVOS.add(studyPairVO);
|
}
|
List<TGame> list5 = gameService.list(new QueryWrapper<TGame>()
|
.eq("week", week));
|
for (TGame tGame : list5) {
|
GameVO gameVO = new GameVO();
|
gameVO.setIntegral(tGame.getIntegral());
|
gameVO.setTime(tGame.getTime());
|
gameVO.setCount(tGame.getCount());
|
gameVO.setAnswerTime(tGame.getAnswerTime());
|
gameVO.setAnswerIntegral(tGame.getAnswerIntegral());
|
gameVO.setAnswerCount(tGame.getAnswerCount());
|
gameVOS.add(gameVO);
|
}
|
List<TStoryListen> list6 = storyListenService.list(new QueryWrapper<TStoryListen>()
|
.eq("week", week));
|
for (TStoryListen tStory : list6) {
|
StoryVO storyVO = new StoryVO();
|
StringBuilder names = new StringBuilder();
|
StringBuilder names1 = new StringBuilder();
|
StringBuilder sort = new StringBuilder();
|
StringBuilder sort1 = new StringBuilder();
|
for (String s : tStory.getStory().split(",")) {
|
TStory byId = storyService.getById(s);
|
names.append(byId.getName()).append(",");
|
}
|
for (String s : tStory.getLookStory().split(",")) {
|
TStory byId = storyService.getById(s);
|
names1.append(byId.getName()).append(",");
|
}
|
for (String s : tStory.getSort().split(",")) {
|
sort.append(s).append(",");
|
}
|
for (String s : tStory.getLookSort().split(",")) {
|
sort1.append(s).append(",");
|
}
|
storyVO.setName(names.substring(0, names.length() - 1));
|
storyVO.setSort(sort.substring(0, sort.length() - 1));
|
storyVO.setIntegral(tStory.getIntegral());
|
storyVO.setLookName(names1.substring(0, names.length() - 1));
|
storyVO.setLookSort(sort1.substring(0, sort.length() - 1));
|
storyVO.setLookIntegral(tStory.getLookIntegral());
|
storyVOS.add(storyVO);
|
}
|
int temp = 0;
|
if (!list.isEmpty()){
|
temp = list.get(0).getStudyId();
|
}
|
if (!list1.isEmpty()){
|
temp = list1.get(0).getStudyId();
|
}
|
if (!list2.isEmpty()){
|
temp = list2.get(0).getStudyId();
|
}
|
if (!list3.isEmpty()){
|
temp = list3.get(0).getStudyId();
|
}
|
if (!list4.isEmpty()){
|
temp = list4.get(0).getStudyId();
|
}
|
if (!list5.isEmpty()){
|
temp = list5.get(0).getStudyId();
|
}
|
if (!list6.isEmpty()){
|
temp = list6.get(0).getStudyId();
|
}
|
if (temp == 0){
|
res.setTitle("");
|
}else{
|
res.setTitle(studyService.getById(temp).getTitle());
|
}
|
res.setAnswer(answerVOS);
|
res.setPair(pairVOS);
|
res.setListen(listenVOS);
|
res.setLook(lookVOS);
|
res.setInduction(inductionVOS);
|
res.setGame(gameVOS);
|
res.setStory(storyVOS);
|
return R.ok(res);
|
}
|
}
|