ycl-common/src/main/java/com/ycl/controller/user/UmsAdminController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/dto/user/UmsAdminParamDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/dto/user/UmsUserDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/dto/user/UmsUserDto1.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ycl-common/src/main/java/com/ycl/controller/user/UmsAdminController.java
@@ -1,14 +1,26 @@ package com.ycl.controller.user; import cn.hutool.core.collection.CollUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.ycl.annotation.LogSave; import com.ycl.api.CommonResult; import com.ycl.bo.AdminUserDetails; import com.ycl.controller.BaseController; import com.ycl.dto.*; import com.ycl.dto.user.UmsAdminParamDto; import com.ycl.dto.user.UmsUserDto1; import com.ycl.entity.depart.UmsDepart; import com.ycl.entity.dict.DataDictionary; import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsRole; import com.ycl.mapper.depart.UmsDepartMapper; import com.ycl.mapper.dict.DataDictionaryMapper; import com.ycl.mapper.user.UmsAdminMapper; import com.ycl.mapper.user.UmsRoleMapper; import com.ycl.service.redis.RedisService; import com.ycl.service.user.UmsAdminService; import com.ycl.service.user.UmsMenuService; @@ -32,9 +44,7 @@ import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.security.Principal; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; import java.util.stream.Collectors; /** @@ -138,15 +148,90 @@ @ApiOperation("用户导出") @PostMapping("/export") public void exportUser(HttpServletResponse response) { List<UmsUserDto> umsUserDtos = adminService.userExp(); List<UmsUserDto1> umsUserDtos = adminService.userExp(); String sheetName = "用户导出"; EasyExcelUtils.export(response, sheetName, UmsUserDto.class, umsUserDtos); EasyExcelUtils.export(response, sheetName, UmsUserDto1.class, umsUserDtos); } @Resource private UmsRoleMapper umsRoleMapper; @Resource private UmsAdminMapper umsAdminMapper; @Resource private DataDictionaryMapper dataDictionaryMapper; @Resource private UmsDepartMapper umsDepartMapper; @ApiOperation("用户导入") @PostMapping("/import") public CommonResult importUser(MultipartFile file) throws IOException { EasyExcelUtils.importDepartFile(file); EasyExcel.read(file.getInputStream()) .head(UmsAdminParamDto.class) .registerReadListener(new ReadListener<UmsAdminParamDto>() { @Override public void invoke(UmsAdminParamDto item, AnalysisContext analysisContext) { UmsAdminParam param = new UmsAdminParam(); param.setUsername(item.getUsername()); param.setPassword(item.getPassword()); param.setNickName(item.getNickName()); String sex = item.getSex(); if (sex.equals("男")){ param.setSex((byte) 1); } else if (sex.equals("女")) { param.setSex((byte) 0); }else { throw new RuntimeException("性别输入有误"); } String isDy = item.getIsDy(); if (isDy.equals("是")){ param.setSex((byte) 1); } else if (isDy.equals("否")) { param.setSex((byte) 0); }else { throw new RuntimeException("党员输入有误"); } param.setMobile(item.getMobile()); param.setEmail(item.getEmail()); String role = item.getRole(); UmsRole umsRole = umsRoleMapper.selectOne(new LambdaQueryWrapper<UmsRole>().eq(UmsRole::getName, role)); if (Objects.isNull(umsRole)){ param.setRoleIds(null); }else { List list = new ArrayList<>(); list.add(umsRole.getId()); param.setRoleIds(list); } String userType = item.getUserType(); DataDictionary dataDictionary = dataDictionaryMapper.selectOne(new LambdaQueryWrapper<DataDictionary>().eq(DataDictionary::getName, userType)); if (Objects.isNull(dataDictionary)){ throw new RuntimeException("用户类型不存在"); }else { param.setUserType(dataDictionary.getId().intValue()); } String department = item.getDepartment(); UmsDepart umsDepart = umsDepartMapper.selectOne(new LambdaQueryWrapper<UmsDepart>().eq(UmsDepart::getDepartName, department)); if (Objects.isNull(umsDepart)){ throw new RuntimeException("部门不存在"); }else { param.setDepartmentId(umsDepart.getId()); } param.setJobTitle(item.getJobTitle()); adminService.importExcl(param); } @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }).sheet().doRead(); return CommonResult.success(true, "导入成功"); } ycl-common/src/main/java/com/ycl/dto/user/UmsAdminParamDto.java
New file @@ -0,0 +1,47 @@ package com.ycl.dto.user; import com.alibaba.excel.annotation.ExcelProperty; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor @Builder public class UmsAdminParamDto { @ExcelProperty(value = "用户名", index = 0) private String username; @ExcelProperty(value = "密码", index = 1) private String password; @ExcelProperty(value = "真实姓名", index = 2) private String nickName; @ExcelProperty(value = "性别,输入:男,女", index = 3) private String sex; @ExcelProperty(value = "党员,输入:是,否",index = 4) private String isDy; @ExcelProperty(value = "手机号码", index = 5) private String mobile; @ExcelProperty(value = "邮箱", index = 6) private String email; @ExcelProperty(value = "角色", index = 7) private String role; @ExcelProperty(value = "用户类型", index = 8) private String userType; @ExcelProperty(value = "所属部门", index = 9) private String department; @ExcelProperty(value = "当前职务", index = 10) private String jobTitle; } ycl-common/src/main/java/com/ycl/dto/user/UmsUserDto.java
File was renamed from ycl-common/src/main/java/com/ycl/dto/UmsUserDto.java @@ -1,4 +1,4 @@ package com.ycl.dto; package com.ycl.dto.user; import com.alibaba.excel.annotation.ExcelProperty; import com.ycl.entity.depart.UmsDepart; ycl-common/src/main/java/com/ycl/dto/user/UmsUserDto1.javacopy from ycl-common/src/main/java/com/ycl/dto/UmsUserDto.java copy to ycl-common/src/main/java/com/ycl/dto/user/UmsUserDto1.java
File was copied from ycl-common/src/main/java/com/ycl/dto/UmsUserDto.java @@ -1,22 +1,16 @@ package com.ycl.dto; package com.ycl.dto.user; import com.alibaba.excel.annotation.ExcelProperty; import com.ycl.entity.depart.UmsDepart; import com.ycl.entity.user.UmsRole; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; import java.util.List; @Data @AllArgsConstructor @NoArgsConstructor @Builder public class UmsUserDto { public class UmsUserDto1 { @ExcelProperty(value = "用户ID", index = 0) private Long id; @@ -30,17 +24,17 @@ private String mobile; @ExcelProperty(value = "所属角色", index = 4) private List<UmsRole> roles; private String roles; @ExcelProperty(value = "所属部门", index = 5) private List<UmsDepart> depart; private String depart; @ExcelProperty(value = "所属职务", index = 6) private String jobTitle; @ExcelProperty(value = "创建时间", index = 7) private Date createTime; private String createTime; @ExcelProperty(value = "是否启用", index = 8) private Integer status; private String status; } ycl-common/src/main/java/com/ycl/mapper/user/UmsAdminMapper.java
@@ -24,4 +24,6 @@ Page<UmsAdmin> selectCondPage(Page<UmsAdmin> page,UmsAdmin umsAdmin); List<UmsAdmin> selectToExp(); } ycl-common/src/main/java/com/ycl/service/user/UmsAdminService.java
@@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ycl.dto.UmsAdminParam; import com.ycl.dto.UmsUserDto; import com.ycl.dto.user.UmsUserDto1; import com.ycl.dto.UpdateAdminPasswordParam; import com.ycl.entity.user.UmsAdmin; import com.ycl.entity.user.UmsMenu; @@ -29,6 +29,8 @@ * 注册功能 */ UmsAdmin register(UmsAdminParam umsAdminParam); void importExcl(UmsAdminParam umsAdminParam); /** * 登录功能 @@ -97,7 +99,7 @@ */ IPage<UmsAdmin> pageUser(UserVO.PageUserVO pageUserVO); List<UmsUserDto> userExp(); List<UmsUserDto1> userExp(); /** * 批量删除用户 ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -8,8 +8,9 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.bo.AdminUserDetails; import com.ycl.dto.UmsAdminParam; import com.ycl.dto.UmsUserDto; import com.ycl.dto.user.UmsUserDto1; import com.ycl.dto.UpdateAdminPasswordParam; import com.ycl.entity.depart.UmsDepart; import com.ycl.entity.user.*; import com.ycl.exception.ApiException; import com.ycl.exception.Asserts; @@ -43,10 +44,11 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.function.Function; import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -103,7 +105,7 @@ BeanUtils.copyProperties(umsAdminParam, umsAdmin); umsAdmin.setCreateTime(new Date()); umsAdmin.setStatus(1); umsAdmin.setMacAddress(MacUtils.getMac()); // umsAdmin.setMacAddress(MacUtils.getMac()); //查询是否有相同用户名的用户 QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername()); @@ -119,6 +121,57 @@ } if(umsAdmin.getUsername().equals(umsAdmin.getPassword())){ Asserts.fail("密码不能和登录名完全一致"); } umsAdmin.setPassword(encodePassword); baseMapper.insert(umsAdmin); //添加角色授权 List<Long> ids = umsAdminParam.getRoleIds(); if (!ids.isEmpty()) { List<UmsAdminRoleRelation> roleIds = new ArrayList<>(); for (Long id : ids) { UmsAdminRoleRelation urr = new UmsAdminRoleRelation(); urr.setAdminId(umsAdmin.getId()); urr.setRoleId(id); roleIds.add(urr); } umsAdminRoleRelationService.saveBatch(roleIds); } //添加部门 UmsDepartManage departManage = new UmsDepartManage(); departManage.setUserId(umsAdmin.getId()); departManage.setDepartId(umsAdminParam.getDepartmentId()); departManage.setCreateTime(new Date()); departManage.setUpdateTime(new Date()); umsDepartManageMapper.insert(departManage); baseMapper.updateById(umsAdmin); return umsAdmin; } @Override public void importExcl(UmsAdminParam umsAdminParam) { UmsAdmin umsAdmin = new UmsAdmin(); BeanUtils.copyProperties(umsAdminParam, umsAdmin); umsAdmin.setCreateTime(new Date()); umsAdmin.setStatus(1); umsAdmin.setMacAddress(MacUtils.getMac()); //查询是否有相同用户名的用户 QueryWrapper<UmsAdmin> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(UmsAdmin::getUsername, umsAdmin.getUsername()); List<UmsAdmin> umsAdminList = list(wrapper); if (umsAdminList.size() > 0) { throw new RuntimeException("用户已存在"); } //将密码进行加密操作 String encodePassword = passwordEncoder.encode(umsAdmin.getPassword()); if ( !umsAdmin.getPassword().matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$")) { Asserts.fail("密码长度8到16位且密码中的字符必须包含字母(大写或者小写)和必须包含数字,不能包含空格"); } if(umsAdmin.getUsername().equals(umsAdmin.getPassword())){ Asserts.fail("密码不能和登录名完全一致"); } umsAdmin.setPassword(encodePassword); baseMapper.insert(umsAdmin); @@ -169,7 +222,6 @@ umsDepartManageMapper.insert(departManage); baseMapper.updateById(umsAdmin); return umsAdmin; } @Override @@ -386,21 +438,50 @@ } @Override public List<UmsUserDto> userExp() { List<UmsAdmin> umsAdmins = baseMapper.selectList(null); List<UmsUserDto> res = umsAdmins .stream() public List<UmsUserDto1> userExp() { List<UmsAdmin> umsAdmins = baseMapper.selectToExp(); List<UmsUserDto1> res = umsAdmins.stream() .map(item -> { UmsUserDto res1 = new UmsUserDto(); UmsUserDto1 res1 = new UmsUserDto1(); res1.setId(item.getId()); res1.setUsername(item.getUsername()); res1.setNickName(item.getNickName()); res1.setMobile(item.getMobile()); res1.setRoles(item.getRoles()); res1.setDepart(item.getDepart()); StringBuffer roleStrBuffer = new StringBuffer(); List<UmsRole> roles = item.getRoles(); roles.forEach(new Consumer<UmsRole>() { @Override public void accept(UmsRole o) { roleStrBuffer.append(o.getName()); roleStrBuffer.append(","); } }); roleStrBuffer.deleteCharAt(roleStrBuffer.length()-1); res1.setRoles(roleStrBuffer.toString()); StringBuffer departStrBuffer = new StringBuffer(); List<UmsDepart> departs = item.getDepart(); departs.forEach(new Consumer<UmsDepart>() { @Override public void accept(UmsDepart o) { departStrBuffer.append(o.getDepartName()); departStrBuffer.append(","); } }); departStrBuffer.deleteCharAt(departStrBuffer.length()-1); res1.setDepart(departStrBuffer.toString()); res1.setJobTitle(item.getJobTitle()); res1.setCreateTime(item.getCreateTime()); res1.setStatus(item.getStatus()); Date createTime = item.getCreateTime(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); if (createTime != null){ res1.setCreateTime(sdf.format(createTime)); } Integer status = item.getStatus(); if (status.equals(1)){ res1.setStatus("启用"); }else { res1.setStatus("禁用"); } return res1; }).collect(Collectors.toList()); return res; ycl-common/src/main/resources/mapper/user/UmsAdminMapper.xml
@@ -99,4 +99,23 @@ left join ums_role ur on uarr.role_id = ur.id where ua.id = #{id} </select> <select id="selectToExp" resultType="com.ycl.entity.user.UmsAdmin" resultMap="CondMapResultMap"> SELECT ua.*, ud.id depart_id, ud.depart_name, ud.depart_des, ud.depart_type, ud.parent_id, ud.create_time depat_create_time, ud.update_time depat_update_time, ud.STATUS depart_status, ud.is_deleted FROM ums_admin ua LEFT JOIN ums_depart_manager udm ON ua.id = udm.user_id LEFT JOIN ums_depart ud ON udm.depart_id = ud.id ORDER BY ua.id DESC </select> </mapper>