using Ropin.Inspection.Model; using Ropin.Inspection.Model.Entities; using Ropin.Inspection.Model.ViewModel; using Ropin.Inspection.Model.ViewModel.SYS; using Ropin.Inspection.Repository.SYS.Interface; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Ropin.Inspection.Repository.SYS { public class TsysPrivRepository: RepositoryBase, ITsysPrivRepository { public TsysPrivRepository(InspectionDbContext dbContext) : base(dbContext) { } public TSYS_Priv GetPrivEntity(string code) { TSYS_Priv priv = new TSYS_Priv(); priv= DbContext.Set().Where(i => i.C_Code==code).FirstOrDefault(); return priv; } public List GetAllPrivList(string ParentCode,string name,string status) { string sql = string.Empty; MySqlConnector.MySqlParameter[] parameters = new[] { new MySqlConnector.MySqlParameter("ParentCode", ParentCode) , new MySqlConnector.MySqlParameter("name", "%" +name+"%"), new MySqlConnector.MySqlParameter("status", status) }; sql = @" select P.*,M.C_Name as C_ModuleName,T.C_Name as C_TypeName from TSYS_Priv P LEFT JOIN TBDM_CodeDetail M on (P.C_Module=M.C_Code) LEFT JOIN TBDM_CodeDetail T on (P.C_Type=T.C_Code) WHERE 1=1"; if (!string.IsNullOrEmpty(ParentCode)) { if (ParentCode == "null") { sql += " and (P.C_ParentCode is null or P.C_ParentCode='') "; } else { sql += " and P.C_ParentCode=@ParentCode "; } } if (!string.IsNullOrEmpty(name)) { sql += " and P.C_Name like @name "; } if (!string.IsNullOrEmpty(status)) { sql += " and P.C_Status =@status "; } List result = EntityFrameworkCoreExtensions.GetList(DbContext.Database, sql, parameters).ToList(); return result; } public async Task> GetPrivTree(TsysPrivSearch model) { List< TsysPrivTreeModel > treeList = new List< TsysPrivTreeModel >(); if (model==null) { model = new TsysPrivSearch(); } //treeModels = GetAllPrivList("null","",model.C_Status); List treeModels = GetAllPrivList("", "", model.C_Status); if (treeModels.First()==null) { treeModels = null; } if (treeModels!=null&& treeModels.Count>0) { foreach (var item in treeModels.Where(m => m.C_ParentCode == null).OrderBy(m => m.I_Sort)) { //获得子级 var children = GetChildLevel(treeModels, new List(), item.C_Code); if (children != null && children.Count > 0) { item.Open = true; item.Children = children; } else { item.Open = false; item.Children = null; } treeList.Add(item); } //treeModels = GetChildren(model, treeModels); } if (treeList.Count>0) { return await Task.Run(() => treeList); } else { return await Task.Run(() => treeModels); } } List GetChildLevel(List model, List list,string code) { //var data = model.Where(m => m.C_ParentCode.Equals(code)).OrderBy(m => m.I_Sort).ToList(); foreach (var row in model.Where(m => m.C_ParentCode == code).OrderBy(m => m.I_Sort)) { var res = GetChildLevel(model, new List(), row.C_Code); if (res != null && res.Count > 0) { row.Open = true; row.Children = res; } else { row.Open = false; row.Children = null; } list.Add(row); } return list; } public List GetChildren(TsysPrivSearch model, List list) { foreach (TsysPrivTreeModel item in list) { List ChildrenList = GetAllPrivList(item.C_Code,"",model.C_Status); //item.Children = ChildrenList; if (ChildrenList != null&& ChildrenList.Count>0&& ChildrenList.FirstOrDefault()!=null) { item.Children = ChildrenList; GetChildren(model, ChildrenList); } } return list; } } }