| | |
| | | package org.jeecg.modules.system.service.impl; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | |
| | | import org.jeecg.modules.system.entity.*; |
| | | import org.jeecg.modules.system.mapper.*; |
| | | import org.jeecg.modules.system.model.SysUserSysDepartModel; |
| | | import org.jeecg.modules.system.service.IBaseFactoryService; |
| | | import org.jeecg.modules.system.service.ISysDictService; |
| | | import org.jeecg.modules.system.service.ISysUserService; |
| | | import org.jeecg.modules.system.vo.EamUserRepDepVo; |
| | |
| | | @Slf4j |
| | | public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> implements ISysUserService { |
| | | |
| | | @Autowired |
| | | private SysUserMapper userMapper; |
| | | @Autowired |
| | | private SysPermissionMapper sysPermissionMapper; |
| | | @Autowired |
| | | private SysUserRoleMapper sysUserRoleMapper; |
| | | @Autowired |
| | | private SysUserDepartMapper sysUserDepartMapper; |
| | | @Autowired |
| | | private SysDepartMapper sysDepartMapper; |
| | | @Autowired |
| | | private SysRoleMapper sysRoleMapper; |
| | | @Autowired |
| | | private SysDepartRoleUserMapper departRoleUserMapper; |
| | | @Autowired |
| | | private SysDepartRoleMapper sysDepartRoleMapper; |
| | | @Resource |
| | | private BaseCommonService baseCommonService; |
| | | @Autowired |
| | | private SysThirdAccountMapper sysThirdAccountMapper; |
| | | @Autowired |
| | | ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService; |
| | | @Autowired |
| | | ThirdAppDingtalkServiceImpl dingtalkService; |
| | | @Autowired |
| | | SysRoleIndexMapper sysRoleIndexMapper; |
| | | @Resource |
| | | MdcUserProductionMapper mdcUserProductionMapper; |
| | | @Resource |
| | | EamBaseRepairDepartUserMapper eamBaseRepairDepartUserMapper; |
| | | @Resource |
| | | private ISysDictService sysDictService; |
| | | @Resource |
| | | private SysUserMapper userMapper; |
| | | @Resource |
| | | private SysPermissionMapper sysPermissionMapper; |
| | | @Resource |
| | | private SysUserRoleMapper sysUserRoleMapper; |
| | | @Resource |
| | | private SysUserDepartMapper sysUserDepartMapper; |
| | | @Resource |
| | | private SysDepartMapper sysDepartMapper; |
| | | @Resource |
| | | private SysRoleMapper sysRoleMapper; |
| | | @Resource |
| | | private SysDepartRoleUserMapper departRoleUserMapper; |
| | | @Resource |
| | | private SysDepartRoleMapper sysDepartRoleMapper; |
| | | @Resource |
| | | private BaseCommonService baseCommonService; |
| | | @Resource |
| | | private SysThirdAccountMapper sysThirdAccountMapper; |
| | | @Autowired |
| | | ThirdAppWechatEnterpriseServiceImpl wechatEnterpriseService; |
| | | @Autowired |
| | | ThirdAppDingtalkServiceImpl dingtalkService; |
| | | @Resource |
| | | SysRoleIndexMapper sysRoleIndexMapper; |
| | | @Resource |
| | | MdcUserProductionMapper mdcUserProductionMapper; |
| | | @Resource |
| | | EamBaseRepairDepartUserMapper eamBaseRepairDepartUserMapper; |
| | | @Resource |
| | | private ISysDictService sysDictService; |
| | | @Autowired |
| | | private IBaseFactoryService factoryService; |
| | | |
| | | @Override |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | |
| | | if (!newpassword.equals(confirmpassword)) { |
| | | return Result.error("两次输入密码不一致!"); |
| | | } |
| | | //设置密码更新时间 |
| | | //sysUser.setPasswordTime(new Date()); |
| | | //设置密码首次登录失效 |
| | | //sysUser.setPasswordFlag(CommonConstant.DEL_FLAG_0); |
| | | //设置密码更新时间 |
| | | //sysUser.setPasswordTime(new Date()); |
| | | //设置密码首次登录失效 |
| | | //sysUser.setPasswordFlag(CommonConstant.DEL_FLAG_0); |
| | | String password = PasswordUtil.encrypt(username, newpassword, user.getSalt()); |
| | | this.userMapper.update(new SysUser().setPassword(password).setPasswordTime(new Date()).setPasswordFlag(CommonConstant.DEL_FLAG_0), new LambdaQueryWrapper<SysUser>().eq(SysUser::getId, user.getId())); |
| | | return Result.ok("密码重置成功!"); |
| | |
| | | public Result<?> changePassword(SysUser sysUser) { |
| | | String salt = oConvertUtils.randomGen(8); |
| | | sysUser.setSalt(salt); |
| | | //设置密码更新时间 |
| | | sysUser.setPasswordTime(new Date()); |
| | | //管理员修改密码,设置用户首次登录 |
| | | //sysUser.setPasswordFlag(); |
| | | //设置密码更新时间 |
| | | sysUser.setPasswordTime(new Date()); |
| | | //管理员修改密码,设置用户首次登录 |
| | | //sysUser.setPasswordFlag(); |
| | | String password = sysUser.getPassword(); |
| | | String passwordEncode = PasswordUtil.encrypt(sysUser.getUsername(), password, salt); |
| | | sysUser.setPassword(passwordEncode); |
| | |
| | | } |
| | | |
| | | @Override |
| | | @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteUser(String userId) { |
| | | //1.删除用户 |
| | | this.removeById(userId); |
| | | return false; |
| | | } |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteUser(String userId) { |
| | | //1.删除用户 |
| | | this.removeById(userId); |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteBatchUsers(String userIds) { |
| | | //1.删除用户 |
| | | this.removeByIds(Arrays.asList(userIds.split(","))); |
| | | return false; |
| | | } |
| | | @Override |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean deleteBatchUsers(String userIds) { |
| | | //1.删除用户 |
| | | this.removeByIds(Arrays.asList(userIds.split(","))); |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public SysUser getUserByName(String username) { |
| | | return userMapper.getUserByName(username); |
| | | } |
| | | @Override |
| | | public SysUser getUserByName(String username) { |
| | | return userMapper.getUserByName(username); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addUserWithRole(SysUser user, String roles) { |
| | | this.save(user); |
| | | if(oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addUserWithRole(SysUser user, String roles) { |
| | | this.save(user); |
| | | if (oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void editUserWithRole(SysUser user, String roles) { |
| | | this.updateById(user); |
| | | //先删后加 |
| | | sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId())); |
| | | if(oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void editUserWithRole(SysUser user, String roles) { |
| | | this.updateById(user); |
| | | //先删后加 |
| | | sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<String> getRole(String username) { |
| | | return sysUserRoleMapper.getRoleByUserName(username); |
| | | } |
| | | @Override |
| | | public List<String> getRole(String username) { |
| | | return sysUserRoleMapper.getRoleByUserName(username); |
| | | } |
| | | |
| | | /** |
| | | * 获取动态首页路由配置 |
| | | * @param username |
| | | * @param version |
| | | * @return |
| | | */ |
| | | @Override |
| | | public SysRoleIndex getDynamicIndexByUserRole(String username,String version) { |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | String componentUrl = RoleIndexConfigEnum.getIndexByRoles(roles); |
| | | SysRoleIndex roleIndex = new SysRoleIndex(componentUrl); |
| | | //只有 X-Version=v3 的时候,才读取sys_role_index表获取角色首页配置 |
| | | if (oConvertUtils.isNotEmpty(version) && roles!=null && roles.size()>0) { |
| | | LambdaQueryWrapper<SysRoleIndex> routeIndexQuery = new LambdaQueryWrapper(); |
| | | //用户所有角色 |
| | | routeIndexQuery.in(SysRoleIndex::getRoleCode, roles); |
| | | //角色首页状态0:未开启 1:开启 |
| | | routeIndexQuery.eq(SysRoleIndex::getStatus, CommonConstant.STATUS_1); |
| | | //优先级正序排序 |
| | | routeIndexQuery.orderByAsc(SysRoleIndex::getPriority); |
| | | List<SysRoleIndex> list = sysRoleIndexMapper.selectList(routeIndexQuery); |
| | | if (null != list && list.size() > 0) { |
| | | roleIndex = list.get(0); |
| | | } |
| | | } |
| | | /** |
| | | * 获取动态首页路由配置 |
| | | * |
| | | * @param username |
| | | * @param version |
| | | * @return |
| | | */ |
| | | @Override |
| | | public SysRoleIndex getDynamicIndexByUserRole(String username, String version) { |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | String componentUrl = RoleIndexConfigEnum.getIndexByRoles(roles); |
| | | SysRoleIndex roleIndex = new SysRoleIndex(componentUrl); |
| | | //只有 X-Version=v3 的时候,才读取sys_role_index表获取角色首页配置 |
| | | if (oConvertUtils.isNotEmpty(version) && roles != null && roles.size() > 0) { |
| | | LambdaQueryWrapper<SysRoleIndex> routeIndexQuery = new LambdaQueryWrapper(); |
| | | //用户所有角色 |
| | | routeIndexQuery.in(SysRoleIndex::getRoleCode, roles); |
| | | //角色首页状态0:未开启 1:开启 |
| | | routeIndexQuery.eq(SysRoleIndex::getStatus, CommonConstant.STATUS_1); |
| | | //优先级正序排序 |
| | | routeIndexQuery.orderByAsc(SysRoleIndex::getPriority); |
| | | List<SysRoleIndex> list = sysRoleIndexMapper.selectList(routeIndexQuery); |
| | | if (null != list && list.size() > 0) { |
| | | roleIndex = list.get(0); |
| | | } |
| | | } |
| | | |
| | | //如果componentUrl为空,则返回空 |
| | | if(oConvertUtils.isEmpty(roleIndex.getComponent())){ |
| | | return null; |
| | | } |
| | | return roleIndex; |
| | | } |
| | | //如果componentUrl为空,则返回空 |
| | | if (oConvertUtils.isEmpty(roleIndex.getComponent())) { |
| | | return null; |
| | | } |
| | | return roleIndex; |
| | | } |
| | | |
| | | /** |
| | | * 通过用户名获取用户角色集合 |
| | | * @param username 用户名 |
| | | /** |
| | | * 通过用户名获取用户角色集合 |
| | | * |
| | | * @param username 用户名 |
| | | * @return 角色集合 |
| | | */ |
| | | @Override |
| | | public Set<String> getUserRolesSet(String username) { |
| | | // 查询用户拥有的角色集合 |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size())); |
| | | return new HashSet<>(roles); |
| | | } |
| | | */ |
| | | @Override |
| | | public Set<String> getUserRolesSet(String username) { |
| | | // 查询用户拥有的角色集合 |
| | | List<String> roles = sysUserRoleMapper.getRoleByUserName(username); |
| | | log.info("-------通过数据库读取用户拥有的角色Rules------username: " + username + ",Roles size: " + (roles == null ? 0 : roles.size())); |
| | | return new HashSet<>(roles); |
| | | } |
| | | |
| | | /** |
| | | * 通过用户名获取用户权限集合 |
| | | * |
| | | * @param username 用户名 |
| | | * @return 权限集合 |
| | | */ |
| | | @Override |
| | | public Set<String> getUserPermissionsSet(String username) { |
| | | Set<String> permissionSet = new HashSet<>(); |
| | | List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username); |
| | | for (SysPermission po : permissionList) { |
| | | /** |
| | | * 通过用户名获取用户权限集合 |
| | | * |
| | | * @param username 用户名 |
| | | * @return 权限集合 |
| | | */ |
| | | @Override |
| | | public Set<String> getUserPermissionsSet(String username) { |
| | | Set<String> permissionSet = new HashSet<>(); |
| | | List<SysPermission> permissionList = sysPermissionMapper.queryByUser(username); |
| | | for (SysPermission po : permissionList) { |
| | | // // TODO URL规则有问题? |
| | | // if (oConvertUtils.isNotEmpty(po.getUrl())) { |
| | | // permissionSet.add(po.getUrl()); |
| | | // } |
| | | if (oConvertUtils.isNotEmpty(po.getPerms())) { |
| | | permissionSet.add(po.getPerms()); |
| | | } |
| | | } |
| | | log.info("-------通过数据库读取用户拥有的权限Perms------username: "+ username+",Perms size: "+ (permissionSet==null?0:permissionSet.size()) ); |
| | | return permissionSet; |
| | | } |
| | | if (oConvertUtils.isNotEmpty(po.getPerms())) { |
| | | permissionSet.add(po.getPerms()); |
| | | } |
| | | } |
| | | log.info("-------通过数据库读取用户拥有的权限Perms------username: " + username + ",Perms size: " + (permissionSet == null ? 0 : permissionSet.size())); |
| | | return permissionSet; |
| | | } |
| | | |
| | | /** |
| | | * 升级SpringBoot2.6.6,不允许循环依赖 |
| | | * @author:qinfeng |
| | | * @update: 2022-04-07 |
| | | * @param username |
| | | * @return |
| | | */ |
| | | @Override |
| | | public SysUserCacheInfo getCacheUser(String username) { |
| | | SysUserCacheInfo info = new SysUserCacheInfo(); |
| | | info.setOneDepart(true); |
| | | if(oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | /** |
| | | * 升级SpringBoot2.6.6,不允许循环依赖 |
| | | * |
| | | * @param username |
| | | * @return |
| | | * @author:qinfeng |
| | | * @update: 2022-04-07 |
| | | */ |
| | | @Override |
| | | public SysUserCacheInfo getCacheUser(String username) { |
| | | SysUserCacheInfo info = new SysUserCacheInfo(); |
| | | info.setOneDepart(true); |
| | | if (oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | |
| | | //查询用户信息 |
| | | SysUser sysUser = userMapper.getUserByName(username); |
| | | if(sysUser!=null) { |
| | | info.setSysUserCode(sysUser.getUsername()); |
| | | info.setSysUserName(sysUser.getRealname()); |
| | | info.setSysOrgCode(sysUser.getOrgCode()); |
| | | } |
| | | //查询用户信息 |
| | | SysUser sysUser = userMapper.getUserByName(username); |
| | | if (sysUser != null) { |
| | | info.setSysUserCode(sysUser.getUsername()); |
| | | info.setSysUserName(sysUser.getRealname()); |
| | | info.setSysOrgCode(sysUser.getOrgCode()); |
| | | } |
| | | |
| | | //多部门支持in查询 |
| | | List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId()); |
| | | List<String> sysMultiOrgCode = new ArrayList<String>(); |
| | | if(list==null || list.size()==0) { |
| | | //当前用户无部门 |
| | | //sysMultiOrgCode.add("0"); |
| | | }else if(list.size()==1) { |
| | | sysMultiOrgCode.add(list.get(0).getOrgCode()); |
| | | }else { |
| | | info.setOneDepart(false); |
| | | for (SysDepart dpt : list) { |
| | | sysMultiOrgCode.add(dpt.getOrgCode()); |
| | | } |
| | | } |
| | | info.setSysMultiOrgCode(sysMultiOrgCode); |
| | | //多部门支持in查询 |
| | | List<SysDepart> list = sysDepartMapper.queryUserDeparts(sysUser.getId()); |
| | | List<String> sysMultiOrgCode = new ArrayList<String>(); |
| | | if (list == null || list.size() == 0) { |
| | | //当前用户无部门 |
| | | //sysMultiOrgCode.add("0"); |
| | | } else if (list.size() == 1) { |
| | | sysMultiOrgCode.add(list.get(0).getOrgCode()); |
| | | } else { |
| | | info.setOneDepart(false); |
| | | for (SysDepart dpt : list) { |
| | | sysMultiOrgCode.add(dpt.getOrgCode()); |
| | | } |
| | | } |
| | | info.setSysMultiOrgCode(sysMultiOrgCode); |
| | | |
| | | return info; |
| | | } |
| | | return info; |
| | | } |
| | | |
| | | /** |
| | | * 根据部门Id查询 |
| | | * |
| | | * @param page |
| | | * @param departId 部门id |
| | | * @param username 用户账户名称 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId,String username) { |
| | | return userMapper.getUserByDepId(page, departId,username); |
| | | } |
| | | @Override |
| | | public IPage<SysUser> getUserByDepId(Page<SysUser> page, String departId, String username) { |
| | | return userMapper.getUserByDepId(page, departId, username); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) { |
| | | return userMapper.getUserByDepIds(page, departIds,username); |
| | | } |
| | | @Override |
| | | public IPage<SysUser> getUserByDepIds(Page<SysUser> page, List<String> departIds, String username) { |
| | | return userMapper.getUserByDepIds(page, departIds, username); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> getDepNamesByUserIds(List<String> userIds) { |
| | | List<SysUserDepVo> list = this.baseMapper.getDepNamesByUserIds(userIds); |
| | | @Override |
| | | public Map<String, String> getDepNamesByUserIds(List<String> userIds) { |
| | | List<SysUserDepVo> list = this.baseMapper.getDepNamesByUserIds(userIds); |
| | | |
| | | Map<String, String> res = new HashMap(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getDepartName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getDepartName()); |
| | | } |
| | | } |
| | | ); |
| | | return res; |
| | | } |
| | | Map<String, String> res = new HashMap(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getDepartName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getDepartName()); |
| | | } |
| | | } |
| | | ); |
| | | return res; |
| | | } |
| | | |
| | | //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉 |
| | | //update-begin-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉 |
| | | /* @Override |
| | | public IPage<SysUser> getUserByDepartIdAndQueryWrapper(Page<SysUser> page, String departId, QueryWrapper<SysUser> queryWrapper) { |
| | | LambdaQueryWrapper<SysUser> lambdaQueryWrapper = queryWrapper.lambda(); |
| | |
| | | |
| | | return userMapper.selectPage(page, lambdaQueryWrapper); |
| | | }*/ |
| | | //update-end-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉 |
| | | //update-end-author:taoyan date:2022-9-13 for: VUEN-2245【漏洞】发现新漏洞待处理20220906 ----sql注入 方法没有使用,注掉 |
| | | |
| | | @Override |
| | | public IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page) { |
| | | List<SysUserSysDepartModel> list = baseMapper.getUserByOrgCode(page, orgCode, userParams); |
| | | Integer total = baseMapper.getUserByOrgCodeTotal(orgCode, userParams); |
| | | @Override |
| | | public IPage<SysUserSysDepartModel> queryUserByOrgCode(String orgCode, SysUser userParams, IPage page) { |
| | | List<SysUserSysDepartModel> list = baseMapper.getUserByOrgCode(page, orgCode, userParams); |
| | | Integer total = baseMapper.getUserByOrgCodeTotal(orgCode, userParams); |
| | | |
| | | IPage<SysUserSysDepartModel> result = new Page<>(page.getCurrent(), page.getSize(), total); |
| | | result.setRecords(list); |
| | | IPage<SysUserSysDepartModel> result = new Page<>(page.getCurrent(), page.getSize(), total); |
| | | result.setRecords(list); |
| | | |
| | | return result; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 根据角色Id查询 |
| | | * |
| | | * @param page |
| | | * @param roleId 角色id |
| | | * @param roleId 角色id |
| | | * @param username 用户账户名称 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) { |
| | | return userMapper.getUserByRoleId(page,roleId,username); |
| | | } |
| | | @Override |
| | | public IPage<SysUser> getUserByRoleId(Page<SysUser> page, String roleId, String username) { |
| | | return userMapper.getUserByRoleId(page, roleId, username); |
| | | } |
| | | |
| | | /** |
| | | * 根据设备车间管理Id查询 |
| | | * @param page |
| | | * @param baseFactoryId 设备车间管理Id |
| | | * @return |
| | | */ |
| | | public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page,String baseFactoryId,String username){ |
| | | return userMapper.getUserByWorkShopDepartId(page,baseFactoryId,username); |
| | | } |
| | | /** |
| | | * 根据设备车间管理Id查询 |
| | | * |
| | | * @param page |
| | | * @param baseFactoryId 设备车间管理Id |
| | | * @return |
| | | */ |
| | | public IPage<SysUser> getUserByworkShopDepartId(Page<SysUser> page, String baseFactoryId, String username) { |
| | | return userMapper.getUserByWorkShopDepartId(page, baseFactoryId, username); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @CacheEvict(value= {CacheConstant.SYS_USERS_CACHE}, key="#username") |
| | | public void updateUserDepart(String username,String orgCode) { |
| | | baseMapper.updateUserDepart(username, orgCode); |
| | | } |
| | | @Override |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, key = "#username") |
| | | public void updateUserDepart(String username, String orgCode) { |
| | | baseMapper.updateUserDepart(username, orgCode); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public SysUser getUserByPhone(String phone) { |
| | | return userMapper.getUserByPhone(phone); |
| | | } |
| | | @Override |
| | | public SysUser getUserByPhone(String phone) { |
| | | return userMapper.getUserByPhone(phone); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public SysUser getUserByEmail(String email) { |
| | | return userMapper.getUserByEmail(email); |
| | | } |
| | | @Override |
| | | public SysUser getUserByEmail(String email) { |
| | | return userMapper.getUserByEmail(email); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addUserWithDepart(SysUser user, String selectedParts) { |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void addUserWithDepart(SysUser user, String selectedParts) { |
| | | // this.save(user); //保存角色的时候已经添加过一次了 |
| | | if(oConvertUtils.isNotEmpty(selectedParts)) { |
| | | String[] arr = selectedParts.split(","); |
| | | for (String deaprtId : arr) { |
| | | SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId); |
| | | sysUserDepartMapper.insert(userDeaprt); |
| | | } |
| | | } |
| | | } |
| | | if (oConvertUtils.isNotEmpty(selectedParts)) { |
| | | String[] arr = selectedParts.split(","); |
| | | for (String deaprtId : arr) { |
| | | SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId); |
| | | sysUserDepartMapper.insert(userDeaprt); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | public void editUserWithDepart(SysUser user, String departs) { |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | public void editUserWithDepart(SysUser user, String departs) { |
| | | //更新角色的时候已经更新了一次了,可以再跟新一次 |
| | | this.updateById(user); |
| | | String[] arr = {}; |
| | | if(oConvertUtils.isNotEmpty(departs)){ |
| | | arr = departs.split(","); |
| | | } |
| | | //查询已关联部门 |
| | | List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if(userDepartList != null && userDepartList.size()>0){ |
| | | for(SysUserDepart depart : userDepartList ){ |
| | | //修改已关联部门删除部门用户角色关系 |
| | | if(!Arrays.asList(arr).contains(depart.getDepId())){ |
| | | List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList( |
| | | new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId())); |
| | | List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); |
| | | if(roleIds != null && roleIds.size()>0){ |
| | | departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) |
| | | .in(SysDepartRoleUser::getDroleId,roleIds)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //先删后加 |
| | | sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if(oConvertUtils.isNotEmpty(departs)) { |
| | | for (String departId : arr) { |
| | | SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); |
| | | sysUserDepartMapper.insert(userDepart); |
| | | } |
| | | } |
| | | } |
| | | this.updateById(user); |
| | | String[] arr = {}; |
| | | if (oConvertUtils.isNotEmpty(departs)) { |
| | | arr = departs.split(","); |
| | | } |
| | | //查询已关联部门 |
| | | List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if (userDepartList != null && userDepartList.size() > 0) { |
| | | for (SysUserDepart depart : userDepartList) { |
| | | //修改已关联部门删除部门用户角色关系 |
| | | if (!Arrays.asList(arr).contains(depart.getDepId())) { |
| | | List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList( |
| | | new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId())); |
| | | List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); |
| | | if (roleIds != null && roleIds.size() > 0) { |
| | | departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) |
| | | .in(SysDepartRoleUser::getDroleId, roleIds)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //先删后加 |
| | | sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(departs)) { |
| | | for (String departId : arr) { |
| | | SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); |
| | | sysUserDepartMapper.insert(userDepart); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 校验用户是否有效 |
| | | * @param sysUser |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result<?> checkUserIsEffective(SysUser sysUser) { |
| | | Result<?> result = new Result<Object>(); |
| | | //情况1:根据用户信息查询,该用户不存在 |
| | | if (sysUser == null) { |
| | | result.error500("该用户不存在,请注册"); |
| | | baseCommonService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); |
| | | return result; |
| | | } |
| | | //情况2:根据用户信息查询,该用户已注销 |
| | | //update-begin---author:王帅 Date:20200601 for:if条件永远为falsebug------------ |
| | | if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { |
| | | //update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); |
| | | result.error500("该用户已注销"); |
| | | return result; |
| | | } |
| | | //情况3:根据用户信息查询,该用户已冻结 |
| | | if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); |
| | | result.error500("该用户已冻结"); |
| | | return result; |
| | | } |
| | | //情况4:根据用户信息查询,该用户密码系首次使用,需修改密码 |
| | | List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN); |
| | | if (dictList != null && !dictList.isEmpty()) { |
| | | if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "系首次登录系统,请重置密码!", CommonConstant.LOG_TYPE_1, null); |
| | | result.setCode(5001); |
| | | result.setMessage("用户密码系默认密码,需重置密码后重新登录密码!"); |
| | | result.setSuccess(false); |
| | | return result; |
| | | } |
| | | } |
| | | //情况5:根据用户信息查询,该用户密码是否已过更改周期 |
| | | Date passwordTime = sysUser.getPasswordTime(); |
| | | //Integer passwordExpirationPeriod = CommonConstant.PASSWORD_EXPIRATION_PERIOD; |
| | | List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_PASSWORD_EXPIRATION); |
| | | if (dictModelList != null && !dictModelList.isEmpty()) { |
| | | Integer passwordExpirationPeriod = Integer.valueOf(dictModelList.get(0).getValue()); |
| | | Date dayAfter = DateUtils.getDayAfter(passwordTime, passwordExpirationPeriod); |
| | | if (new Date().after(dayAfter)) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "密码已过有效期,请重置密码!", CommonConstant.LOG_TYPE_1, null); |
| | | result.setCode(5002); |
| | | result.setMessage("用户密码已过有效期,请重置密码!"); |
| | | result.setSuccess(false); |
| | | return result; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | /** |
| | | * 校验用户是否有效 |
| | | * |
| | | * @param sysUser |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result<?> checkUserIsEffective(SysUser sysUser) { |
| | | Result<?> result = new Result<Object>(); |
| | | //情况1:根据用户信息查询,该用户不存在 |
| | | if (sysUser == null) { |
| | | result.error500("该用户不存在,请注册"); |
| | | baseCommonService.addLog("用户登录失败,用户不存在!", CommonConstant.LOG_TYPE_1, null); |
| | | return result; |
| | | } |
| | | //情况2:根据用户信息查询,该用户已注销 |
| | | //update-begin---author:王帅 Date:20200601 for:if条件永远为falsebug------------ |
| | | if (CommonConstant.DEL_FLAG_1.equals(sysUser.getDelFlag())) { |
| | | //update-end---author:王帅 Date:20200601 for:if条件永远为falsebug------------ |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已注销!", CommonConstant.LOG_TYPE_1, null); |
| | | result.error500("该用户已注销"); |
| | | return result; |
| | | } |
| | | //情况3:根据用户信息查询,该用户已冻结 |
| | | if (CommonConstant.USER_FREEZE.equals(sysUser.getStatus())) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "已冻结!", CommonConstant.LOG_TYPE_1, null); |
| | | result.error500("该用户已冻结"); |
| | | return result; |
| | | } |
| | | //情况4:根据用户信息查询,该用户密码系首次使用,需修改密码 |
| | | List<DictModel> dictList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_USER_FIRST_LOGIN); |
| | | if (dictList != null && !dictList.isEmpty()) { |
| | | if (CommonConstant.DEL_FLAG_1.equals(Integer.valueOf(dictList.get(0).getValue())) && CommonConstant.DEL_FLAG_1.equals(sysUser.getPasswordFlag())) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "系首次登录系统,请重置密码!", CommonConstant.LOG_TYPE_1, null); |
| | | result.setCode(5001); |
| | | result.setMessage("用户密码系默认密码,需重置密码后重新登录密码!"); |
| | | result.setSuccess(false); |
| | | return result; |
| | | } |
| | | } |
| | | //情况5:根据用户信息查询,该用户密码是否已过更改周期 |
| | | Date passwordTime = sysUser.getPasswordTime(); |
| | | //Integer passwordExpirationPeriod = CommonConstant.PASSWORD_EXPIRATION_PERIOD; |
| | | List<DictModel> dictModelList = sysDictService.queryEnableDictItemsByCode(CommonConstant.DICT_PASSWORD_EXPIRATION); |
| | | if (dictModelList != null && !dictModelList.isEmpty()) { |
| | | Integer passwordExpirationPeriod = Integer.valueOf(dictModelList.get(0).getValue()); |
| | | Date dayAfter = DateUtils.getDayAfter(passwordTime, passwordExpirationPeriod); |
| | | if (new Date().after(dayAfter)) { |
| | | baseCommonService.addLog("用户登录失败,用户名:" + sysUser.getUsername() + "密码已过有效期,请重置密码!", CommonConstant.LOG_TYPE_1, null); |
| | | result.setCode(5002); |
| | | result.setMessage("用户密码已过有效期,请重置密码!"); |
| | | result.setSuccess(false); |
| | | return result; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> queryLogicDeleted() { |
| | | return this.queryLogicDeleted(null); |
| | | } |
| | | @Override |
| | | public List<SysUser> queryLogicDeleted() { |
| | | return this.queryLogicDeleted(null); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper) { |
| | | if (wrapper == null) { |
| | | wrapper = new LambdaQueryWrapper<>(); |
| | | } |
| | | wrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_1); |
| | | return userMapper.selectLogicDeleted(wrapper); |
| | | } |
| | | @Override |
| | | public List<SysUser> queryLogicDeleted(LambdaQueryWrapper<SysUser> wrapper) { |
| | | if (wrapper == null) { |
| | | wrapper = new LambdaQueryWrapper<>(); |
| | | } |
| | | wrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_1); |
| | | return userMapper.selectLogicDeleted(wrapper); |
| | | } |
| | | |
| | | @Override |
| | | @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | public boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity) { |
| | | return userMapper.revertLogicDeleted(userIds, updateEntity) > 0; |
| | | } |
| | | @Override |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | public boolean revertLogicDeleted(List<String> userIds, SysUser updateEntity) { |
| | | return userMapper.revertLogicDeleted(userIds, updateEntity) > 0; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean removeLogicDeleted(List<String> userIds) { |
| | | // 1. 删除用户 |
| | | int line = userMapper.deleteLogicDeleted(userIds); |
| | | // 2. 删除用户部门关系 |
| | | line += sysUserDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getUserId, userIds)); |
| | | // 3. 删除用户产线关系 |
| | | line += mdcUserProductionMapper.delete(new LambdaQueryWrapper<MdcUserProduction>().in(MdcUserProduction::getUserId, userIds)); |
| | | //3. 删除用户角色关系 |
| | | line += sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds)); |
| | | //4.同步删除第三方App的用户 |
| | | try { |
| | | dingtalkService.removeThirdAppUser(userIds); |
| | | wechatEnterpriseService.removeThirdAppUser(userIds); |
| | | } catch (Exception e) { |
| | | log.error("同步删除第三方App的用户失败:", e); |
| | | } |
| | | //5. 删除第三方用户表(因为第4步需要用到第三方用户表,所以在他之后删) |
| | | line += sysThirdAccountMapper.delete(new LambdaQueryWrapper<SysThirdAccount>().in(SysThirdAccount::getSysUserId, userIds)); |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public boolean removeLogicDeleted(List<String> userIds) { |
| | | // 1. 删除用户 |
| | | int line = userMapper.deleteLogicDeleted(userIds); |
| | | // 2. 删除用户部门关系 |
| | | line += sysUserDepartMapper.delete(new LambdaQueryWrapper<SysUserDepart>().in(SysUserDepart::getUserId, userIds)); |
| | | // 3. 删除用户产线关系 |
| | | line += mdcUserProductionMapper.delete(new LambdaQueryWrapper<MdcUserProduction>().in(MdcUserProduction::getUserId, userIds)); |
| | | //3. 删除用户角色关系 |
| | | line += sysUserRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds)); |
| | | //4.同步删除第三方App的用户 |
| | | try { |
| | | dingtalkService.removeThirdAppUser(userIds); |
| | | wechatEnterpriseService.removeThirdAppUser(userIds); |
| | | } catch (Exception e) { |
| | | log.error("同步删除第三方App的用户失败:", e); |
| | | } |
| | | //5. 删除第三方用户表(因为第4步需要用到第三方用户表,所以在他之后删) |
| | | line += sysThirdAccountMapper.delete(new LambdaQueryWrapper<SysThirdAccount>().in(SysThirdAccount::getSysUserId, userIds)); |
| | | |
| | | return line != 0; |
| | | } |
| | | return line != 0; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public void saveThirdUser(SysUser sysUser) { |
| | | //保存用户 |
| | | String userid = UUIDGenerator.generate(); |
| | | sysUser.setId(userid); |
| | | baseMapper.insert(sysUser); |
| | | //获取第三方角色 |
| | | SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role")); |
| | | //保存用户角色 |
| | | SysUserRole userRole = new SysUserRole(); |
| | | userRole.setRoleId(sysRole.getId()); |
| | | userRole.setUserId(userid); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | @Override |
| | | public void saveThirdUser(SysUser sysUser) { |
| | | //保存用户 |
| | | String userid = UUIDGenerator.generate(); |
| | | sysUser.setId(userid); |
| | | baseMapper.insert(sysUser); |
| | | //获取第三方角色 |
| | | SysRole sysRole = sysRoleMapper.selectOne(new LambdaQueryWrapper<SysRole>().eq(SysRole::getRoleCode, "third_role")); |
| | | //保存用户角色 |
| | | SysUserRole userRole = new SysUserRole(); |
| | | userRole.setRoleId(sysRole.getId()); |
| | | userRole.setUserId(userid); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | |
| | | @Override |
| | | public List<SysUser> queryByDepIds(List<String> departIds, String username) { |
| | | return userMapper.queryByDepIds(departIds,username); |
| | | } |
| | | @Override |
| | | public List<SysUser> queryByDepIds(List<String> departIds, String username) { |
| | | return userMapper.queryByDepIds(departIds, username); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String selectedProductions, String selectedRepairDeparts) { |
| | | //step.1 保存用户 |
| | | this.save(user); |
| | | //step.2 保存角色 |
| | | if(oConvertUtils.isNotEmpty(selectedRoles)) { |
| | | String[] arr = selectedRoles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | //step.3 保存所属部门 |
| | | if(oConvertUtils.isNotEmpty(selectedDeparts)) { |
| | | String[] arr = selectedDeparts.split(","); |
| | | for (String deaprtId : arr) { |
| | | SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId); |
| | | sysUserDepartMapper.insert(userDeaprt); |
| | | } |
| | | } |
| | | //step.4 保存所属产线 |
| | | if (oConvertUtils.isNotEmpty(selectedProductions)) { |
| | | String[] arr = selectedProductions.split(","); |
| | | for (String productionId : arr) { |
| | | MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId); |
| | | mdcUserProductionMapper.insert(mdcUserProduction); |
| | | } |
| | | } |
| | | //step.5 保存所属维修部门 |
| | | if (oConvertUtils.isNotEmpty(selectedRepairDeparts)) { |
| | | String[] arr = selectedRepairDeparts.split(","); |
| | | for (String repairDepartId : arr) { |
| | | EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId); |
| | | eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void saveUser(SysUser user, String selectedRoles, String selectedDeparts, String selectedProductions, String selectedRepairDeparts) { |
| | | //step.1 保存用户 |
| | | this.save(user); |
| | | //step.2 保存角色 |
| | | if (oConvertUtils.isNotEmpty(selectedRoles)) { |
| | | String[] arr = selectedRoles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | //step.3 保存所属部门 |
| | | if (oConvertUtils.isNotEmpty(selectedDeparts)) { |
| | | String[] arr = selectedDeparts.split(","); |
| | | for (String deaprtId : arr) { |
| | | SysUserDepart userDeaprt = new SysUserDepart(user.getId(), deaprtId); |
| | | sysUserDepartMapper.insert(userDeaprt); |
| | | } |
| | | } |
| | | //step.4 保存所属产线 |
| | | if (oConvertUtils.isNotEmpty(selectedProductions)) { |
| | | String[] arr = selectedProductions.split(","); |
| | | for (String productionId : arr) { |
| | | MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId); |
| | | mdcUserProductionMapper.insert(mdcUserProduction); |
| | | } |
| | | } |
| | | //step.5 保存所属维修部门 |
| | | if (oConvertUtils.isNotEmpty(selectedRepairDeparts)) { |
| | | String[] arr = selectedRepairDeparts.split(","); |
| | | for (String repairDepartId : arr) { |
| | | EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId); |
| | | eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @CacheEvict(value={CacheConstant.SYS_USERS_CACHE}, allEntries=true) |
| | | public void editUser(SysUser user, String roles, String departs, String productions, String repairDeparts) { |
| | | //step.1 修改用户基础信息 |
| | | this.updateById(user); |
| | | //step.2 修改角色 |
| | | //处理用户角色 先删后加 |
| | | sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId())); |
| | | if(oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | @CacheEvict(value = {CacheConstant.SYS_USERS_CACHE}, allEntries = true) |
| | | public void editUser(SysUser user, String roles, String departs, String productions, String repairDeparts) { |
| | | //step.1 修改用户基础信息 |
| | | this.updateById(user); |
| | | //step.2 修改角色 |
| | | //处理用户角色 先删后加 |
| | | sysUserRoleMapper.delete(new QueryWrapper<SysUserRole>().lambda().eq(SysUserRole::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(roles)) { |
| | | String[] arr = roles.split(","); |
| | | for (String roleId : arr) { |
| | | SysUserRole userRole = new SysUserRole(user.getId(), roleId); |
| | | sysUserRoleMapper.insert(userRole); |
| | | } |
| | | } |
| | | |
| | | //step.3 修改部门 |
| | | String[] arr = {}; |
| | | if(oConvertUtils.isNotEmpty(departs)){ |
| | | arr = departs.split(","); |
| | | } |
| | | //查询已关联部门 |
| | | List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if(userDepartList != null && userDepartList.size()>0){ |
| | | for(SysUserDepart depart : userDepartList ){ |
| | | //修改已关联部门删除部门用户角色关系 |
| | | if(!Arrays.asList(arr).contains(depart.getDepId())){ |
| | | List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList( |
| | | new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId,depart.getDepId())); |
| | | List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); |
| | | if(roleIds != null && roleIds.size()>0){ |
| | | departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) |
| | | .in(SysDepartRoleUser::getDroleId,roleIds)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //先删后加 |
| | | sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if(oConvertUtils.isNotEmpty(departs)) { |
| | | for (String departId : arr) { |
| | | SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); |
| | | sysUserDepartMapper.insert(userDepart); |
| | | } |
| | | } |
| | | //step.4 修改产线 |
| | | String[] array = {}; |
| | | if(oConvertUtils.isNotEmpty(productions)){ |
| | | array = productions.split(","); |
| | | } |
| | | //先删后加 |
| | | mdcUserProductionMapper.delete(new QueryWrapper<MdcUserProduction>().lambda().eq(MdcUserProduction::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(productions)) { |
| | | for (String productionId : array) { |
| | | MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId); |
| | | mdcUserProductionMapper.insert(mdcUserProduction); |
| | | } |
| | | } |
| | | //step.5 修改维修部门 |
| | | String[] arrayRepDep = {}; |
| | | if(oConvertUtils.isNotEmpty(repairDeparts)){ |
| | | arrayRepDep = repairDeparts.split(","); |
| | | } |
| | | //先删后加 |
| | | eamBaseRepairDepartUserMapper.delete(new QueryWrapper<EamBaseRepairDepartUser>().lambda().eq(EamBaseRepairDepartUser::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(repairDeparts)) { |
| | | for (String repairDepartId : arrayRepDep) { |
| | | EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId); |
| | | eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser); |
| | | } |
| | | } |
| | | //step.5 修改手机号和邮箱 |
| | | // 更新手机号、邮箱空字符串为 null |
| | | userMapper.updateNullByEmptyString("email"); |
| | | userMapper.updateNullByEmptyString("phone"); |
| | | //step.3 修改部门 |
| | | String[] arr = {}; |
| | | if (oConvertUtils.isNotEmpty(departs)) { |
| | | arr = departs.split(","); |
| | | } |
| | | //查询已关联部门 |
| | | List<SysUserDepart> userDepartList = sysUserDepartMapper.selectList(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if (userDepartList != null && userDepartList.size() > 0) { |
| | | for (SysUserDepart depart : userDepartList) { |
| | | //修改已关联部门删除部门用户角色关系 |
| | | if (!Arrays.asList(arr).contains(depart.getDepId())) { |
| | | List<SysDepartRole> sysDepartRoleList = sysDepartRoleMapper.selectList( |
| | | new QueryWrapper<SysDepartRole>().lambda().eq(SysDepartRole::getDepartId, depart.getDepId())); |
| | | List<String> roleIds = sysDepartRoleList.stream().map(SysDepartRole::getId).collect(Collectors.toList()); |
| | | if (roleIds != null && roleIds.size() > 0) { |
| | | departRoleUserMapper.delete(new QueryWrapper<SysDepartRoleUser>().lambda().eq(SysDepartRoleUser::getUserId, user.getId()) |
| | | .in(SysDepartRoleUser::getDroleId, roleIds)); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | //先删后加 |
| | | sysUserDepartMapper.delete(new QueryWrapper<SysUserDepart>().lambda().eq(SysUserDepart::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(departs)) { |
| | | for (String departId : arr) { |
| | | SysUserDepart userDepart = new SysUserDepart(user.getId(), departId); |
| | | sysUserDepartMapper.insert(userDepart); |
| | | } |
| | | } |
| | | //step.4 修改产线 |
| | | String[] array = {}; |
| | | if (oConvertUtils.isNotEmpty(productions)) { |
| | | array = productions.split(","); |
| | | } |
| | | //先删后加 |
| | | mdcUserProductionMapper.delete(new QueryWrapper<MdcUserProduction>().lambda().eq(MdcUserProduction::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(productions)) { |
| | | for (String productionId : array) { |
| | | MdcUserProduction mdcUserProduction = new MdcUserProduction(user.getId(), productionId); |
| | | mdcUserProductionMapper.insert(mdcUserProduction); |
| | | } |
| | | } |
| | | //step.5 修改维修部门 |
| | | String[] arrayRepDep = {}; |
| | | if (oConvertUtils.isNotEmpty(repairDeparts)) { |
| | | arrayRepDep = repairDeparts.split(","); |
| | | } |
| | | //先删后加 |
| | | eamBaseRepairDepartUserMapper.delete(new QueryWrapper<EamBaseRepairDepartUser>().lambda().eq(EamBaseRepairDepartUser::getUserId, user.getId())); |
| | | if (oConvertUtils.isNotEmpty(repairDeparts)) { |
| | | for (String repairDepartId : arrayRepDep) { |
| | | EamBaseRepairDepartUser eamBaseRepairDepartUser = new EamBaseRepairDepartUser(user.getId(), repairDepartId); |
| | | eamBaseRepairDepartUserMapper.insert(eamBaseRepairDepartUser); |
| | | } |
| | | } |
| | | //step.5 修改手机号和邮箱 |
| | | // 更新手机号、邮箱空字符串为 null |
| | | userMapper.updateNullByEmptyString("email"); |
| | | userMapper.updateNullByEmptyString("phone"); |
| | | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<String> userIdToUsername(Collection<String> userIdList) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getId, userIdList); |
| | | List<SysUser> userList = super.list(queryWrapper); |
| | | return userList.stream().map(SysUser::getUsername).collect(Collectors.toList()); |
| | | } |
| | | @Override |
| | | public List<String> userIdToUsername(Collection<String> userIdList) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.in(SysUser::getId, userIdList); |
| | | List<SysUser> userList = super.list(queryWrapper); |
| | | return userList.stream().map(SysUser::getUsername).collect(Collectors.toList()); |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(cacheNames=CacheConstant.SYS_USERS_CACHE, key="#username") |
| | | @SensitiveEncode |
| | | public LoginUser getEncodeUserInfo(String username){ |
| | | if(oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | LoginUser loginUser = new LoginUser(); |
| | | SysUser sysUser = userMapper.getUserByName(username); |
| | | if(sysUser==null) { |
| | | return null; |
| | | } |
| | | BeanUtils.copyProperties(sysUser, loginUser); |
| | | return loginUser; |
| | | } |
| | | @Override |
| | | @Cacheable(cacheNames = CacheConstant.SYS_USERS_CACHE, key = "#username") |
| | | @SensitiveEncode |
| | | public LoginUser getEncodeUserInfo(String username) { |
| | | if (oConvertUtils.isEmpty(username)) { |
| | | return null; |
| | | } |
| | | LoginUser loginUser = new LoginUser(); |
| | | SysUser sysUser = userMapper.getUserByName(username); |
| | | if (sysUser == null) { |
| | | return null; |
| | | } |
| | | BeanUtils.copyProperties(sysUser, loginUser); |
| | | return loginUser; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> getProNamesByUserIds(List<String> userIds) { |
| | | List<MdcUserProVo> list = this.baseMapper.getProNamesByUserIds(userIds); |
| | | @Override |
| | | public Map<String, String> getProNamesByUserIds(List<String> userIds) { |
| | | List<MdcUserProVo> list = this.baseMapper.getProNamesByUserIds(userIds); |
| | | |
| | | Map<String, String> res = new HashMap<>(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getProductionName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getProductionName()); |
| | | } |
| | | }); |
| | | return res; |
| | | } |
| | | Map<String, String> res = new HashMap<>(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getProductionName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getProductionName()); |
| | | } |
| | | }); |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, String> getRepDepNamesByUserIds(List<String> userIds) { |
| | | List<EamUserRepDepVo> list = this.baseMapper.getRepDepNamesByUserIds(userIds); |
| | | @Override |
| | | public Map<String, String> getRepDepNamesByUserIds(List<String> userIds) { |
| | | List<EamUserRepDepVo> list = this.baseMapper.getRepDepNamesByUserIds(userIds); |
| | | |
| | | Map<String, String> res = new HashMap<>(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getRepairDepartName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getRepairDepartName()); |
| | | } |
| | | }); |
| | | return res; |
| | | } |
| | | Map<String, String> res = new HashMap<>(5); |
| | | list.forEach(item -> { |
| | | if (res.get(item.getUserId()) == null) { |
| | | res.put(item.getUserId(), item.getRepairDepartName()); |
| | | } else { |
| | | res.put(item.getUserId(), res.get(item.getUserId()) + "," + item.getRepairDepartName()); |
| | | } |
| | | }); |
| | | return res; |
| | | } |
| | | |
| | | // 根据角色Id查询该角色下的所有用户信息 |
| | | @Override |
| | | public List<SysUser> getAllUsersByRoleId(String roleId) { |
| | | return userMapper.getAllUsersByRoleId(roleId); |
| | | } |
| | | // 根据角色Id查询该角色下的所有用户信息 |
| | | @Override |
| | | public List<SysUser> getAllUsersByRoleId(String roleId) { |
| | | return userMapper.getAllUsersByRoleId(roleId); |
| | | } |
| | | |
| | | /** |
| | | * 根据角色编码查询用户id集合 |
| | | */ |
| | | @Override |
| | | public List<String> getUserByRoleCode(String roleCode) { |
| | | return this.baseMapper.getUserByRoleCode(roleCode); |
| | | } |
| | | /** |
| | | * 根据角色编码查询用户id集合 |
| | | */ |
| | | @Override |
| | | public List<String> getUserByRoleCode(String roleCode) { |
| | | return this.baseMapper.getUserByRoleCode(roleCode); |
| | | } |
| | | |
| | | /** |
| | | * 根据角色编码列表查询用户id集合 |
| | | */ |
| | | @Override |
| | | public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) { |
| | | return this.baseMapper.getUserByRoleCodeList(roleCodeList); |
| | | } |
| | | /** |
| | | * 根据角色编码列表查询用户id集合 |
| | | */ |
| | | @Override |
| | | public List<SysUser> getUserByRoleCodeList(List<String> roleCodeList) { |
| | | return this.baseMapper.getUserByRoleCodeList(roleCodeList); |
| | | } |
| | | |
| | | /** |
| | | * 根据角色编码和设备编号查询用户 |
| | | */ |
| | | @Override |
| | | public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) { |
| | | return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId); |
| | | } |
| | | /** |
| | | * 根据角色编码和设备编号查询用户 |
| | | */ |
| | | @Override |
| | | public List<SysUser> getEquipmentAdmin(String roleCode, String equipmentId) { |
| | | return this.baseMapper.getEquipmentAdmin(roleCode, equipmentId); |
| | | } |
| | | |
| | | @Override |
| | | public List<UserSelector> selectOperatorList(String equipmentCode, String productionId, String positionCode) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getPost, positionCode); |
| | | if(StringUtils.isNotBlank(equipmentCode)) { |
| | | queryWrapper.and(q -> q.isNull(SysUser::getEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEquipmentIds, equipmentCode)); |
| | | } |
| | | if(StringUtils.isNotBlank(productionId)) { |
| | | queryWrapper.exists("select 1 from mdc_user_production t where t.user_id=sys_user.id and t.pro_id={0}", productionId); |
| | | } |
| | | queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); |
| | | queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1); |
| | | queryWrapper.orderByDesc(SysUser::getId); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); |
| | | return collect; |
| | | } |
| | | @Override |
| | | public List<UserSelector> selectOperatorList(String equipmentCode, String factoryOrgCode, String positionCode) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getPost, positionCode); |
| | | if (StringUtils.isNotBlank(equipmentCode)) { |
| | | queryWrapper.and(q -> q.isNull(SysUser::getEamEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEamEquipmentIds, equipmentCode)); |
| | | } |
| | | if (StringUtils.isNotBlank(factoryOrgCode)) { |
| | | List<String> factoryIds = factoryService.queryFactoryIdsByOrgCode(factoryOrgCode); |
| | | if (CollectionUtil.isNotEmpty(factoryIds)) { |
| | | String factory = String.join(",", factoryIds); |
| | | String inClause = "(" + factory + ")"; |
| | | queryWrapper.exists("select 1 from eam_base_factory_user t where t.user_id=sys_user.id and t.factory_id in {0}", inClause); |
| | | } else { |
| | | return Collections.emptyList(); |
| | | } |
| | | } |
| | | queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); |
| | | queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1); |
| | | queryWrapper.orderByDesc(SysUser::getId); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | if (CollectionUtil.isEmpty(sysUsers)) { |
| | | return Collections.emptyList(); |
| | | } |
| | | return sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); |
| | | } |
| | | |
| | | /** |
| | | * 选择用户 |
| | | * @param equipmentCode 选择的设备ID |
| | | * @param factoryId 选择的工厂ID |
| | | * @param positionCode 岗位编号 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<UserSelector> selectOperatorFactoryList(String equipmentCode, String factoryId, String positionCode){ |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getPost, positionCode); |
| | | // if(StringUtils.isNotBlank(equipmentCode)) { |
| | | // queryWrapper.and(q -> q.isNull(SysUser::getEquipmentIds).or().eq(SysUser::getEquipmentIds, "").or().like(SysUser::getEquipmentIds, equipmentCode)); |
| | | // } |
| | | // if(StringUtils.isNotBlank(factoryId)) { |
| | | // queryWrapper.exists("select 1 from eam_base_factory_user t where t.user_id=sys_user.id and t.factory_id={0}", factoryId); |
| | | // } |
| | | queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); |
| | | queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1); |
| | | queryWrapper.orderByDesc(SysUser::getId); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); |
| | | return collect; |
| | | } |
| | | |
| | | @Override |
| | | public List<UserSelector> selectOperatorList(String positionCode) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getPost, positionCode); |
| | | queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); |
| | | queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1); |
| | | queryWrapper.orderByDesc(SysUser::getId); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); |
| | | return collect; |
| | | } |
| | | @Override |
| | | public List<UserSelector> selectOperatorList(String positionCode) { |
| | | LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>(); |
| | | queryWrapper.eq(SysUser::getPost, positionCode); |
| | | queryWrapper.eq(SysUser::getDelFlag, CommonConstant.DEL_FLAG_0); |
| | | queryWrapper.eq(SysUser::getStatus, CommonConstant.DEL_FLAG_1); |
| | | queryWrapper.orderByDesc(SysUser::getId); |
| | | List<SysUser> sysUsers = userMapper.selectList(queryWrapper); |
| | | List<UserSelector> collect = sysUsers.stream().map(user -> new UserSelector(user.getId(), user.getUsername(), user.getRealname())).collect(Collectors.toList()); |
| | | return collect; |
| | | } |
| | | } |