diff --git a/app/adminapi/controller/CompanyController.php b/app/adminapi/controller/CompanyController.php index cf526a44b..390009a4d 100644 --- a/app/adminapi/controller/CompanyController.php +++ b/app/adminapi/controller/CompanyController.php @@ -193,13 +193,23 @@ 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); if ($res->success == true) { - Db::name('company')->where('id', $params['id'])->update(['master_email' => $res->data,'is_authentication'=>1]); - return $this->success('认证成功',[],1, 1); - // return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); + $email = substr(uniqid(),2,5).$res->data; + // 企业人脸上传 +// $company['master_email'] = $email; // 法人邮箱 +// $faceCreateRe = CompanyLogic::originationFaceCreate($company); +// if ($faceCreateRe !== true) { +// return $this->fail($faceCreateRe); +// } + // 修改法人邮箱 + Db::name('company')->where('id', $params['id'])->update(['master_email' => $email]); +// return $this->success('认证成功',[],1, 1); + return $this->success('系统认证中,请稍后刷新页面查看', ['email' => $res->data], 1, 1); } else { return $this->fail($res->msg); } @@ -220,6 +230,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) { @@ -236,33 +248,17 @@ class CompanyController extends BaseAdminController { $params = (new CompanyValidate())->goCheck('detail'); $company = Db::name('company')->where('id', $params['id'])->find(); - // 公司数据合法性校验 - $this->companyCheck($company); - - $data = [ - 'company_name' => $company['company_name'], - 'organization_code' => $company['organization_code'], - 'master_name' => $company['master_name'], - 'master_id_card' => $company['master_id_card'], - 'master_email' => $company['master_email'], - 'master_phone' => $company['master_phone'], - 'id' => $company['id'], - ]; - $res = app(JunziqianController::class)->organizationFaceCreate($data); - if ($res->success == true && !empty($res->data)) { - return $this->success('成功',["faceCreateUrl"=>$res->data],1, 1); + $re = CompanyLogic::originationFaceCreate($company); + if ($re === true) { + return $this->success('成功',[],1, 1); } else { - return $this->fail($res->msg); + return $this->fail($re); } - } private function companyCheck($company) { if (empty($company)) { return $this->fail("公司不存在"); } - if (empty($company['master_face'])) { - return $this->fail("未上传主联系人头像信息,无法上传企业人脸"); - } if(empty($company['master_id_card'])) { return $this->fail("主联系人证件号为空,无法上传企业人脸"); } diff --git a/app/adminapi/controller/contract/VehicleContractController.php b/app/adminapi/controller/contract/VehicleContractController.php index 796cb08c9..92cf31c9e 100644 --- a/app/adminapi/controller/contract/VehicleContractController.php +++ b/app/adminapi/controller/contract/VehicleContractController.php @@ -12,15 +12,24 @@ class VehicleContractController extends BaseAdminController //风控中心上传合同 public function uploadContract() { //获取参数 - $params = $this->request->post(['id','file']); + $params = $this->request->post(['id','file','cars']); if(empty($params['id']) || empty($params['file'])){ return $this->fail('缺少必要参数'); } //获取合同信息 - $vehicle_contract = VehicleContract::where('id',$params['id'])->find(); - if(empty($vehicle_contract)){ + $vehicle_contract = VehicleContract::where('id',$params['id'])->findOrEmpty(); + if($vehicle_contract->isEmpty()){ return $this->fail('合同信息错误'); } + if($vehicle_contract['type']==0 && $vehicle_contract['contract_logistic_id'] != 0){ + if(empty($params['cars'])){ + return $this->fail('缺少必要参数cars'); + } + $cars = json_decode($params['cars'],true); + if(empty($cars)){ + return $this->fail('参数cars无效'); + } + } if($vehicle_contract['status'] != 0){ return $this->fail('合同状态错误'); } @@ -29,13 +38,23 @@ class VehicleContractController extends BaseAdminController //判断合同类型 if(!empty($vehicle_contract['contract_logistic_id'])){ //更新物流系统 - curl_post(env('project.logistic_domain').'/api/updateContract',[],[ + curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[ 'id' => $vehicle_contract['contract_logistic_id'], 'file' => $params['file'], - 'status' => 1 + 'status' => 1, + 'cars_info' => $params['cars'] ]); + VehicleContract::where('id', $params['id'])->update(['file' => $params['file'],'cars_info' => $params['cars'],'status'=>1]); + }else{ + //更新物流系统 + curl_post(env('project.logistic_domain').'/api/contractUpdate',[],[ + 'id' => $vehicle_contract['contract_logistic_id'], + 'file' => $params['file'], + 'status' => 1, + ]); + VehicleContract::where('id', $params['id'])->update(['file' => $params['file'],'status'=>1]); } - VehicleContract::where('id', $params['id'])->update(['file' => $params['file'],'status'=>1]); + }catch (\Exception $e){ return $this->fail($e->getMessage()); } @@ -131,8 +150,8 @@ class VehicleContractController extends BaseAdminController return $this->fail('缺少必要参数'); } //获取数据 - $contract = VehicleContract::where('id',$params['id'])->find(); - if(empty($contract)){ + $contract = VehicleContract::where('id',$params['id'])->findOrEmpty(); + if($contract->isEmpty()){ return $this->fail('数据不存在'); } if($contract['status'] != 1){ @@ -162,8 +181,8 @@ class VehicleContractController extends BaseAdminController public function sendSms($id,$title) { //获取合同数据 - $contract = VehicleContract::where('id',$id)->find(); - if ($contract && !$contract->isEmpty() && $contract['file'] != '') { + $contract = VehicleContract::where('id',$id)->findOrEmpty(); + if (!$contract->isEmpty() && $contract['file'] != '') { //发送短信 $data = [ //甲方 @@ -227,8 +246,18 @@ class VehicleContractController extends BaseAdminController if(empty($id)){ $this->fail('参数错误'); } - $data = VehicleContract::where('id',$id)->find(); - $data['cars_info'] = json_decode($data['cars_info'],true); + $data = VehicleContract::where('id',$id)->findOrEmpty(); + if($data->isEmpty()){ + return $this->fail('未查找到数据'); + } + //判断合同类型 + if($data['type'] == 0 && $data['contract_logistic_id'] != 0){ + //获取平台车辆 + $carList = curl_get(env('project.logistic_domain').'/api/getAvailableVehicles'); + $data['car_list'] = $carList&&$carList['code']==1 ? $carList['data'] : []; + }else{ + $data['cars_info'] = json_decode($data['cars_info'],true); + } return $this->success('success',$data->toArray()); } } \ No newline at end of file diff --git a/app/api/controller/HetongController.php b/app/api/controller/HetongController.php index 2edb83109..15f4354a5 100644 --- a/app/api/controller/HetongController.php +++ b/app/api/controller/HetongController.php @@ -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 '

:)

