diff --git a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs index 10e2f16..3c432fe 100644 --- a/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs +++ b/ZR.Admin.WebApi/Controllers/System/SysMenuController.cs @@ -9,6 +9,7 @@ using ZR.Model.System.Dto; using ZR.Model.System; using ZR.Service.System.IService; using ZR.Model; +using Mapster; namespace ZR.Admin.WebApi.Controllers.System { @@ -87,28 +88,34 @@ namespace ZR.Admin.WebApi.Controllers.System /// /// 修改菜单 √ /// - /// + /// /// [HttpPost("edit")] [Log(Title = "菜单管理", BusinessType = BusinessType.UPDATE)] [ActionPermissionFilter(Permission = "system:menu:edit")] - public IActionResult MenuEdit([FromBody] SysMenu MenuDto) + public IActionResult MenuEdit([FromBody] MenuDto menuDto) { - if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } + if (menuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } //if (UserConstants.NOT_UNIQUE.Equals(sysMenuService.CheckMenuNameUnique(MenuDto))) //{ // return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,菜单名称已存在")); //} - if (UserConstants.YES_FRAME.Equals(MenuDto.isFrame) && !MenuDto.path.StartsWith("http")) + var config = new TypeAdapterConfig(); + //映射规则 + config.ForType() + .NameMatchingStrategy(NameMatchingStrategy.IgnoreCase);//忽略字段名称的大小写;//忽略除以上配置的所有字段 + + var modal = menuDto.Adapt(config).ToUpdate(HttpContext); + if (UserConstants.YES_FRAME.Equals(modal.isFrame) && !modal.path.StartsWith("http")) { - return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,地址必须以http(s)://开头")); + return ToResponse(ApiResult.Error($"修改菜单'{modal.MenuName}'失败,地址必须以http(s)://开头")); } - if (MenuDto.menuId.Equals(MenuDto.parentId)) + if (modal.MenuId.Equals(modal.parentId)) { - return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,上级菜单不能选择自己")); + return ToResponse(ApiResult.Error($"修改菜单'{modal.MenuName}'失败,上级菜单不能选择自己")); } - MenuDto.Update_by = User.Identity.Name; - int result = sysMenuService.EditMenu(MenuDto); + modal.Update_by = HttpContext.GetName(); + int result = sysMenuService.EditMenu(modal); return ToResponse(result); } @@ -126,11 +133,11 @@ namespace ZR.Admin.WebApi.Controllers.System if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); } if (UserConstants.NOT_UNIQUE.Equals(sysMenuService.CheckMenuNameUnique(MenuDto))) { - return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败,菜单名称已存在")); + return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.MenuName}'失败,菜单名称已存在")); } if (UserConstants.YES_FRAME.Equals(MenuDto.isFrame) && !MenuDto.path.StartsWith("http")) { - return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败,地址必须以http(s)://开头")); + return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.MenuName}'失败,地址必须以http(s)://开头")); } MenuDto.Create_by = User.Identity.Name; diff --git a/ZR.Model/System/Dto/MenuDto.cs b/ZR.Model/System/Dto/MenuDto.cs index 0fa5671..76714b8 100644 --- a/ZR.Model/System/Dto/MenuDto.cs +++ b/ZR.Model/System/Dto/MenuDto.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Text; namespace ZR.Model.System.Dto @@ -7,18 +8,65 @@ namespace ZR.Model.System.Dto public class MenuDto { //{"parentId":0,"menuName":"aaa","icon":"documentation","menuType":"M","orderNum":999,"visible":0,"status":0,"path":"aaa"} - public int parentId { get; set; } - public string menuName { get; set; } - public string icon { get; set; } = ""; - public string menuType { get; set; } - public int orderNum { get; set; } - public int visible { get; set; } - public int status { get; set; } - public string path { get; set; } = "#"; + [Required(ErrorMessage = "菜单id不能为空")] public int MenuId { get; set; } + public string MenuName { get; set; } + /// + /// 父菜单ID + /// + public long parentId { get; set; } + + /// + /// 显示顺序 + /// + public int orderNum { get; set; } + + /// + /// 路由地址 + /// + public string path { get; set; } = "#"; + + /// + /// 组件路径 + /// public string component { get; set; } - public int isCache { get; set; } - public int isFrame { get; set; } - public string perms { get; set; } = ""; + + /// + /// 是否缓存(1缓存 0不缓存) + /// + [Required(ErrorMessage = "是否缓存不能为空")] + public string isCache { get; set; } + /// + /// 是否外链 1、是 0、否 + /// + public string isFrame { get; set; } + + /// + /// 类型(M目录 C菜单 F按钮 L链接) + /// + [Required(ErrorMessage = "菜单类型不能为空")] + public string menuType { get; set; } + + /// + /// 显示状态(0显示 1隐藏) + /// + [Required(ErrorMessage = "显示状态不能为空")] + public string visible { get; set; } + + /// + /// 菜单状态(0正常 1停用) + /// + [Required(ErrorMessage = "菜单状态不能为空")] + public string status { get; set; } + + /// + /// 权限字符串 + /// + public string perms { get; set; } + + /// + /// 菜单图标 + /// + public string icon { get; set; } = string.Empty; } } diff --git a/ZR.Model/System/SysMenu.cs b/ZR.Model/System/SysMenu.cs index d82e380..b44da88 100644 --- a/ZR.Model/System/SysMenu.cs +++ b/ZR.Model/System/SysMenu.cs @@ -14,12 +14,12 @@ namespace ZR.Model.System /// 菜单ID /// //[Key]//非自动增长主键时使用ExplicitKey - [SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)] - public long menuId { get; set; } + [SugarColumn(IsPrimaryKey = true, IsIdentity = true)] + public long MenuId { get; set; } /// /// 菜单名称 /// - public string menuName { get; set; } + public string MenuName { get; set; } /// /// 父菜单名称 diff --git a/ZR.Model/System/Vo/TreeSelectVo.cs b/ZR.Model/System/Vo/TreeSelectVo.cs index 46ed195..83409c7 100644 --- a/ZR.Model/System/Vo/TreeSelectVo.cs +++ b/ZR.Model/System/Vo/TreeSelectVo.cs @@ -24,8 +24,8 @@ namespace ZR.Model.Vo.System public TreeSelectVo(SysMenu menu) { - Id = menu.menuId; - Label = menu.menuName; + Id = menu.MenuId; + Label = menu.MenuName; //menu.getChildren().stream().map(TreeSelect::new).collect(Collectors.toList()); java写法 List child = new List(); diff --git a/ZR.Repository/System/SysMenuRepository.cs b/ZR.Repository/System/SysMenuRepository.cs index 6becc3b..b66b914 100644 --- a/ZR.Repository/System/SysMenuRepository.cs +++ b/ZR.Repository/System/SysMenuRepository.cs @@ -21,7 +21,7 @@ namespace ZR.Repository.System public List SelectTreeMenuList(SysMenu menu) { return Context.Queryable() - .WhereIF(!string.IsNullOrEmpty(menu.menuName), it => it.menuName.Contains(menu.menuName)) + .WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible) .WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status) .OrderBy(it => new { it.parentId, it.orderNum }) @@ -40,8 +40,8 @@ namespace ZR.Repository.System .Where(r => roles.Contains(r.Role_id)); return Context.Queryable() - .InnerJoin(roleMenus, (c, j) => c.menuId == j.Menu_id) - .WhereIF(!string.IsNullOrEmpty(sysMenu.menuName), (c, j) => c.menuName.Contains(sysMenu.menuName)) + .InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id) + .WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName)) .WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible) .WhereIF(!string.IsNullOrEmpty(sysMenu.status), (c, j) => c.status == sysMenu.status) .OrderBy((c, j) => new { c.parentId, c.orderNum }) @@ -56,7 +56,7 @@ namespace ZR.Repository.System public List SelectMenuList(SysMenu menu) { return Context.Queryable() - .WhereIF(!string.IsNullOrEmpty(menu.menuName), it => it.menuName.Contains(menu.menuName)) + .WhereIF(!string.IsNullOrEmpty(menu.MenuName), it => it.MenuName.Contains(menu.MenuName)) .WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible) .WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status) .OrderBy(it => new { it.parentId, it.orderNum }) @@ -75,9 +75,9 @@ namespace ZR.Repository.System .Where(r => roles.Contains(r.Role_id)); return Context.Queryable() - .InnerJoin(roleMenus, (c, j) => c.menuId == j.Menu_id) + .InnerJoin(roleMenus, (c, j) => c.MenuId == j.Menu_id) .Where((c, j) => c.status == "0") - .WhereIF(!string.IsNullOrEmpty(sysMenu.menuName), (c, j) => c.menuName.Contains(sysMenu.menuName)) + .WhereIF(!string.IsNullOrEmpty(sysMenu.MenuName), (c, j) => c.MenuName.Contains(sysMenu.MenuName)) .WhereIF(!string.IsNullOrEmpty(sysMenu.visible), (c, j) => c.visible == sysMenu.visible) .OrderBy((c, j) => new { c.parentId, c.orderNum }) .Select(c => c) @@ -111,7 +111,7 @@ namespace ZR.Repository.System .Where((menu) => menuTypes.Contains(menu.menuType) && menu.status == "0" - && SqlFunc.Subqueryable().Where( s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.menuId).Any()) + && SqlFunc.Subqueryable().Where( s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.MenuId).Any()) .OrderBy((menu) => new { menu.parentId, menu.orderNum }) .Select((menu) => menu).ToList(); } @@ -125,7 +125,7 @@ namespace ZR.Repository.System /// public SysMenu SelectMenuById(int menuId) { - return Context.Queryable().Where(it => it.menuId == menuId).Single(); + return Context.Queryable().Where(it => it.MenuId == menuId).Single(); } /// @@ -137,7 +137,7 @@ namespace ZR.Repository.System { var Db = Context; menu.Create_time = Db.GetDate(); - menu.menuId = Db.Insertable(menu).ExecuteReturnIdentity(); + menu.MenuId = Db.Insertable(menu).ExecuteReturnIdentity(); return 1; } @@ -158,7 +158,7 @@ namespace ZR.Repository.System /// public int DeleteMenuById(int menuId) { - return Context.Deleteable().Where(it => it.menuId == menuId).ExecuteCommand(); + return Context.Deleteable().Where(it => it.MenuId == menuId).ExecuteCommand(); } /// @@ -168,7 +168,7 @@ namespace ZR.Repository.System /// public int ChangeSortMenu(MenuDto menuDto) { - var result = Context.Updateable(new SysMenu() { menuId = menuDto.MenuId, orderNum = menuDto.orderNum }) + var result = Context.Updateable(new SysMenu() { MenuId = menuDto.MenuId, orderNum = menuDto.orderNum }) .UpdateColumns(it => new { it.orderNum }).ExecuteCommand(); return result; } @@ -181,7 +181,7 @@ namespace ZR.Repository.System public List SelectMenuPermsByUserId(long userId) { return Context.Queryable((m, rm, ur, r) => new JoinQueryInfos( - JoinType.Left, m.menuId == rm.Menu_id, + JoinType.Left, m.MenuId == rm.Menu_id, JoinType.Left, rm.Role_id == ur.RoleId, JoinType.Left, ur.RoleId == r.RoleId )) @@ -198,7 +198,7 @@ namespace ZR.Repository.System public SysMenu CheckMenuNameUnique(SysMenu menu) { return Context.Queryable() - .Where(it => it.menuName == menu.menuName && it.parentId == menu.parentId).Single(); + .Where(it => it.MenuName == menu.MenuName && it.parentId == menu.parentId).Single(); } /// diff --git a/ZR.Service/System/SysMenuService.cs b/ZR.Service/System/SysMenuService.cs index 90bb284..ac6da4e 100644 --- a/ZR.Service/System/SysMenuService.cs +++ b/ZR.Service/System/SysMenuService.cs @@ -114,14 +114,14 @@ namespace ZR.Service /// public string CheckMenuNameUnique(SysMenu menu) { - long menuId = menu.menuId == 0 ? -1 : menu.menuId; + long menuId = menu.MenuId == 0 ? -1 : menu.MenuId; SysMenu info = MenuRepository.CheckMenuNameUnique(menu); //if (info != null && menuId != info.menuId && menu.menuName.Equals(info.menuName)) //{ // return UserConstants.NOT_UNIQUE; //} - if (info != null && info.menuId != menu.menuId) + if (info != null && info.MenuId != menu.MenuId) { return UserConstants.NOT_UNIQUE; } @@ -253,7 +253,7 @@ namespace ZR.Service /// private List GetChildList(List list, SysMenu sysMenu) { - return list.Where(p => p.parentId == sysMenu.menuId).ToList(); + return list.Where(p => p.parentId == sysMenu.MenuId).ToList(); } /// @@ -273,7 +273,7 @@ namespace ZR.Service Name = GetRouteName(menu), Path = GetRoutePath(menu), Component = GetComponent(menu), - Meta = new Meta(menu.menuName, menu.icon, "1".Equals(menu.isCache)) + Meta = new Meta(menu.MenuName, menu.icon, "1".Equals(menu.isCache)) }; List cMenus = menu.children; @@ -292,7 +292,7 @@ namespace ZR.Service Path = menu.path, Component = menu.component, Name = string.IsNullOrEmpty(menu.path) ? "" : menu.path.ToLower(), - Meta = new Meta(menu.menuName, menu.icon, "1".Equals(menu.isCache)) + Meta = new Meta(menu.MenuName, menu.icon, "1".Equals(menu.isCache)) }; childrenList.Add(children); router.Children = childrenList; @@ -311,7 +311,7 @@ namespace ZR.Service public List BuildMenuTree(List menus) { List returnList = new List(); - List tempList = menus.Select(f => f.menuId).ToList(); + List tempList = menus.Select(f => f.MenuId).ToList(); foreach (var menu in menus) {