From 8546b3d285af4235a0ef615a0c6e89486ae2c806 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 17 十月 2024 21:01:37 +0800
Subject: [PATCH] 达梦不支持value改为values

---
 src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java |  197 +++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 157 insertions(+), 40 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 08e7159..f662b96 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
@@ -1,66 +1,63 @@
 package com.ycl.jxkg.service.impl;
 
-import com.ycl.jxkg.domain.other.KeyValue;
-import com.ycl.jxkg.exception.BusinessException;
-import com.ycl.jxkg.domain.User;
-import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
-import com.ycl.jxkg.repository.UserMapper;
-import com.ycl.jxkg.service.UserService;
-import com.ycl.jxkg.viewmodel.admin.user.UserPageRequestVM;
+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 org.springframework.beans.factory.annotation.Autowired;
+import com.ycl.jxkg.domain.entity.User;
+import com.ycl.jxkg.domain.entity.UserEventLog;
+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.mapper.UserMapper;
+import com.ycl.jxkg.service.AuthenticationService;
+import com.ycl.jxkg.service.UserService;
+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.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import javax.servlet.http.HttpServletResponse;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
 
 
 @Service
-public class UserServiceImpl extends BaseServiceImpl<User> implements UserService {
+@RequiredArgsConstructor
+public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
 
     private final UserMapper userMapper;
     private final ApplicationEventPublisher eventPublisher;
-
-    @Autowired
-    public UserServiceImpl(UserMapper userMapper, ApplicationEventPublisher eventPublisher) {
-        super(userMapper);
-        this.userMapper = userMapper;
-        this.eventPublisher = eventPublisher;
-    }
+    private final AuthenticationService authenticationService;
 
 
-    @Override
     public List<User> getUsers() {
         return userMapper.getAllUser();
     }
 
-    @Override
     public User getUserById(Integer id) {
         return userMapper.getUserById(id);
     }
 
-    @Override
     public User getUserByUserName(String username) {
         return userMapper.getUserByUserName(username);
-    }
-
-    @Override
-    public int insertByFilter(User record) {
-        return super.insertByFilter(record);
-    }
-
-    @Override
-    public int updateByIdFilter(User record) {
-        return super.updateByIdFilter(record);
-    }
-
-    @Override
-    public int updateById(User record) {
-        return super.updateById(record);
     }
 
     @Override
@@ -91,7 +88,7 @@
 
 
     @Override
-    public PageInfo<User> userPage(UserPageRequestVM requestVM) {
+    public PageInfo<User> userPage(UserPageRequestVO requestVM) {
         return PageHelper.startPage(requestVM.getPageIndex(), requestVM.getPageSize(), "id desc").doSelectPageInfo(() ->
                 userMapper.userPage(requestVM)
         );
@@ -100,13 +97,17 @@
 
     @Override
     public void insertUser(User user) {
-        userMapper.insertSelective(user);
+        user.setLastUpdatePasswordTime(new Date());
+        userMapper.insert(user);
         eventPublisher.publishEvent(new OnRegistrationCompleteEvent(user));
     }
 
     @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");
     }
@@ -155,6 +156,122 @@
         User changePictureUser = new User();
         changePictureUser.setId(user.getId());
         changePictureUser.setImagePath(imagePath);
-        userMapper.updateByPrimaryKeySelective(changePictureUser);
+        userMapper.updateById(changePictureUser);
+    }
+
+    @Override
+    public void teacherRegister(RegisterForm form) {
+        User teacher = new User();
+        BeanUtils.copyProperties(form, teacher);
+        teacher.setRole(RoleEnum.ADMIN.getCode());
+        teacher.setUserUuid(UUID.randomUUID().toString());
+        teacher.setLastActiveTime(new Date());
+        teacher.setStatus(UserStatusEnum.Enable.getCode());
+        teacher.setDeleted(0);
+        this.insertUser(teacher);
+        // 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇�
+        UserEventLog userEventLog = new UserEventLog(teacher.getId(), teacher.getUserName(), teacher.getRealName(), new Date());
+        userEventLog.setContent("娆㈣繋 " + teacher.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�");
+        eventPublisher.publishEvent(new UserEvent(userEventLog));
+    }
+
+    @Override
+    public void studentRegister(RegisterForm form) {
+        User student = new User();
+        BeanUtils.copyProperties(form, student);
+        student.setRole(RoleEnum.ADMIN.getCode());
+        student.setUserUuid(UUID.randomUUID().toString());
+        student.setLastActiveTime(new Date());
+        student.setStatus(UserStatusEnum.Enable.getCode());
+        student.setDeleted(0);
+        this.insertUser(student);
+        // 鍙戝竷娉ㄥ唽浜嬩欢锛屼繚瀛樻敞鍐屾棩蹇�
+        UserEventLog userEventLog = new UserEventLog(student.getId(), student.getUserName(), student.getRealName(), new Date());
+        userEventLog.setContent("娆㈣繋 " + student.getUserName() + " 娉ㄥ唽鏉ュ埌姹熻タ绌虹闊宠棰戝煿璁郴缁�");
+        eventPublisher.publishEvent(new UserEvent(userEventLog));
+    }
+
+    @Override
+    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