xiangpei
2024-10-27 093fac278c7931e8160209a428729d5a82d5cd72
一个班级可以有多个老师
9个文件已修改
106 ■■■■■ 已修改文件
src/main/java/com/ycl/jxkg/controller/admin/UserController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ClassesUserService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ClassesUserMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/UserController.java
@@ -46,6 +46,7 @@
    private final WebContext webContext;
    private final Integer teacher = 2;
    private final Integer student = 1;
    @RequestMapping(value = "/page/list", method = RequestMethod.POST)
    public Result<PageInfo<UserResponseVO>> pageList(@RequestBody UserPageRequestVO model) {
        if(!student.equals(model.getRole())) {
@@ -73,6 +74,20 @@
        return Result.ok().data(studentVOS);
    }
    @RequestMapping(value = "/teacher/list", method = RequestMethod.GET)
    public Result<?> teacherList() {
        List<User> teacherList = new LambdaQueryChainWrapper<>(userService.getBaseMapper())
                .eq(User::getRole, RoleEnum.TEACHER.getCode())
                .orderByDesc(User::getCreateTime)
                .list();
        List<StudentVO> teachers = teacherList.stream().map(item -> {
            StudentVO student = new StudentVO();
            BeanUtils.copyProperties(item, student);
            return student;
        }).collect(Collectors.toList());
        return Result.ok().data(teachers);
    }
    @RequestMapping(value = "/classes/students", method = RequestMethod.GET)
    public Result<com.ycl.jxkg.domain.vo.student.user.UserResponseVO> classesStudent(@RequestParam Integer classesId) {
        List<StudentVO> studentList = userService.classesStudent(classesId);
src/main/java/com/ycl/jxkg/domain/entity/ClassesUser.java
@@ -27,5 +27,7 @@
    /**  */
    private Integer userId;
    @TableField("teacher")
    /** 是否老师 */
    private Boolean teacher;
}
src/main/java/com/ycl/jxkg/domain/form/ClassesForm.java
@@ -13,6 +13,7 @@
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * 班级表单
@@ -36,6 +37,9 @@
    @ApiModelProperty("结束时间")
    private Date endTime;
    @ApiModelProperty("教师列表")
    private List<Integer> teacherList;
    @ApiModelProperty("备注")
    private String remark;
src/main/java/com/ycl/jxkg/domain/vo/ClassesVO.java
@@ -5,6 +5,7 @@
import com.ycl.jxkg.domain.entity.Classes;
import java.util.Date;
import java.util.List;
import com.ycl.jxkg.enums.general.ClassesStatusEnum;
import org.springframework.lang.NonNull;
@@ -23,6 +24,10 @@
    /** 班级名称 */
    private String className;
    /** 老师 */
    private List<Integer> teacherList;
    private String teacherNamesStr;
    /** 创建人 */
    private Integer createUser;
    private String createUserName;
src/main/java/com/ycl/jxkg/mapper/ClassesUserMapper.java
@@ -10,6 +10,7 @@
import java.util.List;
import com.ycl.jxkg.domain.vo.StudentExamInfoVO;
import com.ycl.jxkg.domain.vo.StudentVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -57,4 +58,12 @@
     * @return
     */
    List<String> getClassesNameByUserId(@Param("userId") Integer userId);
    /**
     * 查询班级老师
     *
     * @param id
     * @return
     */
    List<StudentVO> getTeacherListByClassesId(@Param("id") Integer id);
}
src/main/java/com/ycl/jxkg/service/ClassesUserService.java
@@ -6,6 +6,8 @@
import com.ycl.jxkg.domain.form.ClassesUserForm;
import com.ycl.jxkg.domain.form.EditClassesUserForm;
import com.ycl.jxkg.domain.query.ClassesUserQuery;
import com.ycl.jxkg.domain.vo.StudentVO;
import java.util.List;
/**
@@ -71,4 +73,12 @@
     * @return
     */
    Result edit(EditClassesUserForm form);
    /**
     * 查询班级老师
     *
     * @param id
     * @return
     */
    List<StudentVO> getTeacherListByClassesId(Integer id);
}
src/main/java/com/ycl/jxkg/service/impl/ClassesServiceImpl.java
@@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.domain.entity.Classes;
import com.ycl.jxkg.domain.entity.ClassesUser;
import com.ycl.jxkg.domain.vo.StudentSimpleVO;
import com.ycl.jxkg.domain.vo.StudentVO;
import com.ycl.jxkg.enums.general.ClassesStatusEnum;
@@ -15,12 +16,16 @@
import com.ycl.jxkg.domain.form.ClassesForm;
import com.ycl.jxkg.domain.vo.ClassesVO;
import com.ycl.jxkg.domain.query.ClassesQuery;
import com.ycl.jxkg.service.ClassesUserService;
import com.ycl.jxkg.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@@ -36,6 +41,7 @@
    private final ClassesMapper classesMapper;
    private final WebContext webContext;
    private final ClassesUserService classesUserService;
    /**
     * 添加
@@ -43,11 +49,25 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result add(ClassesForm form) {
        Classes entity = ClassesForm.getEntityByForm(form, null);
        entity.setStatus(ClassesStatusEnum.NORMAL);
        entity.setCreateUser(webContext.getCurrentUser().getId());
        baseMapper.insert(entity);
        List<Integer> teacherList = form.getTeacherList();
        if (CollectionUtils.isEmpty(teacherList)) {
            teacherList = new ArrayList<>(1);
        }
        teacherList.add(webContext.getCurrentUser().getId());
        for (Integer teacherUserId : teacherList) {
            ClassesUser classesUser = new ClassesUser();
            classesUser.setClassesId(entity.getId());
            classesUser.setUserId(teacherUserId);
            classesUser.setTeacher(Boolean.TRUE);
            classesUserService.save(classesUser);
        }
        return Result.ok("添加成功");
    }
@@ -57,6 +77,7 @@
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result update(ClassesForm form) {
        Classes entity = baseMapper.selectById(form.getId());
@@ -64,6 +85,23 @@
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        new LambdaUpdateChainWrapper<>(classesUserService.getBaseMapper())
                .eq(ClassesUser::getClassesId, entity.getId())
                .eq(ClassesUser::getTeacher, Boolean.TRUE)
                .remove();
        List<Integer> teacherList = form.getTeacherList();
        if (CollectionUtils.isEmpty(teacherList)) {
            teacherList = new ArrayList<>(1);
        }
        teacherList.add(webContext.getCurrentUser().getId());
        for (Integer teacherUserId : teacherList) {
            ClassesUser classesUser = new ClassesUser();
            classesUser.setClassesId(entity.getId());
            classesUser.setUserId(teacherUserId);
            classesUser.setTeacher(Boolean.TRUE);
            classesUserService.save(classesUser);
        }
        return Result.ok("修改成功");
    }
@@ -99,6 +137,14 @@
        IPage<ClassesVO> page = PageUtil.getPage(query, ClassesVO.class);
        query.setUserId(webContext.getCurrentUser().getId());
        baseMapper.getPage(page, query);
        for (ClassesVO vo : page.getRecords()) {
            List<StudentVO> teacherList = classesUserService.getTeacherListByClassesId(vo.getId());
            List<Integer> teacherIds = teacherList.stream().map(StudentVO::getId).collect(Collectors.toList());
            String teacherNamesStr = teacherList.stream().map(StudentVO::getRealName).collect(Collectors.joining(","));
            vo.setTeacherList(teacherIds);
            vo.setTeacherNamesStr(teacherNamesStr);
        }
        return Result.ok().data(page.getRecords()).total(page.getTotal());
    }
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
@@ -6,6 +6,7 @@
import com.ycl.jxkg.domain.entity.ClassesUser;
import com.ycl.jxkg.domain.entity.User;
import com.ycl.jxkg.domain.form.EditClassesUserForm;
import com.ycl.jxkg.domain.vo.StudentVO;
import com.ycl.jxkg.enums.RoleEnum;
import com.ycl.jxkg.enums.UserStatusEnum;
import com.ycl.jxkg.mapper.ClassesUserMapper;
@@ -113,6 +114,11 @@
        return Result.ok("修改成功");
    }
    @Override
    public List<StudentVO> getTeacherListByClassesId(Integer id) {
        return baseMapper.getTeacherListByClassesId(id);
    }
    /**
     * 修改
     *
src/main/resources/mapper/ClassesUserMapper.xml
@@ -77,4 +77,11 @@
        left join t_classes tc on tcu.classes_id = tc.id
        where user_id = #{userId} and tcu.deleted = 0 and tc.deleted =0
    </select>
    <select id="getTeacherListByClassesId" resultType="com.ycl.jxkg.domain.vo.StudentVO">
        SELECT
               DISTINCT tu.id, tu.real_name
        FROM t_user tu
            INNER JOIN t_classes_user tcu ON tu.id = tcu.user_id AND tcu.classes_id = #{id} AND tcu.deleted = 0 AND tcu.teacher = 1 AND tu.deleted = 0
    </select>
</mapper>