|
|
@@ -8,6 +8,8 @@ import javax.validation.Validator;
|
|
|
import com.ruoyi.logistics.config.GemaiyunSmsConfig;
|
|
|
import com.ruoyi.logistics.util.GemaiyunSmsUtil;
|
|
|
import com.ruoyi.logistics.util.PasswordUtils;
|
|
|
+
|
|
|
+import com.ruoyi.common.core.utils.DateUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
@@ -21,11 +23,14 @@ import com.ruoyi.common.core.utils.StringUtils;
|
|
|
import com.ruoyi.common.core.utils.bean.BeanValidators;
|
|
|
import com.ruoyi.common.datascope.annotation.DataScope;
|
|
|
import com.ruoyi.common.security.utils.SecurityUtils;
|
|
|
+import com.ruoyi.system.api.domain.SysDept;
|
|
|
import com.ruoyi.system.api.domain.SysRole;
|
|
|
import com.ruoyi.system.api.domain.SysUser;
|
|
|
import com.ruoyi.system.domain.SysPost;
|
|
|
import com.ruoyi.system.domain.SysUserPost;
|
|
|
import com.ruoyi.system.domain.SysUserRole;
|
|
|
+import com.ruoyi.system.domain.dto.UserImportDTO;
|
|
|
+import com.ruoyi.system.mapper.SysDeptMapper;
|
|
|
import com.ruoyi.system.mapper.SysPostMapper;
|
|
|
import com.ruoyi.system.mapper.SysRoleMapper;
|
|
|
import com.ruoyi.system.mapper.SysUserMapper;
|
|
|
@@ -66,6 +71,9 @@ public class SysUserServiceImpl implements ISysUserService
|
|
|
@Autowired
|
|
|
private ISysDeptService deptService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private SysDeptMapper deptMapper;
|
|
|
+
|
|
|
@Autowired
|
|
|
protected Validator validator;
|
|
|
|
|
|
@@ -594,4 +602,94 @@ public class SysUserServiceImpl implements ISysUserService
|
|
|
public SysUser selectUserByOpenId(SysUser sysUser) {
|
|
|
return userMapper.selectUserByOpenId(sysUser.getUserName(), sysUser.getOpenId());
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 导入用户数据(使用导入对象)
|
|
|
+ *
|
|
|
+ * @param userImportList 用户导入数据列表
|
|
|
+ * @param operName 操作用户
|
|
|
+ * @return 结果
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public String importUserFromDTO(List<UserImportDTO> userImportList, String operName) {
|
|
|
+ if (StringUtils.isNull(userImportList) || userImportList.size() == 0) {
|
|
|
+ throw new ServiceException("导入用户数据不能为空!");
|
|
|
+ }
|
|
|
+
|
|
|
+ int successNum = 0;
|
|
|
+ int failureNum = 0;
|
|
|
+ StringBuilder successMsg = new StringBuilder();
|
|
|
+ StringBuilder failureMsg = new StringBuilder();
|
|
|
+
|
|
|
+ for (UserImportDTO importDTO : userImportList) {
|
|
|
+ try {
|
|
|
+ // 将导入对象转换为 SysUser 实体对象
|
|
|
+ SysUser user = convertToSysUser(importDTO, operName);
|
|
|
+
|
|
|
+ // 根据组织编码和名称查询部门 ID
|
|
|
+ SysDept deptId = deptMapper.selectDeptByInfo(importDTO.getDeptCode(), importDTO.getDeptName());
|
|
|
+ if (StringUtils.isNull(deptId)) {
|
|
|
+ throw new ServiceException("部门不存在:" + importDTO.getDeptName());
|
|
|
+ }
|
|
|
+ user.setDeptId(deptId.getDeptId());
|
|
|
+
|
|
|
+ // 验证是否存在这个用户
|
|
|
+ SysUser u = userMapper.selectUserByUserName(user.getUserName());
|
|
|
+ if (StringUtils.isNull(u)) {
|
|
|
+ BeanValidators.validateWithException(validator, user);
|
|
|
+ deptService.checkDeptDataScope(user.getDeptId());
|
|
|
+ user.setCreateBy(operName);
|
|
|
+
|
|
|
+ // 处理角色关联
|
|
|
+ if (StringUtils.isNotEmpty(importDTO.getRoleName())) {
|
|
|
+ SysRole roleId = roleMapper.checkRoleNameUnique(importDTO.getRoleName());
|
|
|
+ if (StringUtils.isNotNull(roleId)) {
|
|
|
+ user.setRoleIds(new Long[]{roleId.getRoleId()});
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ this.insertUser(user);
|
|
|
+
|
|
|
+
|
|
|
+ successNum++;
|
|
|
+ successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功");
|
|
|
+ } else {
|
|
|
+ failureNum++;
|
|
|
+ failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在");
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ failureNum++;
|
|
|
+ String msg = "<br/>" + failureNum + "、账号 " + importDTO.getPhonenumber() + " 导入失败:";
|
|
|
+ failureMsg.append(msg + e.getMessage());
|
|
|
+ log.error(msg, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (failureNum > 0) {
|
|
|
+ failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
|
|
|
+ throw new ServiceException(failureMsg.toString());
|
|
|
+ } else {
|
|
|
+ successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
|
|
|
+ }
|
|
|
+ return successMsg.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 将 UserImportDTO 转换为 SysUser 实体
|
|
|
+ *
|
|
|
+ * @param importDTO 导入对象
|
|
|
+ * @param operName 操作用户名
|
|
|
+ * @return SysUser 实体
|
|
|
+ */
|
|
|
+ private SysUser convertToSysUser(UserImportDTO importDTO, String operName)
|
|
|
+ {
|
|
|
+ SysUser user = new SysUser();
|
|
|
+ user.setUserName(importDTO.getEmployeeCode());
|
|
|
+ user.setNickName(importDTO.getNickName());
|
|
|
+ user.setPhonenumber(importDTO.getPhonenumber());
|
|
|
+ user.setEmail(importDTO.getEmail());
|
|
|
+ user.setCreateBy(operName);
|
|
|
+ user.setCreateTime(DateUtils.getNowDate());
|
|
|
+ return user;
|
|
|
+ }
|
|
|
}
|