更新返回动态接口
This commit is contained in:
@@ -21,10 +21,12 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
private readonly ILogger<UserController> _logger;
|
||||
|
||||
private IUserService _userService;
|
||||
public AccountController(ILogger<UserController> logger, IUserService userService)
|
||||
private IMenuService _menuService;
|
||||
public AccountController(ILogger<UserController> logger, IUserService userService, IMenuService menuService)
|
||||
{
|
||||
_logger = logger;
|
||||
_userService = userService;
|
||||
_menuService = menuService;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,10 +39,10 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
public async Task<Result> Login(user _user)
|
||||
{
|
||||
var user_data = await _userService.Login(_user);
|
||||
if( user_data!=null)
|
||||
{
|
||||
|
||||
var token = MakeJwt.app(user_data);
|
||||
var menuList = await _userService.GetMenusByUser(user_data);
|
||||
if ( user_data!=null)
|
||||
{
|
||||
var token = MakeJwt.app(new jwtUser() {user=user_data,menuIds= menuList});
|
||||
return Result.Success().SetData(new { user = new { _user.id, _user.username, _user.introduction, _user.icon, _user.nick }, token });
|
||||
}
|
||||
return Result.Error();
|
||||
|
||||
@@ -138,33 +138,20 @@ namespace Yi.Framework.ApiMicroservice.Controllers
|
||||
[HttpGet]
|
||||
public async Task<Result> GetRouterByUserId(string router)
|
||||
{
|
||||
var _user = HttpContext.GetCurrentUserInfo();
|
||||
var menu_data = await _userService.GetMenuByUserId(router,_user.id);
|
||||
var _user = HttpContext.GetCurrentUserInfo(out List<int> menuIds);
|
||||
var menu_data = await _userService.GetMenuByUserId(router,_user.id, menuIds);
|
||||
AxiosUrlsModel urlsModel = new();
|
||||
foreach (var _menu in menu_data.children)
|
||||
if (_menu.mould.mould_name == "get")
|
||||
foreach (var _menu in menu_data)
|
||||
{
|
||||
var mould_name = _menu.mould.mould_name;
|
||||
switch (mould_name)
|
||||
{
|
||||
urlsModel.get= _menu.mould.url;
|
||||
}
|
||||
else if (_menu.mould.mould_name == "del")
|
||||
{
|
||||
urlsModel.del= _menu.mould.url ;
|
||||
}
|
||||
else if (_menu.mould.mould_name == "update")
|
||||
{
|
||||
urlsModel.update= _menu.mould.url ;
|
||||
}
|
||||
else if (_menu.mould.mould_name == "add")
|
||||
{
|
||||
urlsModel.add = _menu.mould.url ;
|
||||
}
|
||||
else
|
||||
{
|
||||
urlsModel.add = null;
|
||||
urlsModel.del = null;
|
||||
urlsModel.update = null;
|
||||
urlsModel.get = null;
|
||||
case "get":urlsModel.get= _menu.mould.url;break;
|
||||
case "add": urlsModel.add = _menu.mould.url; break;
|
||||
case "del": urlsModel.del = _menu.mould.url; break;
|
||||
case "update": urlsModel.update = _menu.mould.url; break;
|
||||
}
|
||||
}
|
||||
return Result.Success().SetData(urlsModel);
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ namespace Yi.Framework.Interface
|
||||
/// </summary>
|
||||
/// <param name="router"></param>
|
||||
/// <returns></returns>
|
||||
Task<menu> GetMenuByUserId(string router,int userId);
|
||||
Task<List<menu>> GetMenuByUserId(string router,int userId, List<int> menuIds);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -110,15 +110,14 @@ namespace Yi.Framework.Service
|
||||
}
|
||||
public async Task <List<menu>> GetMenuByUser(user _user)
|
||||
{
|
||||
var user_data =await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus)
|
||||
.Where(u => u.id == _user.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
var role_data= user_data.roles.ToList();
|
||||
//var user_data =await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus)
|
||||
// .Where(u => u.id == _user.id && u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).FirstOrDefaultAsync();
|
||||
List<menu> menu_data = new ();
|
||||
foreach (var role in role_data)
|
||||
foreach (var role in _user.roles)
|
||||
{
|
||||
var menu = await _roleService.GetMenusByRole(role);
|
||||
var menu = role.menus.ToList();
|
||||
menu.ForEach(u=>u.roles=null);
|
||||
menu_data = menu_data.Concat(menu).OrderByDescending(u=>u.sort).ToList();
|
||||
menu_data = menu_data.Concat(menu).ToList();
|
||||
}
|
||||
return menu_data;
|
||||
}
|
||||
@@ -204,15 +203,19 @@ namespace Yi.Framework.Service
|
||||
|
||||
|
||||
|
||||
public async Task<menu> GetMenuByUserId(string router,int userId)
|
||||
public async Task<List<menu>> GetMenuByUserId(string router,int userId,List<int> menuIds)
|
||||
{
|
||||
var user_data= await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.mould)
|
||||
.Where(u => u.id==userId&&u.is_delete == (short)Common.Enum.DelFlagEnum.Normal && u.is_delete == (short)Common.Enum.ShowFlagEnum.Show).FirstOrDefaultAsync();
|
||||
var user_data= await _Db.Set<user>().Include(u => u.roles).ThenInclude(u => u.menus).ThenInclude(u => u.children)
|
||||
.ThenInclude(u => u.mould).Where(u => u.id==userId).FirstOrDefaultAsync();
|
||||
var roleList= user_data.roles.ToList();
|
||||
menu menu_data=new();
|
||||
roleList.ForEach(u => u.users = null);
|
||||
List<menu> menu_data =new();
|
||||
foreach(var item in roleList)
|
||||
{
|
||||
menu_data = item.menus.Where(u => u.router == router).FirstOrDefault();
|
||||
{
|
||||
item.menus.ToList().ForEach(u => u.roles = null);
|
||||
var menuData = item.menus.Where(u => u.router == router).FirstOrDefault();
|
||||
menu_data= menuData.children?.Where(u => menuIds.Contains(u.id)&& u.is_delete == (short)Common.Enum.DelFlagEnum.Normal).ToList();
|
||||
if (menu_data != null) { break; }
|
||||
}
|
||||
|
||||
return menu_data;
|
||||
|
||||
@@ -39,6 +39,18 @@ namespace Yi.Framework.WebCore
|
||||
menuIds = claimlist.Where(u => u.Type == "menuIds").ToList().Select(u => Convert.ToInt32(u.Value)).ToList();
|
||||
|
||||
|
||||
return new user()
|
||||
{
|
||||
id = resId,
|
||||
username = claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Name).Value ?? "匿名"
|
||||
};
|
||||
}
|
||||
public static user GetCurrentUserInfo(this HttpContext httpContext)
|
||||
{
|
||||
IEnumerable<Claim> claimlist = httpContext.AuthenticateAsync().Result.Principal.Claims;
|
||||
|
||||
Int32.TryParse(claimlist.FirstOrDefault(u => u.Type == ClaimTypes.Sid).Value, out int resId);
|
||||
|
||||
return new user()
|
||||
{
|
||||
id = resId,
|
||||
|
||||
Reference in New Issue
Block a user