完善角色菜单分配管理

This commit is contained in:
橙子
2022-04-29 12:38:19 +08:00
parent c651b60c59
commit 6c7b2224b1
14 changed files with 116 additions and 74 deletions

View File

@@ -91,6 +91,12 @@
<param name="giveRoleSetMenuDto"></param>
<returns></returns>
</member>
<member name="M:Yi.Framework.ApiMicroservice.Controllers.RoleController.GetInMenuByRoleId(System.Int64)">
<summary>
通过角色id来获取菜单列表
</summary>
<returns></returns>
</member>
<member name="T:Yi.Framework.ApiMicroservice.Controllers.TestController">
<summary>
测试控制器

View File

@@ -28,6 +28,8 @@ namespace Yi.Framework.ApiMicroservice.Controllers
_iMenuService = iMenuService;
}
/// <summary>
/// 得到树形菜单
/// </summary>

View File

@@ -40,6 +40,14 @@ namespace Yi.Framework.ApiMicroservice.Controllers
return Result.Success().SetStatus(await _iRoleService.GiveRoleSetMenu(giveRoleSetMenuDto.RoleIds, giveRoleSetMenuDto.MenuIds));
}
/// <summary>
/// 通过角色id来获取菜单列表
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<Result> GetInMenuByRoleId(long RoleId)
{
return Result.Success().SetData(await _iRoleService.GetInMenuByRoleId(RoleId));
}
}
}

View File

@@ -63,7 +63,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers
//不建议操作,直接切换其他仓储
await _iUserService._repository.ChangeRepository<Repository<RoleEntity>>().GetListAsync();
//直接操作Db对象???恭喜你已经毕业了!此后将有一天,接手到这个的软件的程序员将破口大骂。
//最好不要直接操作Db对象
await _iUserService._repository._Db.Queryable<UserEntity>().ToListAsync();
return Result.Success().SetData(await _iUserService.DbTest());

View File

@@ -13,6 +13,13 @@ namespace Yi.Framework.Interface
/// <returns></returns>
Task<List<RoleEntity>> DbTest();
/// <summary>
/// 通过角色id获取角色实体包含菜单
/// </summary>
/// <param name="roleId"></param>
/// <returns></returns>
Task<RoleEntity> GetInMenuByRoleId(long roleId);
/// <summary>
/// 给角色设置菜单,多角色,多菜单
/// </summary>

View File

@@ -10,5 +10,7 @@ namespace Yi.Framework.Model.Models
{
//[Navigate(typeof(UserRoleEntity), nameof(UserRoleEntity.RoleId), nameof(UserRoleEntity.UserId))]
//public List<UserEntity> Users { get; set; }
[Navigate(typeof(RoleMenuEntity),nameof(RoleMenuEntity.RoleId),nameof(RoleMenuEntity.MenuId))]
public List<MenuEntity> Menus { get; set; }
}
}

View File

@@ -1,16 +1,15 @@
using SqlSugar;
using Yi.Framework.Common.Models;
using Yi.Framework.Model.Models;
//using SqlSugar;
//using Yi.Framework.Common.Models;
//using Yi.Framework.Model.Models;
namespace Yi.Framework.Repository
{
public class DataContext<T> : SimpleClient<T> where T : class, IBaseModelEntity, new()
{
public DataContext(ISqlSugarClient context) : base(context)
{
Db =base.Context;
}
//namespace Yi.Framework.Repository
//{
// public class DataContext<T> : SimpleClient<T> where T : class, IBaseModelEntity, new()
// {
// public DataContext(ISqlSugarClient context) : base(context)
// {
// }
public ISqlSugarClient Db;
}
}
// }
//}
//简化已被弃用

View File

