修改菜单编辑
This commit is contained in:
parent
ec621e6a1e
commit
6d6dd72116
@ -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;
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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>
|
||||
/// 父菜单名称
|
||||
|
||||
@ -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>();
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user