ソースを参照

✨ feat(plugin): 新增:金蝶云星空ERP接口基础插件,可以选择使用

Hans 2 年 前
親
コミット
57349c5146

+ 7 - 0
Admin.NET/Admin.NET.sln

@@ -26,6 +26,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Plugin.ReZero", "
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Admin.NET.Plugin.ApprovalFlow", "Plugins\Admin.NET.Plugin.ApprovalFlow\Admin.NET.Plugin.ApprovalFlow.csproj", "{902A91A7-5EF0-4A63-BC2C-9B783DC00880}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Admin.NET.Plugin.K3Cloud", "Plugins\Admin.NET.Plugin.K3Cloud\Admin.NET.Plugin.K3Cloud.csproj", "{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
@@ -64,6 +66,10 @@ Global
 		{902A91A7-5EF0-4A63-BC2C-9B783DC00880}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{902A91A7-5EF0-4A63-BC2C-9B783DC00880}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{902A91A7-5EF0-4A63-BC2C-9B783DC00880}.Release|Any CPU.Build.0 = Release|Any CPU
+		{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -73,6 +79,7 @@ Global
 		{F6A002AD-CF7F-4771-8597-F12A50A93DAA} = {76F70D22-8D53-468E-A3B6-1704666A1D71}
 		{04AB2E76-DE8B-4EFD-9F48-F8D4C0993106} = {76F70D22-8D53-468E-A3B6-1704666A1D71}
 		{902A91A7-5EF0-4A63-BC2C-9B783DC00880} = {76F70D22-8D53-468E-A3B6-1704666A1D71}
+		{72EB89AB-15F7-4F85-88DB-7C2EF7C3D588} = {76F70D22-8D53-468E-A3B6-1704666A1D71}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {5CD801D7-984A-4F5C-8FA2-211B7A5EA9F3}

+ 17 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Admin.NET.Plugin.K3Cloud.csproj

@@ -0,0 +1,17 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+  <PropertyGroup>
+	  <TargetFrameworks>net6.0;net8.0</TargetFrameworks>
+	  <NoWarn>1701;1702;1591;8632</NoWarn>
+	  <ImplicitUsings>enable</ImplicitUsings>
+	  <Nullable>disable</Nullable>
+	  <GenerateDocumentationFile>True</GenerateDocumentationFile>
+	  <Copyright>Admin.NET</Copyright>
+	  <Description>Admin.NET 通用权限开发平台</Description>
+  </PropertyGroup>
+
+  <ItemGroup>
+    <ProjectReference Include="..\..\Admin.NET.Core\Admin.NET.Core.csproj" />
+  </ItemGroup>
+
+</Project>

+ 19 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Configuration/K3Cloud.json

@@ -0,0 +1,19 @@
+{
+  "$schema": "https://gitee.com/dotnetchina/Furion/raw/v4/schemas/v4/furion-schema.json",
+  "K3Cloud": {
+    // ERP地址
+    "Url": "http://127.0.0.1/k3cloud/",
+    // 帐套Id(数据中心ID)
+    "AcctID": "XXXXXXXXX",
+    // 应用Id
+    "AppId": "XXXXXXXX",
+    // 应用密钥
+    "AppKey": "XXX",
+    // 用户名称
+    "UserName": "XXX",
+    // 用户密码
+    "UserPassword": "XXXX@2024",
+    // 语言代码
+    "LanguageCode": "2052"
+  }
+}

+ 8 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/GlobalUsings.cs

@@ -0,0 +1,8 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+
+global using Furion;
+global using Furion.ConfigurableOptions;

+ 38 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Option/K3CloudOptions.cs

@@ -0,0 +1,38 @@
+
+
+using Furion.ConfigurableOptions;
+
+namespace Admin.NET.Plugin.K3Cloud;
+public sealed class K3CloudOptions : IConfigurableOptions
+{
+
+    /// <summary>
+    /// ERP业务站点地址
+    /// </summary>
+    public string Url { get; set; }
+    /// <summary>
+    /// 帐套Id(数据中心ID)
+    /// </summary>
+    public string AcctID { get; set; }
+    /// <summary>
+    /// 应用Id
+    /// </summary>
+    public string AppId { get; set; }
+    /// <summary>
+    /// 应用密钥
+    /// </summary>
+    public string AppKey { get; set; }
+    /// <summary>
+    /// 用户名称
+    /// </summary>
+    public string UserName { get; set; }
+    /// <summary>
+    /// 用户密码
+    /// </summary>
+    public string UserPassword { get; set; }
+    /// <summary>
+    /// 语言代码
+    /// </summary>
+    public string LanguageCode { get; set; }
+
+}

+ 16 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Service/Dto/K3CloudBaeInput.cs

@@ -0,0 +1,16 @@
+namespace Admin.NET.Plugin.K3Cloud.Service;
+/// <summary>
+/// ERP基础入参
+/// </summary>
+public class K3CloudBaeInput<T>
+{
+    /// <summary>
+    /// 表单Id
+    /// </summary>
+    public string formid { get; set; }
+    /// <summary>
+    /// 数据包
+    /// </summary>
+    public T data { get; set; }
+
+}

+ 5 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Service/Dto/K3CloudLoginInput.cs

@@ -0,0 +1,5 @@
+namespace Admin.NET.Plugin.K3Cloud.Service;
+public class K3CloudLoginInput
+{
+    public List<string> parameters { get; set; }
+}

+ 48 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Service/Dto/K3CloudLoginOutput.cs

@@ -0,0 +1,48 @@
+namespace Admin.NET.Plugin.K3Cloud.Service;
+public class K3CloudLoginOutput
+{
+    public string Message { get; set; }
+    public string MessageCode { get; set; }
+    public ErpLoginResultType LoginResultType { get; set; }
+}
+
+
+public enum ErpLoginResultType
+{
+    /// <summary>
+    /// 激活
+    /// </summary>
+    Activation = -7,
+    /// <summary>
+    /// 云通行证未绑定Cloud账号
+    /// </summary>
+    EntryCloudUnBind = -6,
+    /// <summary>
+    /// 需要表单处理
+    /// </summary>
+    DealWithForm = -5,
+    /// <summary>
+    /// 登录警告
+    /// </summary>
+    Wanning = -4,
+    /// <summary>
+    /// 密码验证不通过(强制的)
+    /// </summary>
+    PWInvalid_Required = -3,
+    /// <summary>
+    /// 密码验证不通过(可选的)
+    /// </summary>
+    PWInvalid_Optional = -2,
+    /// <summary>
+    /// 登录失败
+    /// </summary>
+    Failure = -1,
+    /// <summary>
+    /// 用户或密码错误
+    /// </summary>
+    PWError = 0,
+    /// <summary>
+    /// 登录成功
+    /// </summary>
+    Success = 1
+}

+ 56 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Service/Dto/K3CloudPushResultOutput.cs

@@ -0,0 +1,56 @@
+namespace Admin.NET.Plugin.K3Cloud.Service;
+public class K3CloudPushResultOutput
+{
+    public ErpPushResultInfo Result { get; set; }
+}
+public class ErpPushResultInfo
+{
+    /// <summary>
+    /// Id
+    /// </summary>
+    public object? Id { get; set; }
+    /// <summary>
+    /// 编码
+    /// </summary>
+    public string? Number { get; set; }
+    public ErpPushResultInfo_ResponseStatus ResponseStatus { get; set; }
+
+
+}
+public class ErpPushResultInfo_ResponseStatus
+{
+    public bool IsSuccess { get; set; }
+    public int? ErrorCode { get; set; }
+    /// <summary>
+    /// 错误代码MsgCode说明
+    ///0:默认
+    ///1:上下文丢失 会话过期
+    ///2:没有权限
+    ///3:操作标识为空
+    ///4:异常
+    ///5:单据标识为空
+    ///6:数据库操作失败
+    ///7:许可错误
+    ///8:参数错误
+    ///9:指定字段/值不存在
+    ///10:未找到对应数据
+    ///11:验证失败
+    ///12:不可操作
+    ///13:网控冲突
+    ///14:调用限制
+    ///15:禁止管理员登录
+    /// </summary>
+    public int? MsgCode { get; set; }
+    /// <summary>
+    /// 如果失败,具体失败原因
+    /// </summary>
+    public List<ErpPushResultInfo_Errors> Errors { get; set; }
+}
+public class ErpPushResultInfo_Errors
+{
+    public string FieldName { get; set; }
+    public string Message { get; set; }
+    public int DIndex { get; set; }
+
+}
+

+ 46 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Service/IK3CloudApi.cs

@@ -0,0 +1,46 @@
+using Furion.DependencyInjection;
+using Furion.RemoteRequest;
+
+namespace Admin.NET.Plugin.K3Cloud.Service;
+
+/// <summary>
+/// 金蝶云星空ERP接口
+/// </summary>
+[Client("K3Cloud")]
+public interface IK3CloudApi : IHttpDispatchProxy
+{
+    /// <summary>
+    /// 验证用户
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="action"></param>
+    /// <returns></returns>
+    [Post("Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc")]
+    Task<K3CloudLoginOutput> ValidateUser([Body] K3CloudLoginInput input, [Interceptor(InterceptorTypes.Response)] Action<HttpClient, HttpResponseMessage> action = default);
+    /// <summary>
+    /// 保存表单
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="action"></param>
+    /// <returns></returns>
+    [Post("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc")]
+    Task<K3CloudPushResultOutput> Save<T>([Body] K3CloudBaeInput<T> input, [Interceptor(InterceptorTypes.Request)] Action<HttpClient, HttpRequestMessage> action = default);
+    /// <summary>
+    /// 提交表单
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="action"></param>
+    /// <returns></returns>
+    [Post("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc")]
+    Task<K3CloudPushResultOutput> Submit<T>([Body] K3CloudBaeInput<T> input, [Interceptor(InterceptorTypes.Request)] Action<HttpClient, HttpRequestMessage> action = default);
+    /// <summary>
+    /// 审核表单
+    /// </summary>
+    /// <param name="input"></param>
+    /// <param name="action"></param>
+    /// <returns></returns>
+    [Post("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc")]
+    Task<K3CloudPushResultOutput> Audit<T>([Body] K3CloudBaeInput<T> input, [Interceptor(InterceptorTypes.Request)] Action<HttpClient, HttpRequestMessage> action = default);
+
+
+}

+ 31 - 0
Admin.NET/Plugins/Admin.NET.Plugin.K3Cloud/Startup.cs

@@ -0,0 +1,31 @@
+// Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
+//
+// 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
+//
+// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
+using Admin.NET.Core;
+using Microsoft.AspNetCore.Builder;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Admin.NET.Plugin.K3Cloud;
+
+[AppStartup(100)]
+public class Startup : AppStartup
+{
+    public void ConfigureServices(IServiceCollection services)
+    {
+        services.AddConfigurableOptions<K3CloudOptions>();
+        services.AddRemoteRequest(options =>
+        {
+            options.AddHttpClient("K3Cloud", c =>
+            {
+                c.BaseAddress = new Uri(App.GetConfig<K3CloudOptions>("K3Cloud", true).Url);
+            });
+        });
+    }
+
+    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
+    {
+    }
+}