using AutoMapper;
|
using System;
|
using System.Collections.Generic;
|
using System.Security.Policy;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Model.ModelDto.SysDto;
|
using WMS.Entity.SysEntity;
|
using WMS.IBLL.ISysServer;
|
using WMS.IDAL.ISysInterface;
|
using Model.ModelVm.SysVm;
|
using System.Linq;
|
using WMS.DAL;
|
using SqlSugar;
|
using WMS.Entity.Context;
|
|
namespace WMS.BLL.SysServer
|
{
|
/// <summary>
|
/// 菜单服务实践
|
/// </summary>
|
public class MenuServer : DbHelper<SysFunctionMenu>,IMenuServer
|
{
|
private static readonly SqlSugarScope Db = DataContext.Db;
|
/// <summary>
|
/// 依赖注入
|
/// </summary>
|
public IMenuRepository _menu { get; set; }
|
readonly IMapper _mapper;
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
/// <param name="menu">菜单仓储</param>
|
/// <param name="mapper">automapper</param>
|
public MenuServer(IMenuRepository menu, IMapper mapper) : base(Db)
|
{
|
_menu = menu;
|
_mapper = mapper;
|
}
|
|
|
/// <summary>
|
/// 获取菜单信息列表
|
/// </summary>
|
/// <param name="menuDto">菜单Dto</param>
|
/// <returns></returns>
|
public List<FunctionMenuVm> GetMenuList(string MenuName, string pMenuNo, string MenuNo, string level = "")
|
{
|
string str = "select menu1.Id,menu1.MenuNo,menu1.MenuName,menu2.MenuName ParentName,menu1.ParentNo,menu1.Ord,menu1.Url,menu1.level,menu1.IsEnable,menu1.Demo,menu1.IsDel,menu1.CreateTime,menu1.CreateUser,menu1.UpdateTime,menu1.UpdateUser,user1.RealName CreateUserName from SysFunctionMenu menu1 left join sysfunctionmenu menu2 on menu1.parentNo = menu2.MenuNo join SysUserInfor user1 on menu1.CreateUser = user1.id where menu1.IsDel = '0' and menu1.IsEnable = '0' ";
|
|
//判断页面菜单
|
if (!string.IsNullOrEmpty(MenuNo))
|
{
|
//判断层级是否为空
|
if (!string.IsNullOrEmpty(level))
|
{
|
//判断层级
|
if (level == "1")
|
{
|
//页面
|
str += $" and menu1.MenuNo = '{MenuNo}'";
|
}
|
if (level == "2")
|
{
|
//按钮
|
str += $" and menu1.ParentNo = '{MenuNo}'";
|
}
|
if (level == "0")
|
{
|
//模块
|
str += $" and menu1.ParentNo = '{MenuNo}'";
|
}
|
}
|
else
|
{
|
if (!string.IsNullOrEmpty(MenuName))
|
{
|
str += $" and menu1.ParentNo = '{MenuNo}'";
|
}
|
else
|
{
|
str += $" and menu1.ParentNo = '{MenuNo}' or menu1.MenuNo = '{MenuNo}'";
|
|
}
|
}
|
}
|
//判断模块菜单
|
if (!string.IsNullOrEmpty(pMenuNo))
|
{
|
//判断层级是否为空
|
if (!string.IsNullOrEmpty(level))
|
{
|
//判断层级
|
if (level == "1")
|
{
|
//页面
|
str += $" and menu1.ParentNo = '{pMenuNo}'";
|
}
|
if (level == "2")
|
{
|
//按钮
|
str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
|
}
|
if (level == "0")
|
{
|
//模块
|
str += $" and menu1.MenuNo= '{pMenuNo}'";
|
}
|
}
|
else
|
{
|
//判断菜单名称是否为空
|
if (!string.IsNullOrEmpty(MenuName) && string.IsNullOrEmpty(MenuNo))
|
{
|
str += $" and menu1.ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}')";
|
}
|
else if (!string.IsNullOrEmpty(MenuNo))
|
{
|
str += $" or menu1.MenuNo = '{MenuNo}'";
|
}
|
else
|
{
|
str += $" and menu1.ParentNo = '{pMenuNo}' or menu1.MenuNo = '{pMenuNo}' or (menu1.IsDel = '0' and menu1.ParentNo in (select MenuNo from SysFunctionmenu where ParentNo = {pMenuNo}))";
|
}
|
}
|
}
|
//判断菜单名称与编号是否为空
|
if (!string.IsNullOrEmpty(MenuName))
|
{
|
str += $" and menu1.MenuName like '%{MenuName}%'";
|
//判断父级菜单是否为空
|
if (!string.IsNullOrEmpty(pMenuNo) && string.IsNullOrEmpty(MenuNo))
|
{
|
str += $" or (menu1.IsDel = '0' and menu1.MenuNo in (select MenuNo from SysFunctionMenu where ParentNo = '{pMenuNo}' and MenuName like '%{MenuName}%'))";
|
}
|
}
|
//判断菜单层级
|
if (!string.IsNullOrEmpty(level))
|
{
|
str += $" and menu1.Level = '{level}'";
|
}
|
str += " order by menu1.MenuNo,menu1.Ord";
|
List<FunctionMenuVm> menulist = _menu.GetMenuList(str);
|
return menulist;
|
}
|
|
/// <summary>
|
/// 根据层级获取菜单列表
|
/// </summary>
|
/// <param name="level"></param>
|
/// <param name="UserId"></param>
|
/// <returns></returns>
|
public List<FunctionMenuVm> GetMenuListForRight(string level, string UserId)
|
{
|
var userEntry = Db.Ado.SqlQuery<SysUserInfor>($"select * from SysUserInfor where Id ={UserId}").FirstOrDefault();
|
string sqlStr = "select * from SysFunctionMenu where IsDel='0' ";
|
if (!string.IsNullOrEmpty(level))
|
{
|
sqlStr += $" and level='{level}' ";
|
}
|
//分配权限只能分配当前登录用户有的权限
|
if (userEntry != null && userEntry.UserName.ToUpper() != "ADMIN")
|
{
|
sqlStr += $"and MenuNo in (select MenuNo from SysRoleRight where RoleNo='{userEntry.RoleNo}') ";
|
}
|
List<FunctionMenuVm> menulist = Db.Ado.SqlQuery<FunctionMenuVm>(sqlStr);
|
return menulist;
|
}
|
|
/// <summary>
|
/// 获取模块菜单
|
/// </summary>
|
/// <returns></returns>
|
public List<SysFunctionMenu> GetParentMenuList()
|
{
|
List<SysFunctionMenu> menulist = _menu.GetParentMenuList();
|
return menulist;
|
}
|
|
/// <summary>
|
/// 根据id获取菜单信息列表
|
/// </summary>
|
/// <param name="menuid">菜单id</param>
|
/// <returns></returns>
|
public SysFunctionMenu GetMenuListById(int menuid)
|
{
|
SysFunctionMenu menu = _menu.GetMenuListById(menuid);
|
return menu;
|
}
|
|
/// <summary>
|
/// 根据编号获取菜单信息列表
|
/// </summary>
|
/// <param name="menuno">菜单编号</param>
|
/// <returns></returns>
|
public int GetMenuListByNo(string menuno)
|
{
|
string str = $"select * from SysFunctionMenu where MenuNo = '{menuno}'";
|
List<SysFunctionMenu> menulist = _menu.GetMenuListByNo(str);
|
return menulist.Count;
|
}
|
|
/// <summary>
|
/// 新增菜单信息
|
/// </summary>
|
/// <param name="menudto">菜单DTO模型</param>
|
/// <param name="userId">当前操作用户id</param>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> InsertMenu(FunctionMenuDto menudto)
|
{
|
//捕获异常
|
try
|
{
|
//模型映射
|
SysFunctionMenu menu = _mapper.Map<SysFunctionMenu>(menudto);
|
//是否可用
|
menu.IsEnable = "0";
|
int i = 0;
|
int count = GetMenuListByNo(menu.MenuNo);
|
//判断菜单号是否唯一
|
if (count > 0)
|
{
|
i = 3;
|
}
|
else if (count == 0)
|
{
|
i = await _menu.InsertMenu(menu);
|
}
|
return i;
|
}
|
catch (Exception ex)
|
{
|
//抛出异常
|
throw new Exception("新增菜单信息异常", ex);
|
}
|
|
}
|
|
/// <summary>
|
/// 删除菜单信息
|
/// </summary>
|
/// <param name="id">菜单id</param>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> DeleteMenu(SysFunctionMenu menu)
|
{
|
//捕获异常
|
try
|
{
|
int i = await _menu.DeleteMenu(menu);
|
return i;
|
}
|
catch (Exception ex)
|
{
|
//抛出异常
|
throw new Exception("删除菜单信息异常", ex);
|
}
|
|
}
|
|
/// <summary>
|
/// 编辑菜单信息
|
/// </summary>
|
/// <returns></returns>
|
/// <exception cref="Exception">捕获异常</exception>
|
public async Task<int> UpdateMenu(FunctionMenuVm menuvm)
|
{
|
//捕获异常
|
try
|
{
|
SysFunctionMenu menu = _mapper.Map<SysFunctionMenu>(menuvm);
|
|
int i = await _menu.UpdateMenu(menu);
|
return i;
|
}
|
catch (Exception ex)
|
{
|
//抛出异常
|
throw new Exception("编辑菜单信息异常", ex);
|
}
|
|
}
|
|
/// <summary>
|
/// 根据父级菜单号获取菜单信息
|
/// </summary>
|
/// <param name="MenuNo">菜单号</param>
|
/// <returns></returns>
|
public List<FunctionMenuVm> GetMenuByParentNo(string MenuNo)
|
{
|
List<FunctionMenuVm> menulist = _menu.GetMenuByParentNo(MenuNo);
|
return menulist;
|
}
|
}
|
}
|