2057 lines
121 KiB
C#
2057 lines
121 KiB
C#
|
|
using APT.BaseData.Domain.Entities;
|
|||
|
|
using APT.BaseData.Domain.Enums;
|
|||
|
|
using APT.Infrastructure.Core;
|
|||
|
|
using APT.BaseData.Domain.Entities.FM;
|
|||
|
|
using APT.BaseData.Domain.IServices.FM;
|
|||
|
|
using Microsoft.AspNetCore.Mvc;
|
|||
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
|
|||
|
|
using APT.Utility;
|
|||
|
|
using APT.BaseData.Domain.ApiModel;
|
|||
|
|
using System.IO;
|
|||
|
|
using APT.BaseData.Domain.ApiModel.FM;
|
|||
|
|
using NPOI.SS.Formula.Functions;
|
|||
|
|
using APT.BaseData.Domain.ApiModel.Platform;
|
|||
|
|
using System.Dynamic;
|
|||
|
|
using APT.BaseData.Domain.Entities.PF;
|
|||
|
|
|
|||
|
|
namespace APT.FM.WebApi.Controllers.Api.FM
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 角色
|
|||
|
|
/// </summary>
|
|||
|
|
[Route("api/FM/Role")]
|
|||
|
|
public class RoleController : AuthorizeApiController<T_FM_ROLE>
|
|||
|
|
{
|
|||
|
|
#region
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 角色
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="roleService"></param>
|
|||
|
|
public RoleController(IFMRoleService roleService)
|
|||
|
|
{
|
|||
|
|
this.RoleService = roleService;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
#region properties
|
|||
|
|
IFMRoleService RoleService { get; set; }
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Entities")]
|
|||
|
|
public JsonActionResult<IEnumerable<T_FM_ROLE>> Entities([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitEntities(null, filter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
///
|
|||
|
|
|
|||
|
|
[HttpPost, Route("OrderEntities")]
|
|||
|
|
public JsonActionResult<IEnumerable<T_FM_ROLE>> OrderEntities([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitOrderEntities(null, filter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="pageFilter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Paged")]
|
|||
|
|
public PagedActionResult<T_FM_ROLE> Paged([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return WitPaged(null, pageFilter);
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 查询
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="pageFilter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("OrderPaged")]
|
|||
|
|
public PagedActionResult<T_FM_ROLE> OrderPaged([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return WitOrderPaged(null, pageFilter);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 删除
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet, Route("Delete")]
|
|||
|
|
public JsonActionResult<bool> Delete(string id)
|
|||
|
|
{
|
|||
|
|
return WitRealDelete(id);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 更新
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="id"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
//[HttpPost, Route("Update")]
|
|||
|
|
//public JsonActionResult<bool> Update([FromBody] T_FM_ROLE role)
|
|||
|
|
//{
|
|||
|
|
// return SafeExecute<bool>(() =>
|
|||
|
|
// {
|
|||
|
|
// var dbEntity = this.GetEntity<T_FM_ROLE>(role.ID.ToString(), new string[] { "Nav_MenuPermissions.Nav_PermissionBtns", "Nav_MenuPermissions.Nav_PermissionColumns", "Nav_Panels" });
|
|||
|
|
|
|||
|
|
// var menuPermissions = role.Nav_MenuPermissions;
|
|||
|
|
// //var workstages = role.Nav_Workstages;
|
|||
|
|
// var panels = role.Nav_Panels;
|
|||
|
|
// role.Nav_MenuPermissions = null;
|
|||
|
|
// //role.Nav_Workstages = null;
|
|||
|
|
// bool isDeletePermission = dbEntity != null && (dbEntity.ORG_ID != role.ORG_ID || dbEntity.PLATFORM_TYPE != role.PLATFORM_TYPE);
|
|||
|
|
// if (menuPermissions != null && menuPermissions.Any())
|
|||
|
|
// menuPermissions.ForEach(t => t.ROLE_ID = role.ID);
|
|||
|
|
|
|||
|
|
// //if (workstages != null && workstages.Any())
|
|||
|
|
// // workstages.ForEach(t => t.BELONG_ROLE_ID = role.ID);
|
|||
|
|
// if (panels != null && panels.Any())
|
|||
|
|
// panels.ForEach(t => t.BELONG_ROLE_ID = role.ID);
|
|||
|
|
|
|||
|
|
// var deleteBtns = new List<Guid>();
|
|||
|
|
|
|||
|
|
// var deleteColumns = new List<Guid>();
|
|||
|
|
// var deletePanels = new List<Guid>();
|
|||
|
|
// var saveBtns = new List<T_FM_ROLE_MENU_PERM_BTN>();
|
|||
|
|
|
|||
|
|
// var saveColumns = new List<T_FM_ROLE_MENU_PERM_COL>();
|
|||
|
|
|
|||
|
|
|
|||
|
|
// if (dbEntity != null && dbEntity.Nav_MenuPermissions != null && dbEntity.Nav_MenuPermissions.Any())
|
|||
|
|
// {
|
|||
|
|
// foreach (var item in dbEntity.Nav_MenuPermissions)
|
|||
|
|
// {
|
|||
|
|
// var tmp = menuPermissions == null ? null : menuPermissions.Where(i => i.ID == item.ID).FirstOrDefault();
|
|||
|
|
// if (tmp != null)
|
|||
|
|
// {
|
|||
|
|
// var tmpBtns = tmp.Nav_PermissionBtns;
|
|||
|
|
// var tmpColumns = tmp.Nav_PermissionColumns;
|
|||
|
|
// if (item.Nav_PermissionBtns != null && item.Nav_PermissionBtns.Any())
|
|||
|
|
// {
|
|||
|
|
// item.Nav_PermissionBtns.ForEach(t =>
|
|||
|
|
// {
|
|||
|
|
// if (tmpBtns == null || !tmpBtns.Any(i => i.ID == t.ID))
|
|||
|
|
// deleteBtns.Add(t.ID);
|
|||
|
|
// });
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if (item.Nav_PermissionColumns != null && item.Nav_PermissionColumns.Any())
|
|||
|
|
// {
|
|||
|
|
// item.Nav_PermissionColumns.ForEach(t =>
|
|||
|
|
// {
|
|||
|
|
// if (tmpColumns == null || !tmpColumns.Any(i => i.ID == t.ID))
|
|||
|
|
// deleteColumns.Add(t.ID);
|
|||
|
|
// });
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if (menuPermissions != null && menuPermissions.Any())
|
|||
|
|
// {
|
|||
|
|
// foreach (var item in menuPermissions)
|
|||
|
|
// {
|
|||
|
|
// var tmpBtns = item.Nav_PermissionBtns;
|
|||
|
|
// var tmpColumns = item.Nav_PermissionColumns;
|
|||
|
|
// item.Nav_PermissionBtns = null;
|
|||
|
|
// item.Nav_PermissionColumns = null;
|
|||
|
|
// if (tmpBtns != null && tmpBtns.Any())
|
|||
|
|
// {
|
|||
|
|
// tmpBtns.ForEach(t => t.ROLE_MENU_PERMISSION_ID = item.ID);
|
|||
|
|
// saveBtns.AddRange(tmpBtns);
|
|||
|
|
// }
|
|||
|
|
// if (tmpColumns != null && tmpColumns.Any())
|
|||
|
|
// {
|
|||
|
|
// tmpColumns.ForEach(t => t.ROLE_MENU_PERMISSION_ID = item.ID);
|
|||
|
|
// saveColumns.AddRange(tmpColumns);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if (dbEntity != null && dbEntity.Nav_Panels != null && dbEntity.Nav_Panels.Any())
|
|||
|
|
// {
|
|||
|
|
// dbEntity.Nav_Panels.ForEach(t =>
|
|||
|
|
// {
|
|||
|
|
// if (panels == null || panels.Count == 0 || !panels.Any(t1 => t1.ID == t.ID))
|
|||
|
|
// deletePanels.Add(t.ID);
|
|||
|
|
// });
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
// UnifiedCommit(() =>
|
|||
|
|
// {
|
|||
|
|
// this.UpdateEntityNoCommit(role);
|
|||
|
|
// if (isDeletePermission)
|
|||
|
|
// {
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_COL>(t => t.Nav_RoleMenuPermission.ROLE_ID == role.ID);
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_BTN>(t => t.Nav_RoleMenuPermission.ROLE_ID == role.ID);
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_ROLE_MENU_PERM>(t => t.ROLE_ID == role.ID);
|
|||
|
|
// }
|
|||
|
|
// if (menuPermissions != null && menuPermissions.Any())
|
|||
|
|
// this.BantchSaveEntityNoCommit(menuPermissions);
|
|||
|
|
// //if (workstages != null && workstages.Any())
|
|||
|
|
// // this.BantchSaveEntityNoCommit(workstages);
|
|||
|
|
// if (panels != null && panels.Any())
|
|||
|
|
// this.BantchSaveEntityNoCommit(panels);
|
|||
|
|
// if (saveBtns != null && saveBtns.Any())
|
|||
|
|
// this.BantchSaveEntityNoCommit(saveBtns);
|
|||
|
|
// if (saveColumns != null && saveColumns.Any())
|
|||
|
|
// this.BantchSaveEntityNoCommit(saveColumns);
|
|||
|
|
|
|||
|
|
// if (deleteBtns != null && deleteBtns.Any())
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_BTN>(t => deleteBtns.Contains(t.ID));
|
|||
|
|
// if (deleteColumns != null && deleteColumns.Any())
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_COL>(t => deleteColumns.Contains(t.ID));
|
|||
|
|
|
|||
|
|
// if (deletePanels != null && deletePanels.Any())
|
|||
|
|
// this.DeleteEntityNoCommit<T_FM_PANEL_BELONG_ROLE>(t => deletePanels.Contains(t.ID));
|
|||
|
|
|
|||
|
|
// });
|
|||
|
|
// return true;
|
|||
|
|
// });
|
|||
|
|
//}
|
|||
|
|
[HttpPost, Route("Update")]
|
|||
|
|
public JsonActionResult<bool> Update([FromBody] T_FM_ROLE role)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
var orgId = APT.Infrastructure.Api.AppContext.CurrentSession.OrgId;
|
|||
|
|
var isExistrole = this.GetEntity<T_FM_ROLE>(role.ID.ToString());
|
|||
|
|
if (isExistrole != null && isExistrole.PLATFORM_TYPE != role.PLATFORM_TYPE)
|
|||
|
|
throw new Exception("平台类型无法更改,若需要请重新创建平台类型角色!");
|
|||
|
|
var permissionList = this.GetEntities<T_FM_ROLE_MENU_PERM>(x => x.ROLE_ID == role.ID, new BaseFilter(role.ORG_ID)).ToList();
|
|||
|
|
var permissionBtns = this.GetEntities<T_FM_ROLE_MENU_PERM_BTN>(x => x.ROLE_ID == role.ID, new BaseFilter(role.ORG_ID)).ToList();
|
|||
|
|
var permissionCols = this.GetEntities<T_FM_ROLE_MENU_PERM_COL>(x => x.ROLE_ID == role.ID, new BaseFilter(role.ORG_ID)).ToList();
|
|||
|
|
var perms = new List<PermInfo>();
|
|||
|
|
var savePerms = new List<T_FM_ROLE_MENU_PERM>();
|
|||
|
|
var deletePerms = new List<Guid>();
|
|||
|
|
var columns = new List<ColInfo>();
|
|||
|
|
var deleteColumns = new List<Guid>();
|
|||
|
|
var saveColumns = new List<T_FM_ROLE_MENU_PERM_COL>();
|
|||
|
|
var btns = new List<BtnInfo>();
|
|||
|
|
var deleteBtns = new List<Guid>();
|
|||
|
|
//var menus = new List<Guid>();
|
|||
|
|
var saveMenus = new List<T_FM_ROLE_MENU_PERM>();
|
|||
|
|
var saveBtns = new List<T_FM_ROLE_MENU_PERM_BTN>();
|
|||
|
|
List<T_FM_ROLE_DEPARTMENT> roleDepartments = new List<T_FM_ROLE_DEPARTMENT>();
|
|||
|
|
Dictionary<string, string> dicRolePerm = new Dictionary<string, string>();
|
|||
|
|
foreach (var item in role.DepartmentCheckedKeys)
|
|||
|
|
{
|
|||
|
|
foreach (var departmentCheckedKey in item.departmentCheckedKeys)
|
|||
|
|
{
|
|||
|
|
roleDepartments.Add(new T_FM_ROLE_DEPARTMENT
|
|||
|
|
{
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
DEPARTMENT_ID = departmentCheckedKey,
|
|||
|
|
ORG_ID = new Guid(item.OrgId)
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (role.CheckKeys.Count > 0)
|
|||
|
|
{
|
|||
|
|
foreach (var permisionCodetem in role.CheckKeys.OrderBy(x => x.Length))
|
|||
|
|
{
|
|||
|
|
switch (permisionCodetem.Split('_').Count())
|
|||
|
|
{
|
|||
|
|
case 1://菜单权限
|
|||
|
|
{
|
|||
|
|
perms.Add(new PermInfo() { MENUID = permisionCodetem });
|
|||
|
|
if (permissionList != null)
|
|||
|
|
{
|
|||
|
|
if (!permissionList.Any(x => x.MENU_ID == new Guid(permisionCodetem)))
|
|||
|
|
{
|
|||
|
|
saveMenus.Add(new T_FM_ROLE_MENU_PERM() { ORG_ID = role.ORG_ID, ROLE_ID = role.ID, MENU_ID = new Guid(permisionCodetem) });
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
saveMenus.Add(new T_FM_ROLE_MENU_PERM() { ORG_ID = role.ORG_ID, ROLE_ID = role.ID, MENU_ID = new Guid(permisionCodetem) });
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 2://表单权限
|
|||
|
|
{
|
|||
|
|
perms.Add(new PermInfo() { MENUID = permisionCodetem.Split('_')[0], ID = permisionCodetem.Split('_')[1] });
|
|||
|
|
var guid = Guid.NewGuid();
|
|||
|
|
if (!dicRolePerm.ContainsKey(permisionCodetem))
|
|||
|
|
{
|
|||
|
|
dicRolePerm.Add(permisionCodetem, guid.ToString());
|
|||
|
|
}
|
|||
|
|
if (permissionList != null)
|
|||
|
|
{
|
|||
|
|
if (!permissionList.Any(x => x.MENU_ID == new Guid(permisionCodetem.Split('_')[0])
|
|||
|
|
&& x.PERMISSION_FORM_ID == new Guid(permisionCodetem.Split('_')[1])))
|
|||
|
|
{
|
|||
|
|
savePerms.Add(new T_FM_ROLE_MENU_PERM()
|
|||
|
|
{
|
|||
|
|
ID = guid,
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
PERMISSION_FORM_ID = new Guid(permisionCodetem.Split('_')[1]),
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
IS_PERMISSION = true
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
dicRolePerm[permisionCodetem] = permissionList.FirstOrDefault(x => x.MENU_ID == new Guid(permisionCodetem.Split('_')[0]) && x.PERMISSION_FORM_ID == new Guid(permisionCodetem.Split('_')[1])).ID.ToString();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
savePerms.Add(new T_FM_ROLE_MENU_PERM()
|
|||
|
|
{
|
|||
|
|
ID = guid,
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
PERMISSION_FORM_ID = new Guid(permisionCodetem.Split('_')[1]),
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
IS_PERMISSION = true
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case 4://列、按钮权限
|
|||
|
|
{
|
|||
|
|
if (permisionCodetem.Split('_')[3] == "BTN")//按钮
|
|||
|
|
{
|
|||
|
|
btns.Add(new BtnInfo() { MENUID = permisionCodetem.Split('_')[0], PERMID = permisionCodetem.Split('_')[1], ID = permisionCodetem.Split('_')[2] });
|
|||
|
|
if (permissionBtns.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!permissionBtns.Any(x => x.MENU_ID == new Guid(permisionCodetem.Split('_')[0]) && x.BTN_ID == new Guid(permisionCodetem.Split('_')[2])))
|
|||
|
|
{
|
|||
|
|
saveBtns.Add(new T_FM_ROLE_MENU_PERM_BTN()
|
|||
|
|
{
|
|||
|
|
ROLE_MENU_PERMISSION_ID = new Guid(dicRolePerm[permisionCodetem.Split('_')[0] + "_" + permisionCodetem.Split('_')[1]]),
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
BTN_ID = new Guid(permisionCodetem.Split('_')[2])
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
saveBtns.Add(new T_FM_ROLE_MENU_PERM_BTN()
|
|||
|
|
{
|
|||
|
|
ROLE_MENU_PERMISSION_ID = new Guid(dicRolePerm[permisionCodetem.Split('_')[0] + "_" + permisionCodetem.Split('_')[1]]),
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
BTN_ID = new Guid(permisionCodetem.Split('_')[2])
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
columns.Add(new ColInfo() { MENUID = permisionCodetem.Split('_')[0], PERMID = permisionCodetem.Split('_')[1], ID = permisionCodetem.Split('_')[2] });
|
|||
|
|
if (permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!permissionCols.Any(x => x.MENU_ID == new Guid(permisionCodetem.Split('_')[0]) && x.COLUMN_ID == new Guid(permisionCodetem.Split('_')[2])))
|
|||
|
|
{
|
|||
|
|
saveColumns.Add(new T_FM_ROLE_MENU_PERM_COL()
|
|||
|
|
{
|
|||
|
|
ROLE_MENU_PERMISSION_ID = new Guid(dicRolePerm[permisionCodetem.Split('_')[0] + "_" + permisionCodetem.Split('_')[1]]),
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
COLUMN_ID = new Guid(permisionCodetem.Split('_')[2])
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
saveColumns.Add(
|
|||
|
|
new T_FM_ROLE_MENU_PERM_COL()
|
|||
|
|
{
|
|||
|
|
ROLE_MENU_PERMISSION_ID = new Guid(dicRolePerm[permisionCodetem.Split('_')[0] + "_" + permisionCodetem.Split('_')[1]]),
|
|||
|
|
ORG_ID = role.ORG_ID,
|
|||
|
|
ROLE_ID = role.ID,
|
|||
|
|
MENU_ID = new Guid(permisionCodetem.Split('_')[0]),
|
|||
|
|
COLUMN_ID = new Guid(permisionCodetem.Split('_')[2])
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (var item in permissionList)
|
|||
|
|
{
|
|||
|
|
if (!perms.Any(x => new Guid(x.MENUID) == item.MENU_ID && x.ID == item.PERMISSION_FORM_ID?.ToString()))
|
|||
|
|
{
|
|||
|
|
deletePerms.Add(item.ID);//根据主键删除
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (var col in permissionCols)
|
|||
|
|
{
|
|||
|
|
if (!columns.Any(x => new Guid(x.MENUID) == col.MENU_ID && new Guid(x.ID) == col.COLUMN_ID))
|
|||
|
|
{
|
|||
|
|
deleteColumns.Add(col.ID);//根据主键删除
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (var btn in permissionBtns)
|
|||
|
|
{
|
|||
|
|
if (!btns.Any(x => new Guid(x.MENUID) == btn.MENU_ID && new Guid(x.ID) == btn.BTN_ID))
|
|||
|
|
{
|
|||
|
|
deleteBtns.Add(btn.ID);//根据主键删除
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
UnifiedCommit(() =>
|
|||
|
|
{
|
|||
|
|
this.UpdateEntityNoCommit(role);
|
|||
|
|
//this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERMISON>(deleteMenus);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_COL>(deleteColumns);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_BTN>(deleteBtns);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM>(deletePerms);
|
|||
|
|
|
|||
|
|
if (saveMenus != null && saveMenus.Any())
|
|||
|
|
this.BantchSaveEntityNoCommit(saveMenus);
|
|||
|
|
if (savePerms != null && savePerms.Any())
|
|||
|
|
this.BantchAddEntityNoCommit(savePerms);
|
|||
|
|
if (saveColumns != null && saveColumns.Any())
|
|||
|
|
this.BantchAddEntityNoCommit(saveColumns);
|
|||
|
|
if (saveBtns != null && saveBtns.Any())
|
|||
|
|
this.BantchAddEntityNoCommit(saveBtns);
|
|||
|
|
|
|||
|
|
this.DeleteEntityNoCommit<T_FM_ROLE_DEPARTMENT>(x => x.ROLE_ID == role.ID);
|
|||
|
|
if (roleDepartments.Any())
|
|||
|
|
this.BantchAddEntityNoCommit<T_FM_ROLE_DEPARTMENT>(roleDepartments);
|
|||
|
|
if (roleDepartments.Any())
|
|||
|
|
this.BantchAddEntityNoCommit<T_FM_ROLE_DEPARTMENT>(roleDepartments);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (permissionList.Count > 0)
|
|||
|
|
{
|
|||
|
|
deletePerms.AddRange(permissionList.Select(x => x.ID).ToList());
|
|||
|
|
}
|
|||
|
|
if (permissionBtns.Count > 0)
|
|||
|
|
{
|
|||
|
|
deleteBtns.AddRange(permissionBtns.Select(x => x.ID).ToList());
|
|||
|
|
}
|
|||
|
|
if (permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
deleteColumns.AddRange(permissionCols.Select(x => x.ID).ToList());
|
|||
|
|
}
|
|||
|
|
UnifiedCommit(() =>
|
|||
|
|
{
|
|||
|
|
this.UpdateEntityNoCommit(role);
|
|||
|
|
//this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERMISON>(deleteMenus);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_COL>(deleteColumns);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM_BTN>(deleteBtns);
|
|||
|
|
this.BantchDeleteEntityNoCommit<T_FM_ROLE_MENU_PERM>(deletePerms);
|
|||
|
|
|
|||
|
|
this.DeleteEntityNoCommit<T_FM_ROLE_DEPARTMENT>(x => x.ROLE_ID == role.ID);
|
|||
|
|
if (roleDepartments.Any())
|
|||
|
|
this.BantchAddEntityNoCommit<T_FM_ROLE_DEPARTMENT>(roleDepartments);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
public class PermInfo
|
|||
|
|
{
|
|||
|
|
public string MENUID { get; set; }
|
|||
|
|
public string ID { get; set; }
|
|||
|
|
}
|
|||
|
|
public class ColInfo
|
|||
|
|
{
|
|||
|
|
public string MENUID { get; set; }
|
|||
|
|
|
|||
|
|
public string PERMID { get; set; }
|
|||
|
|
public string ID { get; set; }
|
|||
|
|
}
|
|||
|
|
public class BtnInfo
|
|||
|
|
{
|
|||
|
|
public string MENUID { get; set; }
|
|||
|
|
public string PERMID { get; set; }
|
|||
|
|
public string ID { get; set; }
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 批量删除
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="ids"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpGet, Route("BatchDelete")]
|
|||
|
|
public JsonActionResult<bool> BatchDelete(string ids)
|
|||
|
|
{
|
|||
|
|
return WitRealBatchDelete(ids);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 获得单条实体数据
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="filter"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Get")]
|
|||
|
|
public JsonActionResult<T_FM_ROLE> Get([FromBody] KeywordFilter filter)
|
|||
|
|
{
|
|||
|
|
return WitEntity(null, filter);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 授权
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="role"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("Permision")]
|
|||
|
|
public JsonActionResult<bool> Permision([FromBody] T_FM_ROLE role)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<bool>(() =>
|
|||
|
|
{
|
|||
|
|
var dbRole = this.GetEntity<T_FM_ROLE>(role.ID.ToString(), new string[] { "Nav_MenuPermissions" });
|
|||
|
|
|
|||
|
|
if (dbRole == null)
|
|||
|
|
throw new Exception("角色不存在");
|
|||
|
|
|
|||
|
|
var deleteList = new List<Guid>();
|
|||
|
|
|
|||
|
|
if (role.Nav_MenuPermissions != null && role.Nav_MenuPermissions.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var item in dbRole.Nav_MenuPermissions)
|
|||
|
|
{
|
|||
|
|
if (!role.Nav_MenuPermissions.Any(t => t.ID == item.ID))
|
|||
|
|
deleteList.Add(item.ID);
|
|||
|
|
}
|
|||
|
|
this.BantchSaveEntity<T_FM_ROLE_MENU_PERM>(role.Nav_MenuPermissions);
|
|||
|
|
}
|
|||
|
|
if (deleteList.Any())
|
|||
|
|
this.DeleteEntity<T_FM_ROLE_MENU_PERM>(t => deleteList.Contains(dbRole.ID));
|
|||
|
|
|
|||
|
|
return true;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 授权
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="role"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("GetPermissionForms")]
|
|||
|
|
public JsonActionResult<RolePermissionFormResultModel> GetPermissionForms([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<RolePermissionFormResultModel>(() =>
|
|||
|
|
{
|
|||
|
|
RolePermissionFormResultModel result = new RolePermissionFormResultModel();
|
|||
|
|
var pageList = this.GetOrderPageEntities<T_PF_FORM>(null, pageFilter);
|
|||
|
|
var list = pageList.Data.ToList();
|
|||
|
|
result.TotalCount = pageList.TotalCount;
|
|||
|
|
if (list == null || list.Count == 0) return result;
|
|||
|
|
|
|||
|
|
string roleId = pageFilter.Keyword;//角色ID
|
|||
|
|
|
|||
|
|
List<T_FM_ROLE_MENU_PERM> permissionList = null;
|
|||
|
|
if (!string.IsNullOrEmpty(roleId))
|
|||
|
|
permissionList = this.GetEntitiesByRedis<T_FM_ROLE_MENU_PERM>(t => t.Nav_PermissionForm.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), roleId, new string[] { "Nav_PermissionBtns", "Nav_PermissionColumns", "Nav_PermissionForm" }).ToList();
|
|||
|
|
|
|||
|
|
//var formIds = list.Select(t => t.ID).ToList();
|
|||
|
|
|
|||
|
|
List<T_PF_PAGE_TABLE> pageTableList = new List<T_PF_PAGE_TABLE>();
|
|||
|
|
List<T_PF_PAGE_EDIT> editTableList = new List<T_PF_PAGE_EDIT>();
|
|||
|
|
List<T_PF_PAGE_TABLE> treeTableList = new List<T_PF_PAGE_TABLE>();
|
|||
|
|
List<T_PF_PAGE_CHART> charList = new List<T_PF_PAGE_CHART>();
|
|||
|
|
List<T_PF_PAGE_CUSTOM> customList = new List<T_PF_PAGE_CUSTOM>();
|
|||
|
|
foreach (var l in list)
|
|||
|
|
{
|
|||
|
|
switch (l.FORM_TYPE)
|
|||
|
|
{
|
|||
|
|
case (int)PFFormTypeEnum.列表表单:
|
|||
|
|
{
|
|||
|
|
var form = this.GetEntitiesByRedis<T_PF_PAGE_TABLE>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString()).ToList();
|
|||
|
|
pageTableList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.编辑表单:
|
|||
|
|
{
|
|||
|
|
var form = this.GetEntitiesByRedis<T_PF_PAGE_EDIT>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString()).ToList();
|
|||
|
|
editTableList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.树形编辑页:
|
|||
|
|
{
|
|||
|
|
var form = this.GetEntitiesByRedis<T_PF_PAGE_TABLE>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString()).ToList();
|
|||
|
|
treeTableList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.图表表单:
|
|||
|
|
{
|
|||
|
|
var form = this.GetEntitiesByRedis<T_PF_PAGE_CHART>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString()).ToList();
|
|||
|
|
charList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.自定义表单:
|
|||
|
|
{
|
|||
|
|
var form = this.GetEntitiesByRedis<T_PF_PAGE_CUSTOM>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString(), "Nav_PageForm").ToList();
|
|||
|
|
customList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
{
|
|||
|
|
//var form = this.GetEntitiesByRedis<T_PF_PAGE_TABLE>(null, new BaseFilter(pageFilter.OrgId), l.ID.ToString()).ToList();
|
|||
|
|
//pageTableList.AddRange(form);
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
var pageTableIds = pageTableList.Select(t => t.ID).ToList();
|
|||
|
|
var editTableIds = editTableList.Select(t => t.ID).ToList();
|
|||
|
|
var treeTableIds = treeTableList.Select(t => t.ID).ToList();
|
|||
|
|
List<T_PF_COLUMN> columns = new List<T_PF_COLUMN>();
|
|||
|
|
foreach (var page in pageTableIds)
|
|||
|
|
{
|
|||
|
|
var clm = this.GetEntitiesByRedis<T_PF_COLUMN>(t => t.IS_RULE, new BaseFilter(pageFilter.OrgId), page.ToString()).ToList();
|
|||
|
|
columns.AddRange(clm);
|
|||
|
|
}
|
|||
|
|
List<T_PF_BTN> btns = new List<T_PF_BTN>();
|
|||
|
|
foreach (var pageId in pageTableIds)
|
|||
|
|
{
|
|||
|
|
var pageBtns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), pageId.ToString()).ToList();
|
|||
|
|
btns.AddRange(pageBtns);
|
|||
|
|
}
|
|||
|
|
foreach (var pageId in editTableList)
|
|||
|
|
{
|
|||
|
|
var pageBtns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), pageId.ID.ToString()).ToList();
|
|||
|
|
btns.AddRange(pageBtns);
|
|||
|
|
}
|
|||
|
|
foreach (var pageId in treeTableList)
|
|||
|
|
{
|
|||
|
|
var pageBtns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), pageId.ID.ToString()).ToList();
|
|||
|
|
btns.AddRange(pageBtns);
|
|||
|
|
}
|
|||
|
|
foreach (var pageId in charList)
|
|||
|
|
{
|
|||
|
|
var pageBtns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), pageId.ID.ToString()).ToList();
|
|||
|
|
btns.AddRange(pageBtns);
|
|||
|
|
}
|
|||
|
|
foreach (var pageId in customList)
|
|||
|
|
{
|
|||
|
|
var pageBtns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
new BaseFilter(pageFilter.OrgId), pageId.ID.ToString()).ToList();
|
|||
|
|
btns.AddRange(pageBtns);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(t => (pageTableIds.Contains(t.PAGE_TABLE_ID ?? Guid.Empty) || editTableIds.Contains(t.PAGE_EDIT_ID ?? Guid.Empty)
|
|||
|
|
//|| treeTableIds.Contains(t.PAGE_EDIT_ID ?? Guid.Empty) || formIds.Contains(t.PAGE_CUSTOM_FORM_ID ?? Guid.Empty))
|
|||
|
|
//&& t.IS_RULE && t.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
|
|||
|
|
Dictionary<Guid, Dictionary<T_PF_PAGE_TABLE, List<T_PF_COLUMN>>> columnDic = new Dictionary<Guid, Dictionary<T_PF_PAGE_TABLE, List<T_PF_COLUMN>>>();
|
|||
|
|
Dictionary<Guid, Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>> btnDic = new Dictionary<Guid, Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>>();
|
|||
|
|
|
|||
|
|
if (pageTableList != null && pageTableList.Any())
|
|||
|
|
{
|
|||
|
|
var tmpPageTableList = pageTableList.OrderBy(t => t.NUM).ThenBy(t => t.PARENT_ID).ToList();
|
|||
|
|
foreach (var item in tmpPageTableList)
|
|||
|
|
{
|
|||
|
|
if (item.PAGE_FORM_ID == null) continue;
|
|||
|
|
Dictionary<T_PF_PAGE_TABLE, List<T_PF_COLUMN>> tmp = null;
|
|||
|
|
if (!columnDic.TryGetValue(item.PAGE_FORM_ID.Value, out tmp))
|
|||
|
|
{
|
|||
|
|
tmp = new Dictionary<T_PF_PAGE_TABLE, List<T_PF_COLUMN>>();
|
|||
|
|
columnDic.Add(item.PAGE_FORM_ID.Value, tmp);
|
|||
|
|
}
|
|||
|
|
var colTmp = columns.Where(t => t.PAGE_TABLE_ID == item.ID).OrderBy(t => t.NUM).ToList();
|
|||
|
|
if (colTmp != null && colTmp.Any())
|
|||
|
|
tmp.Add(item, colTmp);
|
|||
|
|
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> btnTmpDic = null;
|
|||
|
|
if (!btnDic.TryGetValue(item.PAGE_FORM_ID.Value, out btnTmpDic))
|
|||
|
|
{
|
|||
|
|
btnTmpDic = new Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>();
|
|||
|
|
btnDic.Add(item.PAGE_FORM_ID.Value, btnTmpDic);
|
|||
|
|
}
|
|||
|
|
var btnTmp = btns.Where(t => t.PAGE_TABLE_ID == item.ID).OrderBy(t => t.BTN_FUN_TYPE).ThenBy(t => t.NUM).ToList();
|
|||
|
|
if (btnTmp != null && btnTmp.Any())
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnTempModel tempModel = new RolePermissionFormBtnTempModel();
|
|||
|
|
tempModel.Title = item.LABEL_NAME;
|
|||
|
|
btnTmpDic.Add(tempModel, btnTmp);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
if (editTableList != null && editTableList.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var item in editTableList)
|
|||
|
|
{
|
|||
|
|
if (item.PAGE_FORM_ID == null) continue;
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> btnTmpDic = null;
|
|||
|
|
if (!btnDic.TryGetValue(item.PAGE_FORM_ID.Value, out btnTmpDic))
|
|||
|
|
{
|
|||
|
|
btnTmpDic = new Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>();
|
|||
|
|
btnDic.Add(item.PAGE_FORM_ID.Value, btnTmpDic);
|
|||
|
|
}
|
|||
|
|
var btnTmp = btns.Where(t => t.PAGE_EDIT_ID == item.ID).OrderBy(t => t.BTN_FUN_TYPE).ThenBy(t => t.NUM).ToList();
|
|||
|
|
if (btnTmp != null && btnTmp.Any())
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnTempModel tempModel = new RolePermissionFormBtnTempModel();
|
|||
|
|
tempModel.Title = item.LABEL_NAME;
|
|||
|
|
btnTmpDic.Add(tempModel, btnTmp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (treeTableList != null && treeTableList.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var item in treeTableList)
|
|||
|
|
{
|
|||
|
|
if (item.PAGE_FORM_ID == null) continue;
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> btnTmpDic = null;
|
|||
|
|
if (!btnDic.TryGetValue(item.PAGE_FORM_ID.Value, out btnTmpDic))
|
|||
|
|
{
|
|||
|
|
btnTmpDic = new Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>();
|
|||
|
|
btnDic.Add(item.PAGE_FORM_ID.Value, btnTmpDic);
|
|||
|
|
}
|
|||
|
|
var btnTmp = btns.Where(t => t.PAGE_EDIT_ID == item.ID).OrderBy(t => t.BTN_FUN_TYPE).ThenBy(t => t.NUM).ToList();
|
|||
|
|
if (btnTmp != null && btnTmp.Any())
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnTempModel tempModel = new RolePermissionFormBtnTempModel();
|
|||
|
|
tempModel.Title = item.LABEL_NAME;
|
|||
|
|
btnTmpDic.Add(tempModel, btnTmp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (charList != null && charList.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var item in charList)
|
|||
|
|
{
|
|||
|
|
if (item.PAGE_FORM_ID == null) continue;
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> btnTmpDic = null;
|
|||
|
|
if (!btnDic.TryGetValue(item.PAGE_FORM_ID.Value, out btnTmpDic))
|
|||
|
|
{
|
|||
|
|
btnTmpDic = new Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>();
|
|||
|
|
btnDic.Add(item.PAGE_FORM_ID.Value, btnTmpDic);
|
|||
|
|
}
|
|||
|
|
var btnTmp = btns.Where(t => t.PAGE_EDIT_ID == item.ID).OrderBy(t => t.BTN_FUN_TYPE).ThenBy(t => t.NUM).ToList();
|
|||
|
|
if (btnTmp != null && btnTmp.Any())
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnTempModel tempModel = new RolePermissionFormBtnTempModel();
|
|||
|
|
tempModel.Title = item.LABEL;
|
|||
|
|
btnTmpDic.Add(tempModel, btnTmp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
var tmpList = list.Where(t => t.FORM_TYPE == (int)PFFormTypeEnum.自定义表单).ToList();
|
|||
|
|
foreach (var item in tmpList)
|
|||
|
|
{
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> btnTmpDic = null;
|
|||
|
|
if (!btnDic.TryGetValue(item.ID, out btnTmpDic))
|
|||
|
|
{
|
|||
|
|
btnTmpDic = new Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>>();
|
|||
|
|
btnDic.Add(item.ID, btnTmpDic);
|
|||
|
|
}
|
|||
|
|
var btnTmp = btns.Where(t => t.PAGE_CUSTOM_FORM_ID == item.ID).OrderBy(t => t.BTN_FUN_TYPE).ThenBy(t => t.NUM).ToList();
|
|||
|
|
if (btnTmp != null && btnTmp.Any())
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnTempModel tempModel = new RolePermissionFormBtnTempModel();
|
|||
|
|
tempModel.Title = item.NAME;
|
|||
|
|
btnTmpDic.Add(tempModel, btnTmp);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
List<T_FM_ROLE_MENU_PERM> addRoleMenusList = new List<T_FM_ROLE_MENU_PERM>();
|
|||
|
|
foreach (var item in list)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
RolePermissionFormModel formModel = new RolePermissionFormModel();
|
|||
|
|
formModel.Title = item.NAME;
|
|||
|
|
formModel.Code = item.CODE;
|
|||
|
|
T_FM_ROLE_MENU_PERM menuPermission = null;
|
|||
|
|
if (permissionList != null && permissionList.Any())
|
|||
|
|
menuPermission = permissionList.Where(t => t.PERMISSION_FORM_ID == item.ID).FirstOrDefault();
|
|||
|
|
if (menuPermission == null)
|
|||
|
|
{
|
|||
|
|
menuPermission = new T_FM_ROLE_MENU_PERM();
|
|||
|
|
menuPermission.ORG_ID = pageFilter.OrgId;
|
|||
|
|
menuPermission.PERMISSION_FORM_ID = item.ID;
|
|||
|
|
menuPermission.ROLE_ID = string.IsNullOrEmpty(roleId) ? Guid.NewGuid() : new Guid(roleId);
|
|||
|
|
}
|
|||
|
|
formModel.Permission = menuPermission;
|
|||
|
|
formModel.ID = item.ID;
|
|||
|
|
formModel.IsCheck = menuPermission == null ? false : menuPermission.IS_PERMISSION;
|
|||
|
|
result.Forms.Add(formModel);
|
|||
|
|
if (item.FORM_TYPE == (int)PFFormTypeEnum.列表表单)
|
|||
|
|
{
|
|||
|
|
if (columnDic != null && columnDic.Any())
|
|||
|
|
{
|
|||
|
|
Dictionary<T_PF_PAGE_TABLE, List<T_PF_COLUMN>> tmp = null;
|
|||
|
|
if (columnDic.TryGetValue(item.ID, out tmp))
|
|||
|
|
{
|
|||
|
|
bool needAddTableLable = tmp.Count > 1;
|
|||
|
|
foreach (var t in tmp)
|
|||
|
|
{
|
|||
|
|
foreach (var c in t.Value)
|
|||
|
|
{
|
|||
|
|
RolePermissionFormColumnModel columnModel = new RolePermissionFormColumnModel();
|
|||
|
|
columnModel.Title = needAddTableLable ? t.Key.LABEL_NAME + "_" + c.LABEL : c.LABEL;
|
|||
|
|
T_FM_ROLE_MENU_PERM_COL permissionCol = null;
|
|||
|
|
if (menuPermission != null && menuPermission.Nav_PermissionColumns != null && menuPermission.Nav_PermissionColumns.Any())
|
|||
|
|
{
|
|||
|
|
permissionCol = menuPermission.Nav_PermissionColumns.Where(t1 => t1.COLUMN_ID == c.ID).FirstOrDefault();
|
|||
|
|
}
|
|||
|
|
columnModel.IsCheck = permissionCol != null;
|
|||
|
|
if (permissionCol == null)
|
|||
|
|
{
|
|||
|
|
permissionCol = new T_FM_ROLE_MENU_PERM_COL();
|
|||
|
|
permissionCol.ORG_ID = pageFilter.OrgId;
|
|||
|
|
permissionCol.COLUMN_ID = c.ID;
|
|||
|
|
permissionCol.ROLE_MENU_PERMISSION_ID = menuPermission.ID;
|
|||
|
|
}
|
|||
|
|
columnModel.Column = permissionCol;
|
|||
|
|
formModel.Nav_Columns.Add(columnModel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (btnDic != null && btnDic.Any())
|
|||
|
|
{
|
|||
|
|
Dictionary<RolePermissionFormBtnTempModel, List<T_PF_BTN>> tmp = null;
|
|||
|
|
if (btnDic.TryGetValue(item.ID, out tmp))
|
|||
|
|
{
|
|||
|
|
bool needAddTableLable = tmp.Count > 1;
|
|||
|
|
foreach (var t in tmp)
|
|||
|
|
{
|
|||
|
|
foreach (var c in t.Value)
|
|||
|
|
{
|
|||
|
|
RolePermissionFormBtnModel btnModel = new RolePermissionFormBtnModel();
|
|||
|
|
string title = string.Empty;
|
|||
|
|
if (needAddTableLable)
|
|||
|
|
title = t.Key.Title + "_";
|
|||
|
|
if (c.BTN_FUN_TYPE == (int)PFBtnFuncTypeEnum.行按钮)
|
|||
|
|
title = "行按钮_";
|
|||
|
|
else if (item.FORM_TYPE == (int)PFFormTypeEnum.列表表单)
|
|||
|
|
title = "按钮_";
|
|||
|
|
title += c.LABEL;
|
|||
|
|
btnModel.Title = title;
|
|||
|
|
T_FM_ROLE_MENU_PERM_BTN btnCol = null;
|
|||
|
|
if (menuPermission != null && menuPermission.Nav_PermissionBtns != null && menuPermission.Nav_PermissionBtns.Any())
|
|||
|
|
{
|
|||
|
|
btnCol = menuPermission.Nav_PermissionBtns.Where(t1 => t1.BTN_ID == c.ID).FirstOrDefault();
|
|||
|
|
}
|
|||
|
|
btnModel.IsCheck = btnCol != null;
|
|||
|
|
if (btnCol == null)
|
|||
|
|
{
|
|||
|
|
btnCol = new T_FM_ROLE_MENU_PERM_BTN();
|
|||
|
|
btnCol.ORG_ID = pageFilter.OrgId;
|
|||
|
|
btnCol.BTN_ID = c.ID;
|
|||
|
|
btnCol.ROLE_MENU_PERMISSION_ID = menuPermission.ID;
|
|||
|
|
}
|
|||
|
|
btnModel.Btn = btnCol;
|
|||
|
|
formModel.Nav_Btns.Add(btnModel);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return result;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 树形授权
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="role"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("GetTreePermissionForms")]
|
|||
|
|
public JsonActionResult<RolePermissionResul> GetTreePermissionForms([FromBody] KeywordPageFilter pageFilter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<RolePermissionResul>(() =>
|
|||
|
|
{
|
|||
|
|
var filter = new BaseFilter(pageFilter.OrgId);
|
|||
|
|
var rlt = new RolePermissionResul();
|
|||
|
|
var rule = pageFilter.FilterGroup.Rules.FirstOrDefault(x => x.Field == "PLATFORM_TYPE");
|
|||
|
|
if (Convert.ToInt32(rule.Value) == (int)PFPlatTypeEnum.后台)
|
|||
|
|
{
|
|||
|
|
#region 获取菜单树
|
|||
|
|
//filter.SelectField = new string[] { "PARENT_ID", "NUM", "ID", "NAME", "MENU_FORM_ID" };
|
|||
|
|
filter.Sort = "NUM";
|
|||
|
|
filter.Order = DbOrder.ASC;
|
|||
|
|
filter.Level = -1;
|
|||
|
|
filter.IsParentData = true;
|
|||
|
|
var menuTree = this.GetTreeOrderEntities<T_PF_MENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用 && x.PLATFORM_CATEGORY == 0, filter);
|
|||
|
|
#endregion
|
|||
|
|
var list = this.GetEntities<T_PF_FORM>(null, filter).ToList();//所有表单数据
|
|||
|
|
var allFormRelations = this.GetEntities<T_PF_FORM_RELATION>(null, filter).ToList();//所有关联表单数据
|
|||
|
|
List<T_PF_PAGE_TABLE> pageTableList = new List<T_PF_PAGE_TABLE>();
|
|||
|
|
List<T_PF_PAGE_EDIT> editTableList = new List<T_PF_PAGE_EDIT>();
|
|||
|
|
List<T_PF_PAGE_TREE> treeTableList = new List<T_PF_PAGE_TREE>();
|
|||
|
|
List<T_PF_PAGE_CHART> charList = new List<T_PF_PAGE_CHART>();
|
|||
|
|
List<T_PF_PAGE_CUSTOM> customList = new List<T_PF_PAGE_CUSTOM>();
|
|||
|
|
var allBtns = this.GetEntities<T_PF_BTN>(null, filter).ToList();
|
|||
|
|
var allCols = this.GetEntities<T_PF_COLUMN>(t => t.IS_RULE, filter).ToList();
|
|||
|
|
var allEditCols = this.GetEntities<T_PF_EDIT_COLUMN>(t => t.IS_RULE, filter).ToList();
|
|||
|
|
|
|||
|
|
//var filter = new BaseFilter(pageFilter.OrgId);
|
|||
|
|
// filter.SelectField = new string[] { "PAGE_FORM_ID", "LABEL_NAME", "NUM", "ID" };
|
|||
|
|
var resPagTable = this.GetEntities<T_PF_PAGE_TABLE>(null, filter).ToList();//T_PF_PAGE_TABLE 所有数据
|
|||
|
|
var resPagEdit = this.GetEntities<T_PF_PAGE_EDIT>(null, filter).ToList();//T_PF_PAGE_TABLE 所有数据
|
|||
|
|
var resPagTree = this.GetEntities<T_PF_PAGE_TREE>(null, filter).ToList();//T_PF_PAGE_TABLE 所有数据
|
|||
|
|
//filter.SelectField = new string[] { "PAGE_FORM_ID", "LABEL", "NUM", "ID" };
|
|||
|
|
var resPagChart = this.GetEntities<T_PF_PAGE_CHART>(null, filter).ToList();//T_PF_PAGE_TABLE 所有数据
|
|||
|
|
// filter.SelectField = new string[] { "PAGE_FORM_ID", "COMPONENT_NAME", "ID" };
|
|||
|
|
var resPagCustom = this.GetEntities<T_PF_PAGE_CUSTOM>(null, filter).ToList();//T_PF_PAGE_TABLE 所有数据
|
|||
|
|
List<RolePermissionTreeModel> result = new List<RolePermissionTreeModel>();//最终返回树结果
|
|||
|
|
|
|||
|
|
List<FormInfo> formInfos = new List<FormInfo>();
|
|||
|
|
Dictionary<string, FormInfo> dicforms = new Dictionary<string, FormInfo>();
|
|||
|
|
Dictionary<string, PageTables> dicPages = new Dictionary<string, PageTables>();//表单所属菜单
|
|||
|
|
#region 获取权限
|
|||
|
|
string roleId = pageFilter.Keyword;//角色ID
|
|||
|
|
List<T_FM_ROLE_MENU_PERM> permissionList = null;
|
|||
|
|
List<T_FM_ROLE_MENU_PERM_BTN> permissionBtns = null;
|
|||
|
|
List<T_FM_ROLE_MENU_PERM_COL> permissionCols = null;
|
|||
|
|
// List<T_FM_ROLE_MENU_PERMISON> menuPermissions = null;
|
|||
|
|
// List<T_FM_ROLE_MENU_MENU> permissionMenu = null;
|
|||
|
|
|
|||
|
|
if (!string.IsNullOrEmpty(roleId))
|
|||
|
|
{
|
|||
|
|
//permissionList = this.GetEntitiesByRedis<T_FM_ROLE_MENU_PERM>(t => t.Nav_PermissionForm.ENABLE_STATUS == (int)FMEnableStatusEnum.启用,
|
|||
|
|
// new BaseFilter(pageFilter.OrgId), roleId, new string[] { "Nav_PermissionBtns", "Nav_PermissionColumns", "Nav_PermissionForm" }).ToList();
|
|||
|
|
|
|||
|
|
permissionList = this.GetEntities<T_FM_ROLE_MENU_PERM>(x => x.ROLE_ID == new Guid(roleId), new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
permissionBtns = this.GetEntities<T_FM_ROLE_MENU_PERM_BTN>(x => x.ROLE_ID == new Guid(roleId), new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
permissionCols = this.GetEntities<T_FM_ROLE_MENU_PERM_COL>(x => x.ROLE_ID == new Guid(roleId), new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
//menuPermissions = this.GetEntities<T_FM_ROLE_MENU_PERMISON>(x => x.ROLE_ID == new Guid(roleId), new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
// permissionMenu = this.GetEntities<T_FM_ROLE_MENU_MENU>(null, filterMenu).ToList();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
#endregion
|
|||
|
|
foreach (var menu in menuTree)
|
|||
|
|
{
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = menu.Node.ID.ToString(), Title = menu.Node.NAME, ParentCode = "Root" });//最外层菜单
|
|||
|
|
AddChildren(menu, permissionList, permissionBtns, permissionCols, list, resPagTable, resPagEdit, resPagTree, resPagChart,
|
|||
|
|
resPagCustom, pageFilter.OrgId.ToString(), formInfos, dicforms, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
List<string> checks = new List<string>();
|
|||
|
|
List<string> checkLastKey = new List<string>();
|
|||
|
|
foreach (var dicform in dicforms)
|
|||
|
|
{
|
|||
|
|
formInfos.Add(dicform.Value);
|
|||
|
|
}
|
|||
|
|
result = RolePermissionTreeModel.GetRolePermissionTree(formInfos);
|
|||
|
|
result = result[0].children;
|
|||
|
|
foreach (var item in result)
|
|||
|
|
{
|
|||
|
|
SelectCheck(item, checks, checkLastKey);
|
|||
|
|
}
|
|||
|
|
rlt = new RolePermissionResul() { checks = checks, checkLastKey = checkLastKey, rolePermissionTreeModels = result };
|
|||
|
|
}
|
|||
|
|
else //APP菜单
|
|||
|
|
{
|
|||
|
|
filter.Sort = "NUM";
|
|||
|
|
filter.Order = DbOrder.ASC;
|
|||
|
|
filter.Level = -1;
|
|||
|
|
filter.IsParentData = true;
|
|||
|
|
var menuTree = this.GetTreeOrderEntities<T_PF_APPMENU>(x => x.ENABLE_STATUS == (int)FMEnableStatusEnum.启用, filter);
|
|||
|
|
var list = this.GetEntities<T_PF_FORM>(x => x.PLATFORM_TYPE == (int)PFPlatTypeEnum.APP, filter).ToList();//所有表单数据
|
|||
|
|
List<RolePermissionTreeModel> result = new List<RolePermissionTreeModel>();//最终返回树结果
|
|||
|
|
List<FormInfo> formInfos = new List<FormInfo>();
|
|||
|
|
Dictionary<string, FormInfo> dicforms = new Dictionary<string, FormInfo>();
|
|||
|
|
string roleId = pageFilter.Keyword;//角色ID
|
|||
|
|
List<T_FM_ROLE_MENU_PERM> permissionList = null;
|
|||
|
|
if (!string.IsNullOrEmpty(roleId))
|
|||
|
|
{
|
|||
|
|
permissionList = this.GetEntities<T_FM_ROLE_MENU_PERM>(x => x.ROLE_ID == new Guid(roleId),
|
|||
|
|
new BaseFilter(pageFilter.OrgId)).ToList();
|
|||
|
|
}
|
|||
|
|
foreach (var menu in menuTree)
|
|||
|
|
{
|
|||
|
|
AddChildren(menu, permissionList, dicforms, list);
|
|||
|
|
}
|
|||
|
|
List<string> checks = new List<string>();
|
|||
|
|
List<string> checkLastKey = new List<string>();
|
|||
|
|
foreach (var dicform in dicforms)
|
|||
|
|
{
|
|||
|
|
formInfos.Add(dicform.Value);
|
|||
|
|
}
|
|||
|
|
result = RolePermissionTreeModel.GetRolePermissionTree(formInfos);
|
|||
|
|
result = result[0].children;
|
|||
|
|
foreach (var item in result)
|
|||
|
|
{
|
|||
|
|
SelectCheck(item, checks, checkLastKey);
|
|||
|
|
}
|
|||
|
|
rlt = new RolePermissionResul() { checks = checks, checkLastKey = checkLastKey, rolePermissionTreeModels = result };
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return rlt;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 树形授权
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="role"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
[HttpPost, Route("GetTreeDepartment")]
|
|||
|
|
public JsonActionResult<dynamic> GetTreeDepartment([FromBody] KeywordPageFilter filter)
|
|||
|
|
{
|
|||
|
|
return SafeExecute<dynamic>(() =>
|
|||
|
|
{
|
|||
|
|
//dynamic result = new ExpandoObject();
|
|||
|
|
List<OrgTreeData> result = new List<OrgTreeData>();
|
|||
|
|
OrgTreeData orgTreeData = new OrgTreeData();
|
|||
|
|
var list = this.GetEntities<T_FM_DEPARTMENT>(null, filter);
|
|||
|
|
var parents = list.Where(i => i.PARENT_ID == null).ToList();
|
|||
|
|
var treeData = new List<TreeDataModel>();
|
|||
|
|
foreach (var item in parents)
|
|||
|
|
{
|
|||
|
|
var model = new TreeDataModel { key = item.ID.ToString(), title = item.NAME };
|
|||
|
|
model.children = GetDepartmentTreeData(list, item);
|
|||
|
|
treeData.Add(model);
|
|||
|
|
}
|
|||
|
|
//result.departmentTreeData = treeData;
|
|||
|
|
orgTreeData.treeDataModels.AddRange(treeData);
|
|||
|
|
|
|||
|
|
var currentDept = this.GetEntities<T_FM_DEPARTMENT>(x => x.ORG_ID == filter.OrgId, filter).Select(x => x.ID);
|
|||
|
|
var roles = this.GetEntities<T_FM_ROLE_DEPARTMENT>(x => x.ROLE_ID.ToString() == filter.Keyword && currentDept.Contains(x.DEPARTMENT_ID), filter);
|
|||
|
|
orgTreeData.departmentCheckedKeys.AddRange(roles.Select(x => x.DEPARTMENT_ID));
|
|||
|
|
var orgInfo = this.GetEntity<T_FM_ORGANIZATION>(x => x.ID == filter.OrgId, filter);
|
|||
|
|
orgTreeData.OrgId = filter.OrgId.ToString();
|
|||
|
|
orgTreeData.title = orgInfo.NAME;
|
|||
|
|
result.Add(orgTreeData);
|
|||
|
|
if (filter.OrgRule.Any())
|
|||
|
|
{
|
|||
|
|
filter.IgnoreOrgRule = false;
|
|||
|
|
var orgFilter = new BaseFilter();
|
|||
|
|
foreach (var item in filter.OrgRule)
|
|||
|
|
{
|
|||
|
|
orgFilter.OrgId = item;
|
|||
|
|
OrgTreeData resultRule = new OrgTreeData();
|
|||
|
|
var listOrgRules = this.GetEntities<T_FM_DEPARTMENT>(null, orgFilter);
|
|||
|
|
var parentOrgRules = listOrgRules.Where(i => i.PARENT_ID == null).ToList();
|
|||
|
|
var treeDataOrgRule = new List<TreeDataModel>();
|
|||
|
|
foreach (var parentOrgRule in parentOrgRules)
|
|||
|
|
{
|
|||
|
|
var model = new TreeDataModel { key = parentOrgRule.ID.ToString(), title = parentOrgRule.NAME };
|
|||
|
|
model.children = GetDepartmentTreeData(listOrgRules, parentOrgRule);
|
|||
|
|
treeDataOrgRule.Add(model);
|
|||
|
|
}
|
|||
|
|
resultRule.treeDataModels.AddRange(treeDataOrgRule);
|
|||
|
|
var orgRuleDept = this.GetEntities<T_FM_DEPARTMENT>(null, orgFilter).Select(x => x.ID);
|
|||
|
|
var roleOrgRules = this.GetEntities<T_FM_ROLE_DEPARTMENT>(x => x.ROLE_ID.ToString() == filter.Keyword && orgRuleDept.Contains(x.DEPARTMENT_ID), orgFilter);
|
|||
|
|
resultRule.departmentCheckedKeys.AddRange(roleOrgRules.Select(x => x.DEPARTMENT_ID));
|
|||
|
|
var orgDataRuleInfo = this.GetEntity<T_FM_ORGANIZATION>(item);
|
|||
|
|
resultRule.OrgId = item.ToString();
|
|||
|
|
resultRule.title = orgDataRuleInfo.NAME;
|
|||
|
|
result.Add(resultRule);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
public class OrgTreeData
|
|||
|
|
{
|
|||
|
|
public OrgTreeData()
|
|||
|
|
{
|
|||
|
|
this.treeDataModels = new List<TreeDataModel>();
|
|||
|
|
this.departmentCheckedKeys = new List<Guid>();
|
|||
|
|
}
|
|||
|
|
public List<TreeDataModel> treeDataModels { get; set; }
|
|||
|
|
public List<Guid> departmentCheckedKeys { get; set; }
|
|||
|
|
public string OrgId { get; set; }
|
|||
|
|
public string title { get; set; }
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private List<TreeDataModel> GetDepartmentTreeData(IEnumerable<T_FM_DEPARTMENT> list, T_FM_DEPARTMENT node)
|
|||
|
|
{
|
|||
|
|
var treeData = new List<TreeDataModel>();
|
|||
|
|
var nodes = list.Where(x => x.PARENT_ID == node.ID);
|
|||
|
|
foreach (var item in nodes)
|
|||
|
|
{
|
|||
|
|
var model = new TreeDataModel { key = item.ID.ToString(), title = item.NAME };
|
|||
|
|
var children = GetDepartmentTreeData(list, item);
|
|||
|
|
if (children.Any())
|
|||
|
|
model.children = children;
|
|||
|
|
treeData.Add(model);
|
|||
|
|
}
|
|||
|
|
return treeData;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
public void SelectCheck(RolePermissionTreeModel RolePermissions, List<string> checks, List<string> checkLastKey)
|
|||
|
|
{
|
|||
|
|
if (RolePermissions.IsCheck)
|
|||
|
|
{
|
|||
|
|
checks.Add(RolePermissions.key);
|
|||
|
|
}
|
|||
|
|
if (RolePermissions.children.Count == 0 && RolePermissions.IsCheck)
|
|||
|
|
{
|
|||
|
|
checkLastKey.Add(RolePermissions.key);
|
|||
|
|
}
|
|||
|
|
if (RolePermissions.children.Count > 0)
|
|||
|
|
{
|
|||
|
|
foreach (var item in RolePermissions.children)
|
|||
|
|
{
|
|||
|
|
SelectCheck(item, checks, checkLastKey);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void AddChildren(TreeNode<T_PF_APPMENU> treeNode, List<T_FM_ROLE_MENU_PERM> t_FM_ROLE_MENU_PERMs,
|
|||
|
|
Dictionary<string, FormInfo> dicforms, List<T_PF_FORM> t_PF_FORMs)
|
|||
|
|
{
|
|||
|
|
var permission = false;
|
|||
|
|
if (!dicforms.ContainsKey(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString()))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null && t_FM_ROLE_MENU_PERMs.Count > 0)
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.MENU_ID == treeNode.Node.ID);
|
|||
|
|
else
|
|||
|
|
permission = false;
|
|||
|
|
dicforms.Add(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString(), new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = treeNode.Node.ID.ToString(),
|
|||
|
|
Title = treeNode.Node.NAME,
|
|||
|
|
ParentCode = treeNode.Node.PARENT_ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
var form = t_PF_FORMs.SingleOrDefault(x => x.ID == treeNode.Node.MENU_FORM_ID);//菜单下的表单
|
|||
|
|
if (form != null)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(treeNode.Node.ID.ToString() + "_" + form.ID.ToString()))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == treeNode.Node.ID);
|
|||
|
|
else
|
|||
|
|
permission = false;
|
|||
|
|
dicforms.Add(treeNode.Node.ID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = treeNode.Node.ID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = treeNode.Node.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (var item in treeNode.Children)
|
|||
|
|
{
|
|||
|
|
AddChildren(item, t_FM_ROLE_MENU_PERMs, dicforms, t_PF_FORMs);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
public void AddChildren(TreeNode<T_PF_MENU> treeNode, List<T_FM_ROLE_MENU_PERM> t_FM_ROLE_MENU_PERMs, List<T_FM_ROLE_MENU_PERM_BTN> permissionBtns, List<T_FM_ROLE_MENU_PERM_COL> permissionCols,
|
|||
|
|
List<T_PF_FORM> t_PF_FORMs, List<T_PF_PAGE_TABLE> pageTableList,
|
|||
|
|
List<T_PF_PAGE_EDIT> editTableList, List<T_PF_PAGE_TREE> treeTableList,
|
|||
|
|
List<T_PF_PAGE_CHART> charList, List<T_PF_PAGE_CUSTOM> customList, string OrgId, List<FormInfo> formInfos, Dictionary<string, FormInfo> dicforms, List<T_PF_FORM_RELATION> allFormRelations, List<T_PF_BTN> allBtns,
|
|||
|
|
List<T_PF_COLUMN> allCols, List<T_PF_EDIT_COLUMN> allEditCols)
|
|||
|
|
{
|
|||
|
|
var permission = false;
|
|||
|
|
|
|||
|
|
if (!dicforms.ContainsKey(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString()))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null && t_FM_ROLE_MENU_PERMs.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.MENU_ID == treeNode.Node.ID);
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString(), new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = treeNode.Node.ID.ToString(),
|
|||
|
|
Title = treeNode.Node.NAME,
|
|||
|
|
ParentCode = treeNode.Node.PARENT_ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
if (treeNode.Node.MENU_FORM_ID != null)
|
|||
|
|
{
|
|||
|
|
var form = t_PF_FORMs.SingleOrDefault(x => x.ID == treeNode.Node.MENU_FORM_ID);//菜单下的表单
|
|||
|
|
List<Guid> existForm = new List<Guid>();
|
|||
|
|
if (form != null)
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList, editTableList, treeTableList,
|
|||
|
|
charList, customList, form, OrgId, formInfos, treeNode.Node.ID.ToString(), dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
foreach (var item in treeNode.Children)
|
|||
|
|
{
|
|||
|
|
AddChildren(item, t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList, editTableList, treeTableList, charList, customList, OrgId, formInfos, dicforms, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
//}
|
|||
|
|
//else //有配置表单没有下一级
|
|||
|
|
//{
|
|||
|
|
// if (t_FM_ROLE_MENU_PERMs != null && t_FM_ROLE_MENU_PERMs.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// permission = t_FM_ROLE_MENU_PERMs.Any(x => x.MENU_ID == treeNode.Node.ID);
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// permission = false;
|
|||
|
|
// }
|
|||
|
|
// if (!dicforms.ContainsKey(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString()))
|
|||
|
|
// {
|
|||
|
|
// dicforms.Add(treeNode.Node.ID.ToString() + "_" + treeNode.Node.PARENT_ID.ToString(), new FormInfo()
|
|||
|
|
// {
|
|||
|
|
// Code = treeNode.Node.ID.ToString(),
|
|||
|
|
// Title = treeNode.Node.NAME,
|
|||
|
|
// ParentCode = treeNode.Node.PARENT_ID.ToString(),
|
|||
|
|
// IsCheck = permission
|
|||
|
|
// });
|
|||
|
|
// //formInfos.Add(new FormInfo() { Code = treeNode.Node.ID.ToString(), Title = treeNode.Node.NAME, ParentCode = treeNode.Node.PARENT_ID.ToString() });
|
|||
|
|
// }
|
|||
|
|
// var form = t_PF_FORMs.SingleOrDefault(x => x.ID == treeNode.Node.MENU_FORM_ID);//菜单下的表单
|
|||
|
|
// List<Guid> existForm = new List<Guid>();
|
|||
|
|
// if (form != null)
|
|||
|
|
// {
|
|||
|
|
// AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList, editTableList, treeTableList,
|
|||
|
|
// charList, customList, form, OrgId, formInfos, treeNode.Node.ID.ToString(), dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
// }
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public class PageTables
|
|||
|
|
{
|
|||
|
|
public List<T_PF_PAGE_TABLE> pageTableList { get; set; } = new List<T_PF_PAGE_TABLE>();
|
|||
|
|
public List<T_PF_PAGE_EDIT> editTableList { get; set; } = new List<T_PF_PAGE_EDIT>();
|
|||
|
|
public List<T_PF_PAGE_TREE> treeTableList { get; set; } = new List<T_PF_PAGE_TREE>();
|
|||
|
|
public List<T_PF_PAGE_CHART> charList { get; set; } = new List<T_PF_PAGE_CHART>();
|
|||
|
|
public List<T_PF_PAGE_CUSTOM> customList { get; set; } = new List<T_PF_PAGE_CUSTOM>();
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 递归查找关联数据
|
|||
|
|
/// relateID关联表单全部挂着这个表单下
|
|||
|
|
/// </summary>
|
|||
|
|
public void AddRelated(List<T_FM_ROLE_MENU_PERM> t_FM_ROLE_MENU_PERMs, List<T_FM_ROLE_MENU_PERM_BTN> permissionBtns, List<T_FM_ROLE_MENU_PERM_COL> permissionCols,
|
|||
|
|
List<T_PF_FORM> t_PF_FORMs, List<T_PF_PAGE_TABLE> pageTableList, List<T_PF_PAGE_EDIT> editTableList, List<T_PF_PAGE_TREE> treeTableList,
|
|||
|
|
List<T_PF_PAGE_CHART> charList, List<T_PF_PAGE_CUSTOM> customList, T_PF_FORM form, string OrgId, List<FormInfo> formInfos, string relateID,
|
|||
|
|
Dictionary<string, FormInfo> dicforms, List<Guid> existForm, List<T_PF_FORM_RELATION> allFormRelations, List<T_PF_BTN> allBtns,
|
|||
|
|
List<T_PF_COLUMN> allCols, List<T_PF_EDIT_COLUMN> allEditCols)
|
|||
|
|
{
|
|||
|
|
if (form.CODE == "FM103")
|
|||
|
|
{
|
|||
|
|
var ssss = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
bool permission = false;
|
|||
|
|
switch (form.FORM_TYPE)
|
|||
|
|
{
|
|||
|
|
case (int)PFFormTypeEnum.列表表单:
|
|||
|
|
case (int)PFFormTypeEnum.组合表单:
|
|||
|
|
{
|
|||
|
|
#region 配置相关联表单T_PF_FORM_RELATION
|
|||
|
|
var formRelations = allFormRelations.Where(x => x.PAGE_FORM_ID == form.ID);
|
|||
|
|
if (formRelations.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var formRelation in formRelations)
|
|||
|
|
{
|
|||
|
|
var relationForm = t_PF_FORMs.Where(x => x.CODE == formRelation.CODE).FirstOrDefault();
|
|||
|
|
if (relationForm != null && !existForm.Contains(relationForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, relationForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
var resTable = pageTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resTable.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
|
|||
|
|
if (form.FORM_TYPE == (int)PFFormTypeEnum.列表表单)
|
|||
|
|
{
|
|||
|
|
foreach (var item in resTable)
|
|||
|
|
{
|
|||
|
|
#region 表单授权列
|
|||
|
|
//var clm = this.GetEntitiesByRedis<T_PF_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString());
|
|||
|
|
var clm = allCols.Where(x => x.PAGE_TABLE_ID == item.ID);
|
|||
|
|
foreach (var col in clm)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
{
|
|||
|
|
var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
Title = col.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = col.ID.ToString(), Title = col.LABEL, ParentCode = reformId.ID.ToString(), IsCheck = permission });//挂在对应表单下
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
// var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else//组合表单
|
|||
|
|
{
|
|||
|
|
foreach (var item in resTable)
|
|||
|
|
{
|
|||
|
|
var reformId = t_PF_FORMs.Where(x => x.CODE == item.CODE).FirstOrDefault();
|
|||
|
|
if (reformId != null)
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == reformId.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + reformId.ID.ToString()))
|
|||
|
|
{
|
|||
|
|
//dicforms.Add(relateID + "_" + reformId.ID.ToString(), new FormInfo()
|
|||
|
|
//{
|
|||
|
|
// Code = relateID + "_" + reformId.ID.ToString(),
|
|||
|
|
// Title = reformId.NAME + "(" + reformId.CODE + ")",
|
|||
|
|
// ParentCode = relateID,
|
|||
|
|
// IsCheck = permission
|
|||
|
|
//});
|
|||
|
|
if (form.ID != reformId.ID && !existForm.Contains(reformId.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, reformId, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
//existForm.Add(reformId.ID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//var tablePages = pageTableList.Where(x => x.PAGE_FORM_ID == reformId.ID).ToList();//组合表单
|
|||
|
|
//foreach (var tablepage in tablePages)
|
|||
|
|
//{
|
|||
|
|
// #region 表单授权列
|
|||
|
|
// //var column = this.GetEntitiesByRedis<T_PF_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), tablepage.ID.ToString());
|
|||
|
|
// var column = allCols.Where(x => x.PAGE_TABLE_ID == tablepage.ID);
|
|||
|
|
// foreach (var col in column)
|
|||
|
|
// {
|
|||
|
|
// if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
// {
|
|||
|
|
// var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
// if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
// {
|
|||
|
|
// AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
// editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
// {
|
|||
|
|
// permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// permission = false;
|
|||
|
|
// }
|
|||
|
|
// if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
// {
|
|||
|
|
// dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
// {
|
|||
|
|
// Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
// Title = col.LABEL,
|
|||
|
|
// ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
// IsCheck = permission
|
|||
|
|
// });
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
// #endregion
|
|||
|
|
// #region 按钮授权
|
|||
|
|
// //var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
// // var buttons = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == tablepage.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
// var buttons = allBtns.Where(x => x.PAGE_ID == tablepage.ID);
|
|||
|
|
// BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
// pageTableList, editTableList, treeTableList, charList, customList, reformId, OrgId, formInfos, relateID, dicforms, existForm, buttons, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
// #endregion
|
|||
|
|
//}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.编辑表单:
|
|||
|
|
{
|
|||
|
|
#region 配置相关联表单T_PF_FORM_RELATION
|
|||
|
|
|
|||
|
|
var formRelations = allFormRelations.Where(x => x.PAGE_FORM_ID == form.ID);
|
|||
|
|
if (formRelations.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var formRelation in formRelations)
|
|||
|
|
{
|
|||
|
|
var relationForm = t_PF_FORMs.Where(x => x.CODE == formRelation.CODE).FirstOrDefault();
|
|||
|
|
if (relationForm != null && !existForm.Contains(relationForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, relationForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region editTableList
|
|||
|
|
var resEdit = editTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resEdit.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
foreach (var item in resEdit)
|
|||
|
|
{
|
|||
|
|
#region 编辑列授权
|
|||
|
|
// var clm = this.GetEntitiesByRedis<T_PF_EDIT_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString());
|
|||
|
|
var clm = allEditCols.Where(x => x.PAGE_EDIT_ID == item.ID);
|
|||
|
|
foreach (var col in clm)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
{
|
|||
|
|
var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
Title = col.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = col.ID.ToString(), Title = col.LABEL, ParentCode = reformId.ID.ToString(), IsCheck = permission });//挂在对应表单下
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.树形编辑页:
|
|||
|
|
case (int)PFFormTypeEnum.横向树编辑页:
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
#region 配置相关联表单T_PF_FORM_RELATION
|
|||
|
|
var formRelations = allFormRelations.Where(x => x.PAGE_FORM_ID == form.ID);
|
|||
|
|
if (formRelations.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var formRelation in formRelations)
|
|||
|
|
{
|
|||
|
|
var relationForm = t_PF_FORMs.Where(x => x.CODE == formRelation.CODE).FirstOrDefault();
|
|||
|
|
if (relationForm != null && !existForm.Contains(relationForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, relationForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region treeTableList
|
|||
|
|
var resTree = treeTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resTree.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
foreach (var item in resTree)
|
|||
|
|
{
|
|||
|
|
#region 按钮授权
|
|||
|
|
// var btns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region editTableList
|
|||
|
|
var resEdit = editTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resEdit.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
}
|
|||
|
|
foreach (var item in resEdit)
|
|||
|
|
{
|
|||
|
|
#region 编辑列授权
|
|||
|
|
//var clm = this.GetEntitiesByRedis<T_PF_EDIT_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString());
|
|||
|
|
var clm = allEditCols.Where(x => x.PAGE_EDIT_ID == item.ID);
|
|||
|
|
foreach (var col in clm)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
{
|
|||
|
|
var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
Title = col.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = col.ID.ToString(), Title = col.LABEL, ParentCode = reformId.ID.ToString(), IsCheck = permission });//挂在对应表单下
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.图表表单:
|
|||
|
|
{
|
|||
|
|
#region 配置相关联表单T_PF_FORM_RELATION
|
|||
|
|
var formRelations = allFormRelations.Where(x => x.PAGE_FORM_ID == form.ID);
|
|||
|
|
if (formRelations.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var formRelation in formRelations)
|
|||
|
|
{
|
|||
|
|
var relationForm = t_PF_FORMs.Where(x => x.CODE == formRelation.CODE).FirstOrDefault();
|
|||
|
|
if (relationForm != null && !existForm.Contains(relationForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, relationForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
var resChart = charList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resChart.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(form.ID.ToString() + "_" + relateID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
foreach (var item in resChart)
|
|||
|
|
{
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), resChart[0].ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
case (int)PFFormTypeEnum.自定义表单:
|
|||
|
|
{
|
|||
|
|
#region 配置相关联表单T_PF_FORM_RELATION
|
|||
|
|
var formRelations = allFormRelations.Where(x => x.PAGE_FORM_ID == form.ID);
|
|||
|
|
if (formRelations.Any())
|
|||
|
|
{
|
|||
|
|
foreach (var formRelation in formRelations)
|
|||
|
|
{
|
|||
|
|
var relationForm = t_PF_FORMs.Where(x => x.CODE == formRelation.CODE).FirstOrDefault();
|
|||
|
|
if (relationForm != null && !existForm.Contains(relationForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, relationForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region customList
|
|||
|
|
var res = customList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (res.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), res[0].ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == form.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == form.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
|
|||
|
|
//foreach (var item in res)
|
|||
|
|
//{
|
|||
|
|
// #region 按钮授权
|
|||
|
|
// //var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), res[0].ID.ToString()).ToList();
|
|||
|
|
// var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
// BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
// pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations);
|
|||
|
|
// #endregion
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region pageTableList
|
|||
|
|
var resTable = pageTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resTable.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
foreach (var item in resTable)
|
|||
|
|
{
|
|||
|
|
#region 表单授权列
|
|||
|
|
// var clm = this.GetEntitiesByRedis<T_PF_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString());
|
|||
|
|
var clm = allCols.Where(x => x.PAGE_TABLE_ID == item.ID);
|
|||
|
|
foreach (var col in clm)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
{
|
|||
|
|
var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
Title = col.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = col.ID.ToString(), Title = col.LABEL, ParentCode = reformId.ID.ToString(), IsCheck = permission });//挂在对应表单下
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region editTableList
|
|||
|
|
var resEdit = editTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resEdit.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
foreach (var item in resEdit)
|
|||
|
|
{
|
|||
|
|
#region 编辑列授权
|
|||
|
|
//var clm = this.GetEntitiesByRedis<T_PF_EDIT_COLUMN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString());
|
|||
|
|
var clm = allEditCols.Where(x => x.PAGE_EDIT_ID == item.ID);
|
|||
|
|
foreach (var col in clm)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(col.SHOW_FORM_CODE))//有配置关联表单
|
|||
|
|
{
|
|||
|
|
var colForm = t_PF_FORMs.Where(x => x.CODE == col.SHOW_FORM_CODE).FirstOrDefault();
|
|||
|
|
if (colForm != null && !existForm.Contains(colForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, colForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionCols != null && permissionCols.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionCols.Any(x => x.COLUMN_ID == col.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString() + "_" + col.ID.ToString() + "_COL",
|
|||
|
|
Title = col.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + form.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
//formInfos.Add(new FormInfo() { Code = col.ID.ToString(), Title = col.LABEL, ParentCode = reformId.ID.ToString(), IsCheck = permission });//挂在对应表单下
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region treeTableList
|
|||
|
|
var resTree = treeTableList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resTree.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(relateID + "_" + form.ID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
foreach (var item in resTree)
|
|||
|
|
{
|
|||
|
|
#region 按钮授权
|
|||
|
|
// var btns = this.GetEntitiesByRedis<T_PF_BTN>(t => t.IS_RULE, new BaseFilter(new Guid(OrgId)), item.ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
#region charList
|
|||
|
|
var resChart = charList.Where(x => x.PAGE_FORM_ID == form.ID).ToList();//查找相关表单
|
|||
|
|
if (resChart.Count > 0)
|
|||
|
|
{
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + form.ID))
|
|||
|
|
{
|
|||
|
|
if (t_FM_ROLE_MENU_PERMs != null)
|
|||
|
|
{
|
|||
|
|
permission = t_FM_ROLE_MENU_PERMs.Any(x => x.PERMISSION_FORM_ID == form.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
dicforms.Add(form.ID.ToString() + "_" + relateID, new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + form.ID.ToString(),
|
|||
|
|
Title = form.NAME + "(" + form.CODE + ")",
|
|||
|
|
ParentCode = relateID,
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
existForm.Add(form.ID);
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
foreach (var item in resChart)
|
|||
|
|
{
|
|||
|
|
#region 按钮授权
|
|||
|
|
//var btns = this.GetEntitiesByRedis<T_PF_BTN>(null, new BaseFilter(new Guid(OrgId)), resChart[0].ID.ToString()).ToList();
|
|||
|
|
//var btns = this.GetEntities<T_PF_BTN>(t => t.PAGE_ID == item.ID, new BaseFilter(new Guid(OrgId)));
|
|||
|
|
var btns = allBtns.Where(x => x.PAGE_ID == item.ID);
|
|||
|
|
BtnPermissions(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs,
|
|||
|
|
pageTableList, editTableList, treeTableList, charList, customList, form, OrgId, formInfos, relateID, dicforms, existForm, btns, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
#endregion
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
#endregion
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
default:
|
|||
|
|
{
|
|||
|
|
break;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
/// <summary>
|
|||
|
|
/// 按钮权限
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="t_FM_ROLE_MENU_PERMs"></param>
|
|||
|
|
/// <param name="permissionBtns"></param>
|
|||
|
|
/// <param name="permissionCols"></param>
|
|||
|
|
/// <param name="menuPermissions"></param>
|
|||
|
|
/// <param name="t_PF_FORMs"></param>
|
|||
|
|
/// <param name="pageTableList"></param>
|
|||
|
|
/// <param name="editTableList"></param>
|
|||
|
|
/// <param name="treeTableList"></param>
|
|||
|
|
/// <param name="charList"></param>
|
|||
|
|
/// <param name="customList"></param>
|
|||
|
|
/// <param name="form"></param>
|
|||
|
|
/// <param name="OrgId"></param>
|
|||
|
|
/// <param name="formInfos"></param>
|
|||
|
|
/// <param name="relateID"></param>
|
|||
|
|
/// <param name="dicforms"></param>
|
|||
|
|
/// <param name="existForm"></param>
|
|||
|
|
/// <param name="btns"></param>
|
|||
|
|
public void BtnPermissions(List<T_FM_ROLE_MENU_PERM> t_FM_ROLE_MENU_PERMs, List<T_FM_ROLE_MENU_PERM_BTN> permissionBtns, List<T_FM_ROLE_MENU_PERM_COL> permissionCols,
|
|||
|
|
List<T_PF_FORM> t_PF_FORMs, List<T_PF_PAGE_TABLE> pageTableList, List<T_PF_PAGE_EDIT> editTableList, List<T_PF_PAGE_TREE> treeTableList,
|
|||
|
|
List<T_PF_PAGE_CHART> charList, List<T_PF_PAGE_CUSTOM> customList, T_PF_FORM reformId, string OrgId, List<FormInfo> formInfos, string relateID, Dictionary<string, FormInfo> dicforms,
|
|||
|
|
List<Guid> existForm, IEnumerable<T_PF_BTN> btns, List<T_PF_FORM_RELATION> allFormRelations, List<T_PF_BTN> allBtns,
|
|||
|
|
List<T_PF_COLUMN> allCols, List<T_PF_EDIT_COLUMN> allEditCols)
|
|||
|
|
{
|
|||
|
|
bool permission = false;
|
|||
|
|
foreach (var btn in btns)
|
|||
|
|
{
|
|||
|
|
if (btn.ID.ToString() == "43c7343f-8d31-4688-9a87-602d0d27509e")
|
|||
|
|
{
|
|||
|
|
var s = 1;
|
|||
|
|
}
|
|||
|
|
if (!string.IsNullOrEmpty(btn.FORM_CODE))//有配置关联跳转表单
|
|||
|
|
{
|
|||
|
|
var btnForm = t_PF_FORMs.Where(x => x.CODE == btn.FORM_CODE).FirstOrDefault();
|
|||
|
|
if (btnForm != null && !existForm.Contains(btnForm.ID))
|
|||
|
|
{
|
|||
|
|
AddRelated(t_FM_ROLE_MENU_PERMs, permissionBtns, permissionCols, t_PF_FORMs, pageTableList,
|
|||
|
|
editTableList, treeTableList, charList, customList, btnForm, OrgId, formInfos, relateID, dicforms, existForm, allFormRelations, allBtns, allCols, allEditCols);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (permissionBtns != null && permissionBtns.Count > 0)
|
|||
|
|
{
|
|||
|
|
permission = permissionBtns.Any(x => x.BTN_ID == btn.ID && x.MENU_ID == new Guid(relateID));
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
permission = false;
|
|||
|
|
}
|
|||
|
|
if (!dicforms.ContainsKey(relateID + "_" + reformId.ID.ToString() + "_" + btn.ID.ToString() + "_BTN"))
|
|||
|
|
{
|
|||
|
|
dicforms.Add(relateID + "_" + reformId.ID.ToString() + "_" + btn.ID.ToString() + "_BTN", new FormInfo()
|
|||
|
|
{
|
|||
|
|
Code = relateID + "_" + reformId.ID.ToString() + "_" + btn.ID.ToString() + "_BTN",
|
|||
|
|
Title = btn.BTN_FUN_TYPE == (int)PFBtnFuncTypeEnum.行按钮 ? "行按钮_" + btn.LABEL : "按钮_" + btn.LABEL,
|
|||
|
|
ParentCode = relateID + "_" + reformId.ID.ToString(),
|
|||
|
|
IsCheck = permission
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|