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/service/impl/ClassesUserServiceImpl.java |   94 ++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 85 insertions(+), 9 deletions(-)

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

--
Gitblit v1.8.0