You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

331 lines
12 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using Estsh.Core.Dapper;
using Estsh.Core.IRepositories;
using Estsh.Core.IServices;
using Estsh.Core.Model.Result;
using Estsh.Core.Models;
using Estsh.Core.Util;
using System.Collections;
using System.Text;
/***************************************************************************************************
*
* 更新人sitong.dong
* 描述:菜单模块业务类
* 修改时间2022.06.22
* 修改日志:系统迭代升级
*
**************************************************************************************************/
namespace Estsh.Core.Services
{
/// <summary>
/// 菜单业务处理类
/// </summary>
public class MenuService : BaseService<SysWebMenu>, IMenuService
{
private readonly IMenuRepository repository;
public MenuService(IMenuRepository _repository) : base(_repository)
{
repository = _repository;
}
/// <summary>
/// 获取菜单列表
/// </summary>
/// <param name="sqlWhere"></param>
/// <param name="orderBy"></param>
/// <returns></returns>
public List<TreeNode> getMenuList(SysEmp userInfo, String rootPath)
{
List<SysWebMenu> menus = repository.getListByUser(userInfo.EmpId);
List<TreeNode> treeNodes = new List<TreeNode>();
TreeNode node;
foreach (var menu in menus)
{
node = new TreeNode();
node.id = menu.MenuId.ToString();
node.name = menu.Name != null ? menu.Name : "";
node.parentId = menu.ParentId.ToString();
node.icon = menu.IconUrl != null ? menu.IconUrl : "";
if (node.parentId.Equals("10"))
{
node.iconSkin = menu.IconSkin != null ? menu.IconSkin : "";
}
else
{
node.tabUrl = rootPath + (menu.Url != null ? menu.Url : "");
}
node.target = "frmright";
treeNodes.Add(node);
}
return treeNodes;
}
/// <summary>
/// 获取首页菜单列表
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public Hashtable getHomeMenuList(SysEmp userInfo, string menuId)
{
Hashtable result = new Hashtable();
result = repository.getHomeMenuListByUser(userInfo.EmpId, menuId);
return result;
}
/// <summary>
/// 获取Main页主菜单列表
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public Hashtable getMainMenuList(SysEmp userInfo, string menuId)
{
List<SysWebMenu> menus = repository.getMainMenuListByUser(userInfo.EmpId, menuId);
Hashtable result = new Hashtable();
List<Hashtable> dataList = new List<Hashtable>();
Hashtable node;
foreach (var menu in menus)
{
node = new Hashtable();
node.Add("id", menu.MenuId);
node.Add("name", menu.Name != null ? menu.Name : "");
node.Add("className", menu.IconSkin != null ? menu.IconSkin : "");
dataList.Add(node);
}
result.Add("list", dataList);
return result;
}
/// <summary>
/// 获取Main页子菜单列表
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public Hashtable getChildMenuList(SysEmp userInfo, string menuId,string rootPath)
{
List<SysWebMenu> menus = repository.getMainMenuListByUser(userInfo.EmpId, menuId);
Hashtable result = new Hashtable();
List<TreeNode> treeNodes = new List<TreeNode>();
TreeNode node;
foreach (var menu in menus)
{
node = new TreeNode();
node.id = menu.MenuId.ToString();
node.name = menu.Name != null ? menu.Name : "";
node.parentId = menu.ParentId.ToString();
node.icon = menu.IconUrl != null ? menu.IconUrl : "";
node.tabUrl = rootPath + (menu.Url != null ? menu.Url : "");
node.target = "frmright";
treeNodes.Add(node);
}
result.Add("treeNodes", treeNodes);
return result;
}
/// <summary>
/// 获取非tab的Main页子菜单列表
/// </summary>
/// <param name="userInfo"></param>
/// <returns></returns>
public Hashtable getNoNTabChildMenuList(SysEmp userInfo, string menuId, string rootPath)
{
List<SysWebMenu> menus = repository.getMainMenuListByUser(userInfo.EmpId, menuId);
Hashtable result = new Hashtable();
List<TreeNode> treeNodes = new List<TreeNode>();
TreeNode node;
foreach (var menu in menus)
{
node = new TreeNode();
node.id = menu.MenuId.ToString();
node.name = menu.Name != null ? menu.Name : "";
node.parentId = menu.ParentId.ToString();
node.icon = menu.IconUrl != null ? menu.IconUrl : "";
node.url = rootPath + (menu.Url != null ? menu.Url : "");
node.target = "frmright";
treeNodes.Add(node);
}
result.Add("treeNodes", treeNodes);
return result;
}
public Hashtable getNoNTabChildMenuList1(SysEmp userInfo, string menuId, string rootPath)
{
List<SysWebMenu> menus = repository.getMainMenuListByUser(userInfo.EmpId, menuId);
Hashtable result = new Hashtable();
List<TreeNode> treeNodes = new List<TreeNode>();
TreeNode node;
foreach (var menu in menus)
{
node = new TreeNode();
node.id = menu.MenuId.ToString();
node.name = menu.Name != null ? menu.Name : "";
node.parentId = menu.ParentId.ToString();
node.icon = menu.IconUrl != null ? menu.IconUrl : "";
node.url = rootPath + (menu.Url != null ? menu.Url : "");
node.target = "frmright";
treeNodes.Add(node);
}
result.Add("treeNodes", treeNodes);
return result;
}
/// <summary>
/// 根据用户,访问菜单连接,操作类型,获取操作权限
/// </summary>
/// <param name="userInfo"></param>
/// <param name="url"></param>
/// <param name="opType"></param>
/// <returns></returns>
public List<SysProgramFunOp> getOpMenuList(SysEmp userInfo, string url, string opType, string gridName)
{
return repository.getOpMenuListByUser(userInfo.EmpId, url, opType, gridName);
}
/// <summary>
/// 根据用户,访问菜单连接,操作类型,获取小尺寸工具栏的操作权限
/// </summary>
/// <param name="userInfo"></param>
/// <param name="url"></param>
/// <param name="opType"></param>
/// <returns></returns>
public string getMinToolbar(SysEmp userInfo, string url, string opType)
{
Hashtable result = new Hashtable();
StringBuilder sqlToolbar = new StringBuilder();
List<SysProgramFunOp> programFunOps = repository.getOpMenuListByUser(userInfo.EmpId, url, opType, null);
foreach (var item in programFunOps)
{
sqlToolbar.Append("<a href=\"javascript:");
sqlToolbar.Append(item.OpMethod);
sqlToolbar.Append("();\"><span class=\"");
sqlToolbar.Append(item.OpClass);
sqlToolbar.Append("\">");
sqlToolbar.Append(item.OpName);
sqlToolbar.Append("</span></a>");
sqlToolbar.Append("<div class=\"box_tool_line\"></div>");
}
sqlToolbar.Append("<div class=\"clear\"></div>");
return sqlToolbar.ToString();
}
/// <summary>
/// 根据分页条件获取分页菜单数据
/// </summary>
/// <param name="menuName"></param>
/// <param name="pager"></param>
/// <param name="direction"></param>
/// <param name="sort"></param>
/// <returns></returns>
public Hashtable getMenuListByPage(String menuName, Pager pager, String direction, String sort, String enabled)
{
Hashtable result = new Hashtable();
String strWhere = " 1=1 ";
if (menuName != null && !menuName.Trim().Equals(""))
{
strWhere += " and name like '%" + menuName.Trim() + "%'";
}
if (enabled != null && !enabled.Trim().Equals(""))
{
strWhere += " and enabled = '" + enabled + "'";
}
String orderBy = "";
if (sort != null && !"".Equals(sort.Trim()))
{
orderBy += typeof(SysWebMenu).GetEntityColumnName(sort.Trim()) + " " + direction;
}
else
{
orderBy += typeof(SysWebMenu).GetEntityColumnName("MenuId") + " " + direction;
}
result = repository.getListByPage(pager.pageSize, pager.pageNo, strWhere, orderBy);
return result;
}
/// <summary>
/// 获取下拉框中的菜单数据
/// </summary>
/// <returns></returns>
public List<KeyValueResult> getSelectMenu()
{
return repository.getSelectMenu();
}
/// <summary>
/// 保存菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int saveMenu(SysWebMenu menu)
{
return repository.saveMenu(menu);
}
/// <summary>
/// 更新菜单数据
/// </summary>
/// <param name="htParams"></param>
/// <returns></returns>
public int updateMenu(SysWebMenu menu)
{
return repository.updateMenu(menu);
}
/// <summary>
/// 查看菜单详情
/// </summary>
/// <param name="ruid"></param>
/// <returns></returns>
public List<SysWebMenu> getMenuDetail(String menuId)
{
menuId = "menu_id = " + menuId;
return repository.getList(menuId, "");
}
/// <summary>
/// 删除菜单
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int deleteMenu(String ids)
{
String[] idArray = ids.Split(',');
int count = 0;
foreach (String id in idArray)
{
if (!"".Equals(id))
{
count += repository.deleteMenu(id);
}
}
return count;
}
/// <summary>
/// 启用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int EnableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.EnableData(ids);
}
/// <summary>
/// 禁用
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public int DisableData(String ids)
{
ids = ids.Substring(0, ids.Length - 1);
return this.repository.DisableData(ids);
}
}
}