diff --git a/app/adminapi/controller/contract/ContractController.php b/app/adminapi/controller/contract/ContractController.php index 8314a1c4..a4f42d9e 100644 --- a/app/adminapi/controller/contract/ContractController.php +++ b/app/adminapi/controller/contract/ContractController.php @@ -10,6 +10,8 @@ use app\common\model\platform\Platform; class ContractController extends BaseAdminController { + private $domain = 'https://worker-task.lihaink.cn'; +// private $domain = 'http://www.task.local'; public function initiatingContract() { //获取参数 $params = $this->request->post(['id']); @@ -18,18 +20,16 @@ class ContractController extends BaseAdminController } //获取数据 $contract = Contract::where('id',$params['id'])->find(); - if(!$contract || $contract->isEmpty()){ + if(empty($contract)){ return $this->fail('数据不存在'); } if($contract['status'] != 1){ return $this->fail('合同状态错误'); } - //获取平台公司 - $platform = Platform::find(1); $signData = [ - 'name' => $platform['company_name'] . '的合同', + 'name' => $contract['company_a_name'] . '的合同', 'signatories' => [ - ['fullName' => $platform['company_name'], 'identityType' => 12, 'identityCard' => $platform['company_organization_code'], 'email' => $platform['company_email'], 'noNeedVerify' => 1, 'signLevel' => 1], + ['fullName' => $contract['company_a_name'], 'identityType' => 12, 'identityCard' => $contract['company_a_code'], 'email' => $contract['company_a_email'], 'noNeedVerify' => 1, 'signLevel' => 1], ['fullName' => $contract['company_b_name'], 'identityType' => 12, 'identityCard' => $contract['company_b_code'], 'email' => $contract['company_b_email'], 'noNeedVerify' => 1, 'signLevel' => 1] ], 'url' => $contract['file'] @@ -43,7 +43,7 @@ class ContractController extends BaseAdminController ]); $this->sendSms($params['id']); $newData = Contract::where('id', $params['id'])->find(); - curl_post('https://worker-task.lihaink.cn/api/index/notifyVehicleContractUpdate',[],[ + curl_post($this->domain.'/api/index/notifyVehicleContractUpdate',[],[ 'contract_logistic_id' => $contract['id'], 'contract_no' => $signRes->data, 'url' => $newData['url'], @@ -58,7 +58,7 @@ class ContractController extends BaseAdminController public function sendSms($id) { //获取合同数据 $contract = Contract::where('id',$id)->find(); - if ($contract && !$contract->isEmpty() && $contract['file'] != '') { + if (!empty($contract) && $contract['file'] != '') { //发送短信 $data = [ //甲方 @@ -134,16 +134,22 @@ class ContractController extends BaseAdminController $data = Contract::where($where) ->page($pageNo, $pageSize) ->order('create_time desc') - ->select(); + ->select()->each(function($item){ + $item['cars_info'] = json_decode($item['cars_info'],true); + }); return $this->success('success',['lists'=>$data->toArray(),'page_no'=>$pageNo,'page_size'=>$pageSize,'count'=>$data->count()]); } public function detail() { + //获取参数 $id = $this->request->get('id'); - if(empty($id)){ - $this->fail('参数错误'); + if(empty($id)) { + return $this->fail('参数错误'); } $data = Contract::where('id',$id)->find(); + if(empty($data)){ + return $this->fail('没找到数据'); + } $data['cars_info'] = json_decode($data['cars_info'],true); return $this->success('success',$data->toArray()); } diff --git a/app/api/controller/ContractController.php b/app/api/controller/ContractController.php index 3c21f99a..988ad83f 100644 --- a/app/api/controller/ContractController.php +++ b/app/api/controller/ContractController.php @@ -5,6 +5,7 @@ namespace app\api\controller; use app\common\model\contract\Contract; use app\common\model\platform\Platform; use app\common\model\vehicle\Vehicle; +use think\facade\Db; class ContractController extends BaseApiController { @@ -23,9 +24,8 @@ class ContractController extends BaseApiController } //获取车辆数据 $cars = Vehicle::field('id,license')->where([ - ['type','=',1], - ['status','=',1], - ['is_del','=',1], + ['type','=',0], + ['status','=',0], ])->limit($params['num'])->select(); if($cars->isEmpty() || $cars->count() < $params['num']){ return $this->fail('车辆数量不足'); @@ -50,17 +50,23 @@ class ContractController extends BaseApiController 'create_time' => time(), 'update_time' => time(), ]; - //写入数据 - $result = Contract::create($data); - //更改车辆状态 - $carStatus = Vehicle::where('id','in',array_column($cars->toArray(),'id'))->update(['status'=>2,'update_time'=>time()]); - //返回 - if($result->id && $carStatus) { - $data['contract_logistic_id'] = $result->id; - $data['type'] = 0; - return $this->success('合同发起成功,等待审核',$data); - }else{ - return $this->fail('请求失败'); + Db::startTrans(); + try { + $res1 = Contract::create($data); + $res2 = Vehicle::where('id','in',array_column($cars->toArray(),'id'))->update(['status'=>1,'update_time'=>time()]); + if($res1->id && $res2){ + $data['contract_logistic_id'] = $res1->id; + $data['type'] = 0; + Db::commit(); + return $this->success('合同发起成功,等待审核',$data); + }else{ + Db::rollback(); + return $this->fail('合同发起失败,请稍后重试'); + } + } catch (\Exception $e) { + // 回滚事务 + Db::rollback(); + return $this->fail($e->getMessage()); } } diff --git a/app/api/controller/HetongController.php b/app/api/controller/HetongController.php index ec61a852..533dc490 100644 --- a/app/api/controller/HetongController.php +++ b/app/api/controller/HetongController.php @@ -10,19 +10,15 @@ class HetongController extends BaseApiController public function url() { - $id = Request()->get('id'); - $type = Request()->get('type'); - $msg='合同不存在'; - if(empty($type) || empty($id)){ - $msg='参数错误'; + $params = $this->request->get(['id','type']); + if(empty($params['id']) || empty($params['type'])){ + return $this->fail('缺少必要参数'); } - if ($id && $type) { - $find = Contract::where('id', $id)->find(); - if ($find && $find['url']) { - $url = json_decode($find['url'], true); - if(isset($url[$type])){ - return redirect($url[$type]); - } + $find = Contract::where('id', $params['id'])->find(); + if (!empty($find) && $find['url']) { + $url = json_decode($find['url'], true); + if(isset($url[$params['type']])){ + return redirect($url[$params['type']]); } } return '

:)

