From 582011fe0778b89312a3a9f886a24d687530aad4 Mon Sep 17 00:00:00 2001
From: sunpengfei <i@angelzzz.com>
Date: 星期二, 02 九月 2025 14:45:47 +0800
Subject: [PATCH] feat:开发

---
 FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs            |   73 ++++
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/CloseEnterpriseWalletCommand.cs           |   21 +
 FlexJobApi.Core/Utils/AlipayUtils/AlipayOptions.cs                                                     |    2 
 FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCommandHandler.cs |    6 
 FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs          |   28 +
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs  |   10 
 FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs         |  122 ++++++++
 FlexJobApi.Web.Entry/appsettings.json                                                                  |    2 
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs            |   33 ++
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/GetAlipayNotifyCommand.cs                 |   17 +
 FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs                                          |   27 +
 FlexJobApi.Core/FlexJobApi.Core.xml                                                                    |  220 ++++++++++++++
 FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs                                                       |   88 +++--
 FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml                                |   59 +++
 FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs                                    |   72 ++++
 FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs                |   69 ++++
 16 files changed, 796 insertions(+), 53 deletions(-)

diff --git a/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs
index b4fc0ba..d8bc453 100644
--- a/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs
+++ b/FlexJobApi.Core/Entities/UserServer/Enterprises/EnterpriseWallet.cs
@@ -25,5 +25,77 @@
         /// 閫氶亾
         /// </summary>
         public EnumEnterpriseWalletAccess Access { get; set; }
+
+        /// <summary>
+        /// 鍗忚浜у搧鐮侊紝鍟嗘埛鍜屾敮浠樺疂绛剧害鏃剁‘瀹氾紝涓嶅悓涓氬姟鍦烘櫙瀵瑰簲涓嶅悓鐨勭绾︿骇鍝佺爜銆�
+        /// </summary>
+        public string PersonalProductCode { get; set; }
+        /// <summary>
+        /// 绛剧害鍗忚鐨勫満鏅��
+        /// </summary>
+        public string SignScene { get; set; }
+        /// <summary>
+        /// 绛剧害绗笁鏂逛富浣撶被鍨嬨�傚浜庝笁鏂瑰崗璁紝琛ㄧず褰撳墠鐢ㄦ埛鍜屽摢涓�绫荤殑绗笁鏂逛富浣撹繘琛岀绾︺�� 榛樿涓篜ARTNER銆�
+        /// </summary>
+        public string ThirdPartyType { get; set; }
+        /// <summary>
+        /// 閿�鍞骇鍝佺爜锛屽晢鎴风绾︾殑鏀粯瀹濆悎鍚屾墍瀵瑰簲鐨勪骇鍝佺爜銆�
+        /// </summary>
+        public string ProductCode { get; set; }
+
+        /// <summary>
+        /// 鍗忚鍙�
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 閫氶亾鍗忚鍙�
+        /// </summary>
+        public string AgreementNo { get; set; }
+
+        /// <summary>
+        /// 鍗忚绛剧害鏃堕棿
+        /// </summary>
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 鍗忚鐢熸晥鏃堕棿
+        /// </summary>
+        public DateTime? ValidTime { get; set; }
+
+        /// <summary>
+        /// 鍗忚澶辨晥鏃堕棿
+        /// </summary>
+        public DateTime? InvalidTime { get; set; }
+
+        /// <summary>
+        /// 绛剧害鐘舵��
+        /// </summary>
+        public EnumEnterpriseWalletSignStatus SignStatus { get; set; }
+
+        /// <summary>
+        /// 绛剧害涓讳綋绫诲瀷銆�
+        /// </summary>
+        public string PricipalType { get; set; }
+        /// <summary>
+        /// 鑴辨晱鐨勬敮浠樺疂璐﹀彿
+        /// </summary>
+        public string AlipayLogonId { get; set; }
+        /// <summary>
+        /// 绛剧害涓讳綋鏍囪瘑銆� 褰損rincipal_type涓篊ARD 鏃讹紝璇ュ瓧娈典负鏀粯瀹濈敤鎴峰彿;
+        /// </summary>
+        public string PrincipalId { get; set; }
+        /// <summary>
+        /// 绛剧害涓讳綋鏍囪瘑銆� 褰損rincipal_type涓篊ARD 鏃讹紝璇ュ瓧娈典负鏀粯瀹濈敤鎴峰彿;  
+        /// </summary>
+        public string PrincipalOpenId { get; set; }
+        /// <summary>
+        /// 鐢ㄦ埛鐨勮姖楹讳俊鐢� openId锛屼緵鍟� 鎴锋煡璇㈢敤鎴疯姖楹讳俊鐢ㄤ娇鐢ㄣ��
+        /// </summary>
+        public string ZmOpenId { get; set; }
+        /// <summary>
+        /// 鎺堜俊妯″紡锛岀洰鍓嶅彧鍦ㄨ姳鑺濅唬鎵o紙鍗宠姳鑺漡o锛夊崗璁椂鎵嶄細杩斿洖
+        /// </summary>
+        public string CreditAuthMode { get; set; }
     }
 }
