xiangpei
2024-06-06 c2dc62c3d40be033cdb65fa54473f7f355e67e88
班级学员新增、修改
9个文件已修改
1个文件已添加
281 ■■■■ 已修改文件
src/main/java/com/ycl/jxkg/base/Result.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/ClassesUserService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/resources/mapper/ClassesUserMapper.xml 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ycl/jxkg/base/Result.java
@@ -83,6 +83,19 @@
    }
    /**
     * Ok rest response.
     *
     * @return the rest response
     */
    public static Result ok(String msg) {
        SystemCode systemCode = SystemCode.OK;
        Result restResponse = new Result();
        restResponse.put("code", systemCode.getCode());
        restResponse.put("message", msg);
        return restResponse;
    }
    /**
     * Gets code.
     *
     * @return the code
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java
@@ -25,7 +25,7 @@
@RequiredArgsConstructor
@Api(value = "班级", tags = "班级管理")
@RestController
@RequestMapping("/api/classes")
@RequestMapping("/api/admin/classes")
public class ClassesController {
    private final ClassesService classesService;
src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java
@@ -27,7 +27,7 @@
@RequiredArgsConstructor
@Api(value = "班级通知", tags = "班级通知管理")
@RestController
@RequestMapping("/api/classes-notify")
@RequestMapping("/api/admin/classes-notify")
public class ClassesNotifyController {
    private final ClassesNotifyService classesNotifyService;
src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java
@@ -1,5 +1,6 @@
package com.ycl.jxkg.controller.admin;
import com.ycl.jxkg.domain.form.EditClassesUserForm;
import com.ycl.jxkg.group.Update;
import com.ycl.jxkg.group.Add;
import org.springframework.validation.annotation.Validated;
@@ -27,7 +28,7 @@
@RequiredArgsConstructor
@Api(value = "班级学员", tags = "班级学员")
@RestController
@RequestMapping("/api/classes-user")
@RequestMapping("/api/admin/classesUser")
public class ClassesUserController {
    private final ClassesUserService classesUserService;
@@ -35,15 +36,22 @@
    @PostMapping
    @ApiOperation(value = "添加", notes = "添加")
    @PreAuthorize("hasAuthority('classesUser:add')")
    public Result add(@RequestBody @Validated(Add.class) ClassesUserForm form) {
    public Result add(@RequestBody @Validated(Add.class) EditClassesUserForm form) {
        return classesUserService.add(form);
    }
    @PostMapping("/edit")
    @ApiOperation(value = "修改", notes = "修改")
    @PreAuthorize("hasAuthority('classesUser:edit')")
    public Result update(@RequestBody @Validated(Update.class) ClassesUserForm form) {
        return classesUserService.update(form);
    }
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    @PreAuthorize("hasAuthority('classesUser:edit')")
    public Result update(@RequestBody @Validated(Update.class) ClassesUserForm form) {
        return classesUserService.update(form);
    public Result edit(@RequestBody @Validated(Update.class) EditClassesUserForm form) {
        return classesUserService.edit(form);
    }
    @DeleteMapping("/{id}")
src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java
@@ -13,6 +13,7 @@
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
 * 班级与用户关联表表单
@@ -22,19 +23,14 @@
 */
