feat(user): 新增用户角色和权限相关功能

- 在 RoleMenuRepository 中添加了根据角色 ID 查询角色菜单的方法
- 在 UserServiceImpl 中实现了用户角色和权限的更新逻辑
- 新增了 sys_role 表及其相关注释
This commit is contained in:
zhuangtianxiang 2025-02-06 12:43:39 +08:00
parent c7ae0385a0
commit 11a6405be3
3 changed files with 67 additions and 0 deletions

View File

@ -2,9 +2,15 @@ package com.zsc.edu.gateway.modules.system.repo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zsc.edu.gateway.modules.system.entity.RoleMenu; import com.zsc.edu.gateway.modules.system.entity.RoleMenu;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.Set;
/** /**
* @author Yao * @author Yao
*/ */
public interface RoleMenuRepository extends BaseMapper<RoleMenu> { public interface RoleMenuRepository extends BaseMapper<RoleMenu> {
@Select("select * from role_menu where role_id = #{roleId}")
Set<RoleMenu> selectByRoleId(@Param("roleId") Long roleId);
} }

View File

@ -9,11 +9,16 @@ import com.zsc.edu.gateway.modules.system.dto.UserCreateDto;
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdateDto; import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdateDto;
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdatePasswordDto; import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdatePasswordDto;
import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto; import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto;
import com.zsc.edu.gateway.modules.system.entity.Menu;
import com.zsc.edu.gateway.modules.system.entity.Role; import com.zsc.edu.gateway.modules.system.entity.Role;
import com.zsc.edu.gateway.modules.system.entity.RoleMenu;
import com.zsc.edu.gateway.modules.system.entity.User; import com.zsc.edu.gateway.modules.system.entity.User;
import com.zsc.edu.gateway.modules.system.mapper.UserMapper; import com.zsc.edu.gateway.modules.system.mapper.UserMapper;
import com.zsc.edu.gateway.modules.system.repo.MenuRepository;
import com.zsc.edu.gateway.modules.system.repo.RoleMenuRepository;
import com.zsc.edu.gateway.modules.system.repo.RoleRepository; import com.zsc.edu.gateway.modules.system.repo.RoleRepository;
import com.zsc.edu.gateway.modules.system.repo.UserRepository; import com.zsc.edu.gateway.modules.system.repo.UserRepository;
import com.zsc.edu.gateway.modules.system.service.MenuService;
import com.zsc.edu.gateway.modules.system.service.UserService; import com.zsc.edu.gateway.modules.system.service.UserService;
import com.zsc.edu.gateway.modules.system.utils.sendMail; import com.zsc.edu.gateway.modules.system.utils.sendMail;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -22,7 +27,10 @@ import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* <p> * <p>
@ -42,6 +50,9 @@ public class UserServiceImpl extends ServiceImpl<UserRepository, User> implement
private final sendMail send; private final sendMail send;
private final UserMapper userMapper; private final UserMapper userMapper;
private final RoleRepository roleRepository; private final RoleRepository roleRepository;
private final RoleMenuRepository RoleMenuRepository;
private final RoleMenuRepository roleMenuRepository;
private final MenuRepository menuRepository;
@Override @Override
public Boolean create(UserCreateDto dto) { public Boolean create(UserCreateDto dto) {
@ -129,8 +140,13 @@ public class UserServiceImpl extends ServiceImpl<UserRepository, User> implement
.update(); .update();
userDetails.setRole(role); userDetails.setRole(role);
if (updated) { if (updated) {
// 刷新权限表
List<Menu> menus = menuRepository.selectByRoleId(roleId);
Set<String> permissions = menus.stream().map(Menu::getPermissions).collect(Collectors.toSet());
userDetails.setPermissions(permissions);
SecurityUtil.setUserInfo(userDetails); SecurityUtil.setUserInfo(userDetails);
} }
return userDetails; return userDetails;
} }
} }

View File

@ -0,0 +1,45 @@
create table sys_role
(
id bigint generated by default as identity
constraint _copy_6
primary key,
name varchar(50) not null,
create_by varchar(50),
update_by varchar(50),
create_time timestamp(6),
update_time timestamp(6),
enabled boolean,
remark varchar(255),
data_scope integer,
create_id bigint,
dept_id bigint
);
comment on table sys_role is '角色表';
comment on column sys_role.id is 'ID';
comment on column sys_role.name is '名称';
comment on column sys_role.create_by is '创建者';
comment on column sys_role.update_by is '更新者';
comment on column sys_role.create_time is '创建日期';
comment on column sys_role.update_time is '更新时间';
comment on column sys_role.enabled is '状态';
comment on column sys_role.data_scope is '数据权限范围';
comment on column sys_role.create_id is '创建者id';
comment on column sys_role.dept_id is '部门权限';
alter table sys_role
owner to gitea;
create index role_name_index
on sys_role (name);