From cd7bf5c06c1233b9dc761ab18d68fbe1e001d110 Mon Sep 17 00:00:00 2001 From: unknown <736250432@qq.com> Date: Wed, 23 Aug 2023 15:29:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=A7=9F=E8=B5=81=E5=90=88?= =?UTF-8?q?=E5=90=8C=E7=AD=BE=E8=AE=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/controller/VehicleController.php | 34 ++++++++++- app/api/logic/VehicleLogic.php | 57 +++++++++++++++++++ app/api/route/app.php | 3 +- app/common.php | 3 +- .../model/vehicle/VehicleRentRecord.php | 32 +++++++++++ 5 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 app/common/model/vehicle/VehicleRentRecord.php diff --git a/app/api/controller/VehicleController.php b/app/api/controller/VehicleController.php index a7331fbf..0e38650f 100644 --- a/app/api/controller/VehicleController.php +++ b/app/api/controller/VehicleController.php @@ -11,7 +11,39 @@ use think\response\Json; */ class VehicleController extends BaseApiController { - public array $notNeedLogin = ['tricycle','multipleRent','singleRent']; + public array $notNeedLogin = ['getCompany','setContract','tricycle','multipleRent','singleRent']; + + /* + *获取平台公司接口 + */ + public function getCompany():Json { + $result = VehicleLogic::company(); + if($result['code'] == 1){ + return $this->success($result['msg'],$result['data']); + }else{ + return $this->fail($result['msg']); + } + } + + public function setContract() { + $params = $this->request->post(['party_a','party_b','num','start_time','end_time']); + //验证参数 + if(empty($params['party_a']) || empty($params['party_b']) || empty($params['num']) || empty($params['start_time']) || empty($params['end_time'])){ + return $this->fail('缺少必要的参数'); + } + //验证时间格式 + if(!checkDateIsValid($params['start_time']) || !checkDateIsValid($params['end_time'])){ + return $this->fail('时间格式错误'); + } + //生成数据 + $result = VehicleLogic::rentRecord($params); + //返回数据 + if($result['code'] == 1){ + return $this->success($result['msg']); + }else{ + return $this->fail($result['msg']); + } + } /* * 获取去未出租的三轮车列表 diff --git a/app/api/logic/VehicleLogic.php b/app/api/logic/VehicleLogic.php index 4c7871e1..b55258e8 100644 --- a/app/api/logic/VehicleLogic.php +++ b/app/api/logic/VehicleLogic.php @@ -19,6 +19,7 @@ use app\common\logic\BaseLogic; use app\common\model\vehicle\Company; use app\common\model\vehicle\Vehicle; use app\common\model\vehicle\VehicleRent; +use app\common\model\vehicle\VehicleRentRecord; /** @@ -126,4 +127,60 @@ class VehicleLogic extends BaseLogic return ['code'=>0,'msg'=>$e->getMessage()]; } } + + public static function company() { + $data = Company::field('id,company_name')->where('company_name',30)->select(); + if($data){ + return ['code'=>1,'msg'=>'请求成功','data'=>$data->toArray()]; + }else{ + return ['code'=>0,'msg'=>'请求失败']; + } + } + + public static function rentRecord($params):array { + //获取数据 + $cars = Vehicle::field('id')->where('status',0)->where('type',0)->limit($params['num'])->select(); + if(!$cars || $cars->count() < $params['num']){ + return ['code'=>0,'msg'=>'车辆数量不足']; + } + $ids = array_column($cars->toArray(),'id'); + $ids = implode(',',$ids); + //发起合同 + VehicleRentRecord::startTrans(); + try { + //获取token https://worker-task.lihaink.cn + $getToken = curl_post('https://worker-task.lihaink.cn/adminapi/login/account',[],['account'=>'admin','password'=>'123456','terminal'=>1]); + if($getToken['code'] == 0){ + return ['code'=>0,'msg'=>'获取token失败']; + } + //发起合同 + $setContract = curl_post('https://worker-task.lihaink.cn/adminapi/company/initiate_contract',[ + 'token:'.$getToken['data']['token'] + ],[ + 'id' => $params['party_b'], + 'party_a' => $params['party_a'], + 'contract_type' => 29 + ]); + if($setContract['code'] == 0){ + return ['code'=>0,'msg'=>$setContract['msg']]; + } + //写入数据 + $res = VehicleRentRecord::create([ + 'car_ids' => $ids, + 'contract_id' => $setContract['data']['id'], + 'party_a' => $params['party_a'], + 'party_b' => $params['party_b'], + 'start_time' => $params['start_time'], + 'end_time' => $params['end_time'], + 'status' => 1, + 'create_time' => time(), + 'update_time' => time(), + ]); + VehicleRentRecord::commit(); + return ['code'=>1,'msg'=>'发起成功,等待平台风控部上传合同']; + }catch(\Exception $e) { + VehicleRentRecord::rollback(); + return ['code'=>0,'msg'=>$e->getMessage()]; + } + } } diff --git a/app/api/route/app.php b/app/api/route/app.php index a072a9c8..058b085f 100755 --- a/app/api/route/app.php +++ b/app/api/route/app.php @@ -31,6 +31,7 @@ Route::rule('getCarHistory','Gps/getCarHistory','get'); /*-------------------------------------------------------------------------------------------*/ -Route::rule('tricycle','Vehicle/tricycle','get'); +Route::rule('getCompany','Vehicle/getCompany','get'); +Route::rule('setContract','Vehicle/setContract','post'); Route::rule('multipleRent','Vehicle/multipleRent','post'); Route::rule('singleRent','Vehicle/singleRent','post'); \ No newline at end of file diff --git a/app/common.php b/app/common.php index a6827d99..5bff3f7d 100755 --- a/app/common.php +++ b/app/common.php @@ -307,7 +307,6 @@ function curl_post($url,$headers,$data) { curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置头文件的信息作为数据流输出 curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); @@ -315,6 +314,8 @@ function curl_post($url,$headers,$data) { curl_setopt($ch, CURLOPT_POST, 1); //添加参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + //设置header + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); //关闭请求资源 $output = curl_exec($ch); curl_close($ch); diff --git a/app/common/model/vehicle/VehicleRentRecord.php b/app/common/model/vehicle/VehicleRentRecord.php new file mode 100644 index 00000000..a43d4ffa --- /dev/null +++ b/app/common/model/vehicle/VehicleRentRecord.php @@ -0,0 +1,32 @@ +