@Data
@ApiModel(value = "ClassesUser表单", description = "班级与用户关联表表单")
public class ClassesUserForm extends AbsForm {
public class ClassesUserForm {
    @NotNull(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("")
    private Integer classesId;
    @NotNull(message = "班级不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("班级")
    private Integer id;
    @NotNull(message = "不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("")
    private Integer userId;
    @NotNull(message = "加入时间不能为空", groups = {Add.class, Update.class})
    @ApiModelProperty("加入时间")
    private Date createTime;
    @ApiModelProperty("学员列表")
    private List<Integer> studentList;
    public static ClassesUser getEntityByForm(@NonNull ClassesUserForm form, ClassesUser entity) {
        if(entity == null) {
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java
New file
@@ -0,0 +1,63 @@
package com.ycl.jxkg.domain.form;
import com.ycl.jxkg.domain.entity.ClassesUser;
import com.ycl.jxkg.group.Add;
import com.ycl.jxkg.group.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
import org.springframework.lang.NonNull;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
 * 班级与用户关联表表单
 *
 * @author xp
 * @since 2024-06-04
 */
@Data
@ApiModel(value = "ClassesUser表单", description = "班级与用户关联表表单")
public class EditClassesUserForm {
    @NotNull(message = "请选择要修改的数据", groups = {Update.class})
    private Integer id;
    @NotNull(message = "请选择学员的班级", groups = {Add.class, Update.class})
    private Integer classesId;
    @NotBlank(message = "请填写学员电话", groups = {Add.class, Update.class})
    @ApiModelProperty("电话")
    private String phone;
    @NotNull(message = "请选择学员性别", groups = {Add.class, Update.class})
    @ApiModelProperty("性别")
    private Integer sex;
    @NotNull(message = "请填写学员年龄", groups = {Add.class, Update.class})
    @ApiModelProperty("年龄")
    private Integer age;
    @NotBlank(message = "请填写学员姓名", groups = {Add.class, Update.class})
    @ApiModelProperty("真实姓名")
    private String realName;
    @NotBlank(message = "请填写学员登录账号", groups = {Add.class, Update.class})
    @ApiModelProperty("登录账号")
    private String account;
    @ApiModelProperty("登录密码")
    private String password;
    public static ClassesUser getEntityByForm(@NonNull EditClassesUserForm form, ClassesUser entity) {
        if(entity == null) {
          entity = new ClassesUser();
        }
        BeanUtils.copyProperties(form, entity);
        return entity;
    }
}
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java
@@ -20,12 +20,21 @@
@Data
public class ClassesUserVO extends AbsVo {
    /**  */
    /** 班级ID */
    private Integer classesId;
    /**  */
    /** 用户ID */
    private Integer userId;
    /** 真实姓名 */
    private String realName;
    /** 年龄 */
    private Integer sex;
    /** 电话 */
    private String phone;
    /** 加入时间 */
    private Date createTime;
src/main/java/com/ycl/jxkg/service/ClassesUserService.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.domain.form.ClassesUserForm;
import com.ycl.jxkg.domain.form.EditClassesUserForm;
import com.ycl.jxkg.domain.query.ClassesUserQuery;
import java.util.List;
@@ -20,7 +21,7 @@
     * @param form
     * @return
     */
    Result add(ClassesUserForm form);
    Result add(EditClassesUserForm form);
    /**
     * 修改
@@ -62,4 +63,12 @@
     * @return
     */
    Result all();
    /**
     * 编辑学员信息
     *
     * @param form
     * @return
     */
    Result edit(EditClassesUserForm form);
}
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java
@@ -1,8 +1,16 @@
package com.ycl.jxkg.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
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.enums.RoleEnum;
import com.ycl.jxkg.enums.UserStatusEnum;
import com.ycl.jxkg.mapper.ClassesUserMapper;
import com.ycl.jxkg.mapper.UserMapper;
import com.ycl.jxkg.service.AuthenticationService;
import com.ycl.jxkg.service.ClassesUserService;
import com.ycl.jxkg.base.Result;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -13,9 +21,12 @@
import lombok.RequiredArgsConstructor;
import com.ycl.jxkg.utils.PageUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -29,37 +40,98 @@
public class ClassesUserServiceImpl extends ServiceImpl<ClassesUserMapper, ClassesUser> implements ClassesUserService {
    private final ClassesUserMapper classesUserMapper;
    private final AuthenticationService authenticationService;
    private final UserMapper userMapper;
    private final static String DEFAULT_PASSWORD = "202406";
    /**
     * 添加
     *
     * @param form
     * @return
     */
    @Override
    public Result add(ClassesUserForm form) {
        ClassesUser entity = ClassesUserForm.getEntityByForm(form, null);
        baseMapper.insert(entity);
    @Transactional(rollbackFor = Exception.class)
    public Result add(EditClassesUserForm form) {
        Long count = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getUserName, form.getAccount())
                .count();
        if (count > 0) {
            throw new RuntimeException("该登录账号已被使用");
        }
        User user = new User();
        user.setUserName(form.getPhone());
        String password = StringUtils.hasText(form.getPassword()) ? form.getPassword() : DEFAULT_PASSWORD;
        user.setPassword(authenticationService.pwdEncode(password));
        user.setStatus(UserStatusEnum.Enable.getCode());
        user.setRole(RoleEnum.STUDENT.getCode());
        user.setAge(form.getAge());
        user.setPhone(form.getPhone());
        user.setRealName(form.getRealName());
        user.setSex(form.getSex());
        userMapper.insert(user);
        ClassesUser classesUser = new ClassesUser();
        classesUser.setClassesId(form.getClassesId());
        classesUser.setUserId(user.getId());
        baseMapper.insert(classesUser);
        return Result.ok("添加成功");
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result edit(EditClassesUserForm form) {
        ClassesUser classesUser = baseMapper.selectById(form.getId());
        if (Objects.isNull(classesUser)) {
            throw new RuntimeException("学员数据不存在");
        }
        Long count = new LambdaQueryChainWrapper<>(userMapper)
                .eq(User::getUserName, form.getAccount())
                .ne(User::getId, classesUser.getUserId())
                .count();
        if (count > 0) {
            throw new RuntimeException("该登录账号已被使用");
        }
        User user = userMapper.selectById(classesUser.getUserId());
        if (Objects.isNull(user)) {
            throw new RuntimeException("该学生账号不存在或被删除");
        }
        BeanUtils.copyProperties(form, classesUser);
        baseMapper.updateById(classesUser);
        BeanUtils.copyProperties(classesUser, user);
        userMapper.updateById(user);
        return Result.ok("修改成功");
    }
    /**
     * 修改
     *
     * @param form
     * @return
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Result update(ClassesUserForm form) {
        ClassesUser entity = baseMapper.selectById(form.getId());
        // 为空抛IllegalArgumentException,做全局异常处理
        Assert.notNull(entity, "记录不存在");
        BeanUtils.copyProperties(form, entity);
        baseMapper.updateById(entity);
        // 先删除之前的
        new LambdaUpdateChainWrapper<>(baseMapper)
                .eq(ClassesUser::getClassesId, form.getId())
                .remove();
        // 再新增
        List<ClassesUser> classesUserList = form.getStudentList().stream().map(item -> {
            ClassesUser classesUser = new ClassesUser();
            classesUser.setClassesId(form.getId());
            classesUser.setUserId(item);
            return classesUser;
        }).collect(Collectors.toList());
        this.saveBatch(classesUserList);
        return Result.ok("修改成功");
    }
    /**
     * 批量删除
     *
     * @param ids
     * @return
     */
@@ -71,6 +143,7 @@
    /**
     * id删除
     *
     * @param id
     * @return
     */
@@ -82,6 +155,7 @@
    /**
     * 分页查询
     *
     * @param query
     * @return
     */
@@ -94,6 +168,7 @@
    /**
     * 根据id查找
     *
     * @param id
     * @return
     */
@@ -106,6 +181,7 @@
    /**
     * 列表
     *
     * @return
     */
    @Override
src/main/resources/mapper/ClassesUserMapper.xml
@@ -4,40 +4,37 @@
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ClassesUserVO">
        <result column="classes_id" property="classesId" />
        <result column="user_id" property="userId" />
        <result column="create_time" property="createTime" />
        <result column="classes_id" property="classesId"/>
        <result column="user_id" property="userId"/>
        <result column="real_name" property="realName"/>
        <result column="sex" property="sex"/>
        <result column="phone" property="phone"/>
        <result column="create_time" property="createTime"/>
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
        SELECT
            TCU.classes_id,
            TCU.user_id,
            TCU.create_time,
            TCU.id
        FROM
            t_classes_user TCU
        WHERE
            TCU.id = #{id} AND TCU.deleted = 0
        SELECT TCU.classes_id,
               TCU.user_id,
               TCU.create_time,
               TCU.id
        FROM t_classes_user TCU
        WHERE TCU.id = #{id}
          AND TCU.deleted = 0
    </select>
    <select id="getPage" resultMap="BaseResultMap">
        SELECT
            TCU.classes_id,
            TCU.user_id,
            TCU.create_time,
            TCU.id
        FROM
            t_classes_user TCU
        WHERE
            TCU.deleted = 0
        SELECT TCU.classes_id,
               TCU.user_id,
               TCU.create_time,
               TCU.id,
               TU.real_name,
               TU.sex,
               TU.phone
        FROM t_classes_user TCU
                 LEFT JOIN t_user TU ON TU.id = TCU.user_id
        WHERE TCU.deleted = 0
    </select>
</mapper>