diff --git a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 index a018352a..ab24d821 100644 Binary files a/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 and b/.vs/WMS.Web/DesignTimeBuild/.dtbcache.v2 differ diff --git a/src/WMS.Web.Api/Controllers/LoginController.cs b/src/WMS.Web.Api/Controllers/LoginController.cs index 2519723d..bf97d937 100644 --- a/src/WMS.Web.Api/Controllers/LoginController.cs +++ b/src/WMS.Web.Api/Controllers/LoginController.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.Linq; @@ -7,6 +8,7 @@ using System.Threading.Tasks; using WMS.Web.Core.Dto.Login; using WMS.Web.Core.Internal.Results; using WMS.Web.Domain.IService.Public; +using WMS.Web.Domain.Values; namespace WMS.Web.Api.Controllers { @@ -18,8 +20,10 @@ namespace WMS.Web.Api.Controllers public class LoginController : ControllerBase { private readonly ILoginService _loginService; - public LoginController(ILoginService loginService) + private readonly ILogger _logger; + public LoginController(ILoginService loginService,ILogger logger) { + this._logger = logger; this._loginService = loginService; } @@ -99,6 +103,40 @@ namespace WMS.Web.Api.Controllers if (!string.IsNullOrEmpty(value)) await _loginService.LoginOutSingleAsync(value); return Result.ReSuccess(); - } + } + + /// + /// 菜单列表 + /// + /// + [HttpPost] + [Route("Menus")] + public async Task>> GetMenuList() + { + var loginInfo = _loginService.GetLoginInfo(this.HttpContext.Request.Headers["Authorization"]); + if (loginInfo == null || loginInfo.UserInfo == null) + return Result>.ReFailure(ResultCodes.Token_Invalid_Error); + + _logger.LogInformation($"用户ID:{loginInfo.UserInfo.UcId}"); + var list = await _loginService.GetMenuList(loginInfo.UserInfo.UcId); + _logger.LogInformation($"菜单数量:{list.Count}"); + if (list.Count == 0) + { + //调用单点的退出接口 + var dto = new LoginOutDto() + { + UcId = loginInfo.UserInfo.UcId.ToString(), + SessionId = loginInfo.UserInfo.SeesionId, + Token = loginInfo.TokenInfo.Token, + AccessToken = loginInfo.TokenInfo.PhpToken, + ExpiresIn = loginInfo.TokenInfo.Expired + + }; + await _loginService.LoginOut(dto); + return Result>.ReFailure(ResultCodes.NoRoot); + } + var res = Result>.ReSuccess(list); + return res; + } } } diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml index 8f5f0934..85654cb7 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Api.xml @@ -328,6 +328,12 @@ + + + 菜单列表 + + + 列表 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml index 6b6b58c8..66ebbbf3 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Core.xml @@ -3773,6 +3773,116 @@ + + + 菜单的请求对象 + + + + + 用户ID(不是人员ID) + + + + + 应用ID + + + + + 菜单响应对象 + + + + + + + + + + 上级菜单 + + + + + 模块ID,对应apps表ID + + + + + 菜单标题 + + + + + 菜单标签 + + + + + 菜单路径 + + + + + 操作,比如 /admin/info + + + + + 图标 + + + + + + + + + + 排序 + + + + + 0为普通按钮/连接,1为左侧菜单 + + + + + 是否显示:0为否,1为是 + + + + + 是否禁用:0为否,1为是 + + + + + 是否禁用:true为禁用,false为启用 + + + + + 子集 + + + + + meta + + + + + 菜单名字 + + + + + 菜单图标 + + 登录后:请求相关全部信息对象 diff --git a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml index 59d8062e..6b698a70 100644 --- a/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml +++ b/src/WMS.Web.Api/wwwroot/WMS.Web.Domain.xml @@ -3441,6 +3441,13 @@ + + + 获取菜单 + + + + 出库任务 @@ -5066,6 +5073,12 @@ + + + 获取菜单数据 + + + ops服务 @@ -5841,6 +5854,11 @@ 数据操作失败 + + + 没有菜单权限,无法登录 + + 序列号操作类型 diff --git a/src/WMS.Web.Core/Dto/Login/Menu/MenuRequest.cs b/src/WMS.Web.Core/Dto/Login/Menu/MenuRequest.cs new file mode 100644 index 00000000..035b6c64 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Login/Menu/MenuRequest.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Login +{ + /// + /// 菜单的请求对象 + /// + public class MenuRequest + { + public MenuRequest() { } + public MenuRequest(int userId, int moduleId) + { + this.UserId = userId; + this.ModuleID = moduleId; + } + + /// + /// 用户ID(不是人员ID) + /// + public int UserId { get; set; } + + /// + /// 应用ID + /// + public int ModuleID { get; set; } + } +} diff --git a/src/WMS.Web.Core/Dto/Login/Menu/MenuResponse.cs b/src/WMS.Web.Core/Dto/Login/Menu/MenuResponse.cs new file mode 100644 index 00000000..e113d033 --- /dev/null +++ b/src/WMS.Web.Core/Dto/Login/Menu/MenuResponse.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace WMS.Web.Core.Dto.Login +{ + /// + /// 菜单响应对象 + /// + public class MenuResponse + { + /// + /// + /// + + public int ID { get; set; } + /// + /// 上级菜单 + /// + + public int? Pid { get; set; } + /// + /// 模块ID,对应apps表ID + /// + + public int? Module { get; set; } + /// + /// 菜单标题 + /// + + public string Title { get; set; } + /// + /// 菜单标签 + /// + + public string Name { get; set; } + /// + /// 菜单路径 + /// + + public string Path { get; set; } + /// + /// 操作,比如 /admin/info + /// + + public string Component { get; set; } + /// + /// 图标 + /// + + public string Icon { get; set; } + /// + /// + /// + + public string Redirect { get; set; } + /// + /// 排序 + /// + + public int? Sort { get; set; } + /// + /// 0为普通按钮/连接,1为左侧菜单 + /// + + public int? Type { get; set; } + /// + /// 是否显示:0为否,1为是 + /// + + public bool Hidden { get; set; } + /// + /// 是否禁用:0为否,1为是 + /// + + public bool Closed { get; set; } + + /// + /// 是否禁用:true为禁用,false为启用 + /// + public bool Disable { get; set; } + + /// + /// 子集 + /// + public List Children { get; set; } + + /// + /// meta + /// + public Meta meta { get; set; } + } + + public class Meta + { + /// + /// 菜单名字 + /// + public string title { get; set; } + /// + /// 菜单图标 + /// + public string icon { get; set; } + } +} diff --git a/src/WMS.Web.Domain/IService/Public/ILoginService.cs b/src/WMS.Web.Domain/IService/Public/ILoginService.cs index dbf47fe5..ed0f36ba 100644 --- a/src/WMS.Web.Domain/IService/Public/ILoginService.cs +++ b/src/WMS.Web.Domain/IService/Public/ILoginService.cs @@ -66,5 +66,12 @@ namespace WMS.Web.Domain.IService.Public /// /// LoginInDto GetLoginInfo(string authorization); + + /// + /// 获取菜单 + /// + /// + /// + Task> GetMenuList(int userId); } } diff --git a/src/WMS.Web.Domain/Services/Public/LoginService.cs b/src/WMS.Web.Domain/Services/Public/LoginService.cs index 4b57669f..6a3ffeec 100644 --- a/src/WMS.Web.Domain/Services/Public/LoginService.cs +++ b/src/WMS.Web.Domain/Services/Public/LoginService.cs @@ -478,5 +478,19 @@ namespace WMS.Web.Domain.Services.Public } } } + + /// + /// 获取菜单数据 + /// + /// + public async Task> GetMenuList(int userId) + { + int module = _soaOptions.ModuleID; + var result = await _singleDataService.GetSingleDataNoCache, MenuRequest, SingleLoginAction> + (new MenuRequest(userId, module), SingleLoginAction.Menus, type: SingleControllerType.Login); + if (result.Success) + return result.Data.ToList(); + return null; + } } } diff --git a/src/WMS.Web.Domain/Values/ResultCodes.cs b/src/WMS.Web.Domain/Values/ResultCodes.cs index f8ecb493..73f3c853 100644 --- a/src/WMS.Web.Domain/Values/ResultCodes.cs +++ b/src/WMS.Web.Domain/Values/ResultCodes.cs @@ -24,6 +24,11 @@ namespace WMS.Web.Domain.Values public static ValueTuple NoDateError = (40005, "数据不存在"); public static ValueTuple SourceBillNoDateError = (40005, "来源单不存在,请核对后再试"); + /// + /// 没有菜单权限,无法登录 + /// + public static ValueTuple NoRoot = (40005, "没有菜单权限,无法登录"); + //出库任务单 public static ValueTuple MergeStatusError = (70000, "请选择出库状态为”待出库”且出库类型为”销售出库”发货组织和收货客户以及发货仓库一致的数据"); public static ValueTuple OutStockQtyError = (70001, "可出库数量不足");