问题描述
若依新注册的用户默认没有角色
解决方案:
一、准备工作
(1)先在sys_role表中添加所需用到的默认角色,并记住该id,这里默认角色是普通用户,id为2
(2)给sys_user_role表中的role_id字段添加默认值,这里为2
二、正式开始
(1)在ruoyi-system包下找到SysUserRoleMapper.java,添加下面代码
public int insertDefaultRole(String userName);
(2) 找到SysUserRoleMapper.java对应的SysUserRoleMapper.xml,添加下列代码
<insert id="insertDefaultRole" >
insert into sys_user_role(user_id)
select user_id from sys_user where user_name=#{userName}
</insert>
由于用户名唯一,这里的做法是根据用户名查出用户对应的id,插入到sys_user_role表中,由于设置的role_id默认值为2,所以这里不需要添加role_id
(3)找到ISysRoleService.java,添加下面方法
public int insertDefaultRole(String userName);
(4)找到 ISysRoleService.java对应的实现类SysRoleServiceImpl.java,实现方法
@Override
public int insertDefaultRole(String userName) {
return userRoleMapper.insertDefaultRole(userName);
}
(5) 找到注册对应的控制层SysRegisterController.java
首先注入ISysRoleService
@Autowired
private ISysRoleService roleService;
其次在注册方法内添加下面语句
roleService.insertDefaultRole(user.getUsername());
只需添加上面一句,下面贴出注册方法只是为了更好的看出代码写的位置
@PostMapping("/register")
public AjaxResult register(@RequestBody RegisterBody user)
{
if (!("true".equals(configService.selectConfigByKey("sys.account.registerUser"))))
{
return error("当前系统没有开启注册功能!");
}
String msg = registerService.register(user);
roleService.insertDefaultRole(user.getUsername());
return StringUtils.isEmpty(msg) ? success() : error(msg);
}
三、结束!