diff --git a/app/adminapi/controller/contract/VehicleContractController.php b/app/adminapi/controller/contract/VehicleContractController.php index 8e5181937..a7441c1a0 100644 --- a/app/adminapi/controller/contract/VehicleContractController.php +++ b/app/adminapi/controller/contract/VehicleContractController.php @@ -41,7 +41,7 @@ class VehicleContractController extends BaseAdminController 'status' => 1, ]; //判断合同类型 - if($vehicle_contract['type'] == 0){ + if($vehicle_contract['type'] == 0 && $vehicle_contract['contract_logistic_id'] != 0){ $data['cars_info'] = $params['cars']; } if(!empty($vehicle_contract['contract_logistic_id'])){ @@ -158,6 +158,9 @@ class VehicleContractController extends BaseAdminController if($contract['type'] == 0){ $smsTitle = '《租赁合同》'; $notify_url = env('project.website_domain').'/api/index/townCarRent'; + }elseif($contract['type'] == 1){ + $smsTitle = '《自有车辆上传合同》'; + $notify_url = env('project.website_domain').'/api/index/selfCarRent'; }elseif($contract['type'] == 2){ $smsTitle = '《解约合同》'; $notify_url = env('project.website_domain').'/api/index/cancelRent'; diff --git a/app/api/controller/IndexController.php b/app/api/controller/IndexController.php index e0c128272..3d4cc903d 100755 --- a/app/api/controller/IndexController.php +++ b/app/api/controller/IndexController.php @@ -204,14 +204,15 @@ class IndexController extends BaseApiController foreach ($cars as $k => $v) { $hasCar = VehicleRent::where('car_id',$v['id'])->findOrEmpty(); if($hasCar->isEmpty()){ + $data[$k]['contract_id'] = $contract['id']; + $data[$k]['company_id'] = $contract['company_b_id']; $data[$k]['car_id'] = $v['id']; $data[$k]['car_license'] = $v['license']; $data[$k]['type'] = 0; $data[$k]['status'] = 0; - $data[$k]['company_id'] = $contract['company_b_id']; - $data[$k]['rent_time'] = 0; + $data[$k]['rent_contract_id'] = 0; $data[$k]['rent_company_id'] = 0; - $data[$k]['contract_id'] = $contract['id']; + $data[$k]['rent_time'] = 0; $data[$k]['create_time'] = strtotime($contract['create_time']); } } @@ -280,8 +281,9 @@ class IndexController extends BaseApiController $vehicle = json_decode($contract['cars_info'], true); VehicleRent::where('car_id', $vehicle['id'])->update([ 'status' => 2, - 'rent_time' => time(), + 'rent_contract_id' => $contract['id'], 'rent_company_id' => $contract['company_b_id'], + 'rent_time' => time(), ]); $party_b = Company::where('id', $contract['company_b_id'])->find(); //通知物流系统跟新 @@ -291,13 +293,6 @@ class IndexController extends BaseApiController 'use_user_name' => $party_b['master_name'], 'use_user_phone' => $party_b['master_phone'] ]); - CompanyProperty::create([ - 'company_id' => $contract['company_b_id'], - 'object_id' => $vehicle['id'], - 'type' => 1, - 'create_time' => time(), - 'update_time' => time(), - ]); return json(['success' => true, 'msg' => '成功']); } else { return json(['success' => true, 'msg' => '成功']); @@ -365,6 +360,7 @@ class IndexController extends BaseApiController 'car_license' => $vehicle['license'], 'status' => 2, 'rent_time' => time(), + 'rent_contract_id' => $contract['id'], 'rent_company_id' => $contract['company_b_id'], 'create_time' => time(), 'type' => 1 @@ -446,9 +442,94 @@ class IndexController extends BaseApiController $vehicleBuyRecord = VehicleBuyRecord::where('contract_id',$contract['id'])->findOrEmpty(); if(!$vehicleBuyRecord->isEmpty()){ //小组公司与镇街公司解约 - if($vehicleBuyRecord['status'] == 1){} - //镇街公司与平台公司解约 + if($vehicleBuyRecord['status'] == 1){ + //获取租赁车辆信息 + $rentCarsInfo = VehicleRent::where('car_id',$cars_ids[0])->findOrEmpty(); + if($rentCarsInfo['type'] == 0){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->update(['status'=>0,'rent_company_id'=>0,'rent_contract_id'=>0,'rent_time'=>0]); + } + if($rentCarsInfo['type'] == 1){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->delete(); + } + //删除原合同 + VehicleContract::where('id',$rentCarsInfo['rent_contract_id'])->delete(); + //修改物流系统车辆租赁信息 + curl_post(env('project.logistic_domain').'/api/Vehicle/delRentUseInfo', [], [ + 'car_id' => $cars_ids[0] + ]); + //发送购买合同给物流系统 + $curl_result = curl_post(env('project.logistic_domain').'/api/signContract',[],[ + 'num' => $vehicleBuyRecord['num'], + 'company_id' => $vehicleBuyRecord['company_id'], + 'company_name' => $vehicleBuyRecord['company_name'], + 'company_code' => $vehicleBuyRecord['company_code'], + 'company_user' => $vehicleBuyRecord['company_user'], + 'company_phone' => $vehicleBuyRecord['company_phone'], + 'company_email' => $vehicleBuyRecord['company_email'], + 'cars_info' => $vehicleBuyRecord['cars_info'], + 'type' => 3 + ]); + if(empty($curl_result)){ + return $this->fail('null return from logistic'); + } + if($curl_result['code'] == 0){ + return $this->fail($curl_result['msg'].' from logistic'); + } + //生成本地合同 + VehicleContract::create($curl_result['data']); + VehicleBuyRecord::where('id',$vehicleBuyRecord['id'])->update(['status'=>4]); + return json(['success' => true, 'msg' => '成功']); + } + //小组公司与镇街公司解约,然后镇街公司与平台公司解约 if($vehicleBuyRecord['status'] == 2){ + //获取租赁车辆信息 + $rentCarsInfo = VehicleRent::where('car_id',$cars_ids[0])->findOrEmpty(); + //获取镇街公司信息 + $zjCompany = Company::where('id',$rentCarsInfo['company_id'])->findOrEmpty(); + //判断购买车辆中是否包含镇街公司租赁的车辆 + $car_ids = array_column(json_decode($vehicleBuyRecord['cars_info'],true),'id'); + $zjRentCars = VehicleRent::field('car_id as id,car_license as license')->where('company_id',$zjCompany['id'])->where('car_id','in',$car_ids)->where('status',0)->where('type',0)->select(); + if($rentCarsInfo['type'] == 0){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->update(['status'=>0,'rent_company_id'=>0,'rent_contract_id'=>0,'rent_time'=>0]); + } + if($rentCarsInfo['type'] == 1){ + //修改租赁车俩状态 + VehicleRent::where('id',$rentCarsInfo['id'])->delete(); + } + //删除原合同 + VehicleContract::where('id',$rentCarsInfo['rent_contract_id'])->delete(); + //修改物流系统车辆租赁信息 + curl_post(env('project.logistic_domain').'/api/Vehicle/delRentUseInfo', [], [ + 'car_id' => $cars_ids[0] + ]); + //发送镇公司与平台公司的解约合同 + $curl_result = curl_post(env('project.logistic_domain').'/api/signContract',[],[ + 'num' => count($zjRentCars), + 'company_id' => $zjCompany['id'], + 'company_name' => $zjCompany['company_name'], + 'company_code' => $zjCompany['organization_code'], + 'company_user' => $zjCompany['master_name'], + 'company_phone' => $zjCompany['master_phone'], + 'company_email' => $zjCompany['master_email'], + 'cars_info' => json_encode($zjRentCars), + 'type' => 2 + ]); + if(empty($curl_result)){ + return $this->fail('null return from logistic'); + } + if($curl_result['code'] == 0){ + return $this->fail($curl_result['msg'].' from logistic'); + } + //生成本地合同 + VehicleContract::create($curl_result['data']); + VehicleBuyRecord::where('id',$vehicleBuyRecord['id'])->update(['status'=>3]); + return json(['success' => true, 'msg' => '成功']); + } + //镇街公司与平台公司解约 + if($vehicleBuyRecord['status'] == 3){ //删除本地租赁信息 VehicleRent::where('car_id','in',$cars_ids)->delete(); //删除物流系统租赁信息 @@ -475,23 +556,20 @@ class IndexController extends BaseApiController } //生成本地合同 VehicleContract::create($curl_result['data']); - VehicleBuyRecord::where('id',$vehicleBuyRecord['id'])->update(['status'=>3]); + VehicleBuyRecord::where('id',$vehicleBuyRecord['id'])->update(['status'=>4]); return json(['success' => true, 'msg' => '成功']); } }else{ //更改租赁列表车辆状态 $vehicle = json_decode($contract['cars_info'], true); //获取租赁车辆信息 - $vehicleRentInfo = VehicleRent::where('car_id', $vehicle['id'])->find(); + $vehicleRentInfo = VehicleRent::where('car_id', $vehicle[0]['id'])->find(); //更新原始合同类型 - VehicleContract::where('id', $vehicleRentInfo['contract_id'])->update(['status' => 6]); - VehicleRent::where('car_id', $vehicle['id'])->update([ - 'status' => 3, - ]); + VehicleContract::where('id', $vehicleRentInfo['rent_contract_id'])->delete(); + VehicleRent::where('car_id', $vehicle[0]['id'])->delete(); //通知物流系统跟新 - curl_post(env('project.logistic_domain').'/api/cancelRent', [], [ - 'car_id' => $vehicle['id'], - 'status' => 1 + curl_post(env('project.logistic_domain').'/api/Vehicle/delRentUseInfo', [], [ + 'car_id' => $vehicle[0]['id'] ]); return json(['success' => true, 'msg' => '成功']); } diff --git a/app/api/controller/RechargeController.php b/app/api/controller/RechargeController.php index a80090373..3fd840c13 100755 --- a/app/api/controller/RechargeController.php +++ b/app/api/controller/RechargeController.php @@ -39,7 +39,7 @@ class RechargeController extends BaseApiController public function deposit_lists() { $params=$this->request->param(); - $list=CompanyAccountLog::where('company_id',$this->userId)->page($params['page_no'],15)->select(); + $list=CompanyAccountLog::where('company_id',$this->userInfo['company_id'])->page($params['page_no'],15)->select(); $datas=[]; foreach($list as $k=>$v){ $datas[$k]['create_time']=$v['create_time']; diff --git a/app/api/controller/TaskController.php b/app/api/controller/TaskController.php index 11793cad6..d11aca276 100644 --- a/app/api/controller/TaskController.php +++ b/app/api/controller/TaskController.php @@ -26,25 +26,24 @@ class TaskController extends BaseApiController [$page, $limit] = $this->getPage(); $time = strtotime(date('Y-m-d')); $userCompanyInfo = Company::where('id', $this->userInfo['company_id'])->find(); + $where = []; + if ($this->userInfo['admin_id'] != 0) { + $where[] = ['company_id', '=', $this->userInfo['company_id']]; + } if ($userCompanyInfo['company_type'] == 18) { - if ($this->userInfo['admin_id'] != 0) { - $where[] = ['company_id', '=', $this->userInfo['company_id']]; + $is_captain = User::where('id', $this->userId)->value('is_captain'); + if ($is_captain == 1) { + $where[] = ['type', 'in', [31,33]]; } else { - - $is_captain = User::where('id', $this->userId)->value('is_captain'); - if ($is_captain == 1) { - $where[] = ['type', 'in', [31,33]]; - } else { - $where[] = ['type', '=', 33]; - $where[] = ['director_uid', '=', $this->userId]; - } - $where[] = ['company_id', '=', $this->userInfo['company_id']]; + $where[] = ['type', '=', 33]; + $where[] = ['director_uid', '=', $this->userId]; } +// $where[] = ['company_id', '=', $this->userInfo['company_id']]; } if ($userCompanyInfo['company_type'] == 41) { $where[] = ['director_uid', '=', $this->userId]; - $where[] = ['company_id', '=', $this->userInfo['company_id']]; +// $where[] = ['company_id', '=', $this->userInfo['company_id']]; } if (isset($param['date_time']) && $param['date_time'] != '') { $time = strtotime($param['date_time']); diff --git a/app/api/controller/VehicleController.php b/app/api/controller/VehicleController.php index 05bce77d7..5f24547f1 100644 --- a/app/api/controller/VehicleController.php +++ b/app/api/controller/VehicleController.php @@ -199,7 +199,7 @@ class VehicleController extends BaseApiController } //小组服务公司租赁申请 - public function rentApply() { + public function rentApply() { //验证请求类型 if(!$this->request->isPost()){ return $this->fail('请求类型错误'); @@ -243,7 +243,7 @@ class VehicleController extends BaseApiController return $this->fail('请勿重复申请'); } if($params['type'] == 1){ - $cars_info = json_encode(['license'=>$params['license'],'pic'=>$params['pic']]); + $cars_info = json_encode([['license'=>$params['license'],'pic'=>$params['pic']]]); $car_type = 1; }else{ $cars_info = null; @@ -632,6 +632,9 @@ class VehicleController extends BaseApiController $xzRentCars = array_column($xzRentCars,'car_id'); //5、获取平台未出租的车辆 $result = curl_post(env('project.logistic_domain').'/api/Vehicle/getFreeCars',[],['ids'=>implode(',',array_merge($zjRentCars,$xzRentCars))]); + foreach($result['data'] as $k => $v){ + $result['data'][$k]['checked'] = []; + } //6、返回 return $this->success('success',$result['data']); } @@ -685,7 +688,6 @@ class VehicleController extends BaseApiController } //生成本地合同 VehicleContract::create($curl_result['data']); - return $this->success('合同发起成功,等待审核 from task'); } //如果没有租赁车俩和上传自有车辆,但有购买镇街公司租赁的车辆 则发起镇街公司与平台公司的解约合同 if($xzRentCars->isEmpty() && !$zjRentCars->isEmpty()){ @@ -720,26 +722,27 @@ class VehicleController extends BaseApiController 'company_email' => $xzCompany['master_email'], 'cars_info' => json_encode($cars), 'num' => count($cars), - 'status' => 2, + 'status' => 3, 'contract_id' => $res->id, 'create_time' => time() ]); //更改本地车辆状态 VehicleRent::where('car_id','in',$car_ids)->update(['status'=>1]); - return $this->success('合同发起成功,等待审核 from task'); } //如果有租赁车俩和上传自有车辆,但没有购买镇街公司租赁的车辆 则先向镇街公司发起解约合同 if(!$xzRentCars->isEmpty() && $zjRentCars->isEmpty()){ - //获取自有车辆或以租赁车辆信息 + //获取镇街公司信息 + $zjCompanyInfo = Company::field('id,company_name,master_name,master_phone,master_email,organization_code')->where('id',$zjCompany['party_a'])->findOrEmpty(); //生成本地解约合同 - VehicleContract::create([ + $res = VehicleContract::create([ 'contract_no' => time(), 'contract_logistic_id' => 0, - 'company_a_name' => $zjCompany['company_name'], - 'company_a_code' => $zjCompany['organization_code'], - 'company_a_user' => $zjCompany['master_name'], - 'company_a_phone' => $zjCompany['master_phone'], - 'company_a_email' => $zjCompany['master_email'], + 'company_a_id' => $zjCompanyInfo['id'], + 'company_a_name' => $zjCompanyInfo['company_name'], + 'company_a_code' => $zjCompanyInfo['organization_code'], + 'company_a_user' => $zjCompanyInfo['master_name'], + 'company_a_phone' => $zjCompanyInfo['master_phone'], + 'company_a_email' => $zjCompanyInfo['master_email'], 'company_b_id' => $xzCompany['id'], 'company_b_name' => $xzCompany['company_name'], 'company_b_code' => $xzCompany['organization_code'], @@ -747,13 +750,71 @@ class VehicleController extends BaseApiController 'company_b_phone' => $xzCompany['master_phone'], 'company_b_email' => $xzCompany['master_email'], 'num' =>1, - 'cars_info' => json_encode($cars), + 'cars_info' => json_encode([['id'=>$xzRentCars['car_id'],'license'=>$xzRentCars['car_license']]]), 'type' => 2, 'status' => 0, 'create_time' => time(), 'update_time' => time(), ]); - return $this->success('合同发起成功,等待审核 from task'); + //生成关联记录 + VehicleBuyRecord::create([ + 'company_id' => $xzCompany['id'], + 'company_name' => $xzCompany['company_name'], + 'company_code' => $xzCompany['organization_code'], + 'company_user' => $xzCompany['master_name'], + 'company_phone' => $xzCompany['master_phone'], + 'company_email' => $xzCompany['master_email'], + 'cars_info' => json_encode($cars), + 'num' => count($cars), + 'status' => 1, + 'contract_id' => $res->id, + 'create_time' => time() + ]); } + //如果有租赁车俩和上传自有车辆,也有购买镇街公司租赁的车辆 则先向镇街公司发起解约合同,再由镇街公司向平台公司发起解约合同 + if(!$xzRentCars->isEmpty() && !$zjRentCars->isEmpty()){ + //获取镇街公司信息 + $zjCompanyInfo = Company::field('id,company_name,master_name,master_phone,master_email,organization_code')->where('id',$zjCompany['party_a'])->findOrEmpty(); + //生成本地解约合同 + $res = VehicleContract::create([ + 'contract_no' => time(), + 'contract_logistic_id' => 0, + 'company_a_id' => $zjCompanyInfo['id'], + 'company_a_name' => $zjCompanyInfo['company_name'], + 'company_a_code' => $zjCompanyInfo['organization_code'], + 'company_a_user' => $zjCompanyInfo['master_name'], + 'company_a_phone' => $zjCompanyInfo['master_phone'], + 'company_a_email' => $zjCompanyInfo['master_email'], + 'company_b_id' => $xzCompany['id'], + 'company_b_name' => $xzCompany['company_name'], + 'company_b_code' => $xzCompany['organization_code'], + 'company_b_user' => $xzCompany['master_name'], + 'company_b_phone' => $xzCompany['master_phone'], + 'company_b_email' => $xzCompany['master_email'], + 'num' =>1, + 'cars_info' => json_encode([['id'=>$xzRentCars['car_id'],'license'=>$xzRentCars['car_license']]]), + 'type' => 2, + 'status' => 0, + 'create_time' => time(), + 'update_time' => time(), + ]); + //生成关联记录 + VehicleBuyRecord::create([ + 'company_id' => $xzCompany['id'], + 'company_name' => $xzCompany['company_name'], + 'company_code' => $xzCompany['organization_code'], + 'company_user' => $xzCompany['master_name'], + 'company_phone' => $xzCompany['master_phone'], + 'company_email' => $xzCompany['master_email'], + 'cars_info' => json_encode($cars), + 'num' => count($cars), + 'status' => 2, + 'contract_id' => $res->id, + 'create_time' => time() + ]); + } + //更新物流系统 + curl_post(env('project.logistic_domain').'/api/Vehicle/updateVehicleStatusToBuy',[],['car_ids'=>implode(',',$car_ids)]); + return $this->success('合同发起成功,等待审核 from task'); } } \ No newline at end of file