From c2dc62c3d40be033cdb65fa54473f7f355e67e88 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期四, 06 六月 2024 15:52:02 +0800 Subject: [PATCH] 班级学员新增、修改 --- src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java | 2 src/main/java/com/ycl/jxkg/service/ClassesUserService.java | 11 ++ src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java | 16 ++ src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java | 18 +-- src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | 2 src/main/java/com/ycl/jxkg/base/Result.java | 13 ++ src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java | 94 +++++++++++++++++- src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java | 13 ++ src/main/resources/mapper/ClassesUserMapper.xml | 49 ++++----- src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java | 63 ++++++++++++ 10 files changed, 226 insertions(+), 55 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/base/Result.java b/src/main/java/com/ycl/jxkg/base/Result.java index 32ede1a..977d7fe 100644 --- a/src/main/java/com/ycl/jxkg/base/Result.java +++ b/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 diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java index 0f1a651..3167d00 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java +++ b/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; diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java index 809e34d..1ff274e 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java +++ b/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; diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java index faf1fee..ce28ca7 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesUserController.java +++ b/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}") diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java index d59163d..c14b7a9 100644 --- a/src/main/java/com/ycl/jxkg/domain/form/ClassesUserForm.java +++ b/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) { diff --git a/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java new file mode 100644 index 0000000..d27669a --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/form/EditClassesUserForm.java @@ -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; + } + +} diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java index a9a63f0..cfdb39e 100644 --- a/src/main/java/com/ycl/jxkg/domain/vo/ClassesUserVO.java +++ b/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; diff --git a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java b/src/main/java/com/ycl/jxkg/service/ClassesUserService.java index 754ac19..2199aed 100644 --- a/src/main/java/com/ycl/jxkg/service/ClassesUserService.java +++ b/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); } diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java index 639af0f..c13dc99 100644 --- a/src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java +++ b/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()); - - // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 - 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 diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml index 87fc1f8..ab42074 100644 --- a/src/main/resources/mapper/ClassesUserMapper.xml +++ b/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> -- Gitblit v1.8.0