From 7c7d0899d5cbf2de57238d845a6a7ef07603ff77 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期一, 04 八月 2025 15:12:31 +0800
Subject: [PATCH] feat:阿里云OSS授权信息

---
 FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs                      |   44 +++++++++++
 FlexJobApi.User.Application/FlexJobApi.User.Application.xml              |   15 +++
 /dev/null                                                                |   43 ----------
 FlexJobApi.Core/settings.json                                            |   11 ++
 FlexJobApi.Core/FlexJobApiCoreStartup.cs                                 |    2 
 FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs                       |   34 ++++++++
 FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs        |   29 +++++++
 FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs |   27 ++++++
 FlexJobApi.Core/FlexJobApi.Core.xml                                      |   19 ++++
 FlexJobApi.User.Application/Auths/AuthAppService.cs                      |   10 ++
 FlexJobApi.Core/FlexJobApi.Core.csproj                                   |    2 
 11 files changed, 189 insertions(+), 47 deletions(-)

diff --git a/FlexJobApi.Core/FlexJobApi.Core.csproj b/FlexJobApi.Core/FlexJobApi.Core.csproj
index 0575947..b6a8289 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.csproj
+++ b/FlexJobApi.Core/FlexJobApi.Core.csproj
@@ -17,7 +17,7 @@
 	</ItemGroup>
 
 	<ItemGroup>
-		<PackageReference Include="aliyun-net-sdk-core" Version="1.6.2" />
+		<PackageReference Include="aliyun-net-sdk-core" Version="1.5.6" />
 		<PackageReference Include="Furion" Version="4.9.7.106" />
 		<PackageReference Include="Furion.Extras.Authentication.JwtBearer" Version="4.9.7.106" />
 		<PackageReference Include="Furion.Extras.ObjectMapper.Mapster" Version="4.9.7.106" />
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index ea137e5..41ce047 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -1974,9 +1974,9 @@
             鍒锋柊浠ょ墝
             </summary>
         </member>
-        <member name="T:FlexJobApi.Core.GetOssSTSQuery">
+        <member name="T:FlexJobApi.Core.GetAliyunOSSAcsQuery">
             <summary>
-            
+            鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.DeleteMenuCommand">
@@ -2769,6 +2769,21 @@
             鏈�浣庣骇鍒�
             </summary>
         </member>
+        <member name="T:FlexJobApi.Core.AliyunOptions">
+            <summary>
+            闃块噷浜戦厤缃�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.AliyunOSSOptions">
+            <summary>
+            闃块噷浜戦厤缃�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.AliyunOSSUtils">
+            <summary>
+            闃块噷浜慜SS宸ュ叿
+            </summary>
+        </member>
         <member name="M:FlexJobApi.Core.CollectionUtils.DistinctAdd``1(System.Collections.Generic.List{``0},``0,System.Collections.Generic.IEqualityComparer{``0})">
             <summary>
             鍘婚噸娣诲姞
diff --git a/FlexJobApi.Core/FlexJobApiCoreStartup.cs b/FlexJobApi.Core/FlexJobApiCoreStartup.cs
index eec79a6..f52f125 100644
--- a/FlexJobApi.Core/FlexJobApiCoreStartup.cs
+++ b/FlexJobApi.Core/FlexJobApiCoreStartup.cs
@@ -41,6 +41,8 @@
                 options.WithStackFrame = true;
             });
 
+            services.AddConfigurableOptions<AliyunOptions>();
+
             services.AddComponent<EventBusServiceComponent>();
 
             services.AddComponent<DistributedCacheServiceComponent>();