diff --git a/FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs b/FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs
new file mode 100644
index 0000000..122c239
--- /dev/null
+++ b/FlexJobApi.Core/Enums/Users/EnumEnterpriseWalletSignStatus.cs
@@ -0,0 +1,27 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 浼佷笟閽卞寘绛剧害鐘舵��
+    /// </summary>
+    public enum EnumEnterpriseWalletSignStatus
+    {
+        /// <summary>
+        /// 鐢宠涓�
+        /// </summary>
+        Apply = 10,
+        /// <summary>
+        /// 宸茬绾�
+        /// </summary>
+        Normal = 100,
+        /// <summary>
+        /// 缁堟
+        /// </summary>
+        Stop = 999
+    }
+}
diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml
index 212986f..ae56fd7 100644
--- a/FlexJobApi.Core/FlexJobApi.Core.xml
+++ b/FlexJobApi.Core/FlexJobApi.Core.xml
@@ -2055,6 +2055,86 @@
             閫氶亾
             </summary>
         </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.PersonalProductCode">
+            <summary>
+            鍗忚浜у搧鐮侊紝鍟嗘埛鍜屾敮浠樺疂绛剧害鏃剁‘瀹氾紝涓嶅悓涓氬姟鍦烘櫙瀵瑰簲涓嶅悓鐨勭绾︿骇鍝佺爜銆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.SignScene">
+            <summary>
+            绛剧害鍗忚鐨勫満鏅��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.ThirdPartyType">
+            <summary>
+            绛剧害绗笁鏂逛富浣撶被鍨嬨�傚浜庝笁鏂瑰崗璁紝琛ㄧず褰撳墠鐢ㄦ埛鍜屽摢涓�绫荤殑绗笁鏂逛富浣撹繘琛岀绾︺�� 榛樿涓篜ARTNER銆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.ProductCode">
+            <summary>
+            閿�鍞骇鍝佺爜锛屽晢鎴风绾︾殑鏀粯瀹濆悎鍚屾墍瀵瑰簲鐨勪骇鍝佺爜銆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.Code">
+            <summary>
+            鍗忚鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.AgreementNo">
+            <summary>
+            閫氶亾鍗忚鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.SignTime">
+            <summary>
+            鍗忚绛剧害鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.ValidTime">
+            <summary>
+            鍗忚鐢熸晥鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.InvalidTime">
+            <summary>
+            鍗忚澶辨晥鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.SignStatus">
+            <summary>
+            绛剧害鐘舵��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.PricipalType">
+            <summary>
+            绛剧害涓讳綋绫诲瀷銆�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.AlipayLogonId">
+            <summary>
+            鑴辨晱鐨勬敮浠樺疂璐﹀彿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.PrincipalId">
+            <summary>
+            绛剧害涓讳綋鏍囪瘑銆� 褰損rincipal_type涓篊ARD 鏃讹紝璇ュ瓧娈典负鏀粯瀹濈敤鎴峰彿;
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.PrincipalOpenId">
+            <summary>
+            绛剧害涓讳綋鏍囪瘑銆� 褰損rincipal_type涓篊ARD 鏃讹紝璇ュ瓧娈典负鏀粯瀹濈敤鎴峰彿;  
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.ZmOpenId">
+            <summary>
+            鐢ㄦ埛鐨勮姖楹讳俊鐢� openId锛屼緵鍟� 鎴锋煡璇㈢敤鎴疯姖楹讳俊鐢ㄤ娇鐢ㄣ��
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.EnterpriseWallet.CreditAuthMode">
+            <summary>
+            鎺堜俊妯″紡锛岀洰鍓嶅彧鍦ㄨ姳鑺濅唬鎵o紙鍗宠姳鑺漡o锛夊崗璁椂鎵嶄細杩斿洖
+            </summary>
+        </member>
         <member name="T:FlexJobApi.Core.Menu">
             <summary>
             鑿滃崟
@@ -3640,6 +3720,26 @@
         <member name="F:FlexJobApi.Core.EnumEnterpriseWalletAccess.Alipay">
             <summary>
             鏀粯瀹�
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.EnumEnterpriseWalletSignStatus">
+            <summary>
+            浼佷笟閽卞寘绛剧害鐘舵��
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletSignStatus.Apply">
+            <summary>
+            鐢宠涓�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletSignStatus.Normal">
+            <summary>
+            宸茬绾�
+            </summary>
+        </member>
+        <member name="F:FlexJobApi.Core.EnumEnterpriseWalletSignStatus.Stop">
+            <summary>
+            缁堟
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.EnumMenuType">
@@ -9467,19 +9567,14 @@
             杞处鍦烘櫙璇存槑
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneImageOssUrl">
+        <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneImage">
             <summary>
             杞处鍦烘櫙鎴浘
             </summary>
         </member>
-        <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationImageOssUrl">
+        <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationImage">
             <summary>
-            鍟嗘埛琛屼笟璧勮川鍥剧墖
-            </summary>
-        </member>
-        <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SceneQualificationText">
-            <summary>
-            鍟嗘埛琛屼笟璧勮川鍗忚鏂囨湰
+            鍟嗘埛琛屼笟璧勮川鍥剧墖鎴栧崗璁枃鏈�
             </summary>
         </member>
         <member name="P:FlexJobApi.Core.AlipayFundExpandindirectCreateCommand.SitesInfo">
