|
- using BPA.SAAS.Manage.Application.System.Dtos;
- using BPA.SAAS.Manage.Application.System.Interface;
- using BPA.SAAS.Manage.Comm.Const;
- using BPA.SAAS.Manage.Core.Org;
- using BPA.SAAS.Manage.Core.System;
- using Furion.LinqBuilder;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace BPA.SAAS.Manage.Application.System.Services
- {
- public class MenuService : IMenuService, ITransient
- {
- private readonly ISqlSugarClient _db;
- public MenuService(ISqlSugarClient db)
- {
- _db = db;
- }
- /// <summary>
- /// 分页查询
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public async Task<List<MenuTreeDtoOutput>> GetMenuTreePage(MenuTreeSearchDtoInput input)
- {
- if (App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value == null)
- return null;
-
- var AllMenus =await _db.Queryable<BPA_Menu>().Where(t => t.IsDeleted == 0).OrderBy(t => t.Sort).ToListAsync();
-
- var query = AllMenus.Where(t => t.Pid == "" || t.Pid == null);
-
- if (!input.Name.IsNullOrEmpty())
- query = query.Where(t => t.Name.Contains(input.Name));
- if (!input.Code.IsNullOrEmpty())
- query = query.Where(t => t.Code.Contains(input.Code));
-
- var data = query.Select(t => new MenuTreeDtoOutput
- {
- Id = t.Id,
- Name = t.Name,
- CreateAt = t.CreateAt,
- Code = t.Code,
- Icon = t.Icon,
- Router = t.Router,
- Pid = t.Pid,
- Sort = t.Sort,
- Component = t.Component,
- Children = AllMenus.Where(x => x.Pid == t.Id).Select(x => new MenuTreeDtoOutput
- {
- Id = x.Id,
- Name = x.Name,
- CreateAt = x.CreateAt,
- Code = x.Code,
- Pid = x.Pid,
- Icon = x.Icon,
- Router = x.Router,
- Sort = x.Sort,
- Component = x.Component,
- Children = AllMenus.Where(y => y.Pid == x.Id).Select(y => new MenuTreeDtoOutput
- {
- Id = y.Id.ToString(),
- Name = y.Name,
- CreateAt = y.CreateAt,
- Code = y.Code,
- Icon = y.Icon,
- Pid = y.Pid.ToString(),
- Router = y.Router,
- Sort = y.Sort,
- Component = y.Component
- }).ToList()
- }).ToList()
- }).ToList();
-
- return data;
- }
- /// <summary>
- /// 新增菜单
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public async Task<bool> Add(MenuDtoInput input)
- {
- var menu = input.Adapt<BPA_Menu>();
- menu.Id= Guid.NewGuid().ToString();
- menu.CreateAt= DateTime.Now;
- menu.CreateBy= App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
- return await _db.Insertable(menu).ExecuteCommandAsync()> 0;
- }
-
- /// <summary>
- /// 编辑菜单
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public async Task<bool> Update(MenuDtoInput input)
- {
- var menu = input.Adapt<BPA_Menu>();
- menu.CreateAt = DateTime.Now;
- menu.CreateBy = App.User?.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
- return await _db.Updateable(menu).ExecuteCommandAsync()>0;
- }
-
- /// <summary>
- /// 删除菜单
- /// </summary>
- /// <param name="input"></param>
- /// <returns></returns>
- public async Task<bool> Delete(List<string> input)
- {
- try
- {
- _db.Ado.BeginTran();
- // 查询数据库中是否存在未删除的活动信息
- var resEntitites = _db.Queryable<BPA_Menu>().In(input).ToList();
- resEntitites.ForEach(x =>
- {
- x.IsDeleted = 1;
- });
- var res =await _db.Updateable(resEntitites).ExecuteCommandAsync();
- _db.Ado.CommitTran();
- return res>0;
- }
- catch (Exception)
- {
- _db.Ado.RollbackTran();
- return false;
- }
- }
- /// <summary>
- /// 查询菜单树
- /// </summary>
- /// <param name="GetType"></param>
- /// <returns></returns>
- public async Task<List<MenuTreeOutput>> MenuTree(string GetType)
- {
- if (!string.IsNullOrWhiteSpace(GetType) && GetType.ToLower() == "user")
- {
-
- var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value;
- var GroupId = App.User.FindFirst(ClaimConst.GroupId)?.Value;
- if (string.IsNullOrWhiteSpace(GroupId) || string.IsNullOrWhiteSpace(userId))
- {
- return null;
- }
- List<BPA_Roles> dataRoles =await _db.Queryable<BPA_Roles>().Where(a => a.GroupId == GroupId).ToListAsync();
- if (dataRoles.Count() <= 0)
- {
- return null;
- }
- var sysRoleId = dataRoles.Select(a => a.Id).ToArray();
- var menus = _db.Queryable<BPA_RoleMenu>().Where(t => sysRoleId.Contains(t.SysRoleId))
- .Select(x => x.SysMenuId).ToArray();
-
- var AllMenus = _db.Queryable<BPA_Menu>().Where(t => t.IsDeleted == 0 && menus.Contains(t.Id)).OrderBy(t => t.Sort).ToList();
-
- var data = AllMenus.Where(t => t.Pid == null || t.Pid == "").Select(t => new MenuTreeOutput
- {
- Key = t.Id,
- Title = t.Name,
- value = t.Name,
- Children = AllMenus.Where(x => x.Pid == t.Id).Select(x => new MenuTreeOutput
- {
- Key = x.Id,
- Title = x.Name,
- value = x.Name,
- Children = AllMenus.Where(y => y.Pid == x.Id).Select(y => new MenuTreeOutput
- {
- Key = y.Id,
- Title = y.Name,
- value = y.Name,
- }).ToList()
- }).ToList()
- }).ToList();
-
- return data;
-
- }
- else
- {
- var AllMenus = _db.Queryable<BPA_Menu>().Where(t => t.IsDeleted == 0).OrderBy(t => t.Sort).ToList();
-
- var data = AllMenus.Where(t => t.Pid == null || t.Pid == "").Select(t => new MenuTreeOutput
- {
- Key = t.Id,
- Title = t.Name,
- value = t.Id,
- Children = AllMenus.Where(x => x.Pid == t.Id).Select(x => new MenuTreeOutput
- {
- Key = x.Id,
- Title = x.Name,
- value = x.Id,
- Children = AllMenus.Where(y => y.Pid == x.Id).Select(y => new MenuTreeOutput
- {
- Key = y.Id,
- Title = y.Name,
- value = y.Name,
- }).ToList()
- }).ToList()
- }).ToList();
-
- return data;
-
- }
-
- }
- }
- }
|