From 47cd9ecc0eff38ffe6b3b794b2bf197e958f4403 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 14 五月 2025 15:50:57 +0800 Subject: [PATCH] bug:学员有状态不能修改问题 --- src/main/java/com/mindskip/xzs/controller/admin/EducationController.java | 174 +++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 143 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java b/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java index d44d44b..3ecde91 100644 --- a/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java +++ b/src/main/java/com/mindskip/xzs/controller/admin/EducationController.java @@ -1,40 +1,51 @@ package com.mindskip.xzs.controller.admin; +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; import com.mindskip.xzs.base.BaseApiController; import com.mindskip.xzs.base.RestResponse; import com.mindskip.xzs.domain.ExamPaperSubject; import com.mindskip.xzs.domain.Subject; +import com.mindskip.xzs.domain.form.AddSubjectForm; +import com.mindskip.xzs.domain.form.EditSubjectForm; +import com.mindskip.xzs.domain.vo.CascaderDataVO; +import com.mindskip.xzs.domain.vo.DeptSubjectCascaderVO; +import com.mindskip.xzs.domain.vo.SubjectDeptVO; +import com.mindskip.xzs.repository.DepartmentMapper; +import com.mindskip.xzs.repository.SubjectDeptMapper; +import com.mindskip.xzs.repository.SubjectMapper; import com.mindskip.xzs.service.*; -import com.mindskip.xzs.utility.PageInfoHelper; import com.mindskip.xzs.viewmodel.admin.education.SubjectEditRequestVM; import com.mindskip.xzs.viewmodel.admin.education.SubjectPageRequestVM; -import com.mindskip.xzs.viewmodel.admin.education.SubjectResponseVM; -import com.github.pagehelper.PageInfo; -import org.springframework.beans.factory.annotation.Autowired; +import com.mindskip.xzs.vo.SubjectVO; +import lombok.RequiredArgsConstructor; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; @RestController("AdminEducationController") @RequestMapping(value = "/api/admin/education") +@RequiredArgsConstructor public class EducationController extends BaseApiController { private final SubjectService subjectService; + private final SubjectMapper subjectMapper; + private final SubjectDeptMapper subjectDeptMapper; private final QuestionSubjectService questionSubjectService; private final ExamPaperSubjectService examPaperSubjectService; private final ExamPaperDepartmentService examPaperDepartmentService; private final ExamPaperService examPaperService; + private final DepartmentService departmentService; + private final DepartmentMapper departmentMapper; - @Autowired - public EducationController(SubjectService subjectService, QuestionSubjectService questionSubjectService, ExamPaperSubjectService examPaperSubjectService, ExamPaperDepartmentService examPaperDepartmentService, ExamPaperService examPaperService) { - this.subjectService = subjectService; - this.questionSubjectService = questionSubjectService; - this.examPaperSubjectService = examPaperSubjectService; - this.examPaperDepartmentService = examPaperDepartmentService; - this.examPaperService = examPaperService; - } @RequestMapping(value = "/subject/list", method = RequestMethod.POST) public RestResponse<List<Subject>> list() { @@ -42,42 +53,143 @@ return RestResponse.ok(subjects); } - @RequestMapping(value = "/subject/page", method = RequestMethod.POST) - public RestResponse<PageInfo<SubjectResponseVM>> pageList(@RequestBody SubjectPageRequestVM model) { - PageInfo<Subject> pageInfo = subjectService.page(model); - PageInfo<SubjectResponseVM> page = PageInfoHelper.copyMap(pageInfo, e -> modelMapper.map(e, SubjectResponseVM.class)); - return RestResponse.ok(page); + @PostMapping("/subject/add") + public RestResponse<Object> add(@RequestBody @Validated AddSubjectForm form) { + return subjectService.add(form); } - @RequestMapping(value = "/subject/edit", method = RequestMethod.POST) - public RestResponse edit(@RequestBody @Valid SubjectEditRequestVM model) { - Subject subject = modelMapper.map(model, Subject.class); - if (model.getId() == null) { - subject.setDeleted(false); - subjectService.insertByFilter(subject); - } else { - subjectService.updateByIdFilter(subject); + @PostMapping("/subject/save") + public RestResponse<Object> save(@RequestBody @Validated Subject form) { + + form.setDeleted(Boolean.FALSE); + try { + subjectMapper.insert(form); + } catch (Exception e) { + return RestResponse.fail(500, "璇剧洰鍚嶄笉鑳介噸澶�"); } return RestResponse.ok(); } + + @PostMapping("/subject/edit") + public RestResponse<Object> edit(@RequestBody @Validated EditSubjectForm form) { + subjectService.edit(form); + return RestResponse.ok(); + } + + @PostMapping("/subject/edit1") + @Transactional(rollbackFor = Exception.class) + public RestResponse<Object> edit1(@RequestBody Subject form) { + form.setDeleted(Boolean.FALSE); + + try { + subjectService.updateById(form); + } catch (Exception e) { + return RestResponse.fail(500, "璇剧洰鍚嶄笉鑳介噸澶�"); + } + return RestResponse.ok(); + } + + @RequestMapping(value = "/subject/select/dept/{deptId}", method = RequestMethod.GET) + public RestResponse<List<Subject>> listByDeptId(@PathVariable("deptId") Integer deptId) { + List<Subject> subjects = subjectService.listByDeptId(deptId); + return RestResponse.ok(subjects); + } + + @RequestMapping(value = "/subject/page1", method = RequestMethod.POST) + public RestResponse<Object> page(@RequestBody SubjectPageRequestVM model) { + + PageInfo<SubjectVO> page = PageHelper.startPage(model.getPageIndex(), model.getPageSize(), "id desc").doSelectPageInfo(() -> + departmentMapper.page1(model)); + return RestResponse.ok(page); + } + + @RequestMapping(value = "/subject/page", method = RequestMethod.POST) + public RestResponse<Object> pageList(@RequestBody SubjectPageRequestVM model) { + List<CascaderDataVO> deptList = departmentMapper.list(); + List<DeptSubjectCascaderVO> data = deptList.stream().map(dept -> { + DeptSubjectCascaderVO deptCascaderVO = new DeptSubjectCascaderVO(); + deptCascaderVO.setId(dept.getValue()); + deptCascaderVO.setName(dept.getLabel()); + deptCascaderVO.setParentId(dept.getParentId()); + List<SubjectVO> subjectDeptVOS = subjectDeptMapper.getByDeptId(dept.getValue()); + List<Long> subjectIds = subjectDeptVOS.stream().map(SubjectVO::getId).collect(Collectors.toList()); + deptCascaderVO.setSubjectIds(subjectIds); + String subjectNames = subjectDeptVOS.stream().map(SubjectVO::getSubjectName).collect(Collectors.joining(",")); + deptCascaderVO.setSubjectNames(subjectNames); + return deptCascaderVO; + }).collect(Collectors.toList()); + // 鏋勫缓鏍� + return RestResponse.ok(this.buildTree(data)); + } + + public List<DeptSubjectCascaderVO> buildTree(List<DeptSubjectCascaderVO> departments) { + // 鐢ㄤ簬瀛樺偍宸茬粡鏀惧叆鏍戠殑鑺傜偣锛屼互value涓洪敭 + Map<Integer, DeptSubjectCascaderVO> map = new HashMap<>(); + List<DeptSubjectCascaderVO> rootNodes = new ArrayList<>(); + + // 绗竴姝ワ細灏嗘墍鏈夎妭鐐规斁鍏ap涓紝骞跺垵濮嬪寲children鍒楄〃 + for (DeptSubjectCascaderVO dept : departments) { + map.put(dept.getId(), dept); + dept.setChildren(new ArrayList<>()); + } + // 绗簩姝ワ細鏋勫缓鏍戝舰缁撴瀯 + for (DeptSubjectCascaderVO dept : departments) { + if (dept.getParentId() == null) { // 鍋囪椤剁骇閮ㄩ棬鐨刾arentId涓簄ull鎴�0 + rootNodes.add(dept); + } else { + DeptSubjectCascaderVO parent = map.get(dept.getParentId()); + if (parent != null) { + parent.getChildren().add(dept); + } + } + } + return rootNodes; + } + +// @Transactional(rollbackFor = Exception.class) +// @RequestMapping(value = "/subject/edit", method = RequestMethod.POST) +// public RestResponse edit(@RequestBody @Valid SubjectEditRequestVM model) { +// Subject subject = modelMapper.map(model, Subject.class); +// if (model.getId() == null) { +// subject.setDeleted(false); +// subjectService.insertByFilter(subject); +// } else { +// subjectService.updateByIdFilter(subject); +// } +// // 澶勭悊閮ㄩ棬 +// subjectDeptMapper.removeBySubjectId(subject.getId()); +// List<SubjectDept> subjectDeptList = model.getDeptIds().stream().map(deptId -> { +// SubjectDept subjectDept = new SubjectDept(); +// subjectDept.setSubjectId(subject.getId()); +// subjectDept.setDeptId(deptId); +// return subjectDept; +// }).collect(Collectors.toList()); +// subjectDeptMapper.add(subjectDeptList); +// return RestResponse.ok(); +// } @RequestMapping(value = "/subject/select/{id}", method = RequestMethod.POST) public RestResponse<SubjectEditRequestVM> select(@PathVariable Integer id) { Subject subject = subjectService.selectById(id); SubjectEditRequestVM vm = modelMapper.map(subject, SubjectEditRequestVM.class); + List<SubjectDeptVO> subjectDeptVOS = subjectDeptMapper.deptBySubjectId(id); + List<Integer> deptIds = subjectDeptVOS.stream().map(SubjectDeptVO::getDeptId).collect(Collectors.toList()); + vm.setDeptIds(deptIds); return RestResponse.ok(vm); } + + @Transactional(rollbackFor = Exception.class) @RequestMapping(value = "/subject/delete/{id}", method = RequestMethod.POST) public RestResponse delete(@PathVariable Integer id) { - Subject subject = subjectService.selectById(id); - subject.setDeleted(true); - subjectService.updateByIdFilter(subject); + subjectService.deleteById(id); questionSubjectService.removeSubjectId(id); Integer[] ids = examPaperSubjectService.getBySubjectId(id) .stream().map(ExamPaperSubject::getExamPaperId).toArray(Integer[]::new); - examPaperService.removeByIds(ids); - examPaperDepartmentService.removeByExamPaperIds(ids); + if (ids.length > 0) { + examPaperService.removeByIds(ids); + examPaperDepartmentService.removeByExamPaperIds(ids); + } examPaperSubjectService.removeBySubjectId(id); return RestResponse.ok(); } -- Gitblit v1.8.0