From d220c905293f5b7a0c62135b42e8a17574a95456 Mon Sep 17 00:00:00 2001 From: chenbo <709206448@qq.com> Date: Fri, 8 Sep 2023 11:13:27 +0800 Subject: [PATCH] =?UTF-8?q?add:=E4=BC=81=E4=B8=9A=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E6=97=B6=E5=A2=9E=E5=8A=A0=E5=BC=82=E6=AD=A5=E5=9B=9E=E8=B0=83?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E6=A0=87=E8=AE=B0=EF=BC=8C=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E7=9B=91=E5=90=AC=E5=9B=9E=E8=B0=83=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E8=B6=85=E6=97=B6=EF=BC=8C=E8=B6=85=E6=97=B6=E5=88=99?= =?UTF-8?q?=E8=AE=B0=E5=BD=95=E6=97=A5=E5=BF=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/adminapi/controller/CompanyController.php | 5 ++- app/api/controller/IndexController.php | 8 ++++ app/common/logic/CompanyLogic.php | 2 +- app/task/TaskCompanyAuthNotifyCron.php | 41 +++++++++++++++++++ config/cron.php | 5 ++- 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 app/task/TaskCompanyAuthNotifyCron.php diff --git a/app/adminapi/controller/CompanyController.php b/app/adminapi/controller/CompanyController.php index 390009a4d..7a7917689 100644 --- a/app/adminapi/controller/CompanyController.php +++ b/app/adminapi/controller/CompanyController.php @@ -199,7 +199,7 @@ class CompanyController extends BaseAdminController ]; $res = app(JunziqianController::class)->EnterpriseCertification($data); if ($res->success == true) { - $email = substr(uniqid(),2,5).$res->data; + $email = $res->data; // 企业人脸上传 // $company['master_email'] = $email; // 法人邮箱 // $faceCreateRe = CompanyLogic::originationFaceCreate($company); @@ -208,6 +208,9 @@ class CompanyController extends BaseAdminController // } // 修改法人邮箱 Db::name('company')->where('id', $params['id'])->update(['master_email' => $email]); + // 加入缓存中,is_callback用于判断是否获取到异步通知 + $redis = new \Redis(); + $redis->set('authentication_company_id_'.$company['id'], json_encode(['company_id'=>$company['id'],'is_callback'=>0, 'timing'=>time()])); // return $this->success('认证成功',[],1, 1); return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); } else { diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index 175601280..1dc9ad41b 100755 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -429,6 +429,14 @@ class IndexController extends BaseApiController try { if ($parmas) { $data=json_decode($parmas['data'],true); + // 成功回调标记 + $redis = new \Redis(); + $cache = $redis->get('authentication_company_id_'.$parmas['id']); + if (!empty($cache)) { + $data = json_decode($cache, true); + $data['is_callback'] = 1; + $redis->set('authentication_company_id_'.$parmas['id'], json_encode($data)); + } if($data['status']==1){ Company::where('id', $parmas['id'])->update(['is_authentication' => 1]); } diff --git a/app/common/logic/CompanyLogic.php b/app/common/logic/CompanyLogic.php index 00680cd6e..47f544480 100644 --- a/app/common/logic/CompanyLogic.php +++ b/app/common/logic/CompanyLogic.php @@ -151,7 +151,7 @@ class CompanyLogic extends BaseLogic 'organization_code' => $data['organization_code'], 'master_name' => $data['master_name'], 'master_id_card' => $data['master_id_card'], - 'master_email' => $data['master_email'], + 'master_email' => substr(uniqid(),3,5).$data['master_email'], 'master_phone' => $data['master_phone'], 'id' => $data['id'], ]; diff --git a/app/task/TaskCompanyAuthNotifyCron.php b/app/task/TaskCompanyAuthNotifyCron.php new file mode 100644 index 000000000..5b1237f03 --- /dev/null +++ b/app/task/TaskCompanyAuthNotifyCron.php @@ -0,0 +1,41 @@ +<?php + +namespace app\task; + +use app\common\model\Company; +use app\common\model\task\Task as TaskTask; +use think\facade\Log; +use yunwuxin\cron\Task; + +class TaskCompanyAuthNotifyCron extends Task +{ + public function configure() + { + $this->everyMinute(); + // $this->everyMinute(); + } + + /** + * 监听企业认证回调 is_callback=1 表示回调成功 + */ + protected function execute() + { + $redis = new \Redis(); + //...具体的任务执行 + $companyIdList = $redis->keys('authentication_company_id_*'); + foreach ($companyIdList as $key) { + $data = $redis->get($key); + if (!empty($data)) { + $data = json_decode($data, true); + if ($data['is_callback'] == 1) { + $redis->del($key); + } else { + if (time() - $data['timing'] > 300) { + $companyInfo = Company::find(['id' => $data['company_id']]); + Log::info($companyInfo['company_name'].'企业认证回调超时'); + } + } + } + } + } +} \ No newline at end of file diff --git a/config/cron.php b/config/cron.php index b5d298e2a..7df552a6d 100644 --- a/config/cron.php +++ b/config/cron.php @@ -4,8 +4,9 @@ return [ 'tasks' => [ - app\task\TaskCron::class, - app\task\TaskSettlementCron::class, +// app\task\TaskCron::class, +// app\task\TaskSettlementCron::class, // app\task\Ceshi::class, + app\task\TaskCompanyAuthNotifyCron::class, ] ]; \ No newline at end of file