From 8322cb808919ff961539cf0d9946c069df422d49 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 30 Jul 2024 10:49:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=8F=E7=8F=AD=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/controller/ClassController.java | 35 ++++- .../modules/common/entity/ClassEntity.java | 11 ++ .../modules/common/entity/ClassUser.java | 6 +- .../common/service/ClassEntityService.java | 8 + .../service/impl/ClassEntityServiceImpl.java | 148 ++++++++++++++++-- 5 files changed, 192 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/controller/ClassController.java b/src/main/java/com/peanut/modules/common/controller/ClassController.java index 1f0a03b2..ed5af40c 100644 --- a/src/main/java/com/peanut/modules/common/controller/ClassController.java +++ b/src/main/java/com/peanut/modules/common/controller/ClassController.java @@ -22,12 +22,14 @@ public class ClassController { @Autowired private ClassEntityService classEntityService; + //班级模型列表 @RequestMapping("/getClassModelList") public R getClassModelList(@RequestBody Map params){ Page classModelList = classEntityService.getClassModelList(params); return R.ok().put("page",classModelList); } + //新增班级模型 @RequestMapping("/addClassModel") public R addClassModel(@RequestBody ClassModel classModel){ if (classEntityService.addClassModel(classModel)){ @@ -37,36 +39,61 @@ public class ClassController { } } + //修改班级模型 + @RequestMapping("/editClassModel") + public R editClassModel(@RequestBody ClassModel classModel){ + if (classEntityService.editClassModel(classModel)){ + return R.ok(); + }else { + return R.error("已存在小班,不能修改"); + } + } + + //获取主任下的班级模型 @RequestMapping("/getClassModelByUserid") public R getClassModelByUserid(@RequestBody Map params){ List classModelList = classEntityService.getClassModelByUserid(params); return R.ok().put("classModelList",classModelList); } + //获取班级列表 @RequestMapping("/getClassList") public R getClassList(@RequestBody Map params){ Page classList = classEntityService.getClassList(params); return R.ok().put("page",classList); } + //新增班级 @RequestMapping("/addClass") - public R addClass(@RequestBody ClassEntity classEntity){ - if (classEntityService.save(classEntity)){ + public R addClass(@RequestBody Map params){ + if (classEntityService.addClass(params)){ return R.ok(); }else { return R.error("保存出错"); } } + //修改班级 @RequestMapping("/editClass") - public R editClass(@RequestBody ClassEntity classEntity){ - if (classEntityService.updateById(classEntity)){ + public R editClass(@RequestBody Map params){ + if (classEntityService.editClass(params)){ return R.ok(); }else { return R.error("编辑出错"); } } + //设置班委 + @RequestMapping("/setUserRole") + public R setUserRole(@RequestBody Map params){ + if (classEntityService.setUserRole(params)){ + return R.ok(); + }else { + return R.error("设置出错"); + } + } + + //设删除班级 @RequestMapping("/delClass") public R delClass(@RequestBody Map params){ if (classEntityService.removeById((Integer)params.get("classId"))){ diff --git a/src/main/java/com/peanut/modules/common/entity/ClassEntity.java b/src/main/java/com/peanut/modules/common/entity/ClassEntity.java index 3b437d7a..a94a9410 100644 --- a/src/main/java/com/peanut/modules/common/entity/ClassEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/ClassEntity.java @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.util.Date; +import java.util.List; +import java.util.Map; @Data @TableName("class") @@ -25,6 +27,8 @@ public class ClassEntity { private String content; + private Integer number; //成员数量 + private Integer createUserid; private Date createTime; @@ -38,5 +42,12 @@ public class ClassEntity { @TableField(exist = false) private Object createUser; + @TableField(exist = false) + private String type; + @TableField(exist = false) + private ClassModel classModel; + @TableField(exist = false) + private List> classUsers; + } diff --git a/src/main/java/com/peanut/modules/common/entity/ClassUser.java b/src/main/java/com/peanut/modules/common/entity/ClassUser.java index 474f6d87..ba2be7e4 100644 --- a/src/main/java/com/peanut/modules/common/entity/ClassUser.java +++ b/src/main/java/com/peanut/modules/common/entity/ClassUser.java @@ -1,5 +1,6 @@ package com.peanut.modules.common.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; @@ -16,8 +17,11 @@ public class ClassUser { private Integer userId; - private String role; + private String role;//角色0学员1班长2副班长3学习委员4评分员5记分员 @TableLogic private Integer delFlag; + + @TableField(exist = false) + private MyUserEntity user; } diff --git a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java index 6b405438..bf3465da 100644 --- a/src/main/java/com/peanut/modules/common/service/ClassEntityService.java +++ b/src/main/java/com/peanut/modules/common/service/ClassEntityService.java @@ -14,8 +14,16 @@ public interface ClassEntityService extends IService { boolean addClassModel(ClassModel classModel); + boolean editClassModel(ClassModel classModel); + List getClassModelByUserid(Map params); Page getClassList(Map params); + boolean addClass(Map params); + + boolean editClass(Map params); + + boolean setUserRole(Map params); + } diff --git a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java index 9d89d810..3f00cea8 100644 --- a/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java +++ b/src/main/java/com/peanut/modules/common/service/impl/ClassEntityServiceImpl.java @@ -4,15 +4,14 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.peanut.modules.common.dao.ClassCourseDao; -import com.peanut.modules.common.dao.ClassEntityDao; -import com.peanut.modules.common.dao.ClassModelDao; -import com.peanut.modules.common.dao.MyUserDao; +import com.peanut.common.utils.ShiroUtils; +import com.peanut.modules.common.dao.*; import com.peanut.modules.common.entity.*; import com.peanut.modules.common.service.ClassEntityService; import com.peanut.modules.sys.dao.SysUserDao; import com.peanut.modules.sys.entity.SysUserEntity; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -28,6 +27,8 @@ public class ClassEntityServiceImpl extends ServiceImpl wrapper = new MPJLambdaWrapper<>(); + if (StringUtils.isNotEmpty(params.get("title").toString())){ + wrapper.like(ClassModel::getTitle,params.get("title")); + } + wrapper.orderByDesc(ClassModel::getId); Page classModelPage = classModelDao.selectPage(new Page<>(page, limit), wrapper); for (ClassModel classModel:classModelPage.getRecords()){ + //返回主任和课程 setDirectorCourse(classModel); } return classModelPage; @@ -46,37 +52,68 @@ public class ClassEntityServiceImpl extends ServiceImpl0){ - String[] crouseIds = classModel.getCourseIds().split(","); - for (String crouseId : crouseIds) { + classModelDao.insert(classModel); + String[] courseIds = classModel.getCourseIds().split(","); + if(courseIds.length > 0){ + for (String courseId : courseIds) { ClassCourse classCourse = new ClassCourse(); - classCourse.setCourseId(Integer.parseInt(crouseId)); + classCourse.setCourseId(Integer.parseInt(courseId)); classCourse.setModelId(classModel.getId()); - return classCourseDao.insert(classCourse)>0; + classCourseDao.insert(classCourse); } } - return false; + return true; + } + + @Override + public boolean editClassModel(ClassModel classModel) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ClassEntity::getModelId,classModel.getId()); + //模型下有小班,不能编辑 + if (this.getBaseMapper().selectCount(wrapper)>0){ + return false; + }else { + classModelDao.updateById(classModel); + //查询出所属课程,先删除,在添加 + LambdaQueryWrapper courseWrap = new LambdaQueryWrapper<>(); + courseWrap.eq(ClassCourse::getModelId,classModel.getId()); + classCourseDao.delete(courseWrap); + String[] crouseIds = classModel.getCourseIds().split(","); + if (crouseIds.length > 0) { + for (String crouseId : crouseIds) { + ClassCourse classCourse = new ClassCourse(); + classCourse.setCourseId(Integer.parseInt(crouseId)); + classCourse.setModelId(classModel.getId()); + classCourseDao.insert(classCourse); + } + } + return true; + } } @Override public List getClassModelByUserid(Map params) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); - wrapper.and(t->t.eq(ClassModel::getDirectorId,params.get("userId")).or().eq(ClassModel::getDdirectorId,params.get("userId"))); + wrapper.and(t->t.eq(ClassModel::getDirectorId,params.get("userId")) + .or().eq(ClassModel::getDdirectorId,params.get("userId"))); List classModelList = classModelDao.selectList(wrapper); if (classModelList.size() > 0){ for (ClassModel classModel : classModelList) { + //返回主任和课程 setDirectorCourse(classModel); } } return classModelList; } + //设置主任和课程 private void setDirectorCourse(ClassModel classModel){ classModel.setDirector(myUserDao.selectById(classModel.getDirectorId())); classModel.setDdirector(myUserDao.selectById(classModel.getDdirectorId())); MPJLambdaWrapper modelwrapper = new MPJLambdaWrapper<>(); modelwrapper.leftJoin(ClassCourse.class,ClassCourse::getModelId,ClassModel::getId); modelwrapper.leftJoin(CourseEntity.class,CourseEntity::getId,ClassCourse::getCourseId); + modelwrapper.eq(ClassCourse::getModelId,classModel.getId()); modelwrapper.selectAll(CourseEntity.class); classModel.setCourseList(classModelDao.selectJoinList(CourseEntity.class,modelwrapper)); } @@ -86,6 +123,17 @@ public class ClassEntityServiceImpl extends ServiceImpl wrapper = new MPJLambdaWrapper<>(); + wrapper.leftJoin(ClassModel.class,ClassModel::getId,ClassEntity::getModelId); + wrapper.selectAll(ClassEntity.class); + if (StringUtils.isNotEmpty(params.get("type").toString())){ + wrapper.eq(ClassModel::getType,params.get("type")); + } + if (StringUtils.isNotEmpty(params.get("state").toString())){ + wrapper.eq(ClassEntity::getState,params.get("state")); + } + if (StringUtils.isNotEmpty(params.get("title").toString())){ + wrapper.like(ClassEntity::getTitle,params.get("title")); + } wrapper.orderByDesc(ClassEntity::getCreateTime); Page classEntityPage = this.getBaseMapper().selectPage(new Page<>(page, limit), wrapper); for (ClassEntity classEntity:classEntityPage.getRecords()){ @@ -96,7 +144,85 @@ public class ClassEntityServiceImpl extends ServiceImpl userWrapper = new MPJLambdaWrapper<>(); + userWrapper.leftJoin(MyUserEntity.class,MyUserEntity::getId,ClassUser::getUserId); + userWrapper.select("t.role,t.user_id as userId,t1.tel,t1.name,t1.nickname"); + userWrapper.eq(ClassUser::getClassId,classEntity.getId()); + userWrapper.in(ClassUser::getRole,"1","2","3","4","5"); + classEntity.setClassUsers(classUserDao.selectMaps(userWrapper)); } return classEntityPage; } + + @Override + public boolean addClass(Map params) { + ClassEntity c = new ClassEntity(); + c.setModelId((Integer)params.get("modelId")); + c.setTitle(params.get("title").toString()); + c.setIcon(params.get("icon").toString()); + c.setContent(params.get("content").toString()); + c.setNumber((Integer)params.get("number")); + MyUserEntity user = myUserDao.selectById(ShiroUtils.getUId()); + if (user == null){ + c.setCreateUserid(user.getId()); + }else { + c.setCreateUserid(ShiroUtils.getUserId().intValue()); + } + this.getBaseMapper().insert(c); + return true; + } + + @Override + public boolean editClass(Map params) { + ClassEntity c = new ClassEntity(); + c.setId((Integer)params.get("id")); + c.setTitle(params.get("title").toString()); + c.setState(params.get("state").toString()); + c.setIcon(params.get("icon").toString()); + c.setContent(params.get("content").toString()); + this.getBaseMapper().updateById(c); + return true; + } + + @Override + public boolean setUserRole(Map params) { + LambdaQueryWrapper userWrap = new LambdaQueryWrapper<>(); + userWrap.eq(ClassUser::getClassId,params.get("classId")); + userWrap.in(ClassUser::getRole,"1","2","3","4","5"); + classUserDao.delete(userWrap); + int classId = Integer.parseInt(params.get("classId").toString()); + if (StringUtils.isNotEmpty(params.get("monitor").toString())){ + addClassUser(classId,Integer.parseInt(params.get("monitor").toString()),"1"); + } + if (StringUtils.isNotEmpty(params.get("dmonitor").toString())){ + addClassUser(classId,Integer.parseInt(params.get("dmonitor").toString()),"2"); + } + if (StringUtils.isNotEmpty(params.get("learner").toString())){ + addClassUser(classId,Integer.parseInt(params.get("learner").toString()),"3"); + } + if (StringUtils.isNotEmpty(params.get("scorer").toString())){ + String[] scorers = params.get("scorer").toString().split(","); + for (String scorer : scorers) { + addClassUser(classId,Integer.parseInt(scorer),"4"); + } + } + if (StringUtils.isNotEmpty(params.get("counter").toString())){ + String[] scorers = params.get("counter").toString().split(","); + for (String scorer : scorers) { + addClassUser(classId,Integer.parseInt(scorer),"5"); + } + } + return true; + } + + + public int addClassUser(int classId,int userId,String role) { + ClassUser classUser = new ClassUser(); + classUser.setClassId(classId); + classUser.setUserId(userId); + classUser.setRole(role); + return classUserDao.insert(classUser); + } + }