开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (2)
标签 (3)
master
Blog5.0
v3.0
v2.0
v1.0
master
分支 (2)
标签 (3)
master
Blog5.0
v3.0
v2.0
v1.0
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (2)
标签 (3)
master
Blog5.0
v3.0
v2.0
v1.0
Blog
/
src
/
App.Application
/
SysManager
/
SysModuleService.cs
Blog
/
src
/
App.Application
/
SysManager
/
SysModuleService.cs
SysModuleService.cs 4.68 KB
一键复制 编辑 原始数据 按行查看 历史
可乐不加冰 提交于 2020年12月16日 14:30 +08:00 . 升级到.NET Core5.0
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using App.Application.SysManager.Dtos;
using App.Core.Entities.SysManager;
using App.Core.Repository;
using App.Framwork.Generate;
using App.Framwork.Result;
using Mapster;
namespace App.Application.SysManager
{
public class SysModuleService : AppService<SysModule>, ISysModuleService
{
private readonly ISysButtonService _sysButtonService;
public SysModuleService(IAppRepository<SysModule> repository,
ISysButtonService sysButtonService) : base(repository)
{
_sysButtonService = sysButtonService;
}
/// <summary>
/// 新增/修改菜单
/// </summary>
/// <param name="dto"></param>
/// <returns></returns>
public async Task<UnifyResult> Save(SysModuleInputDto dto)
{
var module = dto.Adapt<SysModule>();
if (await Repository.AnyAsync(m => m.EnCode.ToLower() == module.EnCode.ToLower() && m.Id != module.Id))
{
return "菜单编码已存在";
}
else
{
module.ParentId = string.IsNullOrWhiteSpace(module.ParentId) ? null : module.ParentId;
if (string.IsNullOrWhiteSpace(module.Id))
{
module.Id = SnowflakeId.NextStringId();
return await InsertRemoveCacheAsync(module);
}
else
{
if (module.Id == module.ParentId)
{
return "父级菜单不能指向当前菜单";
}
if (module.ParentId != "0")
{
var list = await GetListCacheAsync(m => m.DeleteMark == false && m.EnabledMark);
if (GetChildMenu(list, module.Id).Any(o => o.Id == module.ParentId))
{
return "无法将父级菜单指定到子级菜单下";
}
}
return await UpdateRemoveCacheAsync(module, c => new { c.CreatorTime, c.CreatorAccountId, c.DeleteMark });
}
}
}
/// <summary>
/// 菜单按钮树
/// </summary>
/// <returns></returns>
public async Task<List<TreeOutputDto>> Tree()
{
//所有菜单
var menuList = await GetListCacheAsync(m => m.EnabledMark && m.DeleteMark == false);
//所有按钮
var buttonList = await _sysButtonService.GetListCacheAsync();
var list = GetTrees(menuList, buttonList, "0");
return list;
}
/// <summary>
/// 获取菜单按钮树
/// </summary>
/// <param name="modules">所有菜单</param>
/// <param name="buttons">所有按钮</param>
/// <param name="parentId">上级id</param>
/// <returns></returns>
private List<TreeOutputDto> GetTrees(List<SysModule> modules, List<SysButton> buttons, string parentId)
{
List<TreeOutputDto> treeModules = new List<TreeOutputDto>();
foreach (var item in modules.Where(m => m.ParentId == parentId))
{
TreeOutputDto tree = new TreeOutputDto
{
id = item.Id,
name = item.FullName,
pid = item.ParentId ?? "0"
};
treeModules.Add(tree);
var bts = buttons.Where(b => b.SysModuleId == item.Id);//获取当前菜单下所有按钮
if (bts.Any())
{
var trees = from b in bts select new TreeOutputDto { id = b.Id, name = b.FullName, pid = b.SysModuleId };
treeModules.AddRange(trees);
}
treeModules.AddRange(GetTrees(modules, buttons, item.Id));
}
return treeModules;
}
/// <summary>
/// 获取指定菜单下所有菜单
/// </summary>
/// <param name="list">所有菜单集合</param>
/// <param name="id">指定菜单ID</param>
/// <returns></returns>
private List<SysModule> GetChildMenu(List<SysModule> list, string id)
{
List<SysModule> modules = new List<SysModule>();
foreach (var item in list.Where(m => m.ParentId == id))
{
modules.Add(item);
GetChildMenu(list, item.Id);
}
return modules;
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

博客网站是基于最新的.NET 6开发的可跨平台Web应用,可以部署在Windows、Linux、docker等多种环境中,项目已运行在docker中。源代码中已包含MySQL和SqlServer数据库脚本。https://www.37czone.com/
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/fasterfish/Blog.git
git@gitee.com:fasterfish/Blog.git
fasterfish
Blog
Blog .NET Core
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /