From d01fa2df1b46f45647e82be6d1476ea1e295f995 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期日, 27 十月 2024 21:31:53 +0800
Subject: [PATCH] 一个班级可以有多个老师
---
src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 106 insertions(+), 9 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..71d3968 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,41 @@
package com.ycl.jxkg.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.read.listener.PageReadListener;
+import com.alibaba.excel.write.metadata.WriteSheet;
+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 javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.*;
@@ -32,6 +45,7 @@
private final UserMapper userMapper;
private final ApplicationEventPublisher eventPublisher;
+ private final AuthenticationService authenticationService;
public List<User> getUsers() {
@@ -83,6 +97,7 @@
@Override
public void insertUser(User user) {
+ user.setLastUpdatePasswordTime(new Date());
userMapper.insert(user);
eventPublisher.publishEvent(new OnRegistrationCompleteEvent(user));
}
@@ -90,6 +105,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");
}
@@ -153,7 +171,7 @@
this.insertUser(teacher);
// 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇�
UserEventLog userEventLog = new UserEventLog(teacher.getId(), teacher.getUserName(), teacher.getRealName(), new Date());
- userEventLog.setContent("娆㈣繋 " + teacher.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�");
+ userEventLog.setContent("娆㈣繋 " + teacher.getUserName() + " 娉ㄥ唽鏉ュ埌闊宠棰戝煿璁郴缁�");
eventPublisher.publishEvent(new UserEvent(userEventLog));
}
@@ -169,7 +187,7 @@
this.insertUser(student);
// 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇�
UserEventLog userEventLog = new UserEventLog(student.getId(), student.getUserName(), student.getRealName(), new Date());
- userEventLog.setContent("娆㈣繋 " + student.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�");
+ userEventLog.setContent("娆㈣繋 " + student.getUserName() + " 娉ㄥ唽鏉ュ埌闊宠棰戝煿璁郴缁�");
eventPublisher.publishEvent(new UserEvent(userEventLog));
}
@@ -177,4 +195,83 @@
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
+ public void importTemplate(HttpServletResponse response) {
+ List<UserExcelVo> list = new ArrayList<>();
+ UserExcelVo userExcelVo = new UserExcelVo();
+ userExcelVo.setUserName("zhangSan");
+ userExcelVo.setRealName("寮犱笁");
+ userExcelVo.setSex(1);
+ userExcelVo.setRole(1);
+ userExcelVo.setPhone("12345678901");
+ userExcelVo.setAge(24);
+ userExcelVo.setBirthDay("2000-01-01");
+ list.add(userExcelVo);
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), UserExcelVo.class).build();
+ WriteSheet writeSheet = EasyExcel.writerSheet(0, "鐢ㄦ埛淇℃伅").build();
+ excelWriter.write(list, writeSheet);
+ excelWriter.finish();
+ }
+
+ @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());
+ user.setLastUpdatePasswordTime(new Date());
+ userList.add(user);
+ }))).sheet().doRead();
+ if (!errorList.isEmpty()) {
+ return "浠ヤ笅鏁版嵁鏃ユ湡鏍煎紡閿欒锛�" + String.join(",", errorList);
+ } else {
+ saveBatch(userList);
+ }
+ return "鎴愬姛瀵煎叆" + userList.size() + "鏉℃暟鎹�";
+ }
}
--
Gitblit v1.8.0