| package com.ruoyi.study.controller; | 
|   | 
|   | 
| 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.StoryDTO; | 
| import com.ruoyi.study.dto.SubjectQuery; | 
| import com.ruoyi.study.service.*; | 
| import com.ruoyi.study.vo.SubjectVO; | 
| import io.swagger.annotations.ApiImplicitParam; | 
| import io.swagger.annotations.ApiImplicitParams; | 
| import io.swagger.annotations.ApiOperation; | 
| import org.springframework.beans.BeanUtils; | 
| 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; | 
| import java.util.Map; | 
| import java.util.stream.Collectors; | 
|   | 
| /** | 
|  * <p> | 
|  * 故事管理 前端控制器 | 
|  * </p> | 
|  * | 
|  * @author 无关风月 | 
|  * @since 2024-04-26 | 
|  */ | 
| @RestController | 
| @RequestMapping("/base/tStory") | 
| public class TStoryController { | 
|     @Autowired | 
|     private ITStoryListenService storyListenService; | 
|     @Autowired | 
|     private ITStoryService service; | 
|   | 
|     @Autowired | 
|     private ICategoryService categoryService; | 
|     @PostMapping("/storyList") | 
|     public R<PageInfo<SubjectVO>> storyList(@RequestBody SubjectQuery query) { | 
|         PageInfo<SubjectVO> res = new PageInfo<>(query.getPageNumber(), query.getPageSize()); | 
|         List<Integer> integers = new ArrayList<>(); | 
|         if (StringUtils.hasLength(query.getCategoryName())){ | 
|             List<Integer> collect = categoryService.lambdaQuery() | 
|                     .eq(TCategory::getType, 2) | 
|                     .eq(TCategory::getState, 2) | 
|                     .like(TCategory::getName, query.getCategoryName()) | 
|                     .list().stream().map(TCategory::getParentId).collect(Collectors.toList()); | 
|             integers.addAll(collect); | 
|             List<Integer> collect2 = categoryService.lambdaQuery() | 
|                     .eq(TCategory::getType, 1) | 
|                     .eq(TCategory::getState, 2) | 
|                     .like(TCategory::getName, query.getCategoryName()) | 
|                     .list().stream().map(TCategory::getId).collect(Collectors.toList()); | 
|             integers.addAll(collect2); | 
|         } | 
|         if (StringUtils.hasLength(query.getCategoryName())){ | 
|             if (integers.isEmpty()){ | 
|                 integers.add(-1); | 
|             } | 
|         } | 
|   | 
|         query.setIds(integers); | 
|         List<SubjectVO> list =  service.listAll(query,res); | 
|         Map<Integer, String> categoryMap = categoryService.list(null).stream() | 
|                 .collect(Collectors.toMap(TCategory::getId, TCategory::getName)); | 
|         for (SubjectVO subjectVO : list) { | 
|             if (subjectVO.getFirstCategory()!=null&&subjectVO.getSecondCategory()!=null){ | 
|                 String byId1 = categoryMap.get(subjectVO.getFirstCategory()); | 
|                 String byId2 = categoryMap.get(subjectVO.getSecondCategory()); | 
|                 if (byId1!=null&& byId2!=null){ | 
|                     subjectVO.setCategoryName(byId1+"-"+byId2); | 
|                 } | 
|             } | 
| //            StringBuilder stringBuilder = new StringBuilder(""); | 
| //            for (String s : subjectVO.getType().split(",")) { | 
| //                switch (s) { | 
| //                    case "1": | 
| //                        stringBuilder.append("自主故事一、"); | 
| //                        break; | 
| //                    case "2": | 
| //                        stringBuilder.append("自主故事二、"); | 
| //                        break; | 
| //                } | 
| //            } | 
| //            String string = stringBuilder.toString(); | 
| //            String substring = string.substring(0, string.length() - 1); | 
| //            subjectVO.setType(substring); | 
|         } | 
|         res.setRecords(list); | 
|         return R.ok(res); | 
|     } | 
|     @PostMapping("/add") | 
| //    @ApiOperation(value = "添加", tags = {"故事管理"}) | 
|     public R add(@RequestBody StoryDTO dto) { | 
|         TStory tSubject = new TStory(); | 
|         BeanUtils.copyProperties(dto,tSubject); | 
|         service.save(tSubject); | 
|         return R.ok("添加成功"); | 
|     } | 
|     @PostMapping("/update") | 
| //    @ApiOperation(value = "编辑", tags = {"故事管理"}) | 
|     public R update(@RequestBody StoryDTO dto) { | 
|         TStory tSubject = new TStory(); | 
| //        R<Object> week = getObjectR(dto.getId()); | 
| //        if (week != null) return week; | 
|         BeanUtils.copyProperties(dto,tSubject); | 
|         service.updateById(tSubject); | 
|         return R.ok("编辑成功"); | 
|     } | 
|     @PostMapping("/getInfo") | 
| //    @ApiOperation(value = "查看详情", tags = {"故事管理"}) | 
|     public R<StoryDTO> getInfo1(@RequestParam("id") Integer id) { | 
|         TStory byId = service.getById(id); | 
|         StoryDTO subjectDTO = new StoryDTO(); | 
|         BeanUtils.copyProperties(byId,subjectDTO); | 
|         return R.ok(subjectDTO); | 
|     } | 
|     @PostMapping("/updateState/{id}/{state}") | 
| //    @ApiOperation(value = "修改状态", tags = {"故事管理"}) | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "id", value = "题目id", required = true), | 
|             @ApiImplicitParam(name = "state", value = "1上架2下架3删除", required = true), | 
|     }) | 
|     public R updateState1(@PathVariable("id") Integer id,@PathVariable("state")Integer state) { | 
|         if (state == 2){ | 
|             R<Object> week = getObjectR(id); | 
|             if (week != null) return week; | 
|             // 判断当前故事有没有被使用 | 
|         } | 
|         if (state == 3){ | 
|             R<Object> week = getObjectR(id); | 
|             if (week != null) return week; | 
|             // 判断当前故事有没有被使用 | 
|         } | 
|         TStory byId = service.getById(id); | 
|         byId.setState(state); | 
|         service.updateById(byId); | 
|         if (state == 3){ | 
|             service.removeById(byId); | 
|         } | 
|         return R.ok("成功"); | 
|     } | 
|     private R<Object> getObjectR(Integer id) { | 
|         List<TStoryListen> list = storyListenService.list(); | 
|         if (!list.isEmpty()) { | 
|             for (TStoryListen tStudyListen : list) { | 
|                 String[] split = tStudyListen.getStory().split(","); | 
|                 String[] split1 = tStudyListen.getLookStory().split(","); | 
|                 for (String s : split) { | 
|                     if (s.equals(String.valueOf(id))) { | 
|                         Integer week = tStudyListen.getWeek(); | 
|                         return R.failUpdate("操作失败,当前题目在" + "周目" + week + "、" + "听故事"  + "、" + "框架记忆中使用"); | 
|                     } | 
|                 } | 
|                 for (String s : split1) { | 
|                     if (s.equals(String.valueOf(id))) { | 
|                         Integer week = tStudyListen.getWeek(); | 
|                         return R.failUpdate("操作失败,当前题目在" + "周目" + week + "、" + "听故事"  + "、" + "看图配音中使用"); | 
|                     } | 
|                 } | 
|             } | 
|         } | 
|         return null; | 
|     } | 
| } |