SysUserController层
/**
* 新增管理员
* @param sysUser 系统管理员对象
* @return
*/
@ApiOperation("新增管理员")
@PostMapping
@PreAuthorize("hasAuthority('sys:user:save')")
public Result<String> saveSysUser(@RequestBody SysUser sysUser) {
Integer count = sysUserService.saveSysUser(sysUser);
return Result.handle(count>0);
}
SysUserServiceImpl层
/**
* 新增管理员
* 1.新增管理员
* 2.新增管理员与角色的关系
*
* @param sysUser
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Integer saveSysUser(SysUser sysUser) {
// 新增管理员
// 获取进行该操作人员的id
sysUser.setCreateUserId(AuthUtils.getLoginUserId());
sysUser.setCreateTime(new Date());
sysUser.setShopId(1L);
sysUser.setPassword(passwordEncoder.encode(sysUser.getPassword()));
int i = sysUserMapper.insert(sysUser);
if (i > 0) {
// 获取管理员标识
Long userId = sysUser.getUserId();
// 新增管理员与角色的关系
// 获取管理员的角色id集合
List<Long> roleIdList = sysUser.getRoleIdList();
// 判断是否有值
if (CollectionUtil.isNotEmpty(roleIdList) && roleIdList.size() != 0) {
// 创建管理员与角色关系的集合
List<SysUserRole> sysUserRoleList = new ArrayList<>();
// 循环遍历角色id集合
roleIdList.forEach(roleId -> {
// 创建管理员与角色的关系
SysUserRole sysUserRole = new SysUserRole();
sysUserRole.setUserId(userId);
sysUserRole.setRoleId(roleId);
/*// 新增管理员与角色的关系
注意:不建议在循环中操作数据库,大家尽量需要避免在循环中操作数据库
sysUserRoleMapper.insert(sysUserRole);*/
sysUserRoleList.add(sysUserRole);
});
// 批量添加管理员与角色的关系
sysUserRoleService.saveBatch(sysUserRoleList);
}
}
return i;
}