diff --git a/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs
new file mode 100644
index 0000000..628cc0b
--- /dev/null
+++ b/FlexJobApi.Core/Models/User/Auths/Queries/GetAliyunOSSAcsQuery.cs
@@ -0,0 +1,29 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
+    /// </summary>
+    public class GetAliyunOSSAcsQuery : IRequest<GetAliyunOSSAcsQueryResult>
+    {
+    }
+
+    public class GetAliyunOSSAcsQueryResult
+    {
+        public string Expiration { get; set; }
+
+        public string OssAccessSecret { get; set; }
+
+        public string OssAccessKeyId { get; set; }
+
+        public string SecurityToken { get; set; }
+
+        public string RequestId { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs b/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs
deleted file mode 100644
index 3b6133a..0000000
--- a/FlexJobApi.Core/Models/User/Auths/Queries/GetOssSTSQuery.cs
+++ /dev/null
@@ -1,21 +0,0 @@
-锘縰sing MediatR;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.Core
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    public class GetOssSTSQuery : IRequest<GetOssSTSQueryResult>
-    {
-    }
-
-    public class GetOssSTSQueryResult
-    {
-
-    }
-}
diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
new file mode 100644
index 0000000..43ad92f
--- /dev/null
+++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOSSUtils.cs
@@ -0,0 +1,44 @@
+锘縰sing Aliyun.Acs.Core;
+using Aliyun.Acs.Core.Auth.Sts;
+using Aliyun.Acs.Core.Http;
+using Aliyun.Acs.Core.Profile;
+using Furion;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static System.Runtime.InteropServices.JavaScript.JSType;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 闃块噷浜慜SS宸ュ叿
+    /// </summary>
+    public static class AliyunOSSUtils
+    {
+        public static GetAliyunOSSAcsQueryResult GetOSSAcs()
+        {
+            var options = App.GetOptions<AliyunOptions>().OSS;
+            IClientProfile profile = DefaultProfile.GetProfile(options.RegionId, options.AccessKeyId, options.AccessSecret);
+            DefaultAcsClient client = new DefaultAcsClient(profile);
+            AssumeRoleRequest request = new AssumeRoleRequest();
+
+            request.Method = MethodType.POST;
+            request.RoleArn = options.RoleArn;
+            request.RoleSessionName = options.RoleSessionName;
+            request.Policy = options.Policy;
+            request.DurationSeconds = options.DurationSeconds;
+            AssumeRoleResponse response = client.GetAcsResponse(request);
+            var result = new GetAliyunOSSAcsQueryResult()
+            {
+                Expiration = response.Credentials.Expiration,
+                OssAccessKeyId = response.Credentials.AccessKeyId,
+                OssAccessSecret = response.Credentials.AccessKeySecret,
+                SecurityToken = response.Credentials.SecurityToken,
+                RequestId = response.RequestId
+            };
+            return result;
+        }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs
new file mode 100644
index 0000000..9fbbb23
--- /dev/null
+++ b/FlexJobApi.Core/Utils/AliyunUtils/AliyunOptions.cs
@@ -0,0 +1,34 @@
+锘縰sing Furion.ConfigurableOptions;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 闃块噷浜戦厤缃�
+    /// </summary>
+    public class AliyunOptions : IConfigurableOptions
+    {
+        public AliyunOSSOptions OSS { get; set; }
+    }
+
+    /// <summary>
+    /// 闃块噷浜戦厤缃�
+    /// </summary>
+    public class AliyunOSSOptions
+    {
+        public string AccessKeyId { get; set; }
+        public string AccessSecret { get; set; }
+        public string RegionId { get; set; }
+        public string Endpoint { get; set; }
+        public string BucketName { get; set; }
+        public string Url { get; set; }
+        public string RoleArn { get; set; }
+        public string RoleSessionName { get; set; }
+        public string Policy { get; set; }
+        public int DurationSeconds { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/settings.json b/FlexJobApi.Core/settings.json
index 3112297..c72356f 100644
--- a/FlexJobApi.Core/settings.json
+++ b/FlexJobApi.Core/settings.json
@@ -55,7 +55,16 @@
   },
   "Aliyun": {
     "OSS": {
-
+      "AccessKeyId": "LTAI4GAdJ88mUMMFBHHiyDmS",
+      "AccessSecret": "NX3AmjOcGkJ8bncQfIVxqmifBWkI0E",
+      "RegionId": "cn-hangzhou",
+      "Endpoint": "http://oss-cn-hangzhou.aliyuncs.com",
+      "BucketName": "waterdroptest2",
+      "Url": "https://waterdroptest2.oss-cn-hangzhou.aliyuncs.com/",
+      "RoleArn": "acs:ram::1483797030072898:role/boleoss",
+      "RoleSessionName": "SessionTest",
+      "Policy": "{\"Version\":\"1\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":\"oss:PutObject\",\"Resource\":[\"acs:oss:*:*:waterdroptest2/*\",\"acs:oss:*:*:parkmanagement/*\",\"acs:oss:*:*:jurenlian/*\"]}]}",
+      "DurationSeconds": 3600
     }
   }
 }
\ No newline at end of file
diff --git a/FlexJobApi.User.Application/Auths/AuthAppService.cs b/FlexJobApi.User.Application/Auths/AuthAppService.cs
index 5e40ef7..a2aed20 100644
--- a/FlexJobApi.User.Application/Auths/AuthAppService.cs
+++ b/FlexJobApi.User.Application/Auths/AuthAppService.cs
@@ -17,6 +17,16 @@
         private readonly IMediator mediator = mediator;
 
         /// <summary>
+        /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
+        /// </summary>
+        /// <returns></returns>
+        [AllowAnonymous]
+        public Task<GetAliyunOSSAcsQueryResult> GetAliyunOSSAcs()
+        {
+            return mediator.Send(new GetAliyunOSSAcsQuery());
+        }
+
+        /// <summary>
         /// 瀵嗙爜鐧诲綍
         /// </summary>
         /// <param name="command"></param>
diff --git a/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs
new file mode 100644
index 0000000..d061916
--- /dev/null
+++ b/FlexJobApi.User.Application/Auths/Queries/GetAliyunOSSAcsQueryHandler.cs
@@ -0,0 +1,27 @@
+锘縰sing Aliyun.Acs.Core;
+using Aliyun.Acs.Core.Auth.Sts;
+using Aliyun.Acs.Core.Http;
+using Aliyun.Acs.Core.Profile;
+using FlexJobApi.Core;
+using Furion;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.User.Application
+{
+    /// <summary>
+    /// 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
+    /// </summary>
+    public class GetAliyunOSSAcsQueryHandler : IRequestHandler<GetAliyunOSSAcsQuery, GetAliyunOSSAcsQueryResult>
+    {
+        /// <inheritdoc/>
+        public Task<GetAliyunOSSAcsQueryResult> Handle(GetAliyunOSSAcsQuery request, CancellationToken cancellationToken)
+        {
+            return Task.FromResult(AliyunOSSUtils.GetOSSAcs());
+        }
+    }
+}
diff --git a/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs b/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs
deleted file mode 100644
index bdc1318..0000000
--- a/FlexJobApi.User.Application/Auths/Queries/GetOssSTSQueryHandler.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-锘縰sing Aliyun.Acs.Core;
-using Aliyun.Acs.Core.Auth.Sts;
-using Aliyun.Acs.Core.Http;
-using Aliyun.Acs.Core.Profile;
-using FlexJobApi.Core;
-using MediatR;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace FlexJobApi.User.Application
-{
-    /// <summary>
-    /// 
-    /// </summary>
-    //public class GetOssSTSQueryHandler : IRequestHandler<GetOssSTSQuery, GetOssSTSQueryResult>
-    //{
-    //    public Task<GetOssSTSQueryResult> Handle(GetOssSTSQuery request, CancellationToken cancellationToken)
-    //    {
-    //        IClientProfile profile = DefaultProfile.GetProfile(regionId, ossSettings.OssAccessKeyId, ossSettings.OssAccessSecret);
-    //        DefaultAcsClient client = new DefaultAcsClient(profile);
-    //        AssumeRoleRequest request = new AssumeRoleRequest();
-
-    //        request.Method = MethodType.POST;
-
-    //        request.RoleArn = ossSettings.OssRoleRan;
-    //        request.RoleSessionName = RoleSessionName;
-    //        request.Policy = PolicyFile;
-    //        request.DurationSeconds = TokenExpireTime;
-    //        AssumeRoleResponse response = client.GetAcsResponse(request);
-    //        OssSTSReponse result = new OssSTSReponse()
-    //        {
-    //            Expiration = response.Credentials.Expiration,
-    //            OssAccessKeyId = response.Credentials.AccessKeyId,
-    //            OssAccessSecret = response.Credentials.AccessKeySecret,
-    //            SecurityToken = response.Credentials.SecurityToken,
-    //            RequestId = response.RequestId
-    //        };
-    //    }
-    //}
-}
diff --git a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
index 8ccf9d9..0978003 100644
--- a/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
+++ b/FlexJobApi.User.Application/FlexJobApi.User.Application.xml
@@ -14,6 +14,13 @@
             璁よ瘉
             </summary>
         </member>
+        <member name="M:FlexJobApi.User.Application.AuthAppService.GetAliyunOSSAcs(FlexJobApi.Core.GetAliyunOSSAcsQuery)">
+            <summary>
+            鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
+            </summary>
+            <param name="query"></param>
+            <returns></returns>
+        </member>
         <member name="M:FlexJobApi.User.Application.AuthAppService.PasswordLogin(FlexJobApi.Core.PasswordLoginCommand)">
             <summary>
             瀵嗙爜鐧诲綍
@@ -34,6 +41,14 @@
         <member name="M:FlexJobApi.User.Application.PasswordLoginCommandHandler.Handle(FlexJobApi.Core.PasswordLoginCommand,System.Threading.CancellationToken)">
             <inheritdoc/>
         </member>
+        <member name="T:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler">
+            <summary>
+            鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.User.Application.GetAliyunOSSAcsQueryHandler.Handle(FlexJobApi.Core.GetAliyunOSSAcsQuery,System.Threading.CancellationToken)">
+            <inheritdoc/>
+        </member>
         <member name="F:FlexJobApi.User.Application.EnumUserErrorCodeType.u1000">
             <summary>
             璐﹀彿鎴栧瘑鐮佷笉瀛樺湪

--
Gitblit v1.9.1