@@ -9595,6 +9690,41 @@
         <member name="P:FlexJobApi.Core.AlipayFundExpandindirectOrderCancelCommand.Id">
             <summary>
             浠h繘浠跺崟Id
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.CloseEnterpriseWalletCommand">
+            <summary>
+            鍏抽棴浼佷笟閽卞寘
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.CloseEnterpriseWalletCommand.Access">
+            <summary>
+            閫氶亾
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetAlipayNotifyCommand">
+            <summary>
+            鏀粯瀹濋�氱煡鍥炰紶
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.OpenEnterpriseWalletCommand">
+            <summary>
+            寮�閫氫紒涓氶挶鍖�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.OpenEnterpriseWalletCommand.Access">
+            <summary>
+            閫氶亾
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.OpenEnterpriseWalletCommandResult">
+            <summary>
+            寮�閫氫紒涓氶挶鍖�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.OpenEnterpriseWalletCommandResult.SignUrl">
+            <summary>
+            绛剧害鍦板潃
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.GetAlipayFundExpandindirectOrderQuery">
@@ -9775,6 +9905,61 @@
         <member name="P:FlexJobApi.Core.GetAlipayUserAgreementPageSignNotifyQuery.notify_type">
             <summary>
             鐢ㄦ埛绛剧害鎴愬姛閫氱煡绫诲瀷
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetEnterpriseWalletQuery">
+            <summary>
+            鏌ヨ浼佷笟閽卞寘璇︽儏
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQuery.Access">
+            <summary>
+            閫氶亾
+            </summary>
+        </member>
+        <member name="T:FlexJobApi.Core.GetEnterpriseWalletQueryResult">
+            <summary>
+            鏌ヨ浼佷笟閽卞寘寮�閫氱粨鏋�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.Id">
+            <summary>
+            閽卞寘Id
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.Access">
+            <summary>
+            閫氶亾
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.Code">
+            <summary>
+            鍗忚鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.AgreementNo">
+            <summary>
+            閫氶亾鍗忚鍙�
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.SignTime">
+            <summary>
+            鍗忚绛剧害鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.ValidTime">
+            <summary>
+            鍗忚鐢熸晥鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.InvalidTime">
+            <summary>
+            鍗忚澶辨晥鏃堕棿
+            </summary>
+        </member>
+        <member name="P:FlexJobApi.Core.GetEnterpriseWalletQueryResult.SignStatus">
+            <summary>
+            绛剧害鐘舵��
             </summary>
         </member>
         <member name="T:FlexJobApi.Core.DeleteMenuCommand">
@@ -12393,6 +12578,25 @@
             闃块噷鏀粯宸ュ叿
             </summary>
         </member>
+        <member name="M:FlexJobApi.Core.AlipayUtils.UserAgreementPageSign(Aop.Api.Domain.AlipayUserAgreementPageSignModel,System.String)">
+            <summary>
+            鏀粯瀹濅釜浜哄崗璁〉闈㈢绾︽帴鍙�
+            </summary>
+            <param name="model"></param>
+            <param name="notifyUrl"></param>
+        </member>
+        <member name="M:FlexJobApi.Core.AlipayUtils.UserAgreementQuery(Aop.Api.Domain.AlipayUserAgreementQueryModel)">
+            <summary>
+            鏀粯瀹濅釜浜轰唬鎵e崗璁煡璇㈡帴鍙�
+            </summary>
+            <param name="model"></param>
+        </member>
+        <member name="M:FlexJobApi.Core.AlipayUtils.UserAgreementUnsign(Aop.Api.Domain.AlipayUserAgreementUnsignModel)">
+            <summary>
+            鏀粯瀹濅釜浜轰唬鎵e崗璁В绾︽帴鍙�
+            </summary>
+            <param name="model"></param>
+        </member>
         <member name="M:FlexJobApi.Core.AlipayUtils.FundExpandindirectImageUpload(Aop.Api.Request.AlipayFundExpandindirectImageUploadRequest)">
             <summary>
             璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠舵枃浠朵笂浼犳帴鍙�
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs
index 03bcfc2..a805660 100644
--- a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/AlipayFundExpandindirectCreateCommand.cs
@@ -57,15 +57,11 @@
         /// <summary>
         /// 杞处鍦烘櫙鎴浘
         /// </summary>
-        public string SceneImageOssUrl { get; set; }
+        public string SceneImage { get; set; }
         /// <summary>
-        /// 鍟嗘埛琛屼笟璧勮川鍥剧墖
+        /// 鍟嗘埛琛屼笟璧勮川鍥剧墖鎴栧崗璁枃鏈�
         /// </summary>
