src/main/java/com/ycl/jxkg/base/Result.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/ClassesUserService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/ClassesUserMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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>