using Model.ModelVm.SysVm; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using SqlSugar; using WMS.Entity.Context; using WMS.Entity.SysEntity; using WMS.IDAL.ISysInterface; using SQLitePCL; using Model.ModelDto.SysDto; using Dm; using System.Security.Cryptography; using System.Security.Policy; using System.Linq; namespace WMS.DAL.SysInfrastructure { /// <summary> /// èœå•仓储实践 /// </summary> public class MenuRepository : BaseRepository<SysFunctionMenu>, IMenuRepository { private static readonly SqlSugarScope Db = DataContext.Db; public MenuRepository() : base(Db) { } /// <summary> /// 获å–èœå•ä¿¡æ¯åˆ—表 /// </summary> /// <param name="str">sqlè¯å¥</param> /// <returns></returns> public List<FunctionMenuVm> GetMenuList(string str = "") { List<FunctionMenuVm> menulist = Db.Ado.SqlQuery<FunctionMenuVm>(str); return menulist; } /// <summary> /// èŽ·å–æ¨¡å—èœå•列表 /// </summary> /// <returns></returns> public List<SysFunctionMenu> GetParentMenuList() { string str = "select MenuNo,ParentNo,MenuName from SysFunctionMenu where IsDel = @isdel and IsEnable = @isenable"; List<SysFunctionMenu> menulist = Db.Ado.SqlQuery<SysFunctionMenu>(str, new { isdel = "0", //是å¦åˆ 除 isenable = "0" //是å¦å¯ç”¨ }); return menulist; } /// <summary> /// 获å–èœå•ä¿¡æ¯åˆ—表 /// </summary> /// <param name="str">sqlè¯å¥</param> /// <returns></returns> public List<FunctionMenuDto> GetMenuDtoList(string MenuNo, string UserId) { var userEntry = Db.Ado.SqlQuery<SysUserInfor>($"select * from SysUserInfor where Id ={UserId}").FirstOrDefault(); //获å–全部èœå•ä¿¡æ¯ string strmenu = "select * from SysFunctionMenu where IsDel = '0'"; //判æ–èœå•å· if (!string.IsNullOrEmpty(MenuNo)) { strmenu += $" and ParentNo in ({MenuNo})"; } //åˆ†é…æƒé™åªèƒ½åˆ†é…当å‰ç™»å½•用户有的æƒé™ if (userEntry !=null && userEntry.UserName.ToUpper() != "ADMIN") { strmenu += $" and MenuNo in (select MenuNo from SysRoleRight where RoleNo='{userEntry.RoleNo}')"; } strmenu += " order by Ord asc"; List<FunctionMenuDto> menulist = Db.Ado.SqlQuery<FunctionMenuDto>(strmenu); return menulist; } /// <summary> /// æ ¹æ®id获å–èœå•ä¿¡æ¯åˆ—表 /// </summary> /// <param name="menuid">èœå•id</param> /// <returns></returns> public SysFunctionMenu GetMenuListById(int menuid) { string str = "select * from SysFunctionMenu where IsDel = @isdel and Id = @id and IsEnable = @isenable "; SysFunctionMenu menulist = Db.Ado.SqlQuerySingle<SysFunctionMenu>(str, new { isdel = "0", //是å¦åˆ 除 isenable = "0", //是å¦å…¬å¼€ id = menuid //id }); return menulist; } /// <summary> /// æ ¹æ®ç¼–å·èŽ·å–èœå•ä¿¡æ¯åˆ—表 /// </summary> /// <param name="str">sql</param> /// <returns></returns> public List<SysFunctionMenu> GetMenuListByNo(string str) { List<SysFunctionMenu> menulist = Db.Ado.SqlQuery<SysFunctionMenu>(str); return menulist; } /// <summary> /// 新增èœå•ä¿¡æ¯ /// </summary> /// <param name="menu">èœå•实体模型</param> /// <returns></returns> public async Task<int> InsertMenu(SysFunctionMenu menu) { string str = "insert SysFunctionMenu values(@menuno, @menuname, @parentno, @ord, @url, @level, @isenable, @demo, @isdel, @createtime, @createuser, null, null)"; int i = await Db.Ado.ExecuteCommandAsync(str, new { menuno = menu.MenuNo, //èœå•å· menuname = menu.MenuName, //èœå•åç§° parentno = menu.ParentNo, //父级èœå•å· ord = menu.Ord, //æ˜¾ç¤ºé¡ºåº url = menu.Url, //路径 level = menu.Level, //层级 isenable = "0", //是å¦å¯ç”¨ demo = menu.Demo, //备注 isdel = "0", //是å¦åˆ 除 createtime = Db.GetDate(), //创建时间 createuser = menu.CreateUser //创建人 }); return i; } /// <summary> /// åˆ é™¤èœå•ä¿¡æ¯ /// </summary> /// <param name="menu">èœå•实体模型</param> /// <returns></returns> public async Task<int> DeleteMenu(SysFunctionMenu menu) { try { Db.BeginTran(); string str = "update SysFunctionMenu set IsDel = @isdel, UpdateTime = @updatetime, UpdateUser = @updateuser where MenuNo in (select MenuNo from SysFunctionMenu where MenuNo = @menuno or ParentNo = @menuno or ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = @menuno));"; int i = await Db.Ado.ExecuteCommandAsync(str, new { isdel = "1", //是å¦åˆ 除 updatetime = Db.GetDate(), //更改时间 updateuser = menu.UpdateUser, //更改人 menuno = menu.MenuNo//id }); str = "delete from SysRoleRight where MenuNo in (select MenuNo from SysFunctionMenu where MenuNo = @menuno or ParentNo = @menuno or ParentNo in (select MenuNo from SysFunctionMenu where ParentNo = @menuno));"; //åˆ é™¤èœå•对应的æƒé™ i = await Db.Ado.ExecuteCommandAsync(str, new { isdel = "1", //是å¦åˆ 除 updatetime = Db.GetDate(), //更改时间 updateuser = menu.UpdateUser, //更改人 menuno = menu.MenuNo }); Db.CommitTran(); return i; } catch (Exception ex) { Db.RollbackTran(); throw ex; } } /// <summary> /// 编辑èœå•ä¿¡æ¯ /// </summary> /// <param name="menu">èœå•实体模型</param> /// <returns></returns> public async Task<int> UpdateMenu(SysFunctionMenu menu) { string str = "Update SysFunctionMenu set MenuName = @menuname, ParentNo = @parentno, Ord = @ord, Url = @url, Level = @level, IsEnable = @isenable, Demo = @demo, UpdateTime = @updatetime, UpdateUser = @updateuser where Id = @id"; int i = await Db.Ado.ExecuteCommandAsync(str, new { menuname = menu.MenuName, //èœå•åç§° parentno = menu.ParentNo, //父级èœå•å· ord = menu.Ord, //æ˜¾ç¤ºé¡ºåº url = menu.Url, //路径 level = menu.Level, //层级 isenable = "0", //是å¦å¯ç”¨ demo = menu.Demo, //备注 updatetime = Db.GetDate(), //创建时间 updateuser = menu.UpdateUser, //创建人 id = menu.Id //id }); return i; } /// <summary> /// æ ¹æ®çˆ¶çº§èœå•å·èŽ·å–èœå•ä¿¡æ¯ /// </summary> /// <param name="MenuNo">èœå•å·</param> /// <returns></returns> public List<FunctionMenuVm> GetMenuByParentNo(string MenuNo) { string str = "select * from SysFunctionMenu where IsDel = @isdel and IsEnable = @isenable "; List<FunctionMenuVm> menulist; //判æ–èœå•å·æ˜¯å¦ä¸ºç©º if (!string.IsNullOrEmpty(MenuNo)) { str += " and ParentNo = @menuno"; menulist = Db.Ado.SqlQuery<FunctionMenuVm>(str, new { isdel = "0", //是å¦åˆ 除 isenable = "0", //是å¦å…¬å¼€ menuno = MenuNo //èœå•å· }); } else { str = "select * from SysFunctionMenu where IsDel = '3' and IsEnable = '0'"; menulist = Db.Ado.SqlQuery<FunctionMenuVm>(str); } return menulist; } } }