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 | 90 +++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 83 insertions(+), 7 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 77ae849..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,28 +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.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.enums.RoleEnum; -import com.ycl.jxkg.domain.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.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.text.ParseException; +import java.text.SimpleDateFormat; import java.util.*; @@ -32,6 +42,7 @@ private final UserMapper userMapper; private final ApplicationEventPublisher eventPublisher; + private final AuthenticationService authenticationService; public List<User> getUsers() { @@ -83,6 +94,7 @@ @Override public void insertUser(User user) { + user.setLastUpdatePasswordTime(new Date()); userMapper.insert(user); eventPublisher.publishEvent(new OnRegistrationCompleteEvent(user)); } @@ -90,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"); } @@ -177,4 +192,65 @@ public List<StudentVO> classesStudent(Integer classesId) { return userMapper.classesStudent(classesId); } + + @Override + public void updatePassword(UpdatePwdForm form) { + new LambdaUpdateChainWrapper<>(baseMapper) + .eq(User::getId, form.getUserId()) + .set(User::getPassword, authenticationService.pwdEncode(form.getNewPassword())) + .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