Files
HTCloud/HT.Cloud.Web/Areas/SystemOrganize/Controllers/RoleAuthorizeController.cs
2023-03-03 16:07:50 +08:00

177 lines
5.6 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
* Copyright © 2020 HT.Cloud.Framework 版权所有
* Author: HT.Cloud
* Description: WaterCloud快速开发平台
* Website
*********************************************************************************/
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using HT.Cloud.Code;
using HT.Cloud.Domain.SystemManage;
using HT.Cloud.Domain.SystemOrganize;
using HT.Cloud.Service.SystemManage;
using HT.Cloud.Service.SystemOrganize;
namespace HT.Cloud.Web.Areas.SystemOrganize.Controllers
{
[Area("SystemOrganize")]
public class RoleAuthorizeController : BaseController
{
public RoleAuthorizeService _roleAuthorizeService { get; set; }
public ModuleService _moduleService { get; set; }
public ModuleButtonService _moduleButtonService { get; set; }
public ModuleFieldsService _moduleFieldsService { get; set; }
[HttpGet]
public async Task<ActionResult> GetPermissionTree(string roleId)
{
var current = _moduleService.currentuser;
string roleid = current.RoleId;
var moduledata = new List<ModuleEntity>();
var buttondata = new List<ModuleButtonEntity>();
var authorizedata = new List<RoleAuthorizeEntity>();
//隐藏系统菜单及字典管理
if (roleid == null && current.IsAdmin)
{
moduledata = await _moduleService.GetList();
buttondata = await _moduleButtonService.GetList();
moduledata = moduledata.Where(a => a.F_EnabledMark == true).ToList();
buttondata = buttondata.Where(a => a.F_EnabledMark == true).ToList();
}
else
{
var rolelist = roleid.Split(',');
foreach (var item in rolelist)
{
moduledata.AddRange(await _moduleService.GetListByRole(item));
buttondata.AddRange(await _moduleButtonService.GetListByRole(item));
}
moduledata = moduledata.GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
buttondata = buttondata.GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
}
if (!string.IsNullOrEmpty(roleId))
{
authorizedata = await _roleAuthorizeService.GetList(roleId);
}
var treeList = new List<TreeGridModel>();
foreach (ModuleEntity item in moduledata)
{
TreeGridModel tree = new TreeGridModel();
tree.id = item.F_Id;
tree.title = item.F_FullName;
tree.parentId = item.F_ParentId;
if (item.F_IsPublic == true)
{
tree.checkArr = "1";
tree.disabled = true;
}
else
{
tree.checkArr = authorizedata.Count(t => t.F_ItemId == item.F_Id) > 0 ? "1" : "0";
}
treeList.Add(tree);
}
foreach (ModuleButtonEntity item in buttondata)
{
TreeGridModel tree = new TreeGridModel();
tree.id = item.F_Id;
tree.title = item.F_FullName;
tree.parentId = item.F_ParentId == "0" ? item.F_ModuleId : item.F_ParentId;
if (item.F_IsPublic == true)
{
tree.checkArr = "1";
tree.disabled = true;
}
else
{
tree.checkArr = authorizedata.Count(t => t.F_ItemId == item.F_Id) > 0 ? "1" : "0";
}
treeList.Add(tree);
}
return DTreeResult(treeList.TreeList());
}
[HttpPost]
[IgnoreAntiforgeryToken]
public async Task<ActionResult> GetPermissionFieldsTree(string roleId, string moduleids)
{
var current = _moduleService.currentuser;
string roleid = current.RoleId;
var moduledata = new List<ModuleEntity>();
var fieldsdata = new List<ModuleFieldsEntity>();
var authorizedata = new List<RoleAuthorizeEntity>();
//隐藏系统菜单及字典管理
if (roleid == null && current.IsAdmin)
{
moduledata = await _moduleService.GetList();
fieldsdata = await _moduleFieldsService.GetList();
moduledata = moduledata.Where(a => a.F_EnabledMark == true).ToList();
fieldsdata = fieldsdata.Where(a => a.F_EnabledMark == true).ToList();
}
else
{
var rolelist = roleid.Split(',');
foreach (var item in rolelist)
{
moduledata.AddRange(await _moduleService.GetListByRole(item));
fieldsdata.AddRange(await _moduleFieldsService.GetListByRole(item));
}
moduledata = moduledata.GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
fieldsdata = fieldsdata.GroupBy(p => p.F_Id).Select(q => q.First()).ToList();
}
moduledata = moduledata.Where(a => a.F_IsFields == true || (a.F_Layers < 3 && a.F_IsExpand == true)).ToList();
if (!string.IsNullOrEmpty(moduleids))
{
var list = moduleids.Split(',');
moduledata = moduledata.Where(a => list.Contains(a.F_Id) || a.F_IsPublic == true).ToList();
}
else
{
moduledata = moduledata.Where(a => a.F_IsPublic == true).ToList();
}
if (!string.IsNullOrEmpty(roleId))
{
authorizedata = await _roleAuthorizeService.GetList(roleId);
}
var treeList = new List<TreeGridModel>();
foreach (ModuleEntity item in moduledata)
{
TreeGridModel tree = new TreeGridModel();
tree.id = item.F_Id;
tree.title = item.F_FullName;
tree.parentId = item.F_ParentId;
if (item.F_IsPublic == true)
{
tree.checkArr = "1";
tree.disabled = true;
}
else
{
tree.checkArr = authorizedata.Count(t => t.F_ItemId == item.F_Id) > 0 ? "1" : "0";
}
treeList.Add(tree);
}
foreach (ModuleFieldsEntity item in fieldsdata)
{
TreeGridModel tree = new TreeGridModel();
tree.id = item.F_Id;
tree.title = item.F_FullName;
tree.parentId = item.F_ModuleId;
if (item.F_IsPublic == true)
{
tree.checkArr = "1";
tree.disabled = true;
}
else
{
tree.checkArr = authorizedata.Count(t => t.F_ItemId == item.F_Id) > 0 ? "1" : "0";
}
treeList.Add(tree);
}
return DTreeResult(treeList.TreeList());
}
}
}