'; } + + // 用户做人脸识别时,作跳板的短信链接 + 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 '

:)

'.$msg.'

'; + } } diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index a514e1c88..175601280 100755 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -250,6 +250,7 @@ class IndexController extends BaseApiController $vehicle = json_decode($contract['cars_info'], true); $curl_res = curl_post(env('project.logistic_domain').'/api/addSelfCar', [], [ 'license' => $vehicle['license'], + 'pic' => $vehicle['pic'], 'company_id' => $contract['company_a_id'], 'company_name' => $contract['company_a_name'], 'company_user' => $contract['company_a_user'], @@ -428,8 +429,12 @@ class IndexController extends BaseApiController try { if ($parmas) { $data=json_decode($parmas['data'],true); + if($data['status']==1){ + Company::where('id', $parmas['id'])->update(['is_authentication' => 1]); + } if($data['status']==2){ - Company::where('id', $parmas['id'])->update(['is_authentication' => 2]); + // 记录认证失败原因 + Db::name('company_authentication_fail_log')->insert(['company_id'=>$parmas['id'],'fail_reason'=>$data['msg']]); } return json(['success' => true, 'msg' => '成功']); } diff --git a/app/api/controller/JunziqianController.php b/app/api/controller/JunziqianController.php index f913747a2..e8f4a3fcc 100644 --- a/app/api/controller/JunziqianController.php +++ b/app/api/controller/JunziqianController.php @@ -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首页 diff --git a/app/api/controller/TaskController.php b/app/api/controller/TaskController.php index 1178731e8..c962d1b28 100644 --- a/app/api/controller/TaskController.php +++ b/app/api/controller/TaskController.php @@ -67,7 +67,7 @@ class TaskController extends BaseApiController $find['transaction_pool']=$transaction_pool; } $res[$k]['extend']['transaction'] = $find; - Task::where('id',$item['id'])->update(['extend'=>json_encode(['transaction'=>$find],true)]); + // Task::where('id',$item['id'])->update(['extend'=>json_encode(['transaction'=>$find],true)]); } else { $res[$k]['extend']['transaction'] = ''; } diff --git a/app/api/controller/VehicleController.php b/app/api/controller/VehicleController.php index a94fd58a2..df7f43db4 100644 --- a/app/api/controller/VehicleController.php +++ b/app/api/controller/VehicleController.php @@ -33,6 +33,14 @@ class VehicleController extends BaseApiController if($params['num'] > $doubleRentCar ){ return $this->fail('数量超过可再租车辆数'); } + //判断物流车辆 + $checkNum = curl_post(env('project.logistic_domain').'/api/checkCarNum',[],['num'=>$params['num']]); + if($checkNum == null){ + return $this->fail('检查车辆数量错误'); + } + if($checkNum['code'] == 0){ + return $this->fail($checkNum['msg']); + } //查找乙方公司信息 $party_b = Company::field('id,company_name,organization_code,master_name,master_phone,master_email,company_type')->where('id',$this->userInfo['company_id'])->find(); if(empty($party_b)) { @@ -196,7 +204,15 @@ class VehicleController extends BaseApiController return $this->fail('请求类型错误'); } //获取参数 - $license = $this->request->post('license'); + $params = $this->request->post(['type','license','pic']); + if(!isset($params['type'])){ + return $this->fail('缺少必要参数'); + } + if($params['type'] == 1){ + if(empty($params['license']) || empty($params['pic'])){ + return $this->fail('缺少必要参数'); + } + } //获取当前公司信息 $party_b = Company::field('id,company_name,master_name,master_phone,master_email,is_contract,organization_code,company_type')->where('id',$this->userInfo['company_id'])->find(); if(empty($party_b)){ @@ -225,6 +241,13 @@ class VehicleController extends BaseApiController if(!empty($vehicleContract)){ return $this->fail('请勿重复申请'); } + if($params['type'] == 1){ + $cars_info = json_encode(['license'=>$params['license'],'pic'=>$params['pic']]); + $car_type = 1; + }else{ + $cars_info = null; + $car_type = 0; + } //设置数据 $data = [ 'contract_logistic_id' => 0, @@ -241,9 +264,9 @@ class VehicleController extends BaseApiController 'company_b_user' => $party_b['master_name'], 'company_b_phone' => $party_b['master_phone'], 'company_b_email' => $party_b['master_email'], - 'cars_info' => isset($license) ? json_encode(['license'=>$license]) : null, + 'cars_info' => $cars_info, 'num' => 1, - 'type' => isset($license) ? 1 : 0, + 'type' => $car_type, 'status' => -1, 'create_time' => time(), 'update_time' => time() diff --git a/app/common/enum/notice/NoticeEnum.php b/app/common/enum/notice/NoticeEnum.php index 646d37451..7f8069370 100755 --- a/app/common/enum/notice/NoticeEnum.php +++ b/app/common/enum/notice/NoticeEnum.php @@ -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] ?? ''; } diff --git a/app/common/logic/CompanyLogic.php b/app/common/logic/CompanyLogic.php index 3904e3691..00680cd6e 100644 --- a/app/common/logic/CompanyLogic.php +++ b/app/common/logic/CompanyLogic.php @@ -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,58 @@ 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'], + ]; + + // 公司数据合法性校验 + $checkCompany = self::companyCheck($organizationFaceCreateData); + if ($checkCompany !== true){ + return $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) { + return SmsLogic::getError(); + } + } else { + return $res->msg; + } + return true; + } + 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 +208,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('手机号已存在'); diff --git a/app/common/logic/task/TaskLogic.php b/app/common/logic/task/TaskLogic.php index acbb1771b..2bcac52da 100644 --- a/app/common/logic/task/TaskLogic.php +++ b/app/common/logic/task/TaskLogic.php @@ -76,14 +76,14 @@ class TaskLogic extends BaseLogic try { $v['day_count']=$v['day_count']+1; if ($v['types'] == 3) { - return true; - // $task = Task::where('template_id', $v['id'])->find(); - // if ($task) { - // Task::where('template_id', $v['id'])->update(['start_time' => strtotime($task['start_time']) + 86400, 'end_time' => strtotime($task['end_time']) + 86400]); - // TaskTemplate::where('id', $v['id'])->inc('day_count')->update(); - // return true; - // } + $task = Task::where('template_id', $v['id'])->find(); + if ($task) { + // Task::where('template_id', $v['id'])->update(['start_time' => strtotime($task['start_time']) + 86400, 'end_time' => strtotime($task['end_time']) + 86400]); + // TaskTemplate::where('id', $v['id'])->inc('day_count')->update(); + return true; + } } + $v['day_count']=$v['day_count']+1; $time = strtotime(date('Y-m-d')); $TaskSchedulingPlan_data = [ 'create_user_id' => 0,