| | |
| | | |
| | | import cn.hutool.core.codec.Base64; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.alibaba.excel.EasyExcel; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.gkhy.hazmat.common.annotation.DataScope; |
| | | import com.gkhy.hazmat.common.api.CommonPage; |
| | | import com.gkhy.hazmat.common.api.CommonResult; |
| | | import com.gkhy.hazmat.common.constant.CacheConstant; |
| | | import com.gkhy.hazmat.common.constant.UserConstant; |
| | | import com.gkhy.hazmat.common.domain.entity.SysUser; |
| | | import com.gkhy.hazmat.common.enums.UserStatus; |
| | | import com.gkhy.hazmat.common.enums.UserTypeEnum; |
| | | import com.gkhy.hazmat.common.exception.ApiException; |
| | | import com.gkhy.hazmat.common.utils.PageUtils; |
| | | import com.gkhy.hazmat.common.utils.RedisUtils; |
| | | import com.gkhy.hazmat.common.utils.SecurityUtils; |
| | | import com.gkhy.hazmat.common.utils.StringUtils; |
| | | import com.gkhy.hazmat.common.utils.*; |
| | | import com.gkhy.hazmat.system.domain.SysUserRole; |
| | | import com.gkhy.hazmat.system.mapper.SysUserMapper; |
| | | import com.gkhy.hazmat.system.mapper.SysUserRoleMapper; |
| | |
| | | import com.gkhy.hazmat.system.service.SysUserService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.validation.Validator; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private SysUserRoleMapper roleMapper; |
| | | |
| | | |
| | | |
| | | @Override |
| | | public CommonPage<SysUser> selectUserList(SysUser user) { |
| | |
| | | user.setCreateBy(SecurityUtils.getUsername()); |
| | | user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword()))); |
| | | int row=baseMapper.insert(user); |
| | | SysUserRole ur = new SysUserRole(); |
| | | ur.setUserId(user.getId()); |
| | | ur.setRoleId(100L); |
| | | roleMapper.insert(ur); |
| | | if(row<1){ |
| | | throw new ApiException("新增用户失败"); |
| | | } |
| | |
| | | insertUserRole(userId, roleIds); |
| | | } |
| | | |
| | | @Override |
| | | public Integer importUserExcel(MultipartFile file) throws IOException { |
| | | if(ObjectUtil.isEmpty(file)){ |
| | | throw new ApiException("上传文件不能为空"); |
| | | } |
| | | |
| | | SysUser currentUser = SecurityUtils.getLoginUser().getUser(); |
| | | |
| | | List<Map<Integer, String>> dataList = EasyExcel.read(file.getInputStream()) |
| | | .sheet() |
| | | .doReadSync(); |
| | | |
| | | if(dataList == null || dataList.isEmpty()){ |
| | | throw new ApiException("导入数据不能为空"); |
| | | } |
| | | |
| | | List<SysUser> userList = new ArrayList<>(); |
| | | int rowIndex = 1; |
| | | |
| | | for(Map<Integer, String> data : dataList){ |
| | | rowIndex++; |
| | | |
| | | String username = data.get(0); |
| | | String name = data.get(1); |
| | | String sexStr = data.get(2); |
| | | String password = data.get(3); |
| | | String phone = data.get(4); |
| | | |
| | | validateUserData(username, name, sexStr, password, phone, rowIndex); |
| | | |
| | | if(!checkUsernameUnique(new SysUser().setUsername(username))){ |
| | | throw new ApiException("第" + rowIndex + "行登录账号[" + username + "]已存在"); |
| | | } |
| | | |
| | | if(!checkPhoneUnique(new SysUser().setPhone(phone))){ |
| | | throw new ApiException("第" + rowIndex + "行手机号[" + phone + "]已存在"); |
| | | } |
| | | |
| | | SysUser user = new SysUser(); |
| | | user.setUsername(username.trim()); |
| | | user.setName(name.trim()); |
| | | user.setPhone(phone.trim()); |
| | | |
| | | Integer sex = parseSex(sexStr, rowIndex); |
| | | user.setSex(sex); |
| | | |
| | | user.setUserType(UserTypeEnum.NORMAL_USER.getCode()); |
| | | user.setStatus(UserStatus.OK.getCode()); |
| | | |
| | | if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode()) |
| | | && !currentUser.getUserType().equals(UserTypeEnum.CHECK_USER.getCode())){ |
| | | user.setCompanyId(currentUser.getCompanyId()); |
| | | } |
| | | |
| | | String encryptedPassword = SecurityUtils.encryptPassword(password.trim()); |
| | | user.setPassword(encryptedPassword); |
| | | user.setCreateBy(currentUser.getUsername()); |
| | | |
| | | userList.add(user); |
| | | } |
| | | |
| | | if(!userList.isEmpty()){ |
| | | if(userList.size() > 100){ |
| | | int pageSize = 100; |
| | | while (true){ |
| | | List<SysUser> users = userList.subList(0, Math.min(userList.size(), pageSize)); |
| | | saveBatch(users); |
| | | |
| | | for(SysUser savedUser : users){ |
| | | SysUserRole ur = new SysUserRole(); |
| | | ur.setUserId(savedUser.getId()); |
| | | ur.setRoleId(100L); |
| | | roleMapper.insert(ur); |
| | | } |
| | | |
| | | if(users.size() < pageSize){ |
| | | break; |
| | | } |
| | | userList = userList.subList(pageSize, userList.size()); |
| | | if(userList.isEmpty()){ |
| | | break; |
| | | } |
| | | } |
| | | }else{ |
| | | saveBatch(userList); |
| | | |
| | | for(SysUser savedUser : userList){ |
| | | SysUserRole ur = new SysUserRole(); |
| | | ur.setUserId(savedUser.getId()); |
| | | ur.setRoleId(100L); |
| | | roleMapper.insert(ur); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return userList.size(); |
| | | } |
| | | |
| | | private void validateUserData(String username, String name, String sexStr, String password, String phone, int rowIndex){ |
| | | if(StringUtils.isBlank(username)){ |
| | | throw new ApiException("第" + rowIndex + "行登录账号为空"); |
| | | } |
| | | if(StringUtils.isBlank(name)){ |
| | | throw new ApiException("第" + rowIndex + "用户名称为空"); |
| | | } |
| | | if(StringUtils.isBlank(password)){ |
| | | throw new ApiException("第" + rowIndex + "行密码为空"); |
| | | } |
| | | if(StringUtils.isBlank(phone)){ |
| | | throw new ApiException("第" + rowIndex + "行手机号码为空"); |
| | | } |
| | | |
| | | if(phone.length() != 11){ |
| | | throw new ApiException("第" + rowIndex + "行手机号长度不正确"); |
| | | } |
| | | if(!phone.matches("^[1][3,4,5,6,7,8,9][0-9]{9}$")){ |
| | | throw new ApiException("第" + rowIndex + "行手机号码格式有误"); |
| | | } |
| | | } |
| | | private Integer parseSex(String sexStr, int rowIndex){ |
| | | if(StringUtils.isBlank(sexStr)){ |
| | | return 2; |
| | | } |
| | | |
| | | String trimmedSex = sexStr.trim(); |
| | | if("男".equals(trimmedSex) || "0".equals(trimmedSex)){ |
| | | return 0; |
| | | }else if("女".equals(trimmedSex) || "1".equals(trimmedSex)){ |
| | | return 1; |
| | | }else{ |
| | | return 2; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 新增用户角色信息 |
| | | * |