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