'.$msg.'

'; diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index 11f7d1fb..8845358e 100755 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -33,6 +33,9 @@ class IndexController extends BaseApiController public array $notNeedLogin = ['index', 'config', 'policy', 'decorate','notifyUrl']; + private $domain = 'https://worker-task.lihaink.cn'; +// private $domain = 'http://www.task.local'; + /** * @notes 首页数据 @@ -101,22 +104,28 @@ class IndexController extends BaseApiController } //获取合同数据 $contract = Contract::where('id',$params['id'])->find(); - if(!$contract || $contract->isEmpty()){ + if(empty($contract)){ return json(['success' => false, 'msg' => '参数错误']); } - $carIds = implode(',',array_column(json_decode($contract['cars_info']),'id')); + if($contract['status'] != 2){ + return json(['success' => false, 'msg' => '合同状态错误']); + } + $vehicle = json_decode($contract['cars_info'],true); if ($contract['signing_timer'] == 0) { - Contract::where('id',$params['id'])->update(['signing_timer'=>1]); - curl_post('https://worker-task.lihaink.cn/api/index/notifyVehicleContractUpdate',[],[ + //更新本地合同状态 + Contract::where('id',$contract['id'])->update(['signing_timer'=>1]); + //更新远程 + curl_post($this->domain.'/api/index/notifyVehicleContractUpdate',[],[ 'contract_logistic_id' => $contract['id'], 'signing_timer' => 1, ]); }else if($contract['signing_timer'] == 1) { + //更新本地合同状态 Contract::where('id',$params['id'])->update(['signing_timer'=>2,'status'=>3]); - Vehicle::where('id','in',$carIds)->update(['status'=>3]); - $cars = json_decode($contract['cars_info'],true); + //更新远程 + Vehicle::where('id','in',array_column($vehicle,'id'))->update(['status'=>3]); $data = []; - foreach($cars as $v){ + foreach($vehicle as $v){ $data[] = [ 'car_id' => $v['id'], 'company_id' => $contract['company_b_id'], @@ -125,15 +134,16 @@ class IndexController extends BaseApiController 'company_phone' => $contract['company_b_phone'], ]; } - VehicleRent::saveAll($data); - curl_post('https://worker-task.lihaink.cn/api/index/notifyVehicleContractUpdate',[],[ + $vehicleRent = new VehicleRent(); + $vehicleRent -> saveAll($data); + curl_post($this->domain.'/api/index/notifyVehicleContractUpdate',[],[ 'contract_logistic_id' => $contract['id'], 'signing_timer' => 2, 'status' => 3 ]); - curl_post('https://worker-task.lihaink.cn/v1/notify_property',[],[ + curl_post($this->domain.'/api/v1/notify_property',[],[ 'company_id' => $contract['company_b_id'], - 'object_id' => $carIds + 'object_id' => implode(',',array_column($vehicle,'id')) ]); } return json(['success' => true, 'msg' => '成功']); diff --git a/app/api/controller/JunziqianController.php b/app/api/controller/JunziqianController.php index c2fcab30..e8cb7a0a 100644 --- a/app/api/controller/JunziqianController.php +++ b/app/api/controller/JunziqianController.php @@ -26,6 +26,9 @@ class JunziqianController extends BaseApiController private $encryMethod; /**默认ts单位:1毫秒,2秒*/ private $tsType; + + private $domain = 'http://logistics.lihaink.cn'; + /** * 填充签名数据 * @param $req array @@ -135,7 +138,7 @@ class JunziqianController extends BaseApiController $request->serverCa = 1; //是否需要服务端云证书 $request->fileType = 1; //合同上传方式 url $request->url = $data['url']; - $request->notifyUrl = 'http://logistics.lihaink.cn/api/index/notifyUrl?id='.$id; + $request->notifyUrl = $this->domain.'/api/index/notifyUrl?id='.$id; $request->needQifengSign = 1; //发起PING请求 // halt($request); diff --git a/app/api/route/app.php b/app/api/route/app.php index 74c363a8..22be2638 100755 --- a/app/api/route/app.php +++ b/app/api/route/app.php @@ -32,4 +32,6 @@ Route::rule('createRentCarUser','Contract/createRentCarUser','post'); /*-------------------------------------------------------------------------------------------*/ Route::rule('signContract','Contract/signContract','post'); -Route::rule('updateContract','Contract/updateContract','post'); \ No newline at end of file +Route::rule('updateContract','Contract/updateContract','post'); + +Route::rule('hetong/url','Hetong/url','get'); \ No newline at end of file