@@ -50,12 +50,23 @@ func (be *BusinessExecutor) ExecuteBusiness(providerName string, executeBusinesT
5050 return fmt .Errorf ("不支持的业务类型: %d" , executeBusinesType )
5151 }
5252
53- case "aliyun" , "qiniu" :
53+ case "aliyun" :
54+ // 阿里云 CAS 与 ESA 业务显式分离,不做自动识别
55+ switch executeBusinesType {
56+ case deployPB .ExecuteBusinesType_EXECUTE_BUSINES_UPLOAD_CERT :
57+ return be .handleAliyunCertificateProvider (domain , remark , cert , key , aliyun .ServiceCAS )
58+ case deployPB .ExecuteBusinesType_EXECUTE_BUSINES_OSS :
59+ return be .handleAliyunCertificateProvider (domain , remark , cert , key , aliyun .ServiceESA )
60+ default :
61+ return fmt .Errorf ("不支持的业务类型: %d" , executeBusinesType )
62+ }
63+
64+ case "qiniu" :
5465 // 上传证书到云服务商
5566 if executeBusinesType != deployPB .ExecuteBusinesType_EXECUTE_BUSINES_UPLOAD_CERT {
5667 return fmt .Errorf ("不支持的业务类型: %d" , executeBusinesType )
5768 }
58- return be .handleCertificateProvider (providerName , remark , cert , key )
69+ return be .handleCertificateProvider (providerName , domain , remark , cert , key )
5970
6071 default :
6172 logger .Warn ("不支持的提供商" , "provider" , providerName )
@@ -144,7 +155,7 @@ func (be *BusinessExecutor) handle1PanelCertificateDeploy(domain, downloadURL st
144155}
145156
146157// handleCertificateProvider 处理证书提供商的上传操作
147- func (be * BusinessExecutor ) handleCertificateProvider (providerName , remark , cert , key string ) error {
158+ func (be * BusinessExecutor ) handleCertificateProvider (providerName , domain , remark , cert , key string ) error {
148159 // 获取 provider 实例
149160 providerHandler , err := be .getProviderHandler (providerName )
150161 if err != nil {
@@ -153,15 +164,51 @@ func (be *BusinessExecutor) handleCertificateProvider(providerName, remark, cert
153164 }
154165
155166 // 上传证书
156- if err := providerHandler .UploadCertificate (remark , cert , key ); err != nil {
167+ if err := providerHandler .UploadCertificate (remark , domain , cert , key ); err != nil {
157168 logger .Error ("上传证书失败" , "provider" , providerName , "error" , err )
158169 return err
159170 }
160171
161- logger .Info ("证书上传成功" , "provider" , providerName , "remark" , remark )
172+ logger .Info ("证书上传成功" , "provider" , providerName , "remark" , remark , "domain" , domain )
173+ return nil
174+ }
175+
176+ // handleAliyunCertificateProvider 处理阿里云证书上传(CAS/ESA 显式分离)
177+ func (be * BusinessExecutor ) handleAliyunCertificateProvider (domain , remark , cert , key , service string ) error {
178+ providerHandler , err := be .getAliyunProvider (service )
179+ if err != nil {
180+ logger .Error ("创建阿里云提供商实例失败" , "service" , service , "error" , err )
181+ return err
182+ }
183+
184+ if err := providerHandler .UploadCertificate (remark , domain , cert , key ); err != nil {
185+ logger .Error ("上传阿里云证书失败" , "service" , service , "error" , err )
186+ return err
187+ }
188+
189+ logger .Info ("阿里云证书上传成功" , "service" , service , "remark" , remark , "domain" , domain )
162190 return nil
163191}
164192
193+ func (be * BusinessExecutor ) getAliyunProvider (service string ) (providers.ProviderHandler , error ) {
194+ providerConfig := config .GetProvider ("aliyun" )
195+ if providerConfig == nil {
196+ return nil , fmt .Errorf ("未配置【阿里云】提供商配置" )
197+ }
198+
199+ accessKeyId := providerConfig .GetAccessKeyId ()
200+ accessKeySecret := providerConfig .GetAccessKeySecret ()
201+ if accessKeyId == "" || accessKeySecret == "" {
202+ return nil , fmt .Errorf ("阿里云配置不完整: accessKeyId 或 accessKeySecret 为空" )
203+ }
204+
205+ options := & aliyun.Options {
206+ Service : service ,
207+ ESASiteID : providerConfig .GetESASiteID (),
208+ }
209+ return aliyun .New (accessKeyId , accessKeySecret , options )
210+ }
211+
165212// getProviderHandler 根据提供商名称获取对应的 handler
166213func (be * BusinessExecutor ) getProviderHandler (providerName string ) (providers.ProviderHandler , error ) {
167214 providerConfig := config .GetProvider (providerName )
@@ -170,14 +217,6 @@ func (be *BusinessExecutor) getProviderHandler(providerName string) (providers.P
170217 }
171218
172219 switch providerName {
173- case "aliyun" :
174- accessKeyId := providerConfig .GetAccessKeyId ()
175- accessKeySecret := providerConfig .GetAccessKeySecret ()
176- if accessKeyId == "" || accessKeySecret == "" {
177- return nil , fmt .Errorf ("阿里云配置不完整: accessKeyId 或 accessKeySecret 为空" )
178- }
179- return aliyun .New (accessKeyId , accessKeySecret )
180-
181220 case "qiniu" :
182221 accessKey := providerConfig .GetAccessKey ()
183222 accessSecret := providerConfig .GetAccessSecret ()
0 commit comments