panghu пре 1 година
родитељ
комит
6269f8f4aa

+ 28 - 0
app/Http/Controllers/AdminApi/SignContractController.php

@@ -154,4 +154,32 @@ class SignContractController extends AdminController
         }
         return $this->apiResponseSuccess('保存成功');
     }
+
+    /**
+     * 下载合同
+     * @return \Illuminate\Http\JsonResponse
+     */
+    function downloadContract()
+    {
+        $contract_id=request()->input('contract_id','');//合同id
+        if(empty($contract_id)){
+            return $this->apiResponseError('请选择合同');
+        }
+
+        //获取合同信息
+        $contract = SignContract::where(['id'=>$contract_id])->first();
+        if (empty($contract)){
+            return $this->apiResponseError('合同不存在');
+        }
+        if ($contract->{'status'} != 2){
+            return $this->apiResponseError('合同未签署完毕');
+        }
+
+        //上传文件到e签宝并获得文件id
+        $result = ESignContractServer::creatServer()->downloadFileUrl($contract->{'flow_id'});
+        if (empty($result)){
+            return $this->apiResponseError('获取失败');
+        }
+        return $this->apiResponseSuccess('成功',$result);
+    }
 }

+ 17 - 0
app/Servers/ESign/ESignContractServer.php

@@ -413,4 +413,21 @@ class ESignContractServer
         EsignLogHelper::printMsg("**********获取合同文件签署链接调用结束**********");
         return  $url;
     }
+
+    function downloadFileUrl($flow_id)
+    {
+        $config=$this->config;
+        $apiaddr="/v3/sign-flow/{$flow_id}/file-download-url";
+        $requestType = HttpEmun::GET;
+        //生成签名验签+json体的header
+        $signAndBuildSignAndJsonHeader = EsignHttpHelper::signAndBuildSignAndJsonHeader($config['eSignAppId'], $config['eSignAppSecret'], "", $requestType, $apiaddr);
+        //发起接口请求
+        $response = EsignHttpHelper::doCommHttp($config['eSignHost'], $apiaddr, $requestType, $signAndBuildSignAndJsonHeader, "");
+        $ret=json_decode($response->getBody(),true);
+        if(isset($ret['code']) && $ret['code']==0){
+            return $ret['data'];
+        }else{
+            return 0;
+        }
+    }
 }

+ 1 - 0
routes/adminApi/signContract.php

@@ -10,6 +10,7 @@ Route::group( ['domain' => env('APP_ADMIN_HOST'), 'prefix' => 'signContract'],fu
     Route::match(['get','post'],'member', 'SignContractController@getMemberList')->name('adminApi.signContract.member'); //
     Route::match(['get','post'],'create', 'SignContractController@createSignContract')->name('adminApi.signContract.create'); //
     Route::match(['get','post'],'list', 'SignContractController@getSignContractList')->name('adminApi.signContract.list'); //
+    Route::match(['get','post'],'download', 'SignContractController@downloadContract')->name('adminApi.signContract.download'); //
 
 });