From 8c53d205affe988071abbe38e5cf0b340849156b Mon Sep 17 00:00:00 2001 From: qinyouzeng Date: Wed, 24 Jun 2026 17:21:59 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20sapp=20=E6=B7=BB=E5=8A=A0=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E5=B0=8F=E7=A8=8B=E5=BA=8F=E8=AF=A6=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ISappClient.cs | 2 + .../Model/MaintenanceDto.cs | 10 +++++ .../Model/ModuleDetailDto.cs | 18 ++++++++ .../Service/IModuleService.cs | 6 +++ .../SappClient.cs | 3 ++ .../Service/ModuleService.cs | 22 ++++++++++ .../Masa.Contrib.StackSdks.Sapp/SappClient.cs | 3 ++ .../Service/ModuleService.cs | 19 ++++++++ .../ModuleServiceTest.cs | 43 +++++++++++++++++++ 9 files changed, 126 insertions(+) create mode 100644 src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/MaintenanceDto.cs create mode 100644 src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs create mode 100644 src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IModuleService.cs create mode 100644 src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/ModuleService.cs create mode 100644 src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/ModuleService.cs create mode 100644 src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/ModuleServiceTest.cs diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/ISappClient.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/ISappClient.cs index 1d7016b..b37c853 100644 --- a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/ISappClient.cs +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/ISappClient.cs @@ -6,4 +6,6 @@ namespace Masa.BuildingBlocks.StackSdks.Sapp; public interface ISappClient { public IGlobalNavService GlobalNavService { get; init; } + + public IModuleService ModuleService { get; init; } } diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/MaintenanceDto.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/MaintenanceDto.cs new file mode 100644 index 0000000..fc2e3da --- /dev/null +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/MaintenanceDto.cs @@ -0,0 +1,10 @@ +namespace Masa.BuildingBlocks.StackSdks.Sapp.Model; + +public class MaintainceDto +{ + public string Reason { get; set; } = default!; + + public DateTime StartTime { get; set; } + + public DateTime EndTime { get; set; } +} diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs new file mode 100644 index 0000000..6e418ef --- /dev/null +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs @@ -0,0 +1,18 @@ +namespace Masa.BuildingBlocks.StackSdks.Sapp.Model; + +public class ModuleDetailDto +{ + public string Code { get; set; } = default!; + + public string Name { get; set; } = default!; + + public string PmIdentity { get; set; } = default!; + + public bool Enable { get; set; } = default!; + + public bool Show { get; set; } = default!; + + public StatusTypes Status { get; set; } + + public MaintainceDto? Maintaince { get; set; } +} \ No newline at end of file diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IModuleService.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IModuleService.cs new file mode 100644 index 0000000..8b218f4 --- /dev/null +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Service/IModuleService.cs @@ -0,0 +1,6 @@ +namespace Masa.BuildingBlocks.StackSdks.Sapp.Service; + +public interface IModuleService +{ + Task GetByPmIdentityAsync(string pmIdentity); +} \ No newline at end of file diff --git a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/SappClient.cs b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/SappClient.cs index 7f49fe8..0748999 100644 --- a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/SappClient.cs +++ b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/SappClient.cs @@ -8,7 +8,10 @@ public class SappClient : ISappClient public SappClient(ICaller caller) { GlobalNavService = new GlobalNavService(caller); + ModuleService = new ModuleService(caller); } public IGlobalNavService GlobalNavService { get; init; } + + public IModuleService ModuleService { get; init; } } diff --git a/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/ModuleService.cs b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/ModuleService.cs new file mode 100644 index 0000000..5984d97 --- /dev/null +++ b/src/Contrib.Wasm/Masa.Contrib.StackSdks.Sapp.Wasm/Service/ModuleService.cs @@ -0,0 +1,22 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the MIT License. See LICENSE.txt in the project root for license information. + +namespace Masa.Contrib.StackSdks.Sapp.Service; + +public class ModuleService : IModuleService +{ + private const string MODULE_ROUTE_PREFIX = "api/module"; + + private readonly ICaller _caller; + + public ModuleService(ICaller caller) + { + _caller = caller; + } + + public Task GetByPmIdentityAsync(string pmIdentity) + { + var requestUri = $"{MODULE_ROUTE_PREFIX}/byPmIdentity"; + return _caller.GetAsync(requestUri, new { pmIdentity }); + } +} diff --git a/src/Contrib/Masa.Contrib.StackSdks.Sapp/SappClient.cs b/src/Contrib/Masa.Contrib.StackSdks.Sapp/SappClient.cs index 7f49fe8..0748999 100644 --- a/src/Contrib/Masa.Contrib.StackSdks.Sapp/SappClient.cs +++ b/src/Contrib/Masa.Contrib.StackSdks.Sapp/SappClient.cs @@ -8,7 +8,10 @@ public class SappClient : ISappClient public SappClient(ICaller caller) { GlobalNavService = new GlobalNavService(caller); + ModuleService = new ModuleService(caller); } public IGlobalNavService GlobalNavService { get; init; } + + public IModuleService ModuleService { get; init; } } diff --git a/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/ModuleService.cs b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/ModuleService.cs new file mode 100644 index 0000000..897f314 --- /dev/null +++ b/src/Contrib/Masa.Contrib.StackSdks.Sapp/Service/ModuleService.cs @@ -0,0 +1,19 @@ +namespace Masa.Contrib.StackSdks.Sapp.Service; + +public class ModuleService : IModuleService +{ + private const string MODULE_ROUTE_PREFIX = "api/module"; + + private readonly ICaller _caller; + + public ModuleService(ICaller caller) + { + _caller = caller; + } + + public Task GetByPmIdentityAsync(string pmIdentity) + { + var requestUri = $"{MODULE_ROUTE_PREFIX}/byPmIdentity"; + return _caller.GetAsync(requestUri, new { pmIdentity }); + } +} diff --git a/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/ModuleServiceTest.cs b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/ModuleServiceTest.cs new file mode 100644 index 0000000..3cb499c --- /dev/null +++ b/src/Contrib/Tests/Masa.Contrib.StackSdks.Sapp.Tests/ModuleServiceTest.cs @@ -0,0 +1,43 @@ +// Copyright (c) MASA Stack All rights reserved. +// Licensed under the MIT License. See LICENSE.txt in the project root for license information. + +namespace Masa.Contrib.StackSdks.Sapp.Tests; + +[TestClass] +public class ModuleServiceTest +{ + [TestMethod] + [DataRow("pm.identity")] + public async Task TestGetByPmIdentityAsync(string pmIdentity) + { + var data = new ModuleDetailDto { PmIdentity = pmIdentity }; + + var requestUri = $"api/module/byPmIdentity/{pmIdentity}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync(requestUri, default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.ModuleService.GetByPmIdentityAsync(pmIdentity); + caller.Verify(provider => provider.GetAsync(requestUri, default), Times.Once); + + Assert.IsNotNull(result); + Assert.AreEqual(pmIdentity, result.PmIdentity); + } + + [TestMethod] + [DataRow("pm.identity")] + public async Task TestGetByPmIdentityWhenNullAsync(string pmIdentity) + { + ModuleDetailDto? data = null; + + var requestUri = $"api/module/byPmIdentity/{pmIdentity}"; + var caller = new Mock(); + caller.Setup(provider => provider.GetAsync(It.IsAny(), default)).ReturnsAsync(data).Verifiable(); + var sappClient = new SappClient(caller.Object); + + var result = await sappClient.ModuleService.GetByPmIdentityAsync(pmIdentity); + caller.Verify(provider => provider.GetAsync(requestUri, default), Times.Once); + + Assert.IsNull(result); + } +} From a9c2e5c0251090f025776bb250c052abbc5de257 Mon Sep 17 00:00:00 2001 From: qinyouzeng Date: Wed, 24 Jun 2026 17:31:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B7=BB=E5=8A=A0icon=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs index 6e418ef..1783222 100644 --- a/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs +++ b/src/BuildingBlocks/Masa.BuildingBlocks.StackSdks.Sapp/Model/ModuleDetailDto.cs @@ -6,6 +6,8 @@ public class ModuleDetailDto public string Name { get; set; } = default!; + public string? Icon { get; set; } + public string PmIdentity { get; set; } = default!; public bool Enable { get; set; } = default!;