From cd59ededbf05a0ae73b8f4944fbf40a1fb01d28a Mon Sep 17 00:00:00 2001
From: luohairen <3399054449@qq.com>
Date: 星期一, 11 十一月 2024 18:03:43 +0800
Subject: [PATCH] 错题详情

---
 src/main/java/com/ycl/jxkg/service/impl/ClassesUserServiceImpl.java |  140 +++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 131 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..c2f488b 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,17 @@
 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.domain.vo.StudentVO;
+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 +22,16 @@
 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.text.DateFormat;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -29,37 +45,139 @@
 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.getUserName())
+                .count();
+        if (count > 0) {
+            throw new RuntimeException("璇ョ櫥褰曡处鍙峰凡琚娇鐢�");
+        }
+        User user = new User();
+        user.setUserName(form.getUserName());
+        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());
+        if (StringUtils.hasText(form.getBirthDay())) {
+            DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");
+            try {
+                user.setBirthDay(fmt.parse(form.getBirthDay()));
+            } catch (ParseException e) {
+                throw new RuntimeException(e);
+            }
+        }
+        user.setLastUpdatePasswordTime(new Date());
+        userMapper.insert(user);
+
+        ClassesUser classesUser = new ClassesUser();
+        classesUser.setClassesId(form.getClassesId());
+        classesUser.setUserId(user.getId());
+        classesUser.setTeacher(Boolean.FALSE);
+        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.getUserName())
+                .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);
+        user.setUserName(form.getUserName());
+        user.setPassword(form.getPassword());
+        user.setPhone(form.getPhone());
+        user.setRealName(form.getRealName());
+        user.setSex(form.getSex());
+        user.setAge(form.getAge());
+        DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd");
+        try {
+            user.setBirthDay(fmt.parse(form.getBirthDay()));
+        } catch (ParseException e) {
+            throw new RuntimeException(e);
+        }
+        userMapper.updateById(user);
+        return Result.ok("淇敼鎴愬姛");
+    }
+
+    @Override
+    public List<StudentVO> getTeacherListByClassesId(Integer id) {
+        return baseMapper.getTeacherListByClassesId(id);
+    }
+
+    /**
+     * 鏍规嵁鐢ㄦ埛id鑾峰彇鐢ㄦ埛鐝骇淇℃伅
+     *
+     * @param userId
+     * @return
+     */
+    @Override
+    public List<Integer> getByUserId(Integer userId) {
+        return classesUserMapper.getClassesByUserId(userId);
     }
 
     /**
      * 淇敼
+     *
      * @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())
+                .eq(ClassesUser::getTeacher, Boolean.FALSE)
+                .remove();
+        // 鍐嶆柊澧�
+        List<ClassesUser> classesUserList = form.getStudentList().stream().map(item -> {
+            ClassesUser classesUser = new ClassesUser();
+            classesUser.setClassesId(form.getId());
+            classesUser.setUserId(item);
+            classesUser.setTeacher(Boolean.FALSE);
+            return classesUser;
+        }).collect(Collectors.toList());
+        this.saveBatch(classesUserList);
         return Result.ok("淇敼鎴愬姛");
     }
 
     /**
      * 鎵归噺鍒犻櫎
+     *
      * @param ids
      * @return
      */
@@ -71,6 +189,7 @@
 
     /**
      * id鍒犻櫎
+     *
      * @param id
      * @return
      */
@@ -82,6 +201,7 @@
 
     /**
      * 鍒嗛〉鏌ヨ
+     *
      * @param query
      * @return
      */
@@ -94,6 +214,7 @@
 
     /**
      * 鏍规嵁id鏌ユ壘
+     *
      * @param id
      * @return
      */
@@ -106,6 +227,7 @@
 
     /**
      * 鍒楄〃
+     *
      * @return
      */
     @Override

--
Gitblit v1.8.0