package com.peanut.modules.master.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.R; import com.peanut.modules.common.entity.CourseEntity; import com.peanut.modules.common.entity.CourseTaihumed; import com.peanut.modules.common.entity.CourseToTaihumed; import com.peanut.modules.common.service.CourseTaihumedService; import com.peanut.modules.common.service.CourseToTaihumedService; import com.peanut.modules.common.to.ParamTo; import com.peanut.modules.master.service.CourseService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Map; import java.util.stream.Collectors; //课程医学标签管理 @Slf4j @RestController("masterCourseTaihumed") @RequestMapping("master/courseTaihumed") public class CourseTaihumedController { @Autowired private CourseTaihumedService courseTaihumedService; @Autowired private CourseToTaihumedService courseToTaihumedService; @Autowired private CourseService courseService; //课程标签列表 @RequestMapping("/getCourseTaihumedList") public R getCourseTaihumedList(){ List courseTaihumedList = courseTaihumeds(0); return R.ok().put("courseTaihumedList", courseTaihumedList); } @RequestMapping("/addCourseTaihumed") public R addCourseTaihumed(@RequestBody CourseTaihumed courseTaihumed){ courseTaihumedService.save(courseTaihumed); return R.ok().put("courseTaihumed", courseTaihumed); } @RequestMapping("/delCourseTaihumed") public R delCourseTaihumed(@RequestBody Map params){ //查看下一级是否存在 int count = courseTaihumedService.count(new LambdaQueryWrapper() .eq(CourseTaihumed::getPid, params.get("id"))); if(count>0){ return R.error(501,"删除失败,请先删除子项目后再尝试"); } //查看绑定关系是否存在 List toTaihumeds = courseToTaihumedService.list(new LambdaQueryWrapper() .eq(CourseToTaihumed::getTaihumedId, params.get("id"))); for (CourseToTaihumed toTaihumed:toTaihumeds){ CourseEntity c = courseService.getById(toTaihumed.getCourseId()); if (c!=null){ return R.error(502,"删除失败,请先解绑课程与医学标签的绑定关系"); }else { courseToTaihumedService.removeById(toTaihumed.getId()); } } courseTaihumedService.removeById(params.get("id").toString()); return R.ok(); } @RequestMapping("/editCourseTaihumed") public R editCourseTaihumed(@RequestBody CourseTaihumed courseTaihumed){ CourseTaihumed old = courseTaihumedService.getById(courseTaihumed.getId()); if(old.getIsLast()==0&& courseTaihumed.getIsLast()==1){ CourseTaihumed one = courseTaihumedService.getOne(new LambdaQueryWrapper() .eq(CourseTaihumed::getPid, courseTaihumed.getId())); if(one!=null){ return R.error(501,"更新失败,请先清空此项的下级标签,才能将此标签变成终极标签"); } } if(old.getIsLast()==1&& courseTaihumed.getIsLast()==0){ Integer integer = courseToTaihumedService.count(new LambdaQueryWrapper() .eq(CourseToTaihumed::getTaihumedId, courseTaihumed.getId())); if(integer>0){ return R.error(502,"更新失败,请先把此项与课程的关联关系清空后才可把此标签变成普通标签"); } } courseTaihumedService.updateById(courseTaihumed); return R.ok().put("courseTaihumed", courseTaihumed); } @RequestMapping("/getCourseListForTaihumed") public R getCourseListForMedical(@RequestBody Map params){ MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(CourseEntity.class); wrapper.selectAs(CourseToTaihumed::getId,"bindId"); wrapper.selectAs(CourseToTaihumed::getSort,"toSociologySort"); wrapper.selectAs(CourseToTaihumed::getLevel,"level"); wrapper.selectAs(CourseToTaihumed::getSelective,"selective"); wrapper.leftJoin(CourseEntity.class,CourseEntity::getId, CourseToTaihumed::getCourseId); wrapper.eq(CourseToTaihumed::getTaihumedId,params.get("taihumedId")); wrapper.orderByAsc(CourseToTaihumed::getSort); List courseEntities = courseToTaihumedService.listObjs(wrapper); return R.ok().put("courseList",courseEntities); } @RequestMapping("/getCourseListCanTaihumed") public R getCourseListCanTaihumed(@RequestBody ParamTo param){ List collect = courseToTaihumedService.list(new LambdaQueryWrapper() .eq(CourseToTaihumed::getTaihumedId, param.getId())) .stream().map(CourseToTaihumed::getCourseId).collect(Collectors.toList()); LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); if (collect.size() != 0){ wrapper.notIn(CourseEntity::getId,collect); } wrapper.like(StringUtils.isNotBlank(param.getKeywords()),CourseEntity::getTitle,param.getKeywords()); Page page = courseService.page(new Page<>(param.getPage(), param.getLimit()), wrapper); return R.ok().put("page",page); } @RequestMapping("/bindCourseAndTaihumed") public R bindCourseAndTaihumed(@RequestBody CourseToTaihumed courseToTaihumed){ //去重 CourseToTaihumed one = courseToTaihumedService.getOne(new LambdaQueryWrapper() .eq(CourseToTaihumed::getCourseId, courseToTaihumed.getCourseId()) .eq(CourseToTaihumed::getTaihumedId, courseToTaihumed.getTaihumedId())); if(one != null){ return R.error(501,"绑定失败,绑定关系已将存在"); } courseToTaihumedService.save(courseToTaihumed); return R.ok(); } @RequestMapping("/unbindCourseAndTaihumed") public R unbindCourseAndTaihumed(@RequestBody CourseToTaihumed courseToTaihumed){ boolean b = courseToTaihumedService.removeById(courseToTaihumed.getId()); if(b){ return R.ok(); }else { return R.error("error"); } } @RequestMapping("/updateCourseToTaihumedSort") public R updateCourseToTaihumedSort(@RequestBody CourseToTaihumed courseToTaihumed){ courseToTaihumedService.updateById(courseToTaihumed); return R.ok(); } private List courseTaihumeds(int id){ List list = courseTaihumedService.list(new LambdaQueryWrapper().eq(CourseTaihumed::getPid, id)); for (CourseTaihumed c : list){ if(c.getIsLast()!=1){ List so = this.courseTaihumeds(c.getId()); c.setChildren(so); } } return list; } }