add:1.企业实名认证时加上法人身份证,方便后续签约时可用人脸识别,预留手机号后续可能使用短信验证。2.公司创建时即短信告知公司法人作人脸识别

This commit is contained in:
chenbo 2023-09-07 15:18:57 +08:00
parent 6e8408a490
commit 40121a4603
5 changed files with 92 additions and 8 deletions

View File

@ -193,6 +193,8 @@ class CompanyController extends BaseAdminController
'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png', //$qualification['business_license'],
'master_name' => $company['master_name'],
'master_email' => $company['master_email'],
'master_phone' => $company['master_phone'],
'master_id_card' => $company['master_id_card'],
'id' => $company['id'],
];
$res = app(JunziqianController::class)->EnterpriseCertification($data);
@ -220,6 +222,8 @@ class CompanyController extends BaseAdminController
'business_license' => 'https://lihai001.oss-cn-chengdu.aliyuncs.com/def/561f8202305171526091317.png', //$qualification['business_license'],
'master_name' => $company['master_name'],
'master_email' => $company['master_email'],
'master_phone' => $company['master_phone'],
'master_id_card' => $company['master_id_card'],
];
$res = app(JunziqianController::class)->organizationReapply($data);
if ($res->success == true) {
@ -260,9 +264,6 @@ class CompanyController extends BaseAdminController
if (empty($company)) {
return $this->fail("公司不存在");
}
if (empty($company['master_face'])) {
return $this->fail("未上传主联系人头像信息,无法上传企业人脸");
}
if(empty($company['master_id_card'])) {
return $this->fail("主联系人证件号为空,无法上传企业人脸");
}

View File

@ -19,7 +19,7 @@ class HetongController extends BaseApiController
{
public array $notNeedLogin = ['url','info'];
public array $notNeedLogin = ['url','info', 'toFaceCreate'];
public function url()
{
@ -55,4 +55,20 @@ class HetongController extends BaseApiController
}
return '<style type="text/css"> * { padding: 0; margin: 0; } div { padding: 4px 48px; } a { color: #2E5CD5; cursor: pointer; text-decoration: none } a:hover { text-decoration: underline; } body { background: #fff; font-family: "Century Gothic", "Microsoft yahei"; color: #333; font-size: 18px; } h1 { font-size: 100px; font-weight: normal; margin-bottom: 12px; } p { line-height: 1.6em; font-size: 42px } </style> <div style="padding: 24px 48px;"> <h1>:) </h1> <p></p> </div>';
}
// 用户做人脸识别时,作跳板的短信链接
public function toFaceCreate()
{
$id = Request()->get('id');
$msg='地址不存在';
if ($id) {
$find = Db::name('company')->where('id', $id)->find();
if ($find && $find['face_create_url']) {
return redirect($find['face_create_url']);
} else {
$msg='参数错误';
}
}
return '<style type="text/css"> * { padding: 0; margin: 0; } div { padding: 4px 48px; } a { color: #2E5CD5; cursor: pointer; text-decoration: none } a:hover { text-decoration: underline; } body { background: #fff; font-family: "Century Gothic", "Microsoft yahei"; color: #333; font-size: 18px; } h1 { font-size: 100px; font-weight: normal; margin-bottom: 12px; } p { line-height: 1.6em; font-size: 42px } </style> <div style="padding: 24px 48px;"> <h1>:) </h1> <p>'.$msg.'</p> </div>';
}
}

View File

@ -77,6 +77,8 @@ class JunziqianController extends BaseApiController
$request->organizationRegNo = $data['organization_code'];
$request->organizationRegImg = $data['business_license']; //new CURLFile('D:/tmp/test.png',null,"test.png");
$request->legalName = $data["master_name"]; //法人
$request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
$request->legalMobile = $data["master_phone"]; // 法人手机号 预留 签约时短信验证需要
if (isset($data['master_email'])) {
$request->emailOrMobile = $data['master_email']; //邮箱
}
@ -99,6 +101,8 @@ class JunziqianController extends BaseApiController
$request->organizationRegNo = $data['organization_code'];
$request->organizationRegImg = $data['business_license']; //new CURLFile('D:/tmp/test.png',null,"test.png");
$request->legalName = $data["master_name"]; //法人
$request->legalIdentityCard = $data["master_id_card"]; // 法人身份证 签约时人脸识别需要
$request->legalMobile = $data["master_phone"]; // 法人手机号 预留 短信验证需要
$request->emailOrMobile = $data['master_email']; //邮箱
//发起创建企业请求
$response = $requestUtils->doPost("/v2/user/organizationReapply", $request);
@ -167,7 +171,6 @@ class JunziqianController extends BaseApiController
$request-> legalPersonName = $data['master_name'];
$request-> legalIdentityCard = $data['master_id_card'];//法人证件号
$request-> legalMobile = $data['master_phone'];
$request-> facePerType = 1; // 1代理人
$request-> faceAgantIdenName = $data['master_name'];
$request-> faceAgantIdenCard = $data['master_id_card'];
$request-> backUrl = env('url.url_prefix').'/mobile'; // 做完人脸识别后指定跳转到供销系统mobile首页

