input("record_at_start"); $timeEn = $request->input("record_at_end"); $logisticNumber = $request->input("logistic_number"); $delayed = $request->input("delayed"); if ($timeSt && $timeEn){ $builder->whereBetween("record_at",[$timeSt, $timeEn]); }else{ if ($timeSt)$builder->where("record_at",'>=',$timeSt); if ($timeEn)$builder->where("record_at",'<=',$timeEn); } if ($logisticNumber!==null){ mb_regex_encoding('utf-8'); $par = array_unique(preg_split('/[,, ]+/u', $logisticNumber)); if (count($par)!=1) $builder->whereIn("logistic_number",$par); else $builder->where("logistic_number",'like',$par[0]."%"); } if ($delayed!==null)$builder->where("delayed",$delayed); return $builder; } public function index(Request $request) { if(!Gate::allows('退货管理-记录列表')){ return redirect(url('denied')); } $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"])->orderByDesc("record_at"); $records = $this->query($request,$records); $records = $records->paginate($request->input("paginate",50),['*'],'page',$request->input("page",1)); $status = ReceiveRecord::DELAYED; $paginateParams = $request->input(); return view("rejected.receiveRecord",compact("records","status","paginateParams")); } public function export(Request $request) { if(!Gate::allows('退货管理-记录列表')){ return redirect(url('denied')); } $records = ReceiveRecord::query()->with(["logistic:id,name","warehouse:id,name"]); if ($request->input("checkAllSign",false)){ $records = $this->query($request,$records); }else{ $numbers = explode(",",$request->input("data","")); $records->whereIn("logistic_number",$numbers); } $list = []; foreach ($records->get() as $item){ $list[] = [ $item->warehouse->name ?? "未知", $item->logistic_number, $item->logistic->name ?? '未知', $item->record_at, ReceiveRecord::DELAYED[$item->delayed], ]; } return Export::make(["仓库","快递单号","快递公司","记录时间","延时标记"],$list,"退件记录"); } public function record() { if(!Gate::allows('退货管理-退件记录')){ return redirect(url('denied')); } $warehouses = Warehouse::query()->select("id","name")->get(); $privateKey = file_get_contents(base_path().'/private.pem'); $jwtToken = app("UserService")->getJWTToken(Auth::user(),$privateKey); return view("rejected.record",compact("warehouses","jwtToken")); } public function refreshToken() { $jwtToken = \request()->header("jwtToken"); if (!$jwtToken)$this->error("非法请求"); $publicKey = Cache::remember("TOKEN_PUBLIC_KEY",7200,function (){ return file_get_contents(base_path().'/public.pem'); }); $payload = JWT::decode($jwtToken, $publicKey, ['RS256']); $user = app("UserService")->getOrRefreshCache($payload->data->id,$payload->exp); $privateKey = file_get_contents(base_path().'/private.pem'); $jwtToken = app("UserService")->getJWTToken($user,$privateKey); $this->success($jwtToken); } public function receive() { $jwtToken = \request()->header("jwtToken"); if (!$jwtToken)$this->error("非法请求"); $publicKey = Cache::remember("TOKEN_PUBLIC_KEY",7200,function (){ return file_get_contents(base_path().'/public.pem'); }); try { $payload = JWT::decode($jwtToken, $publicKey, ['RS256']); $user = app("UserService")->getOrRefreshCache($payload->data->id,$payload->exp); if (!$user)throw new ExpiredException(); Auth::setUser($user); }catch (ExpiredException $e){ $this->error("认证过期,请保存当前失败记录刷新页面"); } $this->gate("退货管理-退件记录"); $logisticNumber = \request("logisticNumber"); $warehouse = \request("warehouse"); if (!$logisticNumber || !$warehouse)$this->error("非法单号"); /** @var LogisticService $service */ $service = app("LogisticService"); $name = $service->assertExpressCompany($logisticNumber); if ($name){ $logistic = Logistic::query()->select("id","name")->where("name","like","%{$name}%")->first(); $logisticId = $logistic ? $logistic->id : 0; } else $logisticId = 0; try { $dateTime = now()->toDateTimeString(); ReceiveRecord::query()->create([ "logistic_number" => $logisticNumber, "logistic_id" => $logisticId, "record_at" => $dateTime, "warehouse_id" => $warehouse, "delayed" => 0, ]); $this->success(["recordAt"=>$dateTime,"logistic"=>$logistic->name??"未知"]); }catch(QueryException $qe){ if ($qe->getCode()=='23000')$this->error("unique"); else $this->error("数据异常"); }catch (Exception $e){ $this->error("处理异常"); } } }