input(); if ($data){ $billingModels= BillingModel::orderBy('id', 'DESC'); if ($request->input('carrier_id')){ $billingModels=$billingModels->where('carrier_id',$request->input('carrier_id')); } if ($request->input('province_id')){ $billingModels=$billingModels->where('province_id',$request->input('province_id')); } $billingModels=$billingModels->paginate($request->input('paginate')?$request->input('paginate'):50); return view('waybill.billingModel.index',['billingModels'=>$billingModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]); }else{ $billingModels= BillingModel::paginate(50); return view('waybill.billingModel.index',['billingModels'=>$billingModels,'carriers'=>$carriers,'provinces'=>$provinces,'filterData'=>$data]); } } public function create() { if(!Gate::allows('计费模型-录入')){ return redirect(url('/')); } $carriers=Carrier::get(); $provinces=Province::get(); $units=Unit::get(); return view('waybill.billingModel.create',['carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units]); } public function getCities($province_id){ $cities=City::where('province_id',$province_id)->get(); return ['cities'=>$cities]; } public function store(Request $request) { if(!Gate::allows('计费模型-录入')){ return redirect(url('/')); } $this->validateBillingModel($request)->validate(); $billingModel=$request->input('BillingModel'); $billingModelIs=BillingModel::where('carrier_id',$billingModel['carrier_id'])->where('province_id',$billingModel['province_id'])->where('unit_id',$billingModel['unit_id']); if (isset($billingModel['city_id'])){ $billingModelIs=$billingModelIs->where('city_id',$billingModel['city_id']); } if (isset($billingModel['range_min'])){ $billingModelIs=$billingModelIs->where('range_min',$billingModel['range_min']); } if (isset($billingModel['range_max'])){ $billingModelIs=$billingModelIs->where('range_max',$billingModel['range_max']); } $billingModelIs=$billingModelIs->first(); if (!$billingModelIs){ if (isset($billingModel['city_id'])){ $billingModelProvince=BillingModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NULL',[$billingModel['carrier_id'],$billingModel['province_id']])->first(); if ($billingModelProvince){ return redirect()->back()->with('successTip','已存在省份模型,无需录入城市模型'); } }else{ $billingModelProvince=BillingModel::whereRaw('carrier_id = ? AND province_id = ? AND city_id IS NOT NULL',[$billingModel['carrier_id'],$billingModel['province_id']])->first(); if ($billingModelProvince){ return redirect()->back()->with('successTip','已存在城市模型,无法录入省份模型'); } } $waybillPriceModel=BillingModel::create($billingModel); event(new WaybillPriceModelEvent($waybillPriceModel)); $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return redirect('billingModel')->with('successTip','新计费模型录入成功'); }else{ return redirect()->back()->with('successTip','该计费模型已存在'); } } public function edit($id) { if(!Gate::allows('计费模型-编辑')){ return redirect(url('/')); } $billingModel=BillingModel::find($id); $carriers=Carrier::get(); $provinces=Province::get(); $cities=City::where('province_id',$billingModel->province_id)->get(); $units=Unit::get(); return view('waybill.billingModel.edit',['billingModel'=>$billingModel,'carriers'=>$carriers,'provinces'=>$provinces,'units'=>$units,'cities'=>$cities]); } public function update(Request $request, $id) { if(!Gate::allows('计费模型-编辑')){ return redirect(url('/')); } $this->validateBillingModel($request)->validate(); $billingModel=BillingModel::find($id); $billingModel->fill($request->input('BillingModel')); if ($billingModel->save()){ event(new WaybillPriceModelEvent($billingModel)); $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']); return redirect('billingModel')->with('successTip','新计费模型修改成功'); } } public function destroy($id) { if(!Gate::allows('计费模型-删除')){ return redirect(url('/')); } $billingModel=BillingModel::find($id); $this->log(__METHOD__,__FUNCTION__,json_encode($billingModel),Auth::user()['id']); $result=$billingModel->delete(); return ['success'=>$result]; } public function import(Request $request){ if(!Gate::allows('计费模型-录入')){ return redirect(url('/')); } $fileSuffix=$request->file('file')->getClientOriginalExtension(); if ($fileSuffix=='xlsx'||$fileSuffix=='xlsm'||$fileSuffix=='xltx'||$fileSuffix=='xltm'||$fileSuffix=='xls'||$fileSuffix=='xlt'||$fileSuffix=='ods'||$fileSuffix=='ots'||$fileSuffix=='slk' ||$fileSuffix=='xml'||$fileSuffix=='gnumeric'||$fileSuffix=='htm'||$fileSuffix=='html'||$fileSuffix=='csv'||$fileSuffix=='tsv'){ $isOverride = $request->input('isOverride'); ini_set('max_execution_time',2100); ini_set('memory_limit','512M'); $extension=$request->file()['file']->getClientOriginalExtension(); $extension[0] = strtoupper($extension[0]); Excel::import(new BillingModelsImport($isOverride),$request->file()['file']->path(),null,$extension); if (Cache::has('error')){ return '
'.Cache::pull('error').'
'; }else{ $exception=Cache::get('exception'); $a=''; for ($i=0;$i不支持该文件类型
'; } } protected function validateBillingModel(Request $request){ $min = $request->input('BillingModel.range_min'); $validator= Validator::make($request->input(),[ 'BillingModel.province_id'=>'required|integer', 'BillingModel.carrier_id'=>'required|integer', 'BillingModel.unit_id'=>'required|integer', 'BillingModel.city_id'=>'nullable|Integer', 'BillingModel.range_min'=> 'nullable|min:0|numeric', 'BillingModel.range_max'=> "nullable|min:{$min}|numeric", 'BillingModel.unit_price'=>'required|min:0|numeric', 'BillingModel.base_fee'=>'nullable|min:0|numeric', 'BillingModel.initial_weight'=>'nullable|min:0|numeric', ],[ 'required'=>':attribute 为必填项', 'min' =>':attribute 数值过小', 'max' => ':attribute 数值过大', 'numeric' =>':attribute 应为数字', 'integer'=> ':attribute 选择错误', ],[ 'BillingModel.province_id'=>'省份', 'BillingModel.carrier_id'=>'承运商', 'BillingModel.unit_id'=>'计重单位', 'BillingModel.city_id'=>'城市', 'BillingModel.range_min'=>'价格区间最小值', 'BillingModel.range_max'=>'价格区间最大值', 'BillingModel.unit_price'=>'单价', 'BillingModel.base_fee'=>'起步费', 'BillingModel.initial_weight'=>'始重', ]); return $validator; } }