执行删除操作返回没被删除的信息
生活随笔
收集整理的這篇文章主要介紹了
执行删除操作返回没被删除的信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本次業(yè)務實在原來的返回信息基礎上附加一些其他信息(附加信息打包dto(ChoiceDetailsDto))
原ChoiceQstDto
所添加的ChoiceDetailsDto
public class ChoiceDetailsDto {private String id;private String courseId;private String chapterId;private String courseName;private String courseVersion;private String chapterName;...}更改后在保持ChoiceQstDto原來不變的情況下加入
private List<ChoiceDetailsDto> details;Controller
/*** 刪除練習題** @param ids 練習題主鍵* @return*/@DeleteMapping({"/question/choice"})public ResponseEntity findChoiceQuestion(@RequestParam("ids") @NotEmpty(message = "{exercises.id.NotEmpty.message}") List<String> ids) {List<ChoiceQstDto> titleList = service.deleteByIds(ids);if (titleList.isEmpty()) {return ResponseEntity.status(HttpStatus.ACCEPTED).body(Translator.toLocale("system.operator.success.message"));}return ResponseEntity.status(HttpStatus.ALREADY_REPORTED).body(titleList);}Service
/*** 刪除練習題* 刪除練習題時須根據練習題主鍵檢查是否關聯(lián)課程章節(jié),若關聯(lián)不可刪除* @param ids*/@Transactional(rollbackFor = {Exception.class})public List<ChoiceQstDto> deleteByIds(List<String> ids) {// 獲取題目與練習題的關系List<CourseStepQuestion> chapterQstList = chapterQuestionRepository.findByQuestionPidIn(ids);// 若待刪除的練習題都與課程章節(jié)沒有關系,則直接刪除if (chapterQstList.isEmpty()) {repository.deleteInBatch(repository.findAllById(ids));return new ArrayList<>();}// 獲取所有不可刪除的主鍵List<String> entityIdList = chapterQstList.stream().map(CourseStepQuestion::getQuestionPid).distinct().collect(Collectors.toList());ids.removeAll(entityIdList);repository.deleteInBatch(repository.findAllById(ids));Stream<ChoiceDetailsDto> choiceDetailsList = repository.findChoiceDetailsByQuestionIdIn(entityIdList);Map<String, List<ChoiceDetailsDto>> collect = choiceDetailsList.collect(Collectors.groupingBy(ChoiceDetailsDto::getId));List<ChoiceQuestion> choiceQuestionList = repository.findAllById(entityIdList);return choiceQuestionList.stream().map(e -> new ChoiceQstDto(e.getPid(), e.getTitle(), e.getQuestionType(),e.getContent(), e.getAnswer(), e.getOptions(), collect.get(e.getPid()))).collect(Collectors.toList());}Repository
/*** 通過課程章節(jié)查詢相應信息(章節(jié)id、章節(jié)名稱、版本、課包id、課包名稱)* @param questionIdList 課程章節(jié)主鍵* @return*/@Query("SELECT NEW cn.com.coding4fun.admin.web.feature.question.exercises.ChoiceDetailsDto(\n" +" csq.questionPid,\n" +" ci.pid,\n" +" css.pid,\n" +" ci.courseTitle,\n" +" ci.courseVersion,\n" +" css.stepTitle\n" +") \n" +"FROM CourseStepQuestion csq\n" +"INNER JOIN CourseStepSimple css ON csq.chapterPid = css.pid\n" +"INNER JOIN CourseInfo ci ON css.coursePid = ci.pid\n" +"WHERE\n" +"csq.questionPid IN :questionIdList")Stream<ChoiceDetailsDto> findChoiceDetailsByQuestionIdIn(@Param("questionIdList") List<String> questionIdList);還有其他方法,這里只做通過數據庫聯(lián)查操作完成自己的業(yè)務。
總結
以上是生活随笔為你收集整理的执行删除操作返回没被删除的信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: : Content type 'text
- 下一篇: 查询七天之内所有生日的客户