修改菜单编辑

This commit is contained in:
不做码农 2022-04-23 20:29:40 +08:00
parent ec621e6a1e
commit 6d6dd72116
6 changed files with 101 additions and 46 deletions

View File

@ -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
/// <summary>
/// 修改菜单 √
/// </summary>
/// <param name="MenuDto"></param>
/// <param name="menuDto"></param>
/// <returns></returns>
[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<SysMenu, MenuDto>()
.NameMatchingStrategy(NameMatchingStrategy.IgnoreCase);//忽略字段名称的大小写;//忽略除以上配置的所有字段
var modal = menuDto.Adapt<SysMenu>(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;

View File

@ -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; }
/// <summary>
/// 父菜单ID
/// </summary>
public long parentId { get; set; }
/// <summary>
/// 显示顺序
/// </summary>
public int orderNum { get; set; }
/// <summary>
/// 路由地址
/// </summary>
public string path { get; set; } = "#";
/// <summary>
/// 组件路径
/// </summary>
public string component { get; set; }
public int isCache { get; set; }
public int isFrame { get; set; }
public string perms { get; set; } = "";
/// <summary>
/// 是否缓存1缓存 0不缓存
/// </summary>
[Required(ErrorMessage = "是否缓存不能为空")]
public string isCache { get; set; }
/// <summary>
/// 是否外链 1、是 0、否
/// </summary>
public string isFrame { get; set; }
/// <summary>
/// 类型M目录 C菜单 F按钮 L链接
/// </summary>
[Required(ErrorMessage = "菜单类型不能为空")]
public string menuType { get; set; }
/// <summary>
/// 显示状态0显示 1隐藏
/// </summary>
[Required(ErrorMessage = "显示状态不能为空")]
public string visible { get; set; }
/// <summary>
/// 菜单状态0正常 1停用
/// </summary>
[Required(ErrorMessage = "菜单状态不能为空")]
public string status { get; set; }
/// <summary>
/// 权限字符串
/// </summary>
public string perms { get; set; }
/// <summary>
/// 菜单图标
/// </summary>
public string icon { get; set; } = string.Empty;
}
}

View File

@ -14,12 +14,12 @@ namespace ZR.Model.System
/// 菜单ID
/// </summary>
//[Key]//非自动增长主键时使用ExplicitKey
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long menuId { get; set; }
[SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public long MenuId { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
public string menuName { get; set; }
public string MenuName { get; set; }
/// <summary>
/// 父菜单名称

View File

@ -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<TreeSelectVo> child = new List<TreeSelectVo>();

View File

@ -21,7 +21,7 @@ namespace ZR.Repository.System
public List<SysMenu> SelectTreeMenuList(SysMenu menu)
{
return Context.Queryable<SysMenu>()
.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<SysMenu>()
.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<SysMenu> SelectMenuList(SysMenu menu)
{
return Context.Queryable<SysMenu>()
.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<SysMenu>()
.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<SysRoleMenu>().Where( s => roleIds.Contains(s.Role_id) && s.Menu_id == menu.menuId).Any())
&& SqlFunc.Subqueryable<SysRoleMenu>().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
/// <returns></returns>
public SysMenu SelectMenuById(int menuId)
{
return Context.Queryable<SysMenu>().Where(it => it.menuId == menuId).Single();
return Context.Queryable<SysMenu>().Where(it => it.MenuId == menuId).Single();
}
/// <summary>
@ -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
/// <returns></returns>
public int DeleteMenuById(int menuId)
{
return Context.Deleteable<SysMenu>().Where(it => it.menuId == menuId).ExecuteCommand();
return Context.Deleteable<SysMenu>().Where(it => it.MenuId == menuId).ExecuteCommand();
}
/// <summary>
@ -168,7 +168,7 @@ namespace ZR.Repository.System
/// <returns></returns>
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<SysMenu> SelectMenuPermsByUserId(long userId)
{
return Context.Queryable<SysMenu, SysRoleMenu, SysUserRole, SysRole>((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<SysMenu>()
.Where(it => it.menuName == menu.menuName && it.parentId == menu.parentId).Single();
.Where(it => it.MenuName == menu.MenuName && it.parentId == menu.parentId).Single();
}
/// <summary>

View File

@ -114,14 +114,14 @@ namespace ZR.Service
/// <returns></returns>
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
/// <returns></returns>
private List<SysMenu> GetChildList(List<SysMenu> list, SysMenu sysMenu)
{
return list.Where(p => p.parentId == sysMenu.menuId).ToList();
return list.Where(p => p.parentId == sysMenu.MenuId).ToList();
}
/// <summary>
@ -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<SysMenu> 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<SysMenu> BuildMenuTree(List<SysMenu> menus)
{
List<SysMenu> returnList = new List<SysMenu>();
List<long> tempList = menus.Select(f => f.menuId).ToList();
List<long> tempList = menus.Select(f => f.MenuId).ToList();
foreach (var menu in menus)
{