// WTM默认页面 Wtm buidin page using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Core.Extensions; namespace WalkingTec.Mvvm.Mvc.Admin.ViewModels.DataPrivilegeVMs { public class DataPrivilegeListVM : BasePagedListVM { protected override List InitGridAction() { string tp = ""; if (Searcher.DpType == DpTypeEnum.User) { tp = "User"; } if (Searcher.DpType == DpTypeEnum.UserGroup) { tp = "UserGroup"; } return new List { this.MakeStandardAction("DataPrivilege", GridActionStandardTypesEnum.Create, "","_Admin", dialogWidth: 800).SetQueryString($"Type={tp}"), this.MakeStandardAction("DataPrivilege", GridActionStandardTypesEnum.ExportExcel, "","_Admin"), }; } protected override IEnumerable> InitGridHeader() { return new List>{ this.MakeGridHeader(x => x.Name, 200), this.MakeGridHeader(x => x.PName).SetFormat((entity,val)=>GetPrivilegeName(entity)), this.MakeGridHeader(x => x.TableName), this.MakeGridHeader(x => x.RelateIDs), this.MakeGridHeader(x=>x.Edit,200).SetFormat((entity,val)=>GetOperation(entity)).SetHeader(Localizer["Sys.Operation"]).SetDisableExport(), this.MakeGridHeader(x => x.DpType).SetHide(true), this.MakeGridHeader(x => x.TargetId).SetHide(true) }; } public string GetPrivilegeName(DataPrivilege_ListView item) { var temp = Wtm.DataPrivilegeSettings.Where(x => x.ModelName == item.TableName).SingleOrDefault(); if (temp == null) { return ""; } else { return temp.PrivillegeName; } } public List GetOperation(DataPrivilege_ListView item) { string editurl = ""; string delurl = ""; if(Searcher.DpType == DpTypeEnum.User) { editurl = "/_Admin/DataPrivilege/Edit?ModelName=" + item.TableName + "&Type=User&Id=" + item.TargetId; delurl = "/_Admin/DataPrivilege/Delete?ModelName=" + item.TableName + "&Type=User&Id=" + item.TargetId; } else { editurl = "/_Admin/DataPrivilege/Edit?ModelName=" + item.TableName + "&Type=UserGroup&Id=" + item.TargetId; delurl = "/_Admin/DataPrivilege/Delete?ModelName=" + item.TableName + "&Type=UserGroup&Id=" + item.TargetId; } return new List { ColumnFormatInfo.MakeDialogButton(ButtonTypesEnum.Button,editurl,Localizer["Sys.Edit"],800,null,Localizer["Sys.Edit"]), ColumnFormatInfo.MakeDialogButton(ButtonTypesEnum.Button,delurl,Localizer["Sys.Delete"],null,null,showDialog:false) }; } /// /// 查询结果 /// public override IOrderedQueryable GetSearchQuery() { IOrderedQueryable query = null; if (Searcher.DpType == DpTypeEnum.User) { query = DC.Set().Where(x=>x.UserCode != null) .CheckContain(Searcher.Name, x => x.UserCode) .CheckContain(Searcher.TableName, x => x.TableName) .GroupBy(x => new { x.UserCode, x.TableName }, x => x.RelateId) .Select(x => new DataPrivilege_ListView { TargetId = x.Key.UserCode, Name = x.Key.UserCode, TableName = x.Key.TableName, RelateIDs = x.Count(), DpType = (int)Searcher.DpType }) .OrderByDescending(x => x.Name).OrderByDescending(x => x.TableName); } else { query = DC.Set().Where(x=>x.GroupCode != null) .CheckContain(Searcher.Name, x => x.GroupCode) .CheckContain(Searcher.TableName, x => x.TableName) .GroupBy(x => new { x.GroupCode, x.TableName }, x => x.RelateId) .Select(x => new DataPrivilege_ListView { TargetId = x.Key.GroupCode, Name = "", TableName = x.Key.TableName, RelateIDs = x.Count(), DpType = (int)Searcher.DpType }) .OrderByDescending(x => x.Name).OrderByDescending(x => x.TableName); } return query; } public override void AfterDoSearcher() { if (Searcher.DpType == DpTypeEnum.User) { return; } var groupIDs = EntityList.Select(x=>x.TargetId).ToList(); Dictionary groupdata = new Dictionary(); if (ConfigInfo.HasMainHost && Wtm.LoginUserInfo?.CurrentTenant == null) { var dd = Wtm.CallAPI>("mainhost", "/api/_account/GetFrameworkGroups").Result; if(dd.Data != null) { foreach (var item in dd.Data) { groupdata.TryAdd(item.Value.ToString(), item.Text); } } } else { var ag = Wtm.GetTenantGroups(Wtm.LoginUserInfo?.CurrentTenant); foreach (var item in ag) { groupdata.TryAdd(item.GroupCode, item.GroupName); } } foreach (var item in EntityList) { item.Name = groupdata.ContainsKey(item.TargetId) ? groupdata[item.TargetId] : ""; } base.AfterDoSearcher(); } } public class DataPrivilege_ListView : BasePoco { [Display(Name = "_Admin.DpTargetName")] public string Name { get; set; } public string TargetId { get; set; } [Display(Name = "_Admin.DataPrivilegeName")] public string TableName { get; set; } [Display(Name = "_Admin.DataPrivilegeCount")] public int RelateIDs { get; set; } public int DpType { get; set; } public string DomainName { get; set; } public Guid? DomainID { get; set; } public string Edit { get; set; } [Display(Name = "_Admin.DataPrivilegeName")] public string PName { get; set; } } }