-        public string SceneQualificationImageOssUrl { get; set; }
-        /// <summary>
-        /// 鍟嗘埛琛屼笟璧勮川鍗忚鏂囨湰
-        /// </summary>
-        public string SceneQualificationText { get; set; }
+        public string SceneQualificationImage { get; set; }
         /// <summary>
         /// 鍟嗘埛绔欑偣淇℃伅
         /// </summary>
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/CloseEnterpriseWalletCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/CloseEnterpriseWalletCommand.cs
new file mode 100644
index 0000000..af114a2
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/CloseEnterpriseWalletCommand.cs
@@ -0,0 +1,21 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鍏抽棴浼佷笟閽卞寘
+    /// </summary>
+    [Resource([EnumResourceController.UserServerEnterpriseWallet])]
+    public class CloseEnterpriseWalletCommand : IRequest<Guid>
+    {
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/GetAlipayNotifyCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/GetAlipayNotifyCommand.cs
new file mode 100644
index 0000000..c66df9f
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/GetAlipayNotifyCommand.cs
@@ -0,0 +1,17 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏀粯瀹濋�氱煡鍥炰紶
+    /// </summary>
+    [Resource([EnumResourceController.UserServerEnterpriseWallet], AllowAnonymous = true, IsFromForm = true)]
+    public class GetAlipayNotifyCommand : IRequest<bool>
+    {
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
new file mode 100644
index 0000000..63695cb
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Commands/OpenEnterpriseWalletCommand.cs
@@ -0,0 +1,33 @@
+锘縰sing MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 寮�閫氫紒涓氶挶鍖�
+    /// </summary>
+    [Resource([EnumResourceController.UserServerEnterpriseWallet])]
+    public class OpenEnterpriseWalletCommand : IRequest<OpenEnterpriseWalletCommandResult>
+    {
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+
+    }
+
+    /// <summary>
+    /// 寮�閫氫紒涓氶挶鍖�
+    /// </summary>
+    public class OpenEnterpriseWalletCommandResult
+    {
+        /// <summary>
+        /// 绛剧害鍦板潃
+        /// </summary>
+        public string SignUrl { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs
new file mode 100644
index 0000000..106e51b
--- /dev/null
+++ b/FlexJobApi.Core/Models/UserServer/EnterpriseWallets/Queries/GetEnterpriseWalletQuery.cs
@@ -0,0 +1,69 @@
+锘縰sing Aop.Api.Domain;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace FlexJobApi.Core
+{
+    /// <summary>
+    /// 鏌ヨ浼佷笟閽卞寘璇︽儏
+    /// </summary>
+    [Resource([EnumResourceController.UserServerEnterpriseWallet])]
+    public class GetEnterpriseWalletQuery : IRequest<GetEnterpriseWalletQueryResult>
+    {
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+    }
+
+    /// <summary>
+    /// 鏌ヨ浼佷笟閽卞寘寮�閫氱粨鏋�
+    /// </summary>
+    public class GetEnterpriseWalletQueryResult
+    {
+        /// <summary>
+        /// 閽卞寘Id
+        /// </summary>
+        public Guid Id { get; set; }
+
+        /// <summary>
+        /// 閫氶亾
+        /// </summary>
+        public EnumEnterpriseWalletAccess Access { get; set; }
+
+        /// <summary>
+        /// 鍗忚鍙�
+        /// </summary>
+        public string Code { get; set; }
+
+        /// <summary>
+        /// 閫氶亾鍗忚鍙�
+        /// </summary>
+        public string AgreementNo { get; set; }
+
+        /// <summary>
+        /// 鍗忚绛剧害鏃堕棿
+        /// </summary>
+        public DateTime? SignTime { get; set; }
+
+        /// <summary>
+        /// 鍗忚鐢熸晥鏃堕棿
+        /// </summary>
+        public DateTime? ValidTime { get; set; }
+
+        /// <summary>
+        /// 鍗忚澶辨晥鏃堕棿
+        /// </summary>
+        public DateTime? InvalidTime { get; set; }
+
+        /// <summary>
+        /// 绛剧害鐘舵��
+        /// </summary>
+        public EnumEnterpriseWalletSignStatus SignStatus { get; set; }
+    }
+}
diff --git a/FlexJobApi.Core/Utils/AlipayUtils/AlipayOptions.cs b/FlexJobApi.Core/Utils/AlipayUtils/AlipayOptions.cs
index ee75137..cbced34 100644
--- a/FlexJobApi.Core/Utils/AlipayUtils/AlipayOptions.cs
+++ b/FlexJobApi.Core/Utils/AlipayUtils/AlipayOptions.cs
@@ -17,7 +17,7 @@
         public string SignType { get; set; }
         public string AppCertPath { get; set; }
         public string AlipayPublicCertPath { get; set; }
-        public string RootCertContent { get; set; }
+        public string RootCertPath { get; set; }
         public string AlipayPublicKey { get; set; }
         public string NotifyUrl { get; set; }
         public string EncryptKey { get; set; }
diff --git a/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs b/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
index acc878d..f363e67 100644
--- a/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
+++ b/FlexJobApi.Core/Utils/AlipayUtils/AlipayUtils.cs
@@ -5,11 +5,14 @@
 using Aop.Api.Request;
 using Aop.Api.Response;
 using Aop.Api.Util;
+using Furion;
 using Furion.FriendlyException;
+using Microsoft.AspNetCore.Hosting;
 using Microsoft.Extensions.Logging;
 using Microsoft.Extensions.Options;
 using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
@@ -23,11 +26,15 @@
     {
         private readonly IAopClient alipayClient;
         private readonly ILogger<AlipayUtils> logger;
+        private readonly IOptions<AlipayOptions> options;
 
         public AlipayUtils(
             ILogger<AlipayUtils> logger,
             IOptions<AlipayOptions> options)
         {
+            var appCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.AppCertPath);
+            var alipayPublicCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.AlipayPublicCertPath);
+            var rootCertPath = Path.Combine(App.WebHostEnvironment.ContentRootPath, options.Value.RootCertPath);
             alipayClient = new DefaultAopClient(new AlipayConfig
             {
                 ServerUrl = options.Value.ServerUrl,
@@ -36,44 +43,62 @@
                 Format = options.Value.Format,
                 Charset = options.Value.Charset,
                 SignType = options.Value.SignType,
-                AppCertPath = options.Value.AppCertPath,
-                AlipayPublicCertPath = options.Value.AlipayPublicCertPath,
-                RootCertContent = options.Value.RootCertContent,
+                AppCertPath = appCertPath,
+                AlipayPublicCertPath = alipayPublicCertPath,
+                RootCertPath = rootCertPath,
                 AlipayPublicKey = options.Value.AlipayPublicKey,
                 EncryptKey = options.Value.EncryptKey,
             });
             this.logger = logger;
+            this.options = options;
         }
 
-        public void UserAgreementPageSign(AlipayUserAgreementPageSignModel model)
+        /// <summary>
+        /// 鏀粯瀹濅釜浜哄崗璁〉闈㈢绾︽帴鍙�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <param name="notifyUrl"></param>
+        public AlipayUserAgreementPageSignResponse UserAgreementPageSign(AlipayUserAgreementPageSignModel model, string notifyUrl = null)
         {
-            // 鍒濆鍖朣DK
-            // 鏋勯�犺姹傚弬鏁颁互璋冪敤鎺ュ彛
+            logger.LogInformation($"姝e湪鎵ц鏀粯瀹濅釜浜哄崗璁〉闈㈢绾︽帴鍙o細{model.ToJson()}");
             AlipayUserAgreementPageSignRequest request = new AlipayUserAgreementPageSignRequest();
-            model.PersonalProductCode = "FUND_SAFT_SIGN_WITHHOLDING_P";
-            model.SignScene = "INDUSTRY|SATF_ACC";
-            model.ThirdPartyType = "PARTNER";
-            model.AccessParams = new AccessParams
-            {
-                Channel = ""
-            };
-            // 璁剧疆绛剧害鏈夋晥鏃堕棿闄愬埗
-            model.EffectTime = 300;
-
             request.SetBizModel(model);
-            //request.SetNotifyUrl();
+            if (notifyUrl.IsNotNull())
+            {
+                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
+                request.SetNotifyUrl(notifyUrl);
+            }
             AlipayUserAgreementPageSignResponse response = alipayClient.pageExecute(request, null, "GET");
-            string pageRedirectionData = response.Body;
-            Console.WriteLine(pageRedirectionData);
+            logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
+            return response;
+        }
 
-            if (!response.IsError)
-            {
-                Console.WriteLine("璋冪敤鎴愬姛");
-            }
-            else
-            {
-                Console.WriteLine("璋冪敤澶辫触");
-            }
+        /// <summary>
+        /// 鏀粯瀹濅釜浜轰唬鎵e崗璁煡璇㈡帴鍙�
+        /// </summary>
+        /// <param name="model"></param>
+        public AlipayUserAgreementQueryResponse UserAgreementQuery(AlipayUserAgreementQueryModel model)
+        {
+            logger.LogInformation($"姝e湪鎵ц鏀粯瀹濅釜浜轰唬鎵e崗璁煡璇㈡帴鍙o細{model.ToJson()}");
+            AlipayUserAgreementQueryRequest request = new AlipayUserAgreementQueryRequest();
+            request.SetBizModel(model);
+            AlipayUserAgreementQueryResponse response = alipayClient.CertificateExecute(request);
+            logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
+            return response;
+        }
+
+        /// <summary>
+        /// 鏀粯瀹濅釜浜轰唬鎵e崗璁В绾︽帴鍙�
+        /// </summary>
+        /// <param name="model"></param>
+        public AlipayUserAgreementUnsignResponse UserAgreementUnsign(AlipayUserAgreementUnsignModel model)
+        {
+            logger.LogInformation($"姝e湪鎵ц鏀粯瀹濅釜浜轰唬鎵e崗璁В绾︽帴鍙o細{model.ToJson()}");
+            AlipayUserAgreementUnsignRequest request = new AlipayUserAgreementUnsignRequest();
+            request.SetBizModel(model);
+            AlipayUserAgreementUnsignResponse response = alipayClient.CertificateExecute(request);
+            logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
+            return response;
         }
 
         /// <summary>
@@ -83,7 +108,7 @@
         public AlipayFundExpandindirectImageUploadResponse FundExpandindirectImageUpload(AlipayFundExpandindirectImageUploadRequest request)
         {
             logger.LogInformation("姝e湪鎵ц璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠舵枃浠朵笂浼犳帴鍙�");
-            AlipayFundExpandindirectImageUploadResponse response = alipayClient.Execute(request);
+            AlipayFundExpandindirectImageUploadResponse response = alipayClient.CertificateExecute(request);
             logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
             return response;
         }
@@ -101,9 +126,10 @@
             request.SetBizModel(model);
             if (notifyUrl.IsNotNull())
             {
+                notifyUrl = $"{options.Value.NotifyUrl}{notifyUrl}";
                 request.SetNotifyUrl(notifyUrl);
             }
-            AlipayFundExpandindirectCreateResponse response = alipayClient.Execute(request);
+            AlipayFundExpandindirectCreateResponse response = alipayClient.CertificateExecute(request);
             logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
             return response;
         }
@@ -118,7 +144,7 @@
             logger.LogInformation($"姝e湪鎵ц璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠跺崟鏌ヨ鎺ュ彛锛歿model.ToJson()}");
             AlipayFundExpandindirectOrderQueryRequest request = new AlipayFundExpandindirectOrderQueryRequest();
             request.SetBizModel(model);
-            AlipayFundExpandindirectOrderQueryResponse response = alipayClient.Execute(request);
+            AlipayFundExpandindirectOrderQueryResponse response = alipayClient.CertificateExecute(request);
             logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
             return response;
         }
@@ -134,7 +160,7 @@
             logger.LogInformation($"姝e湪鎵ц璧勯噾浜岀骇鍟嗘埛KYB浠h繘浠跺崟鍙栨秷鎺ュ彛锛歿model.ToJson()}");
             AlipayFundExpandindirectOrderCancelRequest request = new AlipayFundExpandindirectOrderCancelRequest();
             request.SetBizModel(model);
-            AlipayFundExpandindirectOrderCancelResponse response = alipayClient.Execute(request);
+            AlipayFundExpandindirectOrderCancelResponse response = alipayClient.CertificateExecute(request);
             logger.LogInformation($"缁撴灉锛歿response.ToJson()}");
             return response;
         }
diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCommandHandler.cs
index dd51658..710425b 100644
--- a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCommandHandler.cs
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/AlipayFundExpandindirectCommandHandler.cs
@@ -20,7 +20,6 @@
     /// 鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠�
     /// </summary>
     public class AlipayFundExpandindirectCommandHandler(
-            IOptions<AlipayOptions> options,
             AlipayUtils alipayUtils,
             IHttpRemoteService httpRemoteService,
             IRepository<AlipayFundExpandindirectOrder> rep
@@ -30,7 +29,6 @@
         IRequestHandler<AlipayFundExpandindirectOrderCancelCommand, Guid>,
         IRequestHandler<AlipayFundExpandindirectCreateNotifyCommand, Guid>
     {
-        private readonly IOptions<AlipayOptions> options = options;
         private readonly AlipayUtils alipayUtils = alipayUtils;
         private readonly IHttpRemoteService httpRemoteService = httpRemoteService;
         private readonly IRepository<AlipayFundExpandindirectOrder> rep = rep;
@@ -83,7 +81,7 @@
             secondaryPartnerInfo.Name = entity.Name;
             secondaryPartnerInfo.IdentityType = entity.IdentityType;
             model.SecondaryPartnerInfo = secondaryPartnerInfo;
-            var result = alipayUtils.FundExpandindirectCreate(model, $"{options.Value.NotifyUrl}/api/user/enterpriseWallet/alipayFundExpandindirectCreateNotify");
+            var result = alipayUtils.FundExpandindirectCreate(model, $"/api/user/enterpriseWallet/alipayFundExpandindirectCreateNotify");
             if (result.IsError)
             {
                 entity.RiskReviewRemark = result.Msg;
@@ -115,7 +113,7 @@
                 {
                     ProductCode = request.ProductCode,
                     BizScene = request.BizScene,
-                    ImageType = Path.GetExtension(request.File.FileName),
+                    ImageType = Path.GetExtension(request.File.FileName).Trim('.').ToLower(),
                     ImageContent = new Aop.Api.Util.FileItem(request.File.FileName, bytes)
                 });
                 if (result.IsError) throw Oops.Oh(EnumErrorCodeType.s510, result.Msg);
diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
new file mode 100644
index 0000000..5fd388d
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/EnterpriseWalletCommandHandler.cs
@@ -0,0 +1,122 @@
+锘縰sing Aop.Api.Domain;
+using Azure;
+using FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.DistributedIDGenerator;
+using Furion.FriendlyException;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.UserServer.Application
+{
+    /// <summary>
+    /// 浼佷笟閽卞寘鍛戒护澶勭悊鍣�
+    /// </summary>
+    public class EnterpriseWalletCommandHandler(
+            IRepository<EnterpriseWallet> rep,
+            IRepository<Enterprise> repEnterprise,
+            AlipayUtils alipayUtils
+        ) :
+        IRequestHandler<OpenEnterpriseWalletCommand, OpenEnterpriseWalletCommandResult>,
+        IRequestHandler<CloseEnterpriseWalletCommand, Guid>
+    {
+        private readonly IRepository<EnterpriseWallet> rep = rep;
+        private readonly IRepository<Enterprise> repEnterprise = repEnterprise;
+        private readonly AlipayUtils alipayUtils = alipayUtils;
+
+        /// <summary>
+        /// 寮�閫氫紒涓氶挶鍖�
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<OpenEnterpriseWalletCommandResult> Handle(OpenEnterpriseWalletCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var enterprise = await repEnterprise.AsQueryable().AsNoTracking()
+                .Where(it => it.Id == logier.EnterpriseId)
+                .FirstOrDefaultAsync();
+            if (enterprise == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟");
+            if (!enterprise.IsReal) throw Oops.Oh(EnumErrorCodeType.s510, "璇峰厛瀹炲悕");
+            var entity = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == request.Access)
+                .FirstOrDefaultAsync();
+            if (entity == null)
+            {
+                entity = new EnterpriseWallet();
+                entity.EnterpriseId = logier.EnterpriseId!.Value;
+                entity.Access = EnumEnterpriseWalletAccess.Alipay;
+                entity.PersonalProductCode = "FUND_SAFT_SIGN_WITHHOLDING_P";
+                entity.SignScene = "INDUSTRY|SATF_ACC";
+                entity.ThirdPartyType = "PARTNER";
+                entity.ProductCode = "FUND_SAFT_SIGN_WITHHOLDING";
+                entity.SignStatus = EnumEnterpriseWalletSignStatus.Apply;
+                await SetCode(entity);
+                await rep.InsertAsync(entity);
+            }
+            else
+            {
+                if (entity.SignStatus == EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "宸茬绾�");
+                entity.SignStatus = EnumEnterpriseWalletSignStatus.Apply;
+                await rep.UpdateAsync(entity);
+            }
+            var model = new AlipayUserAgreementPageSignModel();
+            model.ExternalLogonId = enterprise.Id.ToString();
+            model.PersonalProductCode = entity.PersonalProductCode;
+            model.SignScene = entity.SignScene;
+            model.ExternalAgreementNo = entity.Code;
+            model.ThirdPartyType = entity.ThirdPartyType;
+            model.ProductCode = entity.ProductCode;
+            model.AccessParams = new AccessParams
+            {
+                Channel = "QRCODE"
+            };
+            var response = alipayUtils.UserAgreementPageSign(model, $"/api/user/enterpriseWallet/getAlipayUserAgreementPageSignNotify");
+            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+            var result = new OpenEnterpriseWalletCommandResult();
+            result.SignUrl =  response.PageRedirectionData;
+            return result;
+        }
+
+        /// <summary>
+        /// 鍏抽棴浼佷笟閽卞寘
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<Guid> Handle(CloseEnterpriseWalletCommand request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var entity = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == request.Access)
+                .FirstOrDefaultAsync();
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘");
+            if (entity.SignStatus != EnumEnterpriseWalletSignStatus.Normal) throw Oops.Oh(EnumErrorCodeType.s510, "鏈绾�");
+            var response = alipayUtils.UserAgreementUnsign(new AlipayUserAgreementUnsignModel
+            {
+                ExternalAgreementNo = entity.Code,
+                PersonalProductCode = entity.PersonalProductCode,
+                SignScene = entity.SignScene
+            });
+            if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+            entity.SignStatus = EnumEnterpriseWalletSignStatus.Stop;
+            return entity.Id;
+        }
+
+        private async Task SetCode(EnterpriseWallet entity)
+        {
+            entity.Code = $"{DateTime.Now:yyyyMMddHHmmss}{new Random(IDGen.NextID().GetHashCode()).Next(1000, 9999)}";
+            var exist = await rep.AsQueryable().AsNoTracking()
+                .AnyAsync(it => it.Code == entity.Code);
+            if (exist)
+            {
+                await SetCode(entity);
+            }
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs
new file mode 100644
index 0000000..b34a4c8
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Commands/GetAlipayNotifyCommandHandler.cs
@@ -0,0 +1,28 @@
+锘縰sing FlexJobApi.Core;
+using MediatR;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.UserServer.Application
+{
+    /// <summary>
+    /// 鏀粯瀹濋�氱煡鍥炰紶
+    /// </summary>
+    public class GetAlipayNotifyCommandHandler :
+        IRequestHandler<GetAlipayNotifyCommand, bool>
+    {
+        /// <summary>
+        /// 鏀粯瀹濋�氱煡鍥炰紶
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public Task<bool> Handle(GetAlipayNotifyCommand request, CancellationToken cancellationToken)
+        {
+            return Task.FromResult(true);
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs b/FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs
new file mode 100644
index 0000000..140759f
--- /dev/null
+++ b/FlexJobApi.UserServer.Application/EnterpriseWallets/Queries/EnterpriseWalletQueryHandler.cs
@@ -0,0 +1,73 @@
+锘縰sing FlexJobApi.Core;
+using Furion.DatabaseAccessor;
+using Furion.FriendlyException;
+using Mapster;
+using MediatR;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace FlexJobApi.UserServer.Application
+{
+    /// <summary>
+    /// 浼佷笟閽卞寘鏌ヨ澶勭悊鍣�
+    /// </summary>
+    public class EnterpriseWalletQueryHandler(
+            IRepository<EnterpriseWallet> rep,
+            AlipayUtils alipayUtils
+        ) :
+        IRequestHandler<GetEnterpriseWalletQuery, GetEnterpriseWalletQueryResult>
+    {
+        private readonly IRepository<EnterpriseWallet> rep = rep;
+        private readonly AlipayUtils alipayUtils = alipayUtils;
+
+        /// <summary>
+        /// 鏌ヨ浼佷笟閽卞寘璇︽儏
+        /// </summary>
+        /// <param name="request"></param>
+        /// <param name="cancellationToken"></param>
+        /// <returns></returns>
+        public async Task<GetEnterpriseWalletQueryResult> Handle(GetEnterpriseWalletQuery request, CancellationToken cancellationToken)
+        {
+            var logier = JwtUtils.GetCurrentLogier();
+            var entity = await rep.AsQueryable()
+                .Where(it => it.EnterpriseId == logier.EnterpriseId && it.Access == request.Access)
+                .FirstOrDefaultAsync();
+            if (entity == null) throw Oops.Oh(EnumErrorCodeType.s404, "浼佷笟閽卞寘");
+            if (entity.SignStatus == EnumEnterpriseWalletSignStatus.Apply)
+            {
+                var response = alipayUtils.UserAgreementQuery(new Aop.Api.Domain.AlipayUserAgreementQueryModel
+                {
+                    PersonalProductCode = entity.PersonalProductCode,
+                    SignScene = entity.SignScene,
+                    ExternalAgreementNo = entity.Code,
+                    ThirdPartyType = entity.ThirdPartyType,
+                });
+                if (response.IsError) throw Oops.Oh(EnumErrorCodeType.s510, response.SubMsg ?? response.Msg);
+                entity.AgreementNo = response.AgreementNo;
+                entity.SignTime = response.SignTime.ToDateTime();
+                entity.ValidTime = response.ValidTime.ToDateTime();
+                entity.InvalidTime = response.InvalidTime.ToDateTime();
+                entity.SignStatus = response.Status == "TEMP"
+                    ? EnumEnterpriseWalletSignStatus.Apply
+                    : response.Status == "NORMAL"
+                    ? EnumEnterpriseWalletSignStatus.Normal
+                    : response.Status == "STOP"
+                    ? EnumEnterpriseWalletSignStatus.Stop
+                    : throw Oops.Oh(EnumErrorCodeType.s510, "鐘舵�佸紓甯�");
+                entity.PricipalType = response.PricipalType;
+                entity.AlipayLogonId = response.AlipayLogonId;
+                entity.PrincipalId = response.PrincipalId;
+                entity.PrincipalOpenId = response.PrincipalOpenId;
+                entity.ZmOpenId = response.ZmOpenId;
+                entity.CreditAuthMode = response.CreditAuthMode;
+                await rep.UpdateAsync(entity);
+            }
+            var model = entity.Adapt<GetEnterpriseWalletQueryResult>();
+            return model;
+        }
+    }
+}
diff --git a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
index 318a418..583e338 100644
--- a/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
+++ b/FlexJobApi.UserServer.Application/FlexJobApi.UserServer.Application.xml
@@ -569,7 +569,7 @@
             鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠�
             </summary>
         </member>
-        <member name="M:FlexJobApi.UserServer.Application.AlipayFundExpandindirectCommandHandler.#ctor(Microsoft.Extensions.Options.IOptions{FlexJobApi.Core.AlipayOptions},FlexJobApi.Core.AlipayUtils,Furion.HttpRemote.IHttpRemoteService,Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.AlipayFundExpandindirectOrder})">
+        <member name="M:FlexJobApi.UserServer.Application.AlipayFundExpandindirectCommandHandler.#ctor(FlexJobApi.Core.AlipayUtils,Furion.HttpRemote.IHttpRemoteService,Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.AlipayFundExpandindirectOrder})">
             <summary>
             鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠�
             </summary>
@@ -607,6 +607,45 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.UserServer.Application.EnterpriseWalletCommandHandler">
+            <summary>
+            浼佷笟閽卞寘鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWallet},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.Enterprise},FlexJobApi.Core.AlipayUtils)">
+            <summary>
+            浼佷笟閽卞寘鍛戒护澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletCommandHandler.Handle(FlexJobApi.Core.OpenEnterpriseWalletCommand,System.Threading.CancellationToken)">
+            <summary>
+            寮�閫氫紒涓氶挶鍖�
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletCommandHandler.Handle(FlexJobApi.Core.CloseEnterpriseWalletCommand,System.Threading.CancellationToken)">
+            <summary>
+            鍏抽棴浼佷笟閽卞寘
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
+        <member name="T:FlexJobApi.UserServer.Application.GetAlipayNotifyCommandHandler">
+            <summary>
+            鏀粯瀹濋�氱煡鍥炰紶
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.GetAlipayNotifyCommandHandler.Handle(FlexJobApi.Core.GetAlipayNotifyCommand,System.Threading.CancellationToken)">
+            <summary>
+            鏀粯瀹濋�氱煡鍥炰紶
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="T:FlexJobApi.UserServer.Application.AlipayFundExpandindirectQueryHandler">
             <summary>
             鏌ヨ鏀粯瀹濊祫閲戜簩绾у晢鎴稫YB浠h繘浠跺崟璇︽儏
@@ -638,6 +677,24 @@
             <param name="cancellationToken"></param>
             <returns></returns>
         </member>
+        <member name="T:FlexJobApi.UserServer.Application.EnterpriseWalletQueryHandler">
+            <summary>
+            浼佷笟閽卞寘鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletQueryHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.EnterpriseWallet},FlexJobApi.Core.AlipayUtils)">
+            <summary>
+            浼佷笟閽卞寘鏌ヨ澶勭悊鍣�
+            </summary>
+        </member>
+        <member name="M:FlexJobApi.UserServer.Application.EnterpriseWalletQueryHandler.Handle(FlexJobApi.Core.GetEnterpriseWalletQuery,System.Threading.CancellationToken)">
+            <summary>
+            鏌ヨ浼佷笟閽卞寘璇︽儏
+            </summary>
+            <param name="request"></param>
+            <param name="cancellationToken"></param>
+            <returns></returns>
+        </member>
         <member name="F:FlexJobApi.UserServer.Application.EnumUserErrorCodeType.u1000">
             <summary>
             璐﹀彿鎴栧瘑鐮佷笉瀛樺湪
diff --git a/FlexJobApi.Web.Entry/appsettings.json b/FlexJobApi.Web.Entry/appsettings.json
index e55df62..6383c3b 100644
--- a/FlexJobApi.Web.Entry/appsettings.json
+++ b/FlexJobApi.Web.Entry/appsettings.json
@@ -56,7 +56,7 @@
     "SignType": "RSA2",
     "AppCertPath": "AlipayCert/appCertPublicKey_2021004171602214.crt",
     "AlipayPublicCertPath": "AlipayCert/alipayCertPublicKey_RSA2.crt",
-    "RootCertContent": "AlipayCert/alipayRootCert.crt",
+    "RootCertPath": "AlipayCert/alipayRootCert.crt",
     "NotifyUrl": "https://testfj.81812333.com",
     "EncryptKey": "jjy8A7hB/1Bkhg+8FtXyyg==",
     "AlipayPublicKey": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoDrOheetqHkE1RYaNhogP/iHVXEtGZW4A/JJnwpJs+6eLXfpXf/ecuywplDpgc/BXSUEnDaktUwceLXO8vdIf8h0y8yqWwYdgzC0xELYpTroK3dlNiShgVkUEeMXi+n3Mhjp9OVrqieggDI3YGzDBLY4UAWsXCcXnD+r/xIpT8keVMtb/LrUmL5XLvBVcn5MkJTAoeFt18EQXOLFN1+ldpaf9k+iyM2fbgXCc6InNSgHGSHZwhzm9t+cGqNd1ju/nQN9lHwKCDQPMn6cor2lsP1nsEfpHp2vdfNEdccVSRZB/kdtFzXEUpTFznz8+zK2D0Ra+B0G1nSxus9xsD3HmwIDAQAB"

--
Gitblit v1.9.1