From d5a2ec36fa56559a364e1a60c4b75c707cb7463a Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期一, 22 七月 2024 18:25:01 +0800
Subject: [PATCH] feat:用户导入

---
 src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java |   84 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 72 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
index a329a2b..9b99327 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
@@ -1,33 +1,38 @@
 package com.ycl.jxkg.service.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
 import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qiniu.util.Md5;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.domain.form.UpdatePwdForm;
-import com.ycl.jxkg.enums.RoleEnum;
-import com.ycl.jxkg.enums.UserStatusEnum;
 import com.ycl.jxkg.domain.form.RegisterForm;
+import com.ycl.jxkg.domain.form.StudentUpdatePwdForm;
+import com.ycl.jxkg.domain.form.UpdatePwdForm;
 import com.ycl.jxkg.domain.other.KeyValue;
 import com.ycl.jxkg.domain.vo.StudentVO;
-import com.ycl.jxkg.enums.general.YesOrNoEnum;
+import com.ycl.jxkg.domain.vo.admin.user.UserExcelVo;
+import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
+import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
 import com.ycl.jxkg.event.UserEvent;
 import com.ycl.jxkg.exception.BusinessException;
-import com.ycl.jxkg.domain.entity.User;
-import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
 import com.ycl.jxkg.mapper.UserMapper;
 import com.ycl.jxkg.service.AuthenticationService;
 import com.ycl.jxkg.service.UserService;
-import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
 import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.ApplicationEventPublisher;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.*;
 
 
@@ -89,6 +94,7 @@
 
     @Override
     public void insertUser(User user) {
+        user.setLastUpdatePasswordTime(new Date());
         userMapper.insert(user);
         eventPublisher.publishEvent(new OnRegistrationCompleteEvent(user));
     }
@@ -96,6 +102,9 @@
     @Override
     @Transactional(rollbackFor = BusinessException.class)
     public void insertUsers(List<User> users) {
+        users.stream().forEach(item -> {
+            item.setLastUpdatePasswordTime(new Date());
+        });
         userMapper.insertUsers(users);
         throw new BusinessException("test BusinessException roll back");
     }
@@ -189,8 +198,59 @@
         new LambdaUpdateChainWrapper<>(baseMapper)
                 .eq(User::getId, form.getUserId())
                 .set(User::getPassword, authenticationService.pwdEncode(form.getNewPassword()))
-                .set(User::getNeedUpdatePassword, YesOrNoEnum.NO)
                 .set(User::getLastUpdatePasswordTime, new Date())
                 .update();
     }
+
+    @Override
+    public void updateStudentPassword(StudentUpdatePwdForm form) {
+        User user = baseMapper.selectById(form.getUserId());
+        if(user ==null){
+            throw new RuntimeException("鐢ㄦ埛涓嶅瓨鍦�");
+        }
+        if(authenticationService.authUser(user,user.getUserName(),form.getOldPassword())){
+            //瀵嗙爜姝g‘
+            new LambdaUpdateChainWrapper<>(baseMapper)
+                    .eq(User::getId, form.getUserId())
+                    .set(User::getPassword, authenticationService.pwdEncode(form.getNewPassword()))
+                    .set(User::getLastUpdatePasswordTime, new Date())
+                    .update();
+        }else {
+            //瀵嗙爜閿欒
+            throw new RuntimeException("鏃у瘑鐮侀敊璇紝璇风‘璁ゅ悗閲嶆柊杈撳叆");
+        }
+    }
+
+    @Override
+    @SneakyThrows
+    @Transactional
+    public String importExcel(MultipartFile file) {
+        List<User> userList = new ArrayList<>();
+        List<String> errorList = new ArrayList<>();
+        EasyExcel.read(file.getInputStream(), UserExcelVo.class, new PageReadListener<UserExcelVo>(dataList -> {
+            dataList.forEach(item -> {
+                User user = new User();
+                user.setUserName(item.getUserName());
+                user.setPassword(authenticationService.pwdEncode("!Password123456789"));
+                user.setRealName(item.getRealName());
+                user.setSex(item.getSex());
+                user.setPhone(item.getPhone());
+                try {
+                    user.setBirthDay(new SimpleDateFormat("yyyy-MM-dd").parse(item.getBirthDay()));
+                } catch (ParseException e) {
+                    errorList.add(item.getRealName());
+                }
+                user.setAge(item.getAge());
+                user.setRole(item.getRole());
+                user.setStatus(UserStatusEnum.Enable.getCode());
+                userList.add(user);
+            });
+        }));
+        if (!errorList.isEmpty()) {
+            return "浠ヤ笅鏁版嵁鏃ユ湡鏍煎紡閿欒锛歕\n" + String.join(",", errorList);
+        } else {
+            saveBatch(userList);
+        }
+        return "鎴愬姛瀵煎叆" + userList.size() + "鏉℃暟鎹�";
+    }
 }

--
Gitblit v1.8.0