@@ -12,7 +12,7 @@ namespace Yi.Framework.Repository
/// 仓储模式
/// </summary>
/// <typeparam name="T"></typeparam>
public class Repository<T> : DataContext<T>, IRepository<T> where T : class, IBaseModelEntity, new()
public class Repository<T> : SimpleClient<T>, IRepository<T> where T : class, IBaseModelEntity, new()
{
public ISqlSugarClient _Db { get; set; }
/// <summary>
@@ -31,7 +31,8 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<bool> UseTranAsync(Func<Task> func)
{
var res = await Db.AsTenant().UseTranAsync(func);
var con = Context;
var res = await _Db.AsTenant().UseTranAsync(func);
return res.IsSuccess;
}
@@ -44,7 +45,7 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<List<S>> UseSqlAsync<S>(string sql)
{
return await Db.Ado.SqlQueryAsync<S>(sql);
return await _Db.Ado.SqlQueryAsync<S>(sql);
}
@@ -55,7 +56,7 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<bool> UseSqlAsync(string sql)
{
return await Db.Ado.ExecuteCommandAsync(sql)>0;
return await _Db.Ado.ExecuteCommandAsync(sql)>0;
}
@@ -68,7 +69,7 @@ namespace Yi.Framework.Repository
public async Task<T> InsertReturnEntityAsync(T entity)
{
entity.Id =SnowFlakeSingle.instance.getID();
return await Db.Insertable(entity).ExecuteReturnEntityAsync();
return await _Db.Insertable(entity).ExecuteReturnEntityAsync();
}
/// <summary>
@@ -78,7 +79,7 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<bool> UpdateIgnoreNullAsync(T entity)
{
return await Db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync()>0;
return await _Db.Updateable(entity).IgnoreColumns(true).ExecuteCommandAsync()>0;
}
@@ -88,9 +89,9 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<bool> DeleteByLogicAsync(List<long> ids)
{
var entitys = await Db.Queryable<T>().Where(u => ids.Contains(u.Id)).ToListAsync();
var entitys = await _Db.Queryable<T>().Where(u => ids.Contains(u.Id)).ToListAsync();
entitys.ForEach(u=>u.IsDeleted=true);
return await Db.Updateable(entitys).ExecuteCommandAsync()>0;
return await _Db.Updateable(entitys).ExecuteCommandAsync()>0;
}
@@ -103,7 +104,7 @@ namespace Yi.Framework.Repository
/// <returns></returns>
public async Task<List<S>> StoreAsync<S>(string storeName, object para)
{
return await Db.Ado.UseStoredProcedure().SqlQueryAsync<S>(storeName, para);
return await _Db.Ado.UseStoredProcedure().SqlQueryAsync<S>(storeName, para);
}
@@ -142,7 +143,7 @@ namespace Yi.Framework.Repository
FieldName = it.Key,
FieldValue = it.Value
}).ToList();
var query = Db.Queryable<T>();
var query = _Db.Queryable<T>();
if (pars.OrderBys != null)
{
foreach (var item in pars.OrderBys)

View File

@@ -9,14 +9,18 @@ namespace Yi.Framework.Service
{
public partial class RoleService
{
private IRepository<RoleMenuEntity> _repositoryRoleMenu;
public RoleService(IRepository<RoleEntity> repository, IRepository<RoleMenuEntity> repositoryRoleMenu) : base(repository)
{
_repository = repository;
_repositoryRoleMenu = repositoryRoleMenu;
}
public async Task<List<RoleEntity>> DbTest()
{
return await _repository._Db.Queryable<RoleEntity>().ToListAsync();
}
public async Task<bool> GiveRoleSetMenu(List<long> roleIds, List<long> menuIds)
{
var _repositoryRoleMenu = _repository.ChangeRepository<Repository<RoleMenuEntity>>();
//多次操作,需要事务确保原子性
return await _repositoryRoleMenu.UseTranAsync(async () =>
{
@@ -35,12 +39,17 @@ namespace Yi.Framework.Service
}
//一次性批量添加
await _repositoryRoleMenu.InsertRangeAsync(roleMenuEntity);
await _repositoryRoleMenu.InsertReturnSnowflakeIdAsync(roleMenuEntity);
}
});
}
public async Task<RoleEntity> GetInMenuByRoleId(long roleId)
{
return await _repository._Db.Queryable<RoleEntity>().Includes(u => u.Menus).InSingleAsync(roleId);
}
}
}

View File

@@ -92,7 +92,7 @@ namespace Yi.Framework.Service
}
//一次性批量添加
await _repositoryUserRole.InsertRangeAsync(userRoleEntities);
await _repositoryUserRole.InsertReturnSnowflakeIdAsync(userRoleEntities);
}
});
}