|
|
@@ -8,15 +8,11 @@ namespace App\Servers\ESign;
|
|
|
|
|
|
|
|
|
use App\Models\Firm;
|
|
|
+use App\Models\FirmSeal;
|
|
|
use App\Models\Member;
|
|
|
-use App\Models\SignFirm;
|
|
|
-use App\Models\SignMember;
|
|
|
-use App\Models\SignSeal;
|
|
|
-use App\Models\SignSealAuth;
|
|
|
use App\Servers\ESign\comm\EsignHttpHelper;
|
|
|
use App\Servers\ESign\comm\EsignLogHelper;
|
|
|
use App\Servers\ESign\emun\HttpEmun;
|
|
|
-use App\Servers\Firm\FirmServer;
|
|
|
use App\Servers\System\CommonServer;
|
|
|
use App\Servers\System\JobServer;
|
|
|
use App\Servers\System\RedisDataServer;
|
|
|
@@ -244,93 +240,16 @@ class ESignFirmServer
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 记录E签宝审核基本信息
|
|
|
- * @param $data
|
|
|
- * @return array|void
|
|
|
- */
|
|
|
- function setSignFirm($data)
|
|
|
- {
|
|
|
- if(empty($data['orgName'])){
|
|
|
- return ['code'=>0,'msg'=>'暂无企业信息'];
|
|
|
- }
|
|
|
- $firm=Firm::where('firm_name',$data['orgName'])->select(['id','firm_name','status'])->first();
|
|
|
- if(empty($firm)){
|
|
|
- return ['code'=>0,'msg'=>'企业暂未注册'];
|
|
|
- }
|
|
|
- if($data['realnameStatus']==1){
|
|
|
- if($firm->{'status'}!=3){
|
|
|
- $firm->update(['status' => 3]);
|
|
|
- }
|
|
|
- }
|
|
|
- $signFirm=SignFirm::where('firm_id',$firm['id'])->first();
|
|
|
- if(empty($signFirm)){
|
|
|
- SignFirm::create([
|
|
|
- 'firm_id' => $firm['id'],
|
|
|
- 'org_id' => $data['orgId'],
|
|
|
- 'realname_status' => $data['realnameStatus']
|
|
|
- ]);
|
|
|
- }else{
|
|
|
- $signFirm->update(['org_id' => $data['orgId'],'realname_status' => $data['realnameStatus']]);
|
|
|
- }
|
|
|
- //检测系统内部的企业印章信息
|
|
|
- JobServer::creatServer()->createFirmSealJob($firm['id']);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取orgId
|
|
|
- * @param $firmId
|
|
|
- * @return false|mixed
|
|
|
- */
|
|
|
- function getFirmOrgId($firmId)
|
|
|
- {
|
|
|
- $orgId=SignFirm::where('firm_id',$firmId)->value('org_id');
|
|
|
- if(empty($orgId)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- return $orgId;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 获取企业外部签章列表
|
|
|
- * @param $firmId
|
|
|
- * @param $pageNum
|
|
|
- * @return array|string[]
|
|
|
- */
|
|
|
- function orgAuthorizedSealList($firmId,$pageNum=1){
|
|
|
- $orgId=$this->getFirmOrgId($firmId);
|
|
|
- if(empty($orgId)){
|
|
|
- return ['code'=>'0','msg'=>'暂无企业授权信息'];
|
|
|
- }
|
|
|
- $config=$this->config;
|
|
|
- $apiaddr="/v3/seals/org-authorized-seal-list?orgId=".$orgId."&pageNum={$pageNum}&pageSize=20";
|
|
|
- $requestType = HttpEmun::GET;
|
|
|
- //生成签名验签+json体的header
|
|
|
- $signAndBuildSignAndJsonHeader = EsignHttpHelper::signAndBuildSignAndJsonHeader($config['eSignAppId'], $config['eSignAppSecret'], "", $requestType, $apiaddr);
|
|
|
- //发起接口请求头
|
|
|
- //EsignLogHelper::printMsg($signAndBuildSignAndJsonHeader);
|
|
|
- $response = EsignHttpHelper::doCommHttp($config['eSignHost'], $apiaddr, $requestType, $signAndBuildSignAndJsonHeader, "");
|
|
|
- $ret=json_decode($response->getBody(),true);
|
|
|
- if(isset($ret['code']) && $ret['code']==0){
|
|
|
- $this->setSealList($firmId,$ret['data']['seals'],2);
|
|
|
- return ['code'=>'1','msg'=>'ok','data'=>['total'=>$ret['data']['total'],'items'=>$ret['data']['seals']]];
|
|
|
- }else{
|
|
|
- return ['code'=>'0','msg'=>$ret['message']];
|
|
|
- }
|
|
|
- }
|
|
|
|
|
|
/**
|
|
|
* 获取企业内部使用签章列表
|
|
|
* @param $firmId
|
|
|
+ * @param $orgId
|
|
|
* @param $pageNum
|
|
|
* @return array|string[]
|
|
|
*/
|
|
|
- function internalAuthInfo($firmId,$pageNum=1){
|
|
|
- $orgId=$this->getFirmOrgId($firmId);
|
|
|
- if(empty($orgId)){
|
|
|
- return ['code'=>'0','msg'=>'暂无企业授权信息'];
|
|
|
- }
|
|
|
+ function internalAuthInfo($firmId,$orgId,$pageNum=1){
|
|
|
+
|
|
|
$config=$this->config;
|
|
|
$apiaddr="/v3/seals/org-own-seal-list?orgId=".$orgId."&pageNum={$pageNum}&pageSize=20";
|
|
|
$requestType = HttpEmun::GET;
|
|
|
@@ -340,7 +259,8 @@ class ESignFirmServer
|
|
|
$response = EsignHttpHelper::doCommHttp($config['eSignHost'], $apiaddr, $requestType, $signAndBuildSignAndJsonHeader, "");
|
|
|
$ret=json_decode($response->getBody(),true);
|
|
|
if(isset($ret['code']) && $ret['code']==0){
|
|
|
- $this->setSealList($firmId,$ret['data']['seals'],1);
|
|
|
+ //存入签章信息
|
|
|
+ $this->setSealList($firmId,$ret['data']['seals']);
|
|
|
return ['code'=>'1','msg'=>'ok','data'=>['total'=>$ret['data']['total'],'items'=>$ret['data']['seals']]];
|
|
|
}else{
|
|
|
return ['code'=>'0','msg'=>$ret['message']];
|
|
|
@@ -351,24 +271,23 @@ class ESignFirmServer
|
|
|
* 设置企业签章信息
|
|
|
* @param $firmId
|
|
|
* @param $list
|
|
|
- * @param $useType
|
|
|
* @return void
|
|
|
*/
|
|
|
- public function setSealList($firmId,$list,$useType)
|
|
|
+ public function setSealList($firmId,$list)
|
|
|
{
|
|
|
if($list){
|
|
|
foreach ($list as $item){
|
|
|
$sealRow=[
|
|
|
- 'firm_id'=>$firmId,
|
|
|
+ 'firm_id'=>$firmId,
|
|
|
'seal_id'=>$item['sealId'],
|
|
|
'seal_name'=>$item['sealName'],
|
|
|
'seal_type'=>$item['sealBizType'],
|
|
|
+ 'seal_status'=>$item['sealStatus'],
|
|
|
'seal_url'=>$item['sealImageDownloadUrl'],
|
|
|
- 'use_type'=>$useType,
|
|
|
];
|
|
|
- $sealModel=SignSeal::where('firm_id',$firmId)->where('seal_id',$item['sealId'])->first();
|
|
|
+ $sealModel=FirmSeal::where('firm_id',$firmId)->where('seal_id',$item['sealId'])->first();
|
|
|
if(empty($sealModel)){
|
|
|
- $sealModel=SignSeal::create($sealRow);
|
|
|
+ $sealModel=FirmSeal::create($sealRow);
|
|
|
}else{
|
|
|
$sealModel->update($sealRow);
|
|
|
}
|
|
|
@@ -380,36 +299,34 @@ class ESignFirmServer
|
|
|
|
|
|
/**
|
|
|
* 保持印章图片
|
|
|
- * @param SignSeal $signSeal
|
|
|
+ * @param FirmSeal $firmSeal
|
|
|
* @return void
|
|
|
*/
|
|
|
- function setSealImg(SignSeal $signSeal)
|
|
|
+ function setSealImg(FirmSeal $firmSeal)
|
|
|
{
|
|
|
$path=public_path('storage/seal/'.date('Ymd').'/');
|
|
|
if(!is_dir($path)){
|
|
|
mkdir($path,0777,true);
|
|
|
}
|
|
|
- $name=$signSeal['seal_id'].'.png';
|
|
|
- file_put_contents($path.$name,file_get_contents($signSeal['seal_url']));
|
|
|
+ $name=$firmSeal['seal_id'].'.png';
|
|
|
+ file_put_contents($path.$name,file_get_contents($firmSeal['seal_url']));
|
|
|
$url=env('APP_URL').'/storage/seal/'.date('Ymd').'/'.$name;
|
|
|
- $signSeal->update(['seal_url'=>$url]);
|
|
|
+ $firmSeal->update(['seal_url'=>$url]);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 创建企业合同印章
|
|
|
* @param $firmId
|
|
|
+ * @param $orgId
|
|
|
* @return string[]|void
|
|
|
*/
|
|
|
- function createOrgsealsbyTemplate($firmId){
|
|
|
- $sealNum=SignSeal::where('firm_id',$firmId)->where('seal_type','CONTRACT')->count();
|
|
|
+ function createOrgsealsbyTemplate($firmId,$orgId){
|
|
|
+ $sealNum=FirmSeal::where('firm_id',$firmId)->where('seal_type','CONTRACT')->count();
|
|
|
if($sealNum>0){
|
|
|
return ['code'=>'0','msg'=>'合同印章已创建'];
|
|
|
}
|
|
|
- $orgId=$this->getFirmOrgId($firmId);
|
|
|
- if(empty($orgId)){
|
|
|
- return ['code'=>'0','msg'=>'暂无企业授权信息'];
|
|
|
- }
|
|
|
+
|
|
|
$license_number=Firm::where('id',$firmId)->value('license_number');
|
|
|
$config=$this->config;
|
|
|
$apiaddr="/v3/seals/org-seals/create-by-template";
|
|
|
@@ -435,14 +352,14 @@ class ESignFirmServer
|
|
|
$ret=json_decode($response->getBody(),true);
|
|
|
if(isset($ret['code']) && $ret['code']==0){
|
|
|
//realnameStatus 0 - 未实名,1 - 已实名
|
|
|
- SignSeal::create([
|
|
|
+ FirmSeal::create([
|
|
|
'firm_id' => $firmId,
|
|
|
'seal_id' => $ret['data']['sealId'],
|
|
|
'seal_name' => "合同印章",
|
|
|
'seal_type' => 'CONTRACT'
|
|
|
]);
|
|
|
//获取完成印章以后重新拉取一下印章信息
|
|
|
- $this->internalAuthInfo($firmId);
|
|
|
+ $this->internalAuthInfo($firmId,$orgId);
|
|
|
return ['code'=>'1','msg'=>'ok'];
|
|
|
}else{
|
|
|
return ['code'=>'0','msg'=>$ret['message']];
|
|
|
@@ -450,146 +367,6 @@ class ESignFirmServer
|
|
|
}
|
|
|
|
|
|
|
|
|
- /**
|
|
|
- * 查询企业对平台的授权
|
|
|
- * @param $firmId
|
|
|
- * @param $sealKey
|
|
|
- * @return array|string[]
|
|
|
- */
|
|
|
- function selectOrgsealsExternalAuth($firmId,$sealKey)
|
|
|
- {
|
|
|
- $orgId=SignFirm::where('firm_id',$firmId)->value('org_id');
|
|
|
- $sealId=SignSeal::where('id',$sealKey)->value('seal_id');
|
|
|
- $config=$this->config;
|
|
|
- $apiaddr="/v3/seals/org-seals/external-auth?orgId={$orgId}&pageNum=1&pageSize=20&sealId={$sealId}";
|
|
|
- $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){
|
|
|
- $status= $this->setSealAuth($firmId,$sealKey,$ret['data']['sealAuthorizedInfos']);
|
|
|
- if(empty($status)){
|
|
|
- return ['code'=>'0','msg'=>'暂无授权信息'];
|
|
|
- }
|
|
|
- return ['code'=>'1','msg'=>'ok','data'=>['total'=>$ret['data']['total'],'items'=>$ret['data']['sealAuthorizedInfos']]];
|
|
|
- }else{
|
|
|
- return ['code'=>'0','msg'=>$ret['message']];
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function setSealAuth($firmId,$sealKey,$list)
|
|
|
- {
|
|
|
- $status=false;
|
|
|
- if(empty($list)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- $sysOrgId=CommonServer::creatServer()->getConfigValue('sys_org_id');
|
|
|
- if(empty($sysOrgId)){
|
|
|
- return false;
|
|
|
- }
|
|
|
- foreach ($list as $value){
|
|
|
- if($value['authorizedOrgId']==$sysOrgId &&$value['authorizeStatus']==1){
|
|
|
- $seal= SignSeal::where('id',$sealKey)->first();
|
|
|
- if($seal){
|
|
|
- $seal->update(['is_auth' => 1]);
|
|
|
- $member_id=SignMember::where('psnId',$value['authorizerPsnId'])->value('m_id');
|
|
|
- if(empty($member_id)){
|
|
|
- $member_id=0;
|
|
|
- }
|
|
|
- SignSealAuth::create([
|
|
|
- 'firm_id' => $firmId,
|
|
|
- 'seal_id' => $seal->{'seal_id'},
|
|
|
- 'member_id' => $member_id,
|
|
|
- 'end_at' => date('Y-m-d H:i:s',$value['expireTime']/1000),
|
|
|
- 'status' => 1,
|
|
|
- 'url' => '',
|
|
|
- 'auth_biz_id'=>$value['sealAuthBizId']
|
|
|
- ]);
|
|
|
- $status=true;
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- return $status;
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- /**
|
|
|
- * 跨企业授权
|
|
|
- * @param $firmId
|
|
|
- * @param $sealKey
|
|
|
- * @param $memberId
|
|
|
- * @return void
|
|
|
- */
|
|
|
- function orgsealsExternalAuth($firmId,$sealKey,$memberId){
|
|
|
- $authShortUrl=RedisDataServer::creatServer()->getData($firmId.'_sealUrl'.$sealKey);
|
|
|
- if($authShortUrl){
|
|
|
- return ;
|
|
|
- }
|
|
|
- $orgId=SignFirm::where('firm_id',$firmId)->value('org_id');
|
|
|
- $sealId=SignSeal::where('id',$sealKey)->value('seal_id');
|
|
|
- $transactorPsnId=SignMember::where('m_id',$memberId)->where('authType','PSN')->where('psnId','<>','')->orderBy('id','desc')->value('psnId');
|
|
|
- $config=$this->config;
|
|
|
- $apiaddr="/v3/seals/org-seals/external-auth";
|
|
|
- $requestType = HttpEmun::POST;
|
|
|
- $firm_name=CommonServer::creatServer()->getConfigValue('firm_name');
|
|
|
- $license_number=CommonServer::creatServer()->getConfigValue('license_number');
|
|
|
- //生成签名验签+json体的header
|
|
|
- $data=[
|
|
|
- "orgId"=>$orgId,
|
|
|
- "sealId"=>$sealId,//机构印章名称(用户自定义,且名称不可重复)
|
|
|
- "transactorPsnId"=>$transactorPsnId,
|
|
|
- "authorizedOrgInfo"=>[
|
|
|
- "orgName"=>$firm_name,
|
|
|
- "orgIDCardNum"=>$license_number
|
|
|
- ],
|
|
|
- "effectiveTime"=>time() * 1000,//授权生效时间(Unix 时间戳格式,单位:毫秒),示例中获取的当前时间为授权日期
|
|
|
- "expireTime"=>strtotime("+365 day",time()) * 1000,//授权失效时间(Unix时间戳格式,单位:毫秒)示例中获取授权有效期为1年
|
|
|
-
|
|
|
- ];
|
|
|
- dump($data);
|
|
|
- $paramStr = json_encode($data);
|
|
|
- //请求参数
|
|
|
- EsignLogHelper::printMsg($paramStr);
|
|
|
- $signAndBuildSignAndJsonHeader = EsignHttpHelper::signAndBuildSignAndJsonHeader($config['eSignAppId'], $config['eSignAppSecret'], $paramStr, $requestType, $apiaddr);
|
|
|
-//发起接口请求
|
|
|
- //发起接口请求头
|
|
|
- //EsignLogHelper::printMsg($signAndBuildSignAndJsonHeader);
|
|
|
- $response = EsignHttpHelper::doCommHttp($config['eSignHost'], $apiaddr, $requestType, $signAndBuildSignAndJsonHeader, $paramStr);
|
|
|
- EsignLogHelper::printMsg($response->getStatus());
|
|
|
- $data=json_decode($response->getBody(),true);
|
|
|
- if($data['code']===0){
|
|
|
- $authShortUrl=RedisDataServer::creatServer()->getData($firmId.'_sealUrl'.$sealKey);
|
|
|
- if($authShortUrl){
|
|
|
- return ;
|
|
|
- }
|
|
|
- $authNum=SignSealAuth::where('firm_id',$firmId)->where('seal_id',$sealId)->where('member_id',$memberId)->where('created_at','>=',date('Y-m-d H:i:s',time()-600))->count();
|
|
|
- if($authNum<=0){
|
|
|
- RedisDataServer::creatServer()->setData($firmId.'_sealUrl'.$sealKey,$data['data']['authorizationSignShortUrl'],'str',600);
|
|
|
- $member=Member::where('id',$memberId)->select(['phone','promissory_name'])->first();
|
|
|
- $content='尊敬的'.$member['promissory_name'].',您有待签署印章授权,点击签署 '.$data['data']['authorizationSignShortUrl'];
|
|
|
- SmsServer::creatServer()->sendContent($member['phone'],$content);
|
|
|
- SignSealAuth::create([
|
|
|
- 'firm_id'=>$firmId,
|
|
|
- 'seal_id'=>$sealId,
|
|
|
- 'member_id'=>$memberId,
|
|
|
- 'end_at'=>date('Y-m-d H:i;s',strtotime("+365 day",time())),
|
|
|
- 'status'=>0,
|
|
|
- 'url'=>$data['data']['authorizationSignShortUrl'],
|
|
|
- 'auth_biz_id'=>$data['data']['sealAuthBizId'],
|
|
|
- ]);
|
|
|
- }
|
|
|
- EsignLogHelper::printMsg("跨企业授权接口调用成功");
|
|
|
- EsignLogHelper::printMsg($response->getBody());
|
|
|
- }else{
|
|
|
- EsignLogHelper::printMsg($response->getBody());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
/**
|
|
|
* 添加企业机构成员
|
|
|
* @param $orgId
|