484 lines
18 KiB
C#
484 lines
18 KiB
C#
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);
|
||
}
|
||
}
|
||
}
|
||
}
|