View File

@ -40,6 +40,8 @@ class NoticeEnum
const FCHT = 106;
const WQTZ = 107;
const FACE_CREATE = 108;
/**
* 验证码场景
@ -95,6 +97,7 @@ class NoticeEnum
self::WQ => '网签短信',
self::FCHT => '废除合同',
self::WQTZ => '网签通知',
self::FACE_CREATE => '人脸识别上传通知',
];
if ($flag) {
@ -129,6 +132,7 @@ class NoticeEnum
'FCHT'=>self::FCHT,
'WQTZ'=>self::WQTZ,
'FACE_CREATE'=>self::FACE_CREATE,
];
return $scene[$tag] ?? '';
}

View File

@ -59,7 +59,6 @@ class CompanyLogic extends BaseLogic
// 手机号不能重复
$companyInfo = Company::where(['master_phone'=>$params['master_phone']])->find();
if (!empty($companyInfo)) {
Db::rollback();
throw new Exception('手机号已存在');
}
$arr=[
@ -74,7 +73,7 @@ class CompanyLogic extends BaseLogic
'address' => $params['address'],
'company_type' => $params['company_type'],
'master_name' => $params['master_name'],
'master_id_card' => $params['id_card'], // 主联系人证件号
'master_id_card' => $params['id_card'], // 主联系人证件号 todo DDL 新增字段
'master_position' => $params['master_position'],
'master_phone' => $params['master_phone'],
'master_email' => $params['master_email'],
@ -132,6 +131,9 @@ class CompanyLogic extends BaseLogic
'company_type'=>$params['company_type'],
];
TaskScheduling::create($scheduling);
// 企业人脸校验上传
self::originationFaceCreate($data);
Db::commit();
return true;
} catch (\Exception $e) {
@ -141,6 +143,64 @@ class CompanyLogic extends BaseLogic
}
}
public static function originationFaceCreate($data)
{
// 人脸识别校验上传
$organizationFaceCreateData = [
'company_name' => $data['company_name'],
'organization_code' => $data['organization_code'],
'master_name' => $data['master_name'],
'master_id_card' => $data['master_id_card'],
'master_email' => $data['master_email'],
'master_phone' => $data['master_phone'],
'id' => $data['id'],
];
$sms = [
'mobile' => $data['master_phone'],
'name' => $data['master_name'],
'code' => 'api/Hetong/toFaceCreate?id=' . $data['id'],
'scene' => 'FACE_CREATE',
'type' => ''
];
$smsRes = SmsLogic::contractUrl($sms);
// 公司数据合法性校验
$checkCompany = self::companyCheck($organizationFaceCreateData);
if ($checkCompany !== true){
throw new Exception($checkCompany);
}
$res = app(JunziqianController::class)->organizationFaceCreate($data);
if ($res->success == true && !empty($res->data)) {
// 保存人脸识别地址 todo 新增字段的DDL
Company::where('id',$data['id'])->update(['face_create_url'=>$res->data]);
// 发送短信给法人
$sms = [
'mobile' => $data['master_phone'],
'name' => $data['master_name'],
'code' => 'api/Hetong/toFaceCreate?id=' . $data['id'],
'scene' => 'FACE_CREATE',
'type' => ''
];
$smsRes = SmsLogic::contractUrl($sms);
if ($smsRes != true) {
throw new Exception(SmsLogic::getError());
}
} else {
throw new Exception($res->msg);
}
}
private static function companyCheck($company) {
if (empty($company)) {
return self::setError("公司不存在");
}
if(empty($company['master_id_card'])) {
return self::setError("主联系人身份证为空,无法进行人脸识别");
}
if(empty($company['master_email'])) {
return self::setError("主联系人邮箱为空,无法进行人脸识别");
}
return true;
}
/**
* @notes 编辑
@ -154,7 +214,7 @@ class CompanyLogic extends BaseLogic
Db::startTrans();
try {
// 手机号不能重复
$companyInfo = Company::where(['master_phone'=>$params['master_phone']])->find();
$companyInfo = Company::where(['master_phone'=>$params['master_phone']])->where('id','<>',$params['id'])->find();
if (!empty($companyInfo)) {
Db::rollback();
throw new Exception('手机号已存在');