ComplianceServer/oldcode/Core.BLL/Base/BAS_LEFTMEMU_BL.cs

484 lines
18 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

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

using CRM.Core.BLL.Util;
using CRM.Core.Model.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.Common;
namespace CRM.Core.BLL.Base
{
public class BAS_LEFTMEMU_BL
{
CACHE_BL _cache = new CACHE_BL();
public List<BAS_LEFTMEMU> GetBas_LeftMenuList()
{
using (var db = new zxdContext())
{
var list = db.BAS_LEFTMEMU.Where(p => p.ISSHOW == 1).OrderBy(m => m.SORTID).ToList();
return list;
}
}
#region
/// <summary>
/// 新增
/// </summary>
/// <param name="errors"></param>
/// <param name="model"></param>
/// <returns></returns>
public bool Create_leftMemu(ref ValidationErrors errors, BAS_LEFTMEMU model)
{
try
{
using (var db = new zxdContext())
{
decimal? sort = db.BAS_LEFTMEMU.Where(m => m.PARENTID == model.PARENTID && m.MODULEMENUID == model.MODULEMENUID).Max(m => m.SORTID);//获取最大的sort
if (sort == null)
model.SORTID = 1;
else
model.SORTID = sort.Value + 1;
//model.MENUID = new SEQUENCES_BL().Seq_base_get();
db.BAS_LEFTMEMU.Add(model);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region
/// <summary>
/// 删除
/// </summary>
/// <param name="errors"></param>
/// <param name="id"></param>
/// <returns></returns>
public bool Delete_leftMemu(ref ValidationErrors errors, decimal id)
{
try
{
using (var db = new zxdContext())
{
var entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id);
if (entry == null)
{
errors.Add("已经被删除!");
return false;
}
db.BAS_LEFTMEMU.Remove(entry);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region
/// <summary>
/// 修改数据
/// </summary>
/// <param name="errors"></param>
/// <param name="model"></param>
/// <returns></returns>
public bool Update_leftMemu(ref ValidationErrors errors, BAS_LEFTMEMU model)
{
try
{
using (var db = new zxdContext())
{
var entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == model.MENUID);
entry.MNAME = model.MNAME;
entry.MODULEMENUID = model.MODULEMENUID;
entry.URL = model.URL;
entry.ISGROUP = model.ISGROUP;
entry.ISSHOW = model.ISSHOW;
entry.RIGHTID = model.RIGHTID;
entry.PARENTID = model.PARENTID;
if (entry.ISGROUP == 1)
{
var list_menu = db.BAS_LEFTMEMU.Where(p => p.PARENTID == entry.MENUID).ToList();
foreach (var menu in list_menu)
{
menu.MODULEMENUID = entry.MODULEMENUID;
}
}
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region
/// <summary>
/// 更新顺序
/// </summary>
/// <param name="ids">id集合用“”隔开</param>
/// <param name="sortIds">sortid集合“”隔开</param>
/// <returns></returns>
public bool Sort_leftMemu(ref ValidationErrors errors, string ids, string sortIds)
{
if (ids.Trim() == "" || sortIds.Trim() == "")
return false;
try
{
using (var db = new zxdContext())
{
string[] idStr = ids.Split(',');
string[] sortStr = sortIds.Split(',');
for (int i = 0; i < idStr.Length; i++)
{
decimal id = Convert.ToDecimal(idStr[i]);
decimal sortId = Convert.ToDecimal(sortStr[i]);
var entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id);
if (entry == null)
continue;
entry.SORTID = sortId;
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region
/// <summary>
/// 从缓存中获取全部菜单 根据权限获取
/// </summary>
/// <param name="userRights">权限</param>
/// <returns></returns>
public object GetTreeList_leftMenu(string[] userRights)
{
using (var db = new zxdContext())
{
var leftMemuList = _cache.GetList_LeftMemu().OrderBy(m => m.SORTID).Where(m => m.ISSHOW == 1).Where(m => userRights.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList();
var moduleMenuList = _cache.GetList_ModuleMenu().OrderBy(m => m.SORTID).Where(m => userRights.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList();
List<object> obj = new List<object>();
List<object> childObj = null;
//顶部模块部分
foreach (var m in moduleMenuList)
{
foreach (var model in leftMemuList.Where(n => n.PARENTID == 0 && n.MODULEMENUID == m.MODULEMENUID))
{
if (childObj == null)
childObj = new List<object>();
childObj.Add(new
{
id = (model.ISGROUP == 1 ? "-" : "") + model.MENUID.ToString(),
text = model.MNAME,
moduleMenuId = m.MODULEMENUID.ToString(),
sortId = model.SORTID,
iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode"),
children = GetleftMenuTree(model.MENUID, leftMemuList)
});
}
obj.Add(new
{
id = (-m.MODULEMENUID).ToString(),//模块ID为负数
text = m.MNAME,
iconCls = "icon-group",
moduleMenuId = m.MODULEMENUID.ToString(),
sortId = m.SORTID,
children = childObj
});
childObj = null;
}
return obj;
}
}
private object GetleftMenuTree(decimal parentId, List<BAS_LEFTMEMU> menulist)
{
List<object> obj = null;
//下面子菜单
foreach (var model in menulist.Where(n => n.PARENTID == parentId))
{
if (obj == null)
obj = new List<object>();
if (model.ISGROUP == 1)
obj.Add(new
{
id = "-" + model.MENUID.ToString(),
moduleMenuId = model.MODULEMENUID.ToString(),
text = model.MNAME,
sortId = model.SORTID,
iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode"),
children = GetleftMenuTree(model.MENUID, menulist)
});
else
obj.Add(new
{
id = model.MENUID.ToString(),
moduleMenuId = model.MODULEMENUID.ToString(),
text = model.MNAME,
sortId = model.SORTID,
iconCls = (model.ISGROUP == 1 ? "" : "icon-treenode")
});
}
return obj;
}
#endregion
#region
/// <summary>
/// 获取全部菜单信息
/// </summary>
/// <returns></returns>
public object GetTreeList_leftMenu()
{
using (var db = new zxdContext())
{
var leftMemuList = db.BAS_LEFTMEMU.OrderBy(m => m.SORTID).ToList(); //菜单
var moduleMenuList = db.BAS_MODULEMENU.OrderBy(m => m.SORTID).ToList(); //模块
var rightList = db.BAS_RIGHT.ToList();//获取所有的权限
BAS_RIGHT right = null;
List<object> obj = new List<object>();
List<object> childObj = null;
//顶部模块部分
foreach (var m in moduleMenuList)
{
foreach (var model in leftMemuList.Where(n => n.PARENTID == 0 && n.MODULEMENUID == m.MODULEMENUID))
{
if (childObj == null)
childObj = new List<object>();
right = null;
if (!string.IsNullOrEmpty(model.RIGHTID))
right = rightList.Where(x => x.RIGHTID == model.RIGHTID).FirstOrDefault();
childObj.Add(new
{
id = model.MENUID.ToString(),
title = model.MNAME,
isLast = false,
level = 1,
parentId = 0,
//moduleMenuId = m.MODULEMENUID.ToString(),
//sortId = model.SORTID,
children = GetleftMenuTree(model.MENUID, leftMemuList, rightList)
});
}
right = null;
if (!string.IsNullOrEmpty(m.RIGHTID))
right = rightList.Where(x => x.RIGHTID == m.RIGHTID).FirstOrDefault();
obj.Add(new
{
id = (-m.MODULEMENUID).ToString(),//模块ID为负数
title = m.MNAME,
isLast = false,
level = 0,
parentId = -1,
//moduleMenuId = m.MODULEMENUID.ToString(),
//sortId = m.SORTID,
children = childObj
});
childObj = null;
}
return obj;
}
}
private object GetleftMenuTree(decimal parentId, List<BAS_LEFTMEMU> menulist, List<BAS_RIGHT> rightList)
{
List<object> obj = null;
BAS_RIGHT right = null;
//下面子菜单
foreach (var model in menulist.Where(n => n.PARENTID == parentId))
{
if (obj == null)
obj = new List<object>();
right = null;
if (!string.IsNullOrEmpty(model.RIGHTID))
right = rightList.Where(x => x.RIGHTID == model.RIGHTID).FirstOrDefault();
obj.Add(new
{
id = model.MENUID.ToString(),
//moduleMenuId = model.MODULEMENUID.ToString(),
title = model.MNAME,
//sortId = model.SORTID,
isLast = true,
level = 2,
parentId,
children = GetleftMenuTree(model.MENUID, menulist, rightList)
});
}
return obj;
}
#endregion
#region
/// <summary>
/// 获取单个实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public BAS_LEFTMEMU GetModel_leftMenu(decimal id)
{
using (var db = new zxdContext())
{
var entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id);
return entry;
}
}
#endregion
#region
/// <summary>
/// 获取菜单树结构
/// </summary>
/// <returns></returns>
public object GetTree_leftMenu(decimal parentId)
{
using (var db = new zxdContext())
{
var queryData = _cache.GetList_LeftMemu();
queryData = queryData.Where(m => m.PARENTID == parentId && m.ISSHOW == 1).OrderBy(m => m.SORTID).ToList();
return GetObjectByQuery(queryData);
}
}
/// <summary>
/// 获取菜单树结构
/// </summary>
/// <returns></returns>
public object GetTopTree_leftMenu(decimal moduleMenuId)
{
using (var db = new zxdContext())
{
var queryData = _cache.GetList_LeftMemu();// db.BAS_LEFTMEMU.AsQueryable();
queryData = queryData.Where(m => m.PARENTID == 0 && m.MODULEMENUID == moduleMenuId && m.ISSHOW == 1).OrderBy(m => m.SORTID).ToList();
return GetObjectByQuery(queryData);
}
}
/// <summary>
/// 返回数据转换
/// </summary>
/// <param name="queryData"></param>
/// <returns></returns>
private object GetObjectByQuery(IQueryable<BAS_LEFTMEMU> queryData)
{
object modelList = (from m in queryData
select new
{
id = m.MENUID,
text = m.MNAME,
value = m.URL,
showcheck = false,
complete = false,
isexpand = false,
checkstate = 0,
hasChildren = (m.ISGROUP == 1)
}).ToList();
return modelList;
}
/// <summary>
/// 返回数据转换
/// </summary>
/// <param name="queryData"></param>
/// <returns></returns>
private object GetObjectByQuery(List<BAS_LEFTMEMU> queryData)
{
object modelList = (from m in queryData
select new
{
id = m.MENUID,
text = m.MNAME,
value = m.URL,
showcheck = false,
complete = false,
isexpand = false,
checkstate = 0,
parentid = m.PARENTID,
hasChildren = (m.ISGROUP == 1)
}).ToList();
return modelList;
}
#endregion
/// <summary>
/// 根据权限获取菜单
/// </summary>
/// <param name="parentId"></param>
/// <param name="rightIds"></param>
/// <returns></returns>
public object GetTree_leftMenu(decimal parentId, string[] rightIds)
{
using (var db = new zxdContext())
{
var queryData = _cache.GetList_LeftMemu();
queryData = queryData.Where(m => m.PARENTID == parentId && m.ISSHOW == 1).OrderBy(m => m.SORTID).Where(m => rightIds.Contains(m.RIGHTID) || string.IsNullOrEmpty(m.RIGHTID) || m.RIGHTID.Trim() == "0").ToList();
return GetObjectByQuery(queryData);
}
}
/// <summary>
/// 获取菜单组和子菜单
/// </summary>
/// <param name="parentId"></param>
/// <param name="menulist"></param>
/// <returns></returns>
private object GetALLleftMenu(decimal parentId, List<BAS_LEFTMEMU> menulist)
{
List<object> obj = null;
//下面子菜单
foreach (var model in menulist.Where(n => n.PARENTID == parentId))
{
if (obj == null)
obj = new List<object>();
obj.Add(new
{
id = model.MENUID,
text = model.MNAME,
value = (model.URL == "#" || model.URL == "") ? "" : model.URL,
showcheck = false,
complete = true,
isexpand = true,
checkstate = 0,
parentid = model.PARENTID,
hasChildren = (model.ISGROUP == 1),
ChildNodes = GetALLleftMenu(model.MENUID, menulist)
});
}
return obj;
}
/// <summary>
/// 根据moduleId获取菜单
/// </summary>
/// <param name="moduleId"></param>
/// <param name="rightIds"></param>
/// <returns></returns>
public object GetRree_leftMenuByModuleId(decimal moduleId, string[] rightIds)
{
using (var db = new zxdContext())
{
var queryData = _cache.GetList_LeftMemu();
queryData = queryData.Where(m => m.MODULEMENUID == moduleId && m.ISSHOW == 1).OrderBy(m => m.SORTID).Where(m => (m.ISGROUP == 1 || rightIds.Contains(m.RIGHTID))).ToList();
return GetALLleftMenu(0, queryData);
}
}
}
}