src/main/java/com/ycl/jxkg/controller/admin/UserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/UserService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/ycl/jxkg/controller/admin/UserController.java
@@ -1,32 +1,36 @@ package com.ycl.jxkg.controller.admin; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; import com.alibaba.excel.write.metadata.WriteSheet; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.github.pagehelper.PageInfo; import com.ycl.jxkg.base.BaseApiController; import com.ycl.jxkg.base.Result; import com.ycl.jxkg.base.SystemCode; import com.ycl.jxkg.context.WebContext; import com.ycl.jxkg.domain.form.UpdatePwdForm; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.entity.User; import com.ycl.jxkg.domain.entity.UserEventLog; import com.ycl.jxkg.enums.UserStatusEnum; import com.ycl.jxkg.domain.other.KeyValue; import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.domain.vo.admin.user.*; import com.ycl.jxkg.enums.RoleEnum; import com.ycl.jxkg.enums.UserStatusEnum; import com.ycl.jxkg.service.AuthenticationService; import com.ycl.jxkg.service.UserEventLogService; import com.ycl.jxkg.service.UserService; import com.ycl.jxkg.utils.DateTimeUtil; import com.ycl.jxkg.domain.vo.admin.user.*; import com.ycl.jxkg.utils.PageInfoHelper; import com.github.pagehelper.PageInfo; import lombok.RequiredArgsConstructor; import lombok.SneakyThrows; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.UUID; @@ -176,7 +180,21 @@ return Result.ok(keyValues); } @GetMapping("importTemplate") @SneakyThrows public void importTemplate(HttpServletResponse response) { List<UserExcelVo> list = new ArrayList<>(); list.add(new UserExcelVo().setUserName("zhangSan").setPassword("123456").setRealName("张三").setSex(1).setRole(1).setPhone("12345678901").setAge(24).setBirthDay("2000-01-01")); ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), UserExcelVo.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet(0, "用户信息").build(); excelWriter.write(list, writeSheet); excelWriter.finish(); } @PostMapping("import") public Result<String> importExcel(MultipartFile file) { return Result.ok(userService.importExcel(file)); } } src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java
New file @@ -0,0 +1,42 @@ package com.ycl.jxkg.domain.vo.admin.user; import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.style.ColumnWidth; import lombok.Data; import lombok.experimental.Accessors; /** * @author gonghl */ @Data @Accessors(chain = true) @ColumnWidth(20) public class UserExcelVo { @ExcelProperty("用户名") private String userName; @ExcelIgnore private String password; @ExcelProperty("真实姓名") private String realName; @ExcelProperty("年龄") private Integer age; @ExcelProperty("1.男 2女") private Integer sex; @ExcelProperty("出生日期") private String birthDay; @ExcelProperty("手机号") private String phone; @ExcelProperty("1.学生 2.老师") private Integer role; } src/main/java/com/ycl/jxkg/service/UserService.java
@@ -9,6 +9,7 @@ import com.ycl.jxkg.domain.vo.StudentVO; import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO; import com.github.pagehelper.PageInfo; import org.springframework.web.multipart.MultipartFile; import java.util.List; @@ -165,4 +166,12 @@ * */ void updateStudentPassword(StudentUpdatePwdForm form); /** * 导入excel * * @param file file * @return 结果 */ String importExcel(MultipartFile file); } src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
@@ -1,34 +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.RegisterForm; import com.ycl.jxkg.domain.form.StudentUpdatePwdForm; 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.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.*; @@ -216,4 +220,37 @@ 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() + "条数据"; } }