| | |
| | | int PASSWORD_MAX_LENGTH = 20; |
| | | |
| | | /** |
| | | * 管理员ID |
| | | * 超级管理员ID |
| | | */ |
| | | Long ADMIN_ID = 1L; |
| | | Long SUPER_ADMIN_ID = 1L; |
| | | |
| | | } |
| | |
| | | |
| | | /** |
| | | * 登录鉴权助手 |
| | | * |
| | | * <p> |
| | | * user_type 为 用户类型 同一个用户表 可以有多种用户类型 例如 pc,app |
| | | * deivce 为 设备类型 同一个用户类型 可以有 多种设备类型 例如 web,ios |
| | | * 可以组成 用户类型与设备类型多对多的 权限灵活控制 |
| | | * |
| | | * <p> |
| | | * 多用户体系 针对 多种用户类型 但权限控制不一致 |
| | | * 可以组成 多用户类型表与多设备类型 分别控制权限 |
| | | * |
| | |
| | | * @return 结果 |
| | | */ |
| | | public static boolean isAdmin(Long userId) { |
| | | return UserConstants.ADMIN_ID.equals(userId); |
| | | return UserConstants.SUPER_ADMIN_ID.equals(userId); |
| | | } |
| | | |
| | | public static boolean isAdmin() { |
| | |
| | | // 更新缓存用户权限 |
| | | LoginUser loginUser = LoginHelper.getLoginUser(); |
| | | SysUser sysUser = userService.selectUserById(loginUser.getUserId()); |
| | | if (ObjectUtil.isNotNull(sysUser) && !sysUser.isAdmin()) { |
| | | if (ObjectUtil.isNotNull(sysUser) && !LoginHelper.isAdmin()) { |
| | | loginUser.setMenuPermission(permissionService.getMenuPermission(sysUser)); |
| | | LoginHelper.setLoginUser(loginUser); |
| | | } |
| | |
| | | import cn.hutool.core.lang.tree.Tree; |
| | | import cn.hutool.core.util.ArrayUtil; |
| | | import cn.hutool.core.util.ObjectUtil; |
| | | import com.ruoyi.common.excel.core.ExcelResult; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.core.constant.UserConstants; |
| | | import com.ruoyi.common.core.web.controller.BaseController; |
| | | import com.ruoyi.common.mybatis.core.page.PageQuery; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.StreamUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.controller.BaseController; |
| | | import com.ruoyi.common.excel.core.ExcelResult; |
| | | import com.ruoyi.common.excel.utils.ExcelUtil; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.mybatis.core.page.PageQuery; |
| | | import com.ruoyi.common.mybatis.core.page.TableDataInfo; |
| | | import com.ruoyi.common.satoken.utils.LoginHelper; |
| | | import com.ruoyi.system.domain.SysDept; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.system.domain.SysUser; |
| | | import com.ruoyi.common.mybatis.core.page.TableDataInfo; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.core.utils.StreamUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.excel.utils.ExcelUtil; |
| | | import com.ruoyi.system.domain.vo.SysUserExportVo; |
| | | import com.ruoyi.system.domain.vo.SysUserImportVo; |
| | | import com.ruoyi.system.listener.SysUserImportListener; |
| | | import com.ruoyi.system.service.ISysDeptService; |
| | | import com.ruoyi.system.service.ISysPostService; |
| | | import com.ruoyi.system.service.ISysRoleService; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import com.ruoyi.system.service.*; |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.springframework.http.MediaType; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import jakarta.servlet.http.HttpServletResponse; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 用户信息 |
| | |
| | | import com.ruoyi.common.core.web.domain.BaseEntity; |
| | | import com.ruoyi.common.excel.annotation.ExcelDictFormat; |
| | | import com.ruoyi.common.excel.convert.ExcelDictConvert; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.NotNull; |
| | | import jakarta.validation.constraints.Size; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | public boolean isAdmin() { |
| | | return UserConstants.ADMIN_ID.equals(this.roleId); |
| | | return UserConstants.SUPER_ADMIN_ID.equals(this.roleId); |
| | | } |
| | | } |
| | |
| | | import com.ruoyi.common.core.enums.SensitiveStrategy; |
| | | import com.ruoyi.common.core.web.domain.BaseEntity; |
| | | import com.ruoyi.common.core.xss.Xss; |
| | | import jakarta.validation.constraints.Email; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.Size; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.NoArgsConstructor; |
| | | |
| | | import jakarta.validation.constraints.Email; |
| | | import jakarta.validation.constraints.NotBlank; |
| | | import jakarta.validation.constraints.Size; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | |
| | | } |
| | | |
| | | public boolean isAdmin() { |
| | | return UserConstants.ADMIN_ID.equals(this.userId); |
| | | return UserConstants.SUPER_ADMIN_ID.equals(this.userId); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.ruoyi.system.service; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.system.domain.SysUser; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | * @return 角色权限信息 |
| | | */ |
| | | public Set<String> getRolePermission(SysUser user) { |
| | | Set<String> roles = new HashSet<String>(); |
| | | Set<String> roles = new HashSet<>(); |
| | | // 管理员拥有所有权限 |
| | | if (user.isAdmin()) { |
| | | roles.add("admin"); |
| | |
| | | * @return 菜单权限信息 |
| | | */ |
| | | public Set<String> getMenuPermission(SysUser user) { |
| | | Set<String> perms = new HashSet<String>(); |
| | | Set<String> perms = new HashSet<>(); |
| | | // 管理员拥有所有权限 |
| | | if (user.isAdmin()) { |
| | | perms.add("*:*:*"); |
| | | } else { |
| | | List<SysRole> roles = user.getRoles(); |
| | | if (!roles.isEmpty() && roles.size() > 1) { |
| | | if (CollUtil.isNotEmpty(roles)) { |
| | | // 多角色设置permissions属性,以便数据权限匹配权限 |
| | | for (SysRole role : roles) { |
| | | Set<String> rolePerms = menuService.selectMenuPermsByRoleId(role.getRoleId()); |
| | |
| | | */ |
| | | @Override |
| | | public String checkConfigKeyUnique(SysConfig config) { |
| | | Long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId(); |
| | | long configId = ObjectUtil.isNull(config.getConfigId()) ? -1L : config.getConfigId(); |
| | | SysConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysConfig>().eq(SysConfig::getConfigKey, config.getConfigKey())); |
| | | if (ObjectUtil.isNotNull(info) && info.getConfigId().longValue() != configId.longValue()) { |
| | | if (ObjectUtil.isNotNull(info) && info.getConfigId() != configId) { |
| | | return UserConstants.NOT_UNIQUE; |
| | | } |
| | | return UserConstants.UNIQUE; |
| | |
| | | dept.setAncestors(child.getAncestors().replaceFirst(oldAncestors, newAncestors)); |
| | | list.add(dept); |
| | | } |
| | | if (list.size() > 0) { |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | baseMapper.updateBatchById(list); |
| | | } |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.ruoyi.common.core.constant.Constants; |
| | | import com.ruoyi.common.core.constant.UserConstants; |
| | | import com.ruoyi.system.domain.SysMenu; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.common.satoken.utils.LoginHelper; |
| | | import com.ruoyi.common.core.utils.StreamUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.utils.TreeBuildUtils; |
| | | import com.ruoyi.common.satoken.utils.LoginHelper; |
| | | import com.ruoyi.system.domain.SysMenu; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.system.domain.SysRoleMenu; |
| | | import com.ruoyi.system.domain.vo.MetaVo; |
| | | import com.ruoyi.system.domain.vo.RouterVo; |
| | |
| | | */ |
| | | @Override |
| | | public List<RouterVo> buildMenus(List<SysMenu> menus) { |
| | | List<RouterVo> routers = new LinkedList<RouterVo>(); |
| | | List<RouterVo> routers = new LinkedList<>(); |
| | | for (SysMenu menu : menus) { |
| | | RouterVo router = new RouterVo(); |
| | | router.setHidden("1".equals(menu.getVisible())); |
| | |
| | | router.setChildren(buildMenus(cMenus)); |
| | | } else if (isMenuFrame(menu)) { |
| | | router.setMeta(null); |
| | | List<RouterVo> childrenList = new ArrayList<RouterVo>(); |
| | | List<RouterVo> childrenList = new ArrayList<>(); |
| | | RouterVo children = new RouterVo(); |
| | | children.setPath(menu.getPath()); |
| | | children.setComponent(menu.getComponent()); |
| | |
| | | } else if (menu.getParentId().intValue() == 0 && isInnerLink(menu)) { |
| | | router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); |
| | | router.setPath("/"); |
| | | List<RouterVo> childrenList = new ArrayList<RouterVo>(); |
| | | List<RouterVo> childrenList = new ArrayList<>(); |
| | | RouterVo children = new RouterVo(); |
| | | String routerPath = innerLinkReplaceEach(menu.getPath()); |
| | | children.setPath(routerPath); |
| | |
| | | * @return String |
| | | */ |
| | | public List<SysMenu> getChildPerms(List<SysMenu> list, int parentId) { |
| | | List<SysMenu> returnList = new ArrayList<SysMenu>(); |
| | | List<SysMenu> returnList = new ArrayList<>(); |
| | | for (SysMenu t : list) { |
| | | // 一、根据传入的某个父节点ID,遍历该父节点的所有子节点 |
| | | if (t.getParentId() == parentId) { |
| | |
| | | * 判断是否有子节点 |
| | | */ |
| | | private boolean hasChild(List<SysMenu> list, SysMenu t) { |
| | | return getChildList(list, t).size() > 0; |
| | | return CollUtil.isNotEmpty(getChildList(list, t)); |
| | | } |
| | | |
| | | /** |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.constant.UserConstants; |
| | | import com.ruoyi.common.core.utils.StreamUtils; |
| | | import com.ruoyi.common.mybatis.core.page.PageQuery; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.common.mybatis.core.page.TableDataInfo; |
| | |
| | | public int insertAuthUsers(Long roleId, Long[] userIds) { |
| | | // 新增用户与角色管理 |
| | | int rows = 1; |
| | | List<SysUserRole> list = new ArrayList<SysUserRole>(); |
| | | for (Long userId : userIds) { |
| | | List<SysUserRole> list = StreamUtils.toList(List.of(userIds), userId -> { |
| | | SysUserRole ur = new SysUserRole(); |
| | | ur.setUserId(userId); |
| | | ur.setRoleId(roleId); |
| | | list.add(ur); |
| | | } |
| | | if (list.size() > 0) { |
| | | return ur; |
| | | }); |
| | | if (CollUtil.isNotEmpty(list)) { |
| | | rows = userRoleMapper.insertBatch(list) ? list.size() : 0; |
| | | } |
| | | return rows; |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.ruoyi.common.core.constant.UserConstants; |
| | | import com.ruoyi.common.mybatis.core.page.PageQuery; |
| | | import com.ruoyi.system.domain.SysDept; |
| | | import com.ruoyi.system.domain.SysRole; |
| | | import com.ruoyi.system.domain.SysUser; |
| | | import com.ruoyi.common.mybatis.core.page.TableDataInfo; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.mybatis.helper.DataBaseHelper; |
| | | import com.ruoyi.common.satoken.utils.LoginHelper; |
| | | import com.ruoyi.common.core.utils.StreamUtils; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.system.domain.SysPost; |
| | | import com.ruoyi.system.domain.SysUserPost; |
| | | import com.ruoyi.system.domain.SysUserRole; |
| | | import com.ruoyi.common.mybatis.core.page.PageQuery; |
| | | import com.ruoyi.common.mybatis.core.page.TableDataInfo; |
| | | import com.ruoyi.common.mybatis.helper.DataBaseHelper; |
| | | import com.ruoyi.common.satoken.utils.LoginHelper; |
| | | import com.ruoyi.system.domain.*; |
| | | import com.ruoyi.system.mapper.*; |
| | | import com.ruoyi.system.service.ISysUserService; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | |
| | | * 校验手机号码是否唯一 |
| | | * |
| | | * @param user 用户信息 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String checkPhoneUnique(SysUser user) { |
| | |
| | | * 校验email是否唯一 |
| | | * |
| | | * @param user 用户信息 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public String checkEmailUnique(SysUser user) { |
| | |
| | | Long[] posts = user.getPostIds(); |
| | | if (ArrayUtil.isNotEmpty(posts)) { |
| | | // 新增用户与岗位管理 |
| | | List<SysUserPost> list = new ArrayList<>(posts.length); |
| | | for (Long postId : posts) { |
| | | List<SysUserPost> list = StreamUtils.toList(List.of(posts), postId -> { |
| | | SysUserPost up = new SysUserPost(); |
| | | up.setUserId(user.getUserId()); |
| | | up.setPostId(postId); |
| | | list.add(up); |
| | | } |
| | | return up; |
| | | }); |
| | | userPostMapper.insertBatch(list); |
| | | } |
| | | } |
| | |
| | | public void insertUserRole(Long userId, Long[] roleIds) { |
| | | if (ArrayUtil.isNotEmpty(roleIds)) { |
| | | // 新增用户与角色管理 |
| | | List<SysUserRole> list = new ArrayList<>(roleIds.length); |
| | | for (Long roleId : roleIds) { |
| | | List<SysUserRole> list = StreamUtils.toList(List.of(roleIds), roleId -> { |
| | | SysUserRole ur = new SysUserRole(); |
| | | ur.setUserId(userId); |
| | | ur.setRoleId(roleId); |
| | | list.add(ur); |
| | | } |
| | | return ur; |
| | | }); |
| | | userRoleMapper.insertBatch(list); |
| | | } |
| | | } |
| | |
| | | checkUserAllowed(new SysUser(userId)); |
| | | checkUserDataScope(userId); |
| | | } |
| | | List<Long> ids = Arrays.asList(userIds); |
| | | List<Long> ids = List.of(userIds); |
| | | // 删除用户与角色关联 |
| | | userRoleMapper.delete(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, ids)); |
| | | // 删除用户与岗位表 |
| | |
| | | |
| | | <select id="selectPageUserList" resultMap="SysUserResult"> |
| | | select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, |
| | | u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from |
| | | sys_user u |
| | | left join sys_dept d on u.dept_id = d.dept_id |
| | | u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader |
| | | from sys_user u |
| | | left join sys_dept d on u.dept_id = d.dept_id |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |
| | | <select id="selectUserList" resultMap="SysUserResult"> |
| | | select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, |
| | | u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader from |
| | | sys_user u |
| | | left join sys_dept d on u.dept_id = d.dept_id |
| | | u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader |
| | | from sys_user u |
| | | left join sys_dept d on u.dept_id = d.dept_id |
| | | ${ew.getCustomSqlSegment} |
| | | </select> |
| | | |