|  |  |  | 
|---|
|  |  |  | package com.ruoyi.system.service.impl; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import java.util.ArrayList; | 
|---|
|  |  |  | import java.util.Collection; | 
|---|
|  |  |  | import java.util.List; | 
|---|
|  |  |  | import java.util.Map; | 
|---|
|  |  |  | import java.util.stream.Collectors; | 
|---|
|  |  |  | import javax.annotation.PostConstruct; | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import javax.validation.Validator; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.ruoyi.alarm.config.domain.ArdAlarmTypeConfig; | 
|---|
|  |  |  | import com.ruoyi.alarm.config.mapper.ArdAlarmTypeConfigMapper; | 
|---|
|  |  |  | import com.ruoyi.common.constant.CacheConstants; | 
|---|
|  |  |  | import com.ruoyi.common.core.redis.RedisCache; | 
|---|
|  |  |  | import com.ruoyi.common.utils.DateUtils; | 
|---|
|  |  |  | import com.ruoyi.common.utils.DictUtils; | 
|---|
|  |  |  | import com.ruoyi.common.utils.uuid.IdUtils; | 
|---|
|  |  |  | import org.slf4j.Logger; | 
|---|
|  |  |  | import org.slf4j.LoggerFactory; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 用户 业务层处理 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @author ruoyi | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Service | 
|---|
|  |  |  | public class SysUserServiceImpl implements ISysUserService | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public class SysUserServiceImpl implements ISysUserService { | 
|---|
|  |  |  | private static final Logger log = LoggerFactory.getLogger(SysUserServiceImpl.class); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | protected Validator validator; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private RedisCache redisCache; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private ArdAlarmTypeConfigMapper ardAlarmTypeConfigMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据条件分页查询用户列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 用户信息集合信息 | 
|---|
|  |  |  | * 项目启动时,初始化参数到缓存 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | public List<SysUser> selectUserList(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | return userMapper.selectUserList(user); | 
|---|
|  |  |  | @PostConstruct | 
|---|
|  |  |  | public void init() { | 
|---|
|  |  |  | loadingUserCache(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据条件分页查询已分配用户角色列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * 加载用户缓存数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void loadingUserCache() { | 
|---|
|  |  |  | List<SysUser> sysUsers = userMapper.selectUserList(new SysUser()); | 
|---|
|  |  |  | for (SysUser sysUser : sysUsers) { | 
|---|
|  |  |  | redisCache.setCacheObject(getCacheKey(sysUser.getUserId()), sysUser); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 清空用户缓存数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void clearUserCache() { | 
|---|
|  |  |  | Collection<String> keys = redisCache.keys(CacheConstants.USER_LIST_KEY + "*"); | 
|---|
|  |  |  | redisCache.deleteObject(keys); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 清空用户缓存数据按用户ids数组 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userIds 用户id数组 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void clearUserCache(String[] userIds) { | 
|---|
|  |  |  | for (String userId : userIds) { | 
|---|
|  |  |  | redisCache.deleteObject(userId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 重置用户缓存数据 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public void resetUserCache() { | 
|---|
|  |  |  | clearUserCache(); | 
|---|
|  |  |  | loadingUserCache(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据条件分页查询用户列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 用户信息集合信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | public List<SysUser> selectAllocatedList(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public List<SysUser> selectUserList(SysUser user) { | 
|---|
|  |  |  | return userMapper.selectUserList(user); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取App单兵和指挥端用户列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user APP用户信息 | 
|---|
|  |  |  | * @return 用户信息集合信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | //    @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | public List<SysUser> selectAllAppUserList(SysUser user) { | 
|---|
|  |  |  | return userMapper.selectAllAppUserList(user); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据条件分页查询已分配用户角色列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 用户信息集合信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | public List<SysUser> selectAllocatedList(SysUser user) { | 
|---|
|  |  |  | return userMapper.selectAllocatedList(user); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 根据条件分页查询未分配用户角色列表 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 用户信息集合信息 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @DataScope(deptAlias = "d", userAlias = "u") | 
|---|
|  |  |  | 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(String userId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public SysUser selectUserById(String 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(",")); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 查询用户所属岗位组 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userName 用户名 | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public String selectUserPostGroup(String userName) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public String selectUserPostGroup(String userName) { | 
|---|
|  |  |  | List<SysPost> list = postMapper.selectPostsByUserName(userName); | 
|---|
|  |  |  | if (CollectionUtils.isEmpty(list)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (CollectionUtils.isEmpty(list)) { | 
|---|
|  |  |  | return StringUtils.EMPTY; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return list.stream().map(SysPost::getPostName).collect(Collectors.joining(",")); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 校验用户名称是否唯一 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public String checkUserNameUnique(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public String checkUserNameUnique(SysUser user) { | 
|---|
|  |  |  | String userId = StringUtils.isNull(user.getUserId()) ? "-1" : user.getUserId(); | 
|---|
|  |  |  | SysUser info = userMapper.checkUserNameUnique(user.getUserName()); | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) { | 
|---|
|  |  |  | return UserConstants.NOT_UNIQUE; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return UserConstants.UNIQUE; | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public String checkPhoneUnique(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public String checkPhoneUnique(SysUser user) { | 
|---|
|  |  |  | String userId = StringUtils.isNull(user.getUserId()) ? "-1" : user.getUserId(); | 
|---|
|  |  |  | SysUser info = userMapper.checkPhoneUnique(user.getPhonenumber()); | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) { | 
|---|
|  |  |  | return UserConstants.NOT_UNIQUE; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return UserConstants.UNIQUE; | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public String checkEmailUnique(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public String checkEmailUnique(SysUser user) { | 
|---|
|  |  |  | String userId = StringUtils.isNull(user.getUserId()) ? "-1" : user.getUserId(); | 
|---|
|  |  |  | SysUser info = userMapper.checkEmailUnique(user.getEmail()); | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNotNull(info) && !info.getUserId().equals(userId)) { | 
|---|
|  |  |  | return UserConstants.NOT_UNIQUE; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return UserConstants.UNIQUE; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 校验用户是否允许操作 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @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(String userId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (!SysUser.isAdmin(SecurityUtils.getUserId())) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public void checkUserDataScope(String 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("没有权限访问用户数据!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增保存用户信息 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户信息 | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int insertUser(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public int insertUser(SysUser user) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 新增用户信息 | 
|---|
|  |  |  | int rows = userMapper.insertUser(user); | 
|---|
|  |  |  | if (rows > 0) {  //增加用户缓存 | 
|---|
|  |  |  | redisCache.setCacheObject(getCacheKey(user.getUserId()), user); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 新增用户岗位关联 | 
|---|
|  |  |  | insertUserPost(user); | 
|---|
|  |  |  | // 新增用户与角色管理 | 
|---|
|  |  |  | insertUserRole(user); | 
|---|
|  |  |  | // 新增用户与报警类型关联 | 
|---|
|  |  |  | insertAlarmTypeConfig(user); | 
|---|
|  |  |  | return rows; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 注册用户信息 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @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) { | 
|---|
|  |  |  | String userId = user.getUserId(); | 
|---|
|  |  |  | // 删除用户与报警类型关联 | 
|---|
|  |  |  | ardAlarmTypeConfigMapper.deleteArdAlarmTypeConfigByUserId(userId); | 
|---|
|  |  |  | // 新增用户与报警类型关联 | 
|---|
|  |  |  | insertAlarmTypeConfig(user); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 删除用户与角色关联 | 
|---|
|  |  |  | userRoleMapper.deleteUserRoleByUserId(userId); | 
|---|
|  |  |  | // 新增用户与角色管理 | 
|---|
|  |  |  | 
|---|
|  |  |  | userPostMapper.deleteUserPostByUserId(userId); | 
|---|
|  |  |  | // 新增用户与岗位管理 | 
|---|
|  |  |  | insertUserPost(user); | 
|---|
|  |  |  | return userMapper.updateUser(user); | 
|---|
|  |  |  | //缓存用户 | 
|---|
|  |  |  | SysUser temp = userMapper.selectUserById(user.getUserId()); | 
|---|
|  |  |  | if (!StringUtils.equals(temp.getUserName(), user.getUserName())) { | 
|---|
|  |  |  | redisCache.deleteObject(getCacheKey(temp.getUserId())); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int row = userMapper.updateUser(user); | 
|---|
|  |  |  | if (row > 0) { | 
|---|
|  |  |  | redisCache.setCacheObject(getCacheKey(user.getUserId()), temp); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return row; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 用户授权角色 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId 用户ID | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId  用户ID | 
|---|
|  |  |  | * @param roleIds 角色组 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public void insertUserAuth(String userId, Long[] roleIds) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public void insertUserAuth(String 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 user 用户对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertUserPost(SysUser user) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public void insertAlarmTypeConfig(SysUser user) { | 
|---|
|  |  |  | this.insertAlarmTypeConfig(user.getUserId(), user.getCommands()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增用户岗位信息 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param user 用户对象 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertUserPost(SysUser user) { | 
|---|
|  |  |  | Long[] posts = user.getPostIds(); | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(posts)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(posts)) { | 
|---|
|  |  |  | // 新增用户与岗位管理 | 
|---|
|  |  |  | List<SysUserPost> list = new ArrayList<SysUserPost>(posts.length); | 
|---|
|  |  |  | for (Long postId : posts) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (Long postId : posts) { | 
|---|
|  |  |  | SysUserPost up = new SysUserPost(); | 
|---|
|  |  |  | up.setUserId(user.getUserId()); | 
|---|
|  |  |  | up.setPostId(postId); | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增用户角色信息 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId 用户ID | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId  用户ID | 
|---|
|  |  |  | * @param roleIds 角色组 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertUserRole(String userId, Long[] roleIds) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(roleIds)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public void insertUserRole(String 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); | 
|---|
|  |  |  | 
|---|
|  |  |  | userRoleMapper.batchUserRole(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 新增用户报警类型 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId  用户ID | 
|---|
|  |  |  | * @param commands 报警类型组 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public void insertAlarmTypeConfig(String userId, List<String> commands) { | 
|---|
|  |  |  | if (StringUtils.isNotEmpty(commands)) { | 
|---|
|  |  |  | // 新增用户与角色管理 | 
|---|
|  |  |  | List<ArdAlarmTypeConfig> list = new ArrayList<ArdAlarmTypeConfig>(commands.size()); | 
|---|
|  |  |  | for (String command : commands) { | 
|---|
|  |  |  | ArdAlarmTypeConfig ur = new ArdAlarmTypeConfig(); | 
|---|
|  |  |  | ur.setUserId(userId); | 
|---|
|  |  |  | ur.setCommand(command); | 
|---|
|  |  |  | String alarm_type = DictUtils.getDictLabel("alarm_type", command); | 
|---|
|  |  |  | ur.setAlarmType(alarm_type); | 
|---|
|  |  |  | list.add(ur); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ardAlarmTypeConfigMapper.batchAlarmTypeConfig(list); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 通过用户ID删除用户 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userId 用户ID | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int deleteUserById(String userId) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public int deleteUserById(String userId) { | 
|---|
|  |  |  | // 删除用户与角色关联 | 
|---|
|  |  |  | userRoleMapper.deleteUserRoleByUserId(userId); | 
|---|
|  |  |  | // 删除用户与岗位表 | 
|---|
|  |  |  | userPostMapper.deleteUserPostByUserId(userId); | 
|---|
|  |  |  | return userMapper.deleteUserById(userId); | 
|---|
|  |  |  | int rows = userMapper.deleteUserById(userId); | 
|---|
|  |  |  | if (rows > 0) { | 
|---|
|  |  |  | redisCache.deleteObject(getCacheKey(userId)); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return rows; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 批量删除用户信息 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param userIds 需要删除的用户ID | 
|---|
|  |  |  | * @return 结果 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | @Transactional | 
|---|
|  |  |  | public int deleteUserByIds(String[] userIds) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | for (String userId : userIds) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public int deleteUserByIds(String[] userIds) { | 
|---|
|  |  |  | for (String userId : userIds) { | 
|---|
|  |  |  | checkUserAllowed(new SysUser(userId)); | 
|---|
|  |  |  | checkUserDataScope(userId); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 删除用户与报警类型关联 | 
|---|
|  |  |  | ardAlarmTypeConfigMapper.deleteArdAlarmTypeConfigByIds(userIds); | 
|---|
|  |  |  | // 删除用户与角色关联 | 
|---|
|  |  |  | userRoleMapper.deleteUserRole(userIds); | 
|---|
|  |  |  | // 删除用户与岗位关联 | 
|---|
|  |  |  | userPostMapper.deleteUserPost(userIds); | 
|---|
|  |  |  | return userMapper.deleteUserByIds(userIds); | 
|---|
|  |  |  | int rows = userMapper.deleteUserByIds(userIds); | 
|---|
|  |  |  | if (rows > 0) { | 
|---|
|  |  |  | clearUserCache(userIds); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return rows; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 导入用户数据 | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @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; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(user.getPassword()==null?password:user.getPassword())); | 
|---|
|  |  |  | user.setPassword(SecurityUtils.encryptPassword(user.getPassword() == null ? password : user.getPassword())); | 
|---|
|  |  |  | 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()); | 
|---|
|  |  |  | 
|---|
|  |  |  | 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(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 获取cache key | 
|---|
|  |  |  | * | 
|---|
|  |  |  | * @param configKey 参数键 | 
|---|
|  |  |  | * @return 缓存键key | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | private String getCacheKey(String configKey) { | 
|---|
|  |  |  | return CacheConstants.USER_LIST_KEY + configKey; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Override | 
|---|
|  |  |  | public List<SysUser> userByDeptList(List<Long> deptList) { | 
|---|
|  |  |  | QueryWrapper<SysUser> queryWrapper = new QueryWrapper<>(); | 
|---|
|  |  |  | queryWrapper.in("dept_id",deptList); | 
|---|
|  |  |  | return userMapper.selectList(queryWrapper); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|