Browse Source

1.修正用户多个角色菜单只显示不完整的问题

PTD
Marvin 2 years ago
parent
commit
8389edb10a
  1. 87
      AMESCoreStudio.Web/Controllers/HomeController.cs
  2. 14
      AMESCoreStudio.Web/HttpApis/ISYS.cs
  3. 57
      AMESCoreStudio.WebApi/Controllers/SYS/RoleModulesController.cs
  4. 58
      AMESCoreStudio.WebApi/Controllers/SYS/RoleProgramsController.cs

87
AMESCoreStudio.Web/Controllers/HomeController.cs

@ -9,6 +9,8 @@ using System.Threading.Tasks;
using AMESCoreStudio.WebApi;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Extensions.Localization;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace AMESCoreStudio.Web.Controllers
{
@ -47,6 +49,91 @@ namespace AMESCoreStudio.Web.Controllers
{
var info = await _authApi.AuthInfo();
if (Request.Cookies["_AMESCookie"] != null)
{
var userID = "";
HttpContext.Request.Cookies.TryGetValue("UserID", out userID);
if (userID != null)
{
if (int.Parse(userID.ToString()) >= 0)
{
int user_id = int.Parse(userID.ToString());
var userRole = await _sysApi.GetUserRolesByUser(user_id);
int role_id = userRole.Data.ToList()[0].RoleID;
//var userModule = await _sysApi.GetRoleModulesByRole(role_id, 0, 10);
//var userProgram = await _sysApi.GetRoleProgramsByRole(role_id, 0, 10);
var userModule = await _sysApi.GetRoleModulesByUser(user_id, 0, 10);
var userProgram = await _sysApi.GetRoleProgramsByUser(user_id, 0, 10);
string menuData = "<ul id = 'nav' class='layui-tab-item layui-show'>";
int i = 0;
foreach (var user_module in userModule.Data)
{
JObject jo1 = JObject.Parse(user_module.ToString());
int module_id = int.Parse(jo1["moduleID"].ToString());
i = i + 1;
if (i == 0)
{
menuData = menuData + "<li class='open'>";
}
else
{
menuData = menuData + "<li>";
}
if (user_module != null)
{
menuData = menuData + "<a class=''>";
menuData = menuData + "<i class='fa fa-star fa-fw' style='color:#77B272;'></i><cite style='color:#77B272;'> " + jo1["moduleName"].ToString() + " </cite><i class='fa fa-angle-down fa-fw nav_right'></i>";
menuData = menuData + "</a>";
menuData = menuData + "<ul class='sub-menu' style='display: none;'>";
}
foreach (var user_program in userProgram.Data)
{
if (user_program != null)
{
JObject jo2 = JObject.Parse(user_program.ToString());
if (jo2["moduleID"].ToString() == module_id.ToString())
{
menuData = menuData + "<li class='sub-tab' hg-title='" + jo2["programName"].ToString() + "' hg-nav='" + jo2["programPath"].ToString() + "'>";
menuData = menuData + "<a><i class='fa fa-key fa-fw'></i><cite>" + jo2["programName"].ToString() + "</cite></a>";
menuData = menuData + "</li>";
}
}
}
menuData = menuData + "</ul>";
menuData = menuData + "</li>";
}
menuData = menuData + "</ul>";
ViewData["MenuList"] = menuData;
return View();
}
}
else
{
return RedirectToAction("Index", "Login");
}
}
return View();
//return RedirectToAction("Index", "Login");
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async Task<IActionResult> Framework1()
{
var info = await _authApi.AuthInfo();
if (Request.Cookies["_AMESCookie"] != null)
{
var userID = "";

14
AMESCoreStudio.Web/HttpApis/ISYS.cs

@ -225,6 +225,13 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/RoleModules")]
ITask<List<RoleModule>> GetRoleModules();
/// <summary>
/// 根据用户ID獲取所有角色模组資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RoleModules/User/{id}")]
ITask<ResultModel<dynamic>> GetRoleModulesByUser(int id, int page = 0, int limit = 10);
/// <summary>
/// 根据角色ID獲取角色模组資料
/// </summary>
@ -271,6 +278,13 @@ namespace AMESCoreStudio.Web
[WebApiClient.Attributes.HttpGet("api/RolePrograms")]
ITask<List<RoleProgram>> GetRolePrograms();
/// <summary>
/// 根据用户ID獲取所有角色功能資料
/// </summary>
/// <returns></returns>
[WebApiClient.Attributes.HttpGet("api/RolePrograms/User/{id}")]
ITask<ResultModel<dynamic>> GetRoleProgramsByUser(int id, int page = 0, int limit = 10);
/// <summary>
/// 根据角色ID獲取角色功能資料
/// </summary>

57
AMESCoreStudio.WebApi/Controllers/SYS/RoleModulesController.cs

@ -56,6 +56,63 @@ namespace AMESCoreStudio.WebApi.Controllers.SYS
//return await _context.RoleModules.Include(r=>r.Module).ToListAsync();
}
/// <summary>
/// 根据用户ID获取所有角色模组资料
/// </summary>
/// <param name="id"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/RoleModules/User/5
[HttpGet("User/{id}")]
public async Task<ResultModel<dynamic>> GetRoleModuleByUser(int id, int page = 0, int limit = 10)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
var q = from q1 in _context.RoleModules
join q2 in _context.UserRoles on q1.RoleID equals q2.RoleID
select new
{
q1.ModuleID,
ModuleNo = q1.Module.ModuleNo,
ModuleName = q1.Module.ModuleName,
ModuleDesc = q1.Module.ModuleDesc,
SortSeq = q1.Module.SortSeq,
q2.UserID
};
if (id >= 0)
{
q = q.Where(p => p.UserID.Equals(id));
}
result.DataTotal = q.Distinct().ToList().Count;
if (page > 0)
{
q = q.OrderBy(p => p.ModuleID).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.ModuleID);
}
var userModule = await q.Distinct().OrderBy(p => p.ModuleID).ToListAsync();
result.Data = userModule;
if (userModule == null)
{
result.Msg = "查無資料";
result.Success = false;
return result;
}
result.Msg = "OK";
result.Success = true;
return result;
}
/// <summary>
/// 根据角色ID获取该角色模组资料
/// </summary>

58
AMESCoreStudio.WebApi/Controllers/SYS/RoleProgramsController.cs

@ -56,6 +56,64 @@ namespace AMESCoreStudio.WebApi.Controllers.SYS
return roleProgram;
}
/// <summary>
/// 根据用户ID获取所有角色功能资料
/// </summary>
/// <param name="id"></param>
/// <param name="page"></param>
/// <param name="limit"></param>
/// <returns></returns>
// GET: api/RolePrograms/User/5
[HttpGet("User/{id}")]
public async Task<ResultModel<dynamic>> GetRoleProgramByUser(int id, int page = 0, int limit = 10)
{
ResultModel<dynamic> result = new ResultModel<dynamic>();
var q = from q1 in _context.RolePrograms
join q2 in _context.UserRoles on q1.RoleID equals q2.RoleID
select new
{
q1.ProgramID,
ModuleID = q1.Program.ModuleID,
ProgramNo = q1.Program.ProgramNo,
ProgramName = q1.Program.ProgramName,
ProgramPath = q1.Program.ProgramPath,
SortSeq = q1.Program.SortSeq,
q2.UserID
};
if (id >= 0)
{
q = q.Where(p => p.UserID.Equals(id));
}
result.DataTotal = q.Distinct().ToList().Count;
if (page > 0)
{
q = q.OrderBy(p => p.ProgramID).Skip((page - 1) * limit).Take(limit);
}
else
{
q = q.OrderBy(p => p.ProgramID);
}
var userProgram = await q.Distinct().OrderBy(p => p.ProgramID).ToListAsync();
result.Data = userProgram;
if (userProgram == null)
{
result.Msg = "查無資料";
result.Success = false;
return result;
}
result.Msg = "OK";
result.Success = true;
return result;
}
/// <summary>
/// 根据角色ID获取该角色功能资料
/// </summary>

Loading…
Cancel
Save