feat: 新增VIP充值接口并支持通过角色代码为用户分配角色
This commit is contained in:
@@ -8,5 +8,12 @@ namespace Yi.Framework.Rbac.Application.Contracts.IServices
|
||||
/// </summary>
|
||||
public interface IUserService : IYiCrudAppService<UserGetOutputDto, UserGetListOutputDto, Guid, UserGetListInputVo, UserCreateInputVo, UserUpdateInputVo>
|
||||
{
|
||||
/// <summary>
|
||||
/// 通过角色代码给用户添加角色
|
||||
/// </summary>
|
||||
/// <param name="userId">用户ID</param>
|
||||
/// <param name="roleCodes">角色代码</param>
|
||||
/// <returns></returns>
|
||||
Task AddUserRoleByRoleCodeAsync(Guid userId, List<string> roleCodes);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -241,5 +241,29 @@ namespace Yi.Framework.Rbac.Application.Services.System
|
||||
{
|
||||
return base.PostImportExcelAsync(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 通过角色代码给用户添加角色
|
||||
/// </summary>
|
||||
/// <param name="userId">用户ID</param>
|
||||
/// <param name="roleCodes"></param>
|
||||
/// <returns></returns>
|
||||
public async Task AddUserRoleByRoleCodeAsync(Guid userId, List<string> roleCodes)
|
||||
{
|
||||
// 根据角色代码查找角色ID
|
||||
var roleRepository = LazyServiceProvider.LazyGetRequiredService<ISqlSugarRepository<RoleAggregateRoot>>();
|
||||
var roleIds = await roleRepository._DbQueryable
|
||||
.Where(r => roleCodes.Contains(r.RoleCode) && r.State == true)
|
||||
.Select(r=>r.Id)
|
||||
.ToListAsync();
|
||||
|
||||
if (!roleIds.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 使用UserManager给用户设置角色
|
||||
await _userManager.GiveUserSetRoleAsync(new List<Guid> { userId }, roleIds);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,14 +32,15 @@ public class FileManager : DomainService, IFileManager
|
||||
/// <exception cref="ArgumentException"></exception>
|
||||
public async Task<List<FileAggregateRoot>> CreateAsync(IEnumerable<IFormFile> files)
|
||||
{
|
||||
if (files.Count() == 0)
|
||||
var formFiles = files as IFormFile[] ?? files.ToArray();
|
||||
if (!formFiles.Any())
|
||||
{
|
||||
throw new ArgumentException("文件上传为空!");
|
||||
}
|
||||
|
||||
//批量插入
|
||||
List<FileAggregateRoot> entities = new();
|
||||
foreach (var file in files)
|
||||
foreach (var file in formFiles)
|
||||
{
|
||||
FileAggregateRoot data = new(_guidGenerator.Create(), file.FileName, (decimal)file.Length / 1024);
|
||||
data.CheckDirectoryOrCreate();
|
||||
|
||||
@@ -26,19 +26,20 @@ namespace Yi.Framework.Rbac.Domain.Managers
|
||||
{
|
||||
//这个是需要事务的,在service中进行工作单元
|
||||
await _roleMenuRepository.DeleteAsync(u => roleIds.Contains(u.RoleId));
|
||||
//添加新的关系
|
||||
List<RoleMenuEntity> roleMenuEntity = new();
|
||||
//遍历用户
|
||||
foreach (var roleId in roleIds)
|
||||
{
|
||||
//添加新的关系
|
||||
List<RoleMenuEntity> roleMenuEntity = new();
|
||||
|
||||
foreach (var menu in menuIds)
|
||||
{
|
||||
roleMenuEntity.Add(new RoleMenuEntity() { RoleId = roleId, MenuId = menu });
|
||||
}
|
||||
//一次性批量添加
|
||||
await _roleMenuRepository.InsertRangeAsync(roleMenuEntity);
|
||||
|
||||
}
|
||||
|
||||
//一次性批量添加
|
||||
await _roleMenuRepository.InsertRangeAsync(roleMenuEntity);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -46,27 +46,25 @@ namespace Yi.Framework.Rbac.Domain.Managers
|
||||
/// <param name="userIds"></param>
|
||||
/// <param name="roleIds"></param>
|
||||
/// <returns></returns>
|
||||
public async Task GiveUserSetRoleAsync(List<Guid> userIds, List<Guid> roleIds)
|
||||
public async Task GiveUserSetRoleAsync(List<Guid> userIds, List<Guid>? roleIds)
|
||||
{
|
||||
//删除用户之前所有的用户角色关系(物理删除,没有恢复的必要)
|
||||
//删除用户之前所有的用户角色关系
|
||||
await _repositoryUserRole.DeleteAsync(u => userIds.Contains(u.UserId));
|
||||
|
||||
if (roleIds is not null)
|
||||
{
|
||||
//添加新的关系
|
||||
List<UserRoleEntity> userRoleEntities = new();
|
||||
//遍历用户
|
||||
foreach (var userId in userIds)
|
||||
{
|
||||
//添加新的关系
|
||||
List<UserRoleEntity> userRoleEntities = new();
|
||||
|
||||
foreach (var roleId in roleIds)
|
||||
{
|
||||
userRoleEntities.Add(new UserRoleEntity() { UserId = userId, RoleId = roleId });
|
||||
}
|
||||
|
||||
//一次性批量添加
|
||||
await _repositoryUserRole.InsertRangeAsync(userRoleEntities);
|
||||
}
|
||||
//一次性批量添加
|
||||
await _repositoryUserRole.InsertRangeAsync(userRoleEntities);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,25 +75,24 @@ namespace Yi.Framework.Rbac.Domain.Managers
|
||||
/// <param name="userIds"></param>
|
||||
/// <param name="postIds"></param>
|
||||
/// <returns></returns>
|
||||
public async Task GiveUserSetPostAsync(List<Guid> userIds, List<Guid> postIds)
|
||||
public async Task GiveUserSetPostAsync(List<Guid> userIds, List<Guid>? postIds)
|
||||
{
|
||||
//删除用户之前所有的用户角色关系(物理删除,没有恢复的必要)
|
||||
await _repositoryUserPost.DeleteAsync(u => userIds.Contains(u.UserId));
|
||||
if (postIds is not null)
|
||||
{
|
||||
//添加新的关系
|
||||
List<UserPostEntity> userPostEntities = new();
|
||||
//遍历用户
|
||||
foreach (var userId in userIds)
|
||||
{
|
||||
//添加新的关系
|
||||
List<UserPostEntity> userPostEntities = new();
|
||||
foreach (var post in postIds)
|
||||
{
|
||||
userPostEntities.Add(new UserPostEntity() { UserId = userId, PostId = post });
|
||||
}
|
||||
|
||||
//一次性批量添加
|
||||
await _repositoryUserPost.InsertRangeAsync(userPostEntities);
|
||||
}
|
||||
//一次性批量添加
|
||||
await _repositoryUserPost.InsertRangeAsync(userPostEntities);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,10 +134,7 @@ namespace Yi.Framework.Rbac.Domain.Managers
|
||||
public async Task SetDefautRoleAsync(Guid userId)
|
||||
{
|
||||
var role = await _roleRepository.GetFirstAsync(x => x.RoleCode == UserConst.DefaultRoleCode);
|
||||
if (role is not null)
|
||||
{
|
||||
await GiveUserSetRoleAsync(new List<Guid> { userId }, new List<Guid> { role.Id });
|
||||
}
|
||||
await GiveUserSetRoleAsync(new List<Guid> { userId }, new List<Guid> { role.Id });
|
||||
}
|
||||
|
||||
private void ValidateUserName(UserAggregateRoot input)
|
||||
|
||||
Reference in New Issue
Block a user