request->post(['num']); //验证参数 if(empty($params['num'])){ return $this->fail('缺少必要参数'); } if(empty($this->userInfo['company_id'])){ return $this->fail('签约公司不存在'); } $params['party_b'] = $this->userInfo['company_id']; $result = VehicleLogic::initiate_contract_logistic($params); //返回数据 if($result && $result['code'] == 1){ return $this->success($result['msg']); }else{ return $this->fail($result['msg']); } } //镇街公司生成小组服务公司租赁合同 public function setContractByVillageCompany(){ //获取参数 $params = $this->request->post(['apply_id','car_id']); if(empty($params['apply_id'])){ return $this->fail('缺少必要参数'); } $apply = VehicleVillageApply::where('id',$params['apply_id'])->find(); if($apply['type'] == 0){ if(empty($params['car_id'])){ return $this->fail('缺少必要参数'); } } if(empty($this->userInfo['company_id'])){ return $this->fail('签约公司不存在'); } $params['party_a'] = $this->userInfo['company_id']; $result = VehicleLogic::initiate_contract_town($params); //返回数据 if($result && $result['code'] == 1){ return $this->success($result['msg']); }else{ return $this->fail($result['msg']); } } //镇街公司发起合同 public function initiatingRentCarContract() { //获取参数 $params = $this->request->post(['id']); if(empty($params['id'])){ return $this->fail('缺少必要参数'); } //获取数据 $contract = VehicleContract::where('id',$params['id'])->find(); if(!$contract || $contract->isEmpty()){ return $this->fail('数据不存在'); } if($contract['status'] != 1){ return $this->fail('合同状态错误'); } $signData = [ 'name' => $contract['company_a_name'] . '的合同', 'signatories' => [ ['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'] ]; $signRes = app(JunziqianController::class)->Signing($signData, $params['id'],'https://worker-task.lihaink.cn/api/notifyVillageCarRent'); if ($signRes->success) { $contract->save([ 'id' => $contract['id'], 'contract_no' => $signRes->data, 'status' => 2 ]); $this->sendSms($params['id']); return $this->success('合同发送成功'); } else { return $this->fail($signRes->msg); } } //小组服务公司租赁申请 public function rentApply() { if(!$this->request->isPost()){ return $this->fail('请求类型错误'); } //获取参数 $params = $this->request->post('license'); //获取当前公司信息 $village_company = Company::field('id,company_name,master_name,master_phone,is_contract,company_type')->where('id',$this->userInfo['company_id'])->find(); if($village_company->isEmpty() || $village_company['company_type'] != 18){ return $this->fail('非小组服务公司不能申请'); } if($village_company['is_contract'] != 1){ return $this->fail('当前小组服务公司未签约'); } //获取签约信息 $contract = Contract::field('party_a')->where('party_b',$this->userInfo['company_id'])->where('signing_timer',2)->find(); if($contract->isEmpty()){ return $this->fail('未找到签约镇街公司'); } //判断是否申请过 $apply = VehicleVillageApply::where('village_company_id',$this->userInfo['company_id'])->where('status','<>',2)->find(); if(!$apply->isEmpty()){ return $this->fail('已申请了,请勿重复申请'); } //设置数据 $result = VehicleVillageApply::create([ 'town_company_id' => $contract['party_a'], 'village_company_id' => $village_company['id'], 'village_company_name' => $village_company['company_name'], 'village_company_user' => $village_company['master_phone'], 'village_company_phone' => $village_company['id'], 'car_license' => !empty($params) ? $params : '', 'type' => !empty($params) ? 1 : 0, 'status' => 0, 'create_time' => time(), 'update_time' => time(), ]); if($result && $result->id){ return $this->success('申请成功'); }else{ return $this->fail('申请失败'); } } //镇街公司驳回小组服务公司的租赁申请 public function rejectRentApply() { //获取参数 $params = $this->request->post(['apply_id','content']); if(empty($params['apply_id']) || empty($params['content'])){ return $this->fail('缺少必要参数'); } //获取数据 $apply = VehicleVillageApply::where('id',$params['apply_id'])->where('status',0)->find(); if($apply->isEmpty()){ return $this->fail('数据错误'); } if($apply['town_company_id'] != $this->userInfo['company_id']){ return $this->fail('镇街公司信息错误'); } //更新 $apply -> status = 2; $apply -> notice = $params['content']; $apply -> update_time = time(); $result = $apply->save(); if($result){ return $this->success('驳回成功'); }else{ return $this->fail('驳回失败'); } } //镇街公司收到的小组服务公司租赁申请列表 public function rentApplyList() { $data = VehicleVillageApply::where('town_company_id',$this->userInfo['company_id'])->where('status',0)->select(); return $this->success('请求成功',$data->toArray()); } //小组服务公司租赁申请详情 public function rentApplyInfo() { //获取参数 $id = $this->request->get('id'); if(empty($id)){ return $this->fail('缺少必要参数'); } $this->userInfo['company_id'] = 177; //获取数据 $data = VehicleVillageApply::where('id',$id)->find(); if($data->isEmpty() || $data['town_company_id'] != $this->userInfo['company_id'] || $data['status'] != 0){ return $this->fail('获取数据失败'); } //获取镇街公司可租赁车辆列表 $cars = VehicleRent::field('id,car_license')->where('company_id',$this->userInfo['company_id'])->where('status',0)->where('type',0)->select(); return $this->success('请求成功',[ 'apply' => $data->toArray(), 'cars' => $cars->toArray() ]); } //镇街公司车辆管理首页 public function vehicleIndex() { //获取参数 $params = $this->request->get(); $company_id = $this->userInfo['company_id']; if(empty($company_id)){ return $this->fail('公司信息不存在'); } //获取小组服务公司申请信息 $apply = VehicleVillageApply::where('town_company_id',$company_id)->where('status',0)->select(); //获取车辆列表 $carList = VehicleRent::where('company_id',$company_id)->select()->each(function($item){ $item['mileage'] = 0; if($item['status'] == 1){ $company = Company::where('id',$item['rent_company_id'])->find()->append(['province_name', 'city_name', 'area_name', 'street_name', 'village_name','brigade_name']); $item['rent_company'] = $company->toArray(); } }); //获取该公司已签约的小组服务公司数量 $villageCompany = Contract::where('party_a',$company_id)->where('signing_timer',2)->select(); //系统车辆数量 $rentCar = VehicleRent::field('id')->where('type',0)->select(); //可租赁车辆 $canRentCar = VehicleRent::field('id')->where('type',0)->where('status',0)->select(); //自有车辆数量 $selfCar = VehicleRent::field('id')->where('type',1)->select(); //设置数据 $data = [ 'apply' => $apply->toArray(), 'car_list' => $carList->toArray(), 'monitor_num' => $villageCompany->count(), 'rent_num' => $rentCar->count(), 'can_rent_num' => $canRentCar->count(), 'self_num' => $selfCar->count(), ]; //返回 return $this->success('请求成功',$data); } //车辆详情 public function vehicleInfo() { //获取参数 $carId = $this->request->get('car_id'); if(empty($carId)){ return $this->fail('缺少必要参数'); } //获取数据 $data = VehicleRent::where('car_id',$carId)->find(); $data['mileage'] = 0; if($data['status'] == 1){ $data['company'] = Company::where('id',$data['rent_company_id'])->find()->append(['province_name', 'city_name', 'area_name', 'street_name', 'village_name','brigade_name']); } //当前坐标位置 $position = curl_post('http://logistics.lihaink.cn/api/getCarLocal',[],['car_id'=>$carId]); if($position && $position['code'] == 1){ $data['position'] = $position['data']; } return $this->success('请求成功',$data->toArray()); } public function vehicleTrack() { //获取参数 $params = $this->request->get(['car_id','start_time','end_time']); if(empty($params['car_id']) || empty($params['start_time']) || empty($params['end_time'])){ return $this->fail('缺少必要参数'); } //获取轨迹 $url = 'http://logistics.lihaink.cn/api/getCarHistory?car_id='.$params['car_id'].'&start_time='.$params['start_time'].'&end_time='.$params['end_time']; $result = curl_get($url); return $result; } //镇街公司合同列表 public function contractList() { $data = VehicleContract::where('company_a_id',$this->userInfo['company_id'])->where('status',0)->select(); return $this->success('success',$data->toArray()); } //镇街公司合同详情 public function contractInfo() { //获取参数 $id = $this->request->get('id'); if(empty($id)){ return $this->fail('缺少必要参数'); } //获取数据 $data = VehicleContract::where('id',$id)->find(); $data['cars_info'] = json_decode($data['cars_info'],true); return $this->success('success',$data->toArray()); } public function sendSms($id) { //获取合同数据 $contract = VehicleContract::where('id',$id)->find(); if ($contract && !$contract->isEmpty() && $contract['file'] != '') { //发送短信 $data = [ //甲方 [ "applyNo" => $contract['contract_no'], "fullName" => $contract['company_a_name'], "identityCard" => $contract['company_a_code'], "identityType" => 12, "master_phone" => $contract['company_a_phone'], "type"=>"party_a" ], //乙方 [ "applyNo" => $contract['contract_no'], "fullName" => $contract['company_b_name'], "identityCard" => $contract['company_b_code'], "identityType" => 12, "master_phone" => $contract['company_b_phone'], "type"=>"party_b" ], ]; $url = []; foreach ($data as $v) { $res = app(JunziqianController::class)->SigningLink($v); if (!$res->success) { return false; } if ($v['type'] == 'party_a') { $url['party_a'] =$res->data; } else { $url['party_b'] =$res->data; } //发送短信 $sms = [ 'mobile' => $v['master_phone'], 'name' => $v['fullName'], 'type' => '《租赁合同》', 'code' => 'api/Hetong/url?id='.$id.'&type='.$v['type'], 'scene' => 'WQTZ' ]; $scene = NoticeEnum::getSceneByTag($sms['scene']); if (empty($scene)) { throw new \Exception('场景值异常'); } event('Notice', [ 'scene_id' => $scene, 'params' => $sms ]); } VehicleContract::where('id', $id)->update(['url' => json_encode($url)]); return true; }else{ return false; } } }