Pārlūkot izejas kodu

验证与异常调用新方法

LD 5 gadi atpakaļ
vecāks
revīzija
b79f471cc7

+ 27 - 9
app/Exceptions/Handler.php

@@ -3,6 +3,7 @@
 namespace App\Exceptions;
 
 use App\Http\Controllers\Controller;
+use App\Services\LogService;
 use Exception;
 use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
 use Illuminate\Http\Exceptions\HttpResponseException;
@@ -56,18 +57,35 @@ class Handler extends ExceptionHandler
     public function render($request, Throwable $exception)
     {
         try{
-            if (method_exists($exception,'getStatusCode')) {
-            $code = $exception->getStatusCode();
-            Controller::logS('exception',$code,$exception->getTraceAsString().'|| '.$exception->getMessage().' ||'.json_encode($request));
-            switch ($code){
-                case 419:return response()->view('exception.login');
-                case 404:return response()->view('exception.404');
-                default: return response()->view('exception.default',compact('code'));
+            if(strpos($exception->getMessage(),'This action is unauthorized')!==false){
+                return response()->view('exception.unauthorized');
             }
+            $errMsg=(function()use($exception){
+                return $errMsg=
+                    '异常: '
+                    .' code:'.$exception->getStatusCode()??''
+                    .' message:'.$exception->getMessage()??''
+                    .' trace:'.$exception->getTraceAsString()??'';
+            })();
+            if (method_exists($exception,'getStatusCode')) {
+                $code = $exception->getStatusCode();
+                switch ($code){
+                    case 419: $view='exception.login';break;
+                    case 404:$view='exception.404';break;
+                    default: $view='exception.default';break;
+                }
+                return response()->view($view,[
+                    'code'=> $code,
+                    'message'=>$exception->getMessage(),
+                    ]);
             }
-            Controller::logS('exception',class_basename($exception),$exception->getTraceAsString().'|| ||'.json_encode($request));
-        }catch (\Exception $e){
 
+        }catch (\Exception $e){}finally{
+            LogService::log(__METHOD__,__FUNCTION__,
+                $errMsg??''
+                .'请求:'.json_encode($request->all())
+                .'调用堆栈:'.json_encode(array_slice(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),0,4))
+            );
         }
         return parent::render($request, $exception);
     }

+ 1 - 4
app/Http/Controllers/CitiesController.php

@@ -12,10 +12,8 @@ use Illuminate\Support\Facades\Validator;
 
 class CitiesController extends Controller
 {
-    public function index(TestAaRequest $aaRequest)
+    public function index(Request $request)
     {
-        return '333';
-        dd($aaRequest->validated());
         if(!Gate::allows('城市-查询')){ return redirect(url('/'));  }
         $cities=City::orderBy('id', 'DESC')->paginate(50);
         return view('maintenance.city.index',['cities'=>$cities]);
@@ -28,7 +26,6 @@ class CitiesController extends Controller
         return view('maintenance.city.create',['provinces'=>$provinces]);
     }
 
-
     public function store(Request $request)
     {
         if(!Gate::allows('城市-录入')){ return redirect(url('/'));  }

+ 2 - 4
app/Http/Controllers/TestController.php

@@ -84,11 +84,9 @@ class TestController extends Controller
         $this->data["active_test"] = "active";
     }
 
-    public function method(TestAaRequest $request)
+    public function method(Request $request, $method)
     {
-        $request->validate();
-        dd(34);
-//        return call_user_func([$this, $method], $request);
+        return call_user_func([$this, $method], $request);
     }
 
     public function updateInventory()

+ 3 - 2
app/Http/Controllers/api/thirdPart/haiq/StorageController.php

@@ -4,6 +4,7 @@
 namespace App\Http\Controllers\api\thirdPart\haiq;
 
 
+use App\Http\Requests\ForeignHaiRobotic_taskUpdateRequest;
 use App\Services\ForeignHaiRoboticsService;
 use Illuminate\Http\Request;
 use Illuminate\Support\Facades\Http;
@@ -241,13 +242,13 @@ class StorageController
     public function lightOff(Request $request){
         return $this->light($request,$this->lightOff);
     }
-    public function taskUpdate(Request $request){
+    public function taskUpdate(ForeignHaiRobotic_taskUpdateRequest $request){
         $this->service->taskUpdate(
             $request['groupCode'],
             $request['taskCode'],
             $request['updateEventType'],
             $request['status'],
-            $request['IDE0000093'],
+            $request['binCode'],
             $request['kubotId'],
             $request['description']
         );

+ 59 - 0
app/Http/Requests/ForeignHaiRobotic_taskUpdateRequest.php

@@ -0,0 +1,59 @@
+<?php
+
+namespace App\Http\Requests;
+
+use App\Services\LogService;
+use Illuminate\Foundation\Http\FormRequest;
+use Illuminate\Validation\Validator;
+
+class ForeignHaiRobotic_taskUpdateRequest extends FormRequest
+{
+    /**
+     * Determine if the user is authorized to make this request.
+     *
+     * @return bool
+     */
+    public function authorize()
+    {
+        return true;
+    }
+
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+           'groupCode'=>'required',
+           'taskCode'=>'required',
+           'updateEventType'=>'required',
+           'status'=>'required',
+           'binCode'=>'required',
+           'kubotId'=>'required',
+           'description'=>'nullable',
+        ];
+    }
+    public function withValidator(Validator $validator)
+    {
+        $validator->after(function (Validator $validator) {
+            if($validator->errors()->isNotEmpty()){
+                $validator->errors()->add('code','422');
+                $validator->errors()->add('errMsg', json_encode($validator->errors()->messages()));
+                $validator->errors()->add('data',$validator->errors()->toJson());
+            }
+
+            $errMsg=(function()use($validator){
+                if($validator->errors()->isEmpty())return '';
+                return $errMsg = '错误: '.$validator->errors()->toJson();
+            })();
+
+            LogService::log(__METHOD__,__FUNCTION__,
+                $errMsg??''
+                .'请求:'.json_encode($this->all())
+                .'调用堆栈:'.json_encode(array_slice(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS),0,3))
+            );
+        });
+    }
+}

+ 0 - 30
app/Http/Requests/TestAaRequest.php

@@ -1,30 +0,0 @@
-<?php
-
-namespace App\Http\Requests;
-
-use Illuminate\Foundation\Http\FormRequest;
-
-class TestAaRequest extends FormRequest
-{
-    /**
-     * Determine if the user is authorized to make this request.
-     *
-     * @return bool
-     */
-    public function authorize()
-    {
-        return true;
-    }
-
-    /**
-     * Get the validation rules that apply to the request.
-     *
-     * @return array
-     */
-    public function rules()
-    {
-        return [
-            'xx'=>'string'
-        ];
-    }
-}

+ 1 - 0
resources/views/exception/default.blade.php

@@ -10,6 +10,7 @@
                     <div class="card-body">
 
                         <h2 class="text-danger">页面出现错误,请刷新重试或联系管理员,错误代码:{{$code}}</h2>
+                        <h3 class="text-danger">{{$message??''}}</h3>
                         <a href="{{url('/')}}">
                             <button class="btn btn-info">前往首页</button>
                         </a>

+ 21 - 0
resources/views/exception/unauthorized.blade.php

@@ -0,0 +1,21 @@
+@extends('layouts.app')
+@section('title')
+    没有权限请求当前资源
+@endsection
+@section('content')
+    <div class="container-fluid">
+        <div class="row justify-content-center">
+            <div class="col-md-8">
+                <div class="card">
+                    <div class="card-body">
+
+                        <h2 class="text-danger">没有权限请求当前页面或资源,如未登录请重新登录</h2>
+                        <a href="{{url('/')}}">
+                            <button class="btn btn-info">前往首页</button>
+                        </a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+@endsection

+ 21 - 0
resources/views/unauthorized.blade.php/defaultException.blade.php

@@ -0,0 +1,21 @@
+@extends('layouts.app')
+@section('title')
+    页面出现错误,错误代码:{{$code}}
+@endsection
+@section('content')
+    <div class="container-fluid">
+        <div class="row justify-content-center">
+            <div class="col-md-8">
+                <div class="card">
+                    <div class="card-body">
+
+                        <h2 class="text-danger">页面出现错误,请刷新重试或联系管理员,错误代码:{{$code}}</h2>
+                        <a href="{{url('/')}}">
+                            <button class="btn btn-info">前往首页</button>
+                        </a>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+@endsection