TG.WXCRM.V4/BLL/Base/BAS_LEFTMEMU_BL.cs

505 lines
21 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 System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
using WX.CRM.Model.Entity;
namespace WX.CRM.BLL.Base
{
public class BAS_LEFTMEMU_BL : IBAS_LEFTMEMU, IBAS_LEFTMEMU_Q
{
private CACHE_BL _cache = new CACHE_BL();
#region
/// <summary>
/// 新增
/// </summary>
/// <param name="errors"></param>
/// <param name="model"></param>
/// <returns></returns>
public bool Create_leftMemu(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_LEFTMEMU model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_LEFTMEMU 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, WX.CRM.Model.Entity.BAS_LEFTMEMU model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_LEFTMEMU 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)
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
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]);
WX.CRM.Model.Entity.BAS_LEFTMEMU 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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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();
List<WX.CRM.Model.Entity.BAS_MODULEMENU> 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 (WX.CRM.Model.Entity.BAS_MODULEMENU m in moduleMenuList)
{
foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU 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<WX.CRM.Model.Entity.BAS_LEFTMEMU> menulist)
{
List<object> obj = null;
//下面子菜单
foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU 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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> leftMemuList = db.BAS_LEFTMEMU.OrderBy(m => m.SORTID).ToList();
List<WX.CRM.Model.Entity.BAS_MODULEMENU> moduleMenuList = db.BAS_MODULEMENU.OrderBy(m => m.SORTID).ToList();
List<WX.CRM.Model.Entity.BAS_RIGHT> rightList = db.BAS_RIGHT.ToList();//获取所有的权限
WX.CRM.Model.Entity.BAS_RIGHT right = null;
List<object> obj = new List<object>();
List<object> childObj = null;
//顶部模块部分
foreach (WX.CRM.Model.Entity.BAS_MODULEMENU m in moduleMenuList)
{
foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU 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();
//if (model.ISSHOW != 0)
//{
childObj.Add(new
{
id = model.MENUID.ToString(),
text = model.MNAME,
moduleMenuId = m.MODULEMENUID.ToString(),
sortId = model.SORTID,
title = "地址:" + model.URL + " 权限:" + (right == null || string.IsNullOrEmpty(model.RIGHTID) ? "无" : right.RNAME),
iconCls = (model.ISSHOW == 1 ? (model.ISGROUP == 1 ? "" : "icon-treenode") : "icon-cant"),
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为负数
text = m.MNAME,
iconCls = "icon-group",
moduleMenuId = m.MODULEMENUID.ToString(),
sortId = m.SORTID,
title = "图片:" + m.IMAGEURL + " 权限:" + (right == null || string.IsNullOrEmpty(m.RIGHTID) ? "无" : right.RNAME),
children = childObj
});
childObj = null;
}
return obj;
}
}
private object GetleftMenuTree(decimal parentId, List<WX.CRM.Model.Entity.BAS_LEFTMEMU> menulist, List<WX.CRM.Model.Entity.BAS_RIGHT> rightList)
{
List<object> obj = null;
WX.CRM.Model.Entity.BAS_RIGHT right = null;
//下面子菜单
foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU 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(),
text = model.MNAME,
sortId = model.SORTID,
iconCls = (model.ISSHOW == 1 ? (model.ISGROUP == 1 ? "" : "icon-treenode") : "icon-cant"),
title = "地址:" + model.URL + " 权限:" + (right == null || string.IsNullOrEmpty(model.RIGHTID) ? "无" : right.RNAME),
children = GetleftMenuTree(model.MENUID, menulist, rightList)
});
}
return obj;
}
#endregion
#region
/// <summary>
/// 获取单个实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public WX.CRM.Model.Entity.BAS_LEFTMEMU GetModel_leftMenu(decimal id)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.BAS_LEFTMEMU entry = db.BAS_LEFTMEMU.FirstOrDefault(m => m.MENUID == id);
return entry;
}
}
#endregion
#region
/// <summary>
/// 获取菜单树结构
/// </summary>
/// <returns></returns>
public object GetTree_leftMenu(decimal parentId)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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<WX.CRM.Model.Entity.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<WX.CRM.Model.Entity.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 (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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 List<object> GetALLleftMenu(decimal parentId, List<WX.CRM.Model.Entity.BAS_LEFTMEMU> menulist)
{
List<object> obj = null;
//下面子菜单
foreach (WX.CRM.Model.Entity.BAS_LEFTMEMU model in menulist.Where(n => n.PARENTID == parentId))
{
if (obj == null)
obj = new List<object>();
var addObj = new
{
id = model.MENUID,
title = model.MNAME,
spread = true,
isgroup = model.ISGROUP,
url = (model.URL == "#" || model.URL == "") ? "" : model.URL,
children = GetALLleftMenu(model.MENUID, menulist),
moduleid = model.MODULEMENUID
};
if (addObj.isgroup == 1 && (addObj.children == null || addObj.children.Count == 0))
{
continue;
}
obj.Add(addObj);
}
return obj;
}
/// <summary>
/// 根据moduleId获取菜单
/// </summary>
/// <param name="moduleId"></param>
/// <param name="rightIds"></param>
/// <returns></returns>
public List<object> GetRree_leftMenuByModuleId(decimal moduleId, string[] rightIds)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List<WX.CRM.Model.Entity.BAS_LEFTMEMU> 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);
}
}
/// <summary>
/// 获取默认菜单
/// </summary>
/// <param name="moduleId"></param>
/// <returns></returns>
public BAS_LEFTMEMU GetDefaultMenu(decimal moduleId, string[] rightIds)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
BAS_LEFTMEMU left = db.BAS_LEFTMEMU.Where(m => m.ISGROUP == 0 && m.ISSHOW == 1 && m.MODULEMENUID == moduleId && rightIds.Contains(m.RIGHTID)).OrderBy(m => m.SORTID).FirstOrDefault();
return left;
}
}
}
}