BaseController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Exceptions\ValidateException;
  4. use Illuminate\Http\Request;
  5. /**
  6. * @SWG\Swagger(
  7. * schemes={"http"},
  8. * host="test-daogou.codedreamit.com/api",
  9. * basePath="/",
  10. * @SWG\Info(
  11. * title="导购API文档",
  12. * version="1.0.0",
  13. * )
  14. * )
  15. */
  16. class BaseController extends Controller
  17. {
  18. /**
  19. * Controller constructor.
  20. */
  21. public function __construct(Request $request)
  22. {
  23. //进行统一的参数验证
  24. //判断对应目录下的验证类是否存在
  25. $controllerName = $request->route()->getActionName();
  26. $flag = preg_match("/Controllers\\\(.*)@(.*)/",$controllerName,$match);
  27. if($flag){
  28. $controllerName = $match[1];
  29. $actionName = $match[2];
  30. $class = "\\App\\Http\\Validate\\$controllerName"."Validate";
  31. //判断验证是否存在
  32. if(class_exists($class) && method_exists($class,$actionName)){
  33. $instance = new $class();
  34. $validateFlag = $instance->$actionName($request->all());
  35. if(!$validateFlag){
  36. throw new ValidateException($instance->getError(),501);
  37. }
  38. }
  39. }
  40. }
  41. /**
  42. * 成功返回
  43. * @param array $data
  44. * @param int $code
  45. * @param string $msg
  46. * @param string $url
  47. * @return \Illuminate\Http\JsonResponse
  48. */
  49. public function success($data = [], $code = 200, $msg = "", $url = "")
  50. {
  51. return response()->json(
  52. [
  53. "status"=>true,
  54. "data"=>$data,
  55. "code"=>$code,
  56. "msg"=>$msg,
  57. "url"=>$url
  58. ]
  59. );
  60. }
  61. /**
  62. * 错误返回
  63. * @param $msg
  64. * @param string $code
  65. * @param string $url
  66. */
  67. public function error($msg,$code="500",$url="")
  68. {
  69. return response()->json(
  70. [
  71. "status"=>false,
  72. "data"=>"",
  73. "code"=>$code,
  74. "msg"=>$msg,
  75. "url"=>$url
  76. ]
  77. );
  78. }
  79. /**
  80. * 生成swagger.json文件
  81. */
  82. public function swagger()
  83. {
  84. $swagger=\Swagger\scan(__DIR__."/../");
  85. $swagger->saveAs('./swagger.json');
  86. return $this->success();
  87. }
  88. /**
  89. * 读取swagger内容
  90. */
  91. public function loadSwagger()
  92. {
  93. $data = json_decode(file_get_contents("./swagger.json"),true);
  94. return $data;
  95. }
  96. }