|
|
|
@ -4,6 +4,7 @@ import java.util.ArrayList; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
import javax.validation.Validator; |
|
|
|
|
|
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
@ -27,12 +28,11 @@ import com.psdc.service.ISysUserService; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 用户 业务层处理 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @author |
|
|
|
|
*/ |
|
|
|
|
@Service |
|
|
|
|
public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
{ |
|
|
|
|
public class SysUserServiceImpl implements ISysUserService { |
|
|
|
|
private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
@ -52,76 +52,72 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 根据条件分页查询用户列表 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 用户信息集合信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public List<SysUser> selectUserList(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public List<SysUser> selectUserList(SysUser user) { |
|
|
|
|
if (null == user){ |
|
|
|
|
return userMapper.selectUserList2(); |
|
|
|
|
} |
|
|
|
|
return userMapper.selectUserList(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 根据条件分页查询已分配用户角色列表 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 用户信息集合信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public List<SysUser> selectAllocatedList(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public List<SysUser> selectAllocatedList(SysUser user) { |
|
|
|
|
return userMapper.selectAllocatedList(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 根据条件分页查询未分配用户角色列表 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 用户信息集合信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public List<SysUser> selectUnallocatedList(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public List<SysUser> selectUnallocatedList(SysUser user) { |
|
|
|
|
return userMapper.selectUnallocatedList(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 通过用户名查询用户 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userName 用户名 |
|
|
|
|
* @return 用户对象信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public SysUser selectUserByUserName(String userName) |
|
|
|
|
{ |
|
|
|
|
public SysUser selectUserByUserName(String userName) { |
|
|
|
|
return userMapper.selectUserByUserName(userName); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 通过用户ID查询用户 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* @return 用户对象信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public SysUser selectUserById(Long userId) |
|
|
|
|
{ |
|
|
|
|
public SysUser selectUserById(Long userId) { |
|
|
|
|
return userMapper.selectUserById(userId); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询用户所属角色组 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userName 用户名 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public String selectUserRoleGroup(String userName) |
|
|
|
|
{ |
|
|
|
|
public String selectUserRoleGroup(String userName) { |
|
|
|
|
List<SysRole> list = roleMapper.selectRolesByUserName(userName); |
|
|
|
|
if (CollectionUtils.isEmpty(list)) |
|
|
|
|
{ |
|
|
|
|
if (CollectionUtils.isEmpty(list)) { |
|
|
|
|
return StringUtils.EMPTY; |
|
|
|
|
} |
|
|
|
|
return list.stream().map(SysRole::getRoleName).collect(Collectors.joining(",")); |
|
|
|
@ -130,17 +126,15 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 校验用户名称是否唯一 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean checkUserNameUnique(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public boolean checkUserNameUnique(SysUser user) { |
|
|
|
|
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); |
|
|
|
|
SysUser info = userMapper.checkUserNameUnique(user.getUserName()); |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { |
|
|
|
|
return UserConstants.NOT_UNIQUE; |
|
|
|
|
} |
|
|
|
|
return UserConstants.UNIQUE; |
|
|
|
@ -153,12 +147,10 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean checkPhoneUnique(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public boolean checkPhoneUnique(SysUser user) { |
|
|
|
|
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); |
|
|
|
|
SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { |
|
|
|
|
return UserConstants.NOT_UNIQUE; |
|
|
|
|
} |
|
|
|
|
return UserConstants.UNIQUE; |
|
|
|
@ -171,12 +163,10 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
* @return |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean checkEmailUnique(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public boolean checkEmailUnique(SysUser user) { |
|
|
|
|
Long userId = StringUtils.isNull(user.getUserId()) ? -1L : user.getUserId(); |
|
|
|
|
SysUser info = userMapper.checkEmailUnique(user.getEmail()); |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNotNull(info) && info.getUserId().longValue() != userId.longValue()) { |
|
|
|
|
return UserConstants.NOT_UNIQUE; |
|
|
|
|
} |
|
|
|
|
return UserConstants.UNIQUE; |
|
|
|
@ -184,33 +174,28 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 校验用户是否允许操作 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void checkUserAllowed(SysUser user) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) |
|
|
|
|
{ |
|
|
|
|
public void checkUserAllowed(SysUser user) { |
|
|
|
|
if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) { |
|
|
|
|
throw new ServiceException("不允许操作超级管理员用户"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 校验用户是否有数据权限 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userId 用户id |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public void checkUserDataScope(Long userId) |
|
|
|
|
{ |
|
|
|
|
if (!SysUser.isAdmin(SecurityUtils.getUserId())) |
|
|
|
|
{ |
|
|
|
|
public void checkUserDataScope(Long userId) { |
|
|
|
|
if (!SysUser.isAdmin(SecurityUtils.getUserId())) { |
|
|
|
|
SysUser user = new SysUser(); |
|
|
|
|
user.setUserId(userId); |
|
|
|
|
List<SysUser> users = SpringUtils.getAopProxy(this).selectUserList(user); |
|
|
|
|
if (StringUtils.isEmpty(users)) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isEmpty(users)) { |
|
|
|
|
throw new ServiceException("没有权限访问用户数据!"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -218,14 +203,13 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 新增保存用户信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public int insertUser(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public int insertUser(SysUser user) { |
|
|
|
|
// 新增用户信息
|
|
|
|
|
int rows = userMapper.insertUser(user); |
|
|
|
|
// 新增用户与角色管理
|
|
|
|
@ -235,26 +219,24 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 注册用户信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean registerUser(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public boolean registerUser(SysUser user) { |
|
|
|
|
return userMapper.insertUser(user) > 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改保存用户信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public int updateUser(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public int updateUser(SysUser user) { |
|
|
|
|
Long userId = user.getUserId(); |
|
|
|
|
// 删除用户与角色关联
|
|
|
|
|
userRoleMapper.deleteUserRoleByUserId(userId); |
|
|
|
@ -265,105 +247,95 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 用户授权角色 |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* @param roleIds 角色组 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public void insertUserAuth(Long userId, Long[] roleIds) |
|
|
|
|
{ |
|
|
|
|
public void insertUserAuth(Long userId, Long[] roleIds) { |
|
|
|
|
userRoleMapper.deleteUserRoleByUserId(userId); |
|
|
|
|
insertUserRole(userId, roleIds); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改用户状态 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public int updateUserStatus(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public int updateUserStatus(SysUser user) { |
|
|
|
|
return userMapper.updateUser(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改用户基本信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public int updateUserProfile(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public int updateUserProfile(SysUser user) { |
|
|
|
|
return userMapper.updateUser(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改用户头像 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userName 用户名 |
|
|
|
|
* @param avatar 头像地址 |
|
|
|
|
* @param avatar 头像地址 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public boolean updateUserAvatar(String userName, String avatar) |
|
|
|
|
{ |
|
|
|
|
public boolean updateUserAvatar(String userName, String avatar) { |
|
|
|
|
return userMapper.updateUserAvatar(userName, avatar) > 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重置用户密码 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户信息 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public int resetPwd(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public int resetPwd(SysUser user) { |
|
|
|
|
return userMapper.updateUser(user); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 重置用户密码 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userName 用户名 |
|
|
|
|
* @param password 密码 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public int resetUserPwd(String userName, String password) |
|
|
|
|
{ |
|
|
|
|
public int resetUserPwd(String userName, String password) { |
|
|
|
|
return userMapper.resetUserPwd(userName, password); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 新增用户角色信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param user 用户对象 |
|
|
|
|
*/ |
|
|
|
|
public void insertUserRole(SysUser user) |
|
|
|
|
{ |
|
|
|
|
public void insertUserRole(SysUser user) { |
|
|
|
|
this.insertUserRole(user.getUserId(), user.getRoleIds()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 新增用户角色信息 |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* @param roleIds 角色组 |
|
|
|
|
*/ |
|
|
|
|
public void insertUserRole(Long userId, Long[] roleIds) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNotEmpty(roleIds)) |
|
|
|
|
{ |
|
|
|
|
public void insertUserRole(Long userId, Long[] roleIds) { |
|
|
|
|
if (StringUtils.isNotEmpty(roleIds)) { |
|
|
|
|
// 新增用户与角色管理
|
|
|
|
|
List<SysUserRole> list = new ArrayList<SysUserRole>(roleIds.length); |
|
|
|
|
for (Long roleId : roleIds) |
|
|
|
|
{ |
|
|
|
|
for (Long roleId : roleIds) { |
|
|
|
|
SysUserRole ur = new SysUserRole(); |
|
|
|
|
ur.setUserId(userId); |
|
|
|
|
ur.setRoleId(roleId); |
|
|
|
@ -375,14 +347,13 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 通过用户ID删除用户 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userId 用户ID |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public int deleteUserById(Long userId) |
|
|
|
|
{ |
|
|
|
|
public int deleteUserById(Long userId) { |
|
|
|
|
// 删除用户与角色关联
|
|
|
|
|
userRoleMapper.deleteUserRoleByUserId(userId); |
|
|
|
|
return userMapper.deleteUserById(userId); |
|
|
|
@ -390,16 +361,14 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 批量删除用户信息 |
|
|
|
|
* |
|
|
|
|
* |
|
|
|
|
* @param userIds 需要删除的用户ID |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
@Transactional |
|
|
|
|
public int deleteUserByIds(Long[] userIds) |
|
|
|
|
{ |
|
|
|
|
for (Long userId : userIds) |
|
|
|
|
{ |
|
|
|
|
public int deleteUserByIds(Long[] userIds) { |
|
|
|
|
for (Long userId : userIds) { |
|
|
|
|
checkUserAllowed(new SysUser(userId)); |
|
|
|
|
checkUserDataScope(userId); |
|
|
|
|
} |
|
|
|
@ -410,17 +379,15 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 导入用户数据 |
|
|
|
|
* |
|
|
|
|
* @param userList 用户数据列表 |
|
|
|
|
* |
|
|
|
|
* @param userList 用户数据列表 |
|
|
|
|
* @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 |
|
|
|
|
* @param operName 操作用户 |
|
|
|
|
* @param operName 操作用户 |
|
|
|
|
* @return 结果 |
|
|
|
|
*/ |
|
|
|
|
@Override |
|
|
|
|
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNull(userList) || userList.size() == 0) |
|
|
|
|
{ |
|
|
|
|
public String importUser(List<SysUser> userList, Boolean isUpdateSupport, String operName) { |
|
|
|
|
if (StringUtils.isNull(userList) || userList.size() == 0) { |
|
|
|
|
throw new ServiceException("导入用户数据不能为空!"); |
|
|
|
|
} |
|
|
|
|
int successNum = 0; |
|
|
|
@ -428,23 +395,18 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
StringBuilder successMsg = new StringBuilder(); |
|
|
|
|
StringBuilder failureMsg = new StringBuilder(); |
|
|
|
|
String password = configService.selectConfigByKey("sys.user.initPassword"); |
|
|
|
|
for (SysUser user : userList) |
|
|
|
|
{ |
|
|
|
|
try |
|
|
|
|
{ |
|
|
|
|
for (SysUser user : userList) { |
|
|
|
|
try { |
|
|
|
|
// 验证是否存在这个用户
|
|
|
|
|
SysUser u = userMapper.selectUserByUserName(user.getUserName()); |
|
|
|
|
if (StringUtils.isNull(u)) |
|
|
|
|
{ |
|
|
|
|
if (StringUtils.isNull(u)) { |
|
|
|
|
BeanValidators.validateWithException(validator, user); |
|
|
|
|
user.setPassword(SecurityUtils.encryptPassword(password)); |
|
|
|
|
user.setCreateBy(operName); |
|
|
|
|
this.insertUser(user); |
|
|
|
|
successNum++; |
|
|
|
|
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 导入成功"); |
|
|
|
|
} |
|
|
|
|
else if (isUpdateSupport) |
|
|
|
|
{ |
|
|
|
|
} else if (isUpdateSupport) { |
|
|
|
|
BeanValidators.validateWithException(validator, user); |
|
|
|
|
checkUserAllowed(user); |
|
|
|
|
checkUserDataScope(user.getUserId()); |
|
|
|
@ -452,28 +414,21 @@ public class SysUserServiceImpl implements ISysUserService |
|
|
|
|
this.updateUser(user); |
|
|
|
|
successNum++; |
|
|
|
|
successMsg.append("<br/>" + successNum + "、账号 " + user.getUserName() + " 更新成功"); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
} else { |
|
|
|
|
failureNum++; |
|
|
|
|
failureMsg.append("<br/>" + failureNum + "、账号 " + user.getUserName() + " 已存在"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
catch (Exception e) |
|
|
|
|
{ |
|
|
|
|
} catch (Exception e) { |
|
|
|
|
failureNum++; |
|
|
|
|
String msg = "<br/>" + failureNum + "、账号 " + user.getUserName() + " 导入失败:"; |
|
|
|
|
failureMsg.append(msg + e.getMessage()); |
|
|
|
|
log.error(msg, e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
if (failureNum > 0) |
|
|
|
|
{ |
|
|
|
|
if (failureNum > 0) { |
|
|
|
|
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:"); |
|
|
|
|
throw new ServiceException(failureMsg.toString()); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
{ |
|
|
|
|
} else { |
|
|
|
|
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:"); |
|
|
|
|
} |
|
|
|
|
return successMsg.toString(); |
|
|
|
|