正在显示
16 个修改的文件
包含
389 行增加
和
4 行删除
app/Exceptions/CsideGlobalException.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Exceptions; | ||
| 4 | + | ||
| 5 | +use App\Enums\Common\Code; | ||
| 6 | +use Exception; | ||
| 7 | +use Throwable; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * @notes: C端接口统一错误格式 | ||
| 11 | + * Class CsideGlobalException | ||
| 12 | + * @package App\Exceptions | ||
| 13 | + */ | ||
| 14 | +class CsideGlobalException extends Exception | ||
| 15 | +{ | ||
| 16 | + public function __construct($code = 0, $message = "", Throwable $previous = null) | ||
| 17 | + { | ||
| 18 | + $this->code = $code; | ||
| 19 | + $this->message = $message; | ||
| 20 | + if (empty($this->message)) { | ||
| 21 | + $this->message = Code::fromValue($code)->description; | ||
| 22 | + } | ||
| 23 | + } | ||
| 24 | +} |
| @@ -72,6 +72,10 @@ class Handler extends ExceptionHandler | @@ -72,6 +72,10 @@ class Handler extends ExceptionHandler | ||
| 72 | elseif($exception instanceof BsideGlobalException) { | 72 | elseif($exception instanceof BsideGlobalException) { |
| 73 | LogUtils::error("BsideGlobalException", [], $exceptionMessage); | 73 | LogUtils::error("BsideGlobalException", [], $exceptionMessage); |
| 74 | } | 74 | } |
| 75 | + //C端错误 | ||
| 76 | + elseif($exception instanceof CsideGlobalException) { | ||
| 77 | + LogUtils::error("CsideGlobalException", [], $exceptionMessage); | ||
| 78 | + } | ||
| 75 | //验证错误(非手动抛出) | 79 | //验证错误(非手动抛出) |
| 76 | elseif ($exception instanceof ValidationException) { | 80 | elseif ($exception instanceof ValidationException) { |
| 77 | LogUtils::error("参数验证失败", [], $exceptionMessage); | 81 | LogUtils::error("参数验证失败", [], $exceptionMessage); |
| @@ -110,6 +114,8 @@ class Handler extends ExceptionHandler | @@ -110,6 +114,8 @@ class Handler extends ExceptionHandler | ||
| 110 | $code = $exception->getCode(); | 114 | $code = $exception->getCode(); |
| 111 | }elseif ($exception instanceof BsideGlobalException) { | 115 | }elseif ($exception instanceof BsideGlobalException) { |
| 112 | $code = $exception->getCode(); | 116 | $code = $exception->getCode(); |
| 117 | + }elseif ($exception instanceof CsideGlobalException) { | ||
| 118 | + $code = $exception->getCode(); | ||
| 113 | } elseif ($exception instanceof ValidationException) { | 119 | } elseif ($exception instanceof ValidationException) { |
| 114 | $code = Code::USER_PARAMS_ERROE(); | 120 | $code = Code::USER_PARAMS_ERROE(); |
| 115 | $message = $code->description = Arr::first(Arr::first($exception->errors())); | 121 | $message = $code->description = Arr::first(Arr::first($exception->errors())); |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Controllers\Cside; | ||
| 4 | + | ||
| 5 | +use App\Enums\Common\Code; | ||
| 6 | +use App\Http\Controllers\Controller; | ||
| 7 | +use Illuminate\Http\JsonResponse; | ||
| 8 | +use Illuminate\Http\Request; | ||
| 9 | +use Illuminate\Http\Exceptions\HttpResponseException; | ||
| 10 | +use Illuminate\Support\Facades\Cache; | ||
| 11 | +use Illuminate\Support\Facades\Session; | ||
| 12 | + | ||
| 13 | +class BaseController extends Controller | ||
| 14 | +{ | ||
| 15 | + protected $param = [];//所有请求参数 | ||
| 16 | + protected $token = ''; //token | ||
| 17 | + protected $request = [];//助手函数 | ||
| 18 | + protected $project = [];//当前登录用户详情 | ||
| 19 | + /** | ||
| 20 | + * 获取所有参数 | ||
| 21 | + */ | ||
| 22 | + public function __construct(Request $request) | ||
| 23 | + { | ||
| 24 | + $this->request = $request; | ||
| 25 | + $this->param = $this->request->all(); | ||
| 26 | + $this->token = $this->request->header('token'); | ||
| 27 | + if(!empty($this->token) && !empty(Cache::get($this->token))){ | ||
| 28 | + $info = Cache::get($this->token); | ||
| 29 | + $this->user = $info; | ||
| 30 | + $this->uid = $info['id']; | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + } | ||
| 34 | + | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * 成功返回 | ||
| 38 | + * @param array $data | ||
| 39 | + * @param string $code | ||
| 40 | + * @param bool $objectData | ||
| 41 | + * @return JsonResponse | ||
| 42 | + * @throws \Psr\Container\ContainerExceptionInterface | ||
| 43 | + * @throws \Psr\Container\NotFoundExceptionInterface | ||
| 44 | + */ | ||
| 45 | + function success(array $data = [], string $code = Code::SUCCESS, bool $objectData = false): JsonResponse | ||
| 46 | + { | ||
| 47 | + if ($objectData) { | ||
| 48 | + $data = (object)$data; | ||
| 49 | + } | ||
| 50 | + $code = Code::fromValue($code); | ||
| 51 | + $response = [ | ||
| 52 | + 'code' => $code->value, | ||
| 53 | + 'data' => $data, | ||
| 54 | + 'msg' => $code->description, | ||
| 55 | + ]; | ||
| 56 | + return response()->json($response,200); | ||
| 57 | + } | ||
| 58 | +} |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Controllers\Cside; | ||
| 4 | + | ||
| 5 | +use App\Http\Logic\Cside\InquiryLogic; | ||
| 6 | +use App\Http\Requests\Cside\InquiryRequest; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * 精准询盘 | ||
| 10 | + * Class InquiryController | ||
| 11 | + * @package App\Http\Controllers\Bside | ||
| 12 | + * @author zbj | ||
| 13 | + * @date 2023/5/4 | ||
| 14 | + */ | ||
| 15 | +class InquiryController extends BaseController | ||
| 16 | +{ | ||
| 17 | + | ||
| 18 | + public function save(InquiryRequest $request, InquiryLogic $logic) | ||
| 19 | + { | ||
| 20 | + $data = $logic->save($this->param); | ||
| 21 | + return $this->success($data); | ||
| 22 | + } | ||
| 23 | +} |
| @@ -2,13 +2,11 @@ | @@ -2,13 +2,11 @@ | ||
| 2 | 2 | ||
| 3 | namespace App\Http\Logic\Bside; | 3 | namespace App\Http\Logic\Bside; |
| 4 | 4 | ||
| 5 | -use App\Enums\Common\Code; | 5 | + |
| 6 | +use App\Enums\Common\Common; | ||
| 6 | use App\Exceptions\BsideGlobalException; | 7 | use App\Exceptions\BsideGlobalException; |
| 7 | -use App\Helper\Common; | ||
| 8 | use App\Http\Controllers\ImageController; | 8 | use App\Http\Controllers\ImageController; |
| 9 | use App\Http\Logic\Logic; | 9 | use App\Http\Logic\Logic; |
| 10 | -use App\Models\Image as ImageModel; | ||
| 11 | -use Illuminate\Http\Request; | ||
| 12 | use Illuminate\Support\Facades\Cache; | 10 | use Illuminate\Support\Facades\Cache; |
| 13 | 11 | ||
| 14 | /** | 12 | /** |
| @@ -25,6 +23,8 @@ class BaseLogic extends Logic | @@ -25,6 +23,8 @@ class BaseLogic extends Logic | ||
| 25 | 23 | ||
| 26 | protected $user; | 24 | protected $user; |
| 27 | 25 | ||
| 26 | + protected $side = Common::B; | ||
| 27 | + | ||
| 28 | public function __construct() | 28 | public function __construct() |
| 29 | { | 29 | { |
| 30 | $this->request = request(); | 30 | $this->request = request(); |
app/Http/Logic/Cside/BaseLogic.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Logic\Cside; | ||
| 4 | + | ||
| 5 | + | ||
| 6 | +use App\Enums\Common\Common; | ||
| 7 | +use App\Exceptions\BsideGlobalException; | ||
| 8 | +use App\Http\Logic\Logic; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * @notes: 逻辑层基类 控制器调用 统一返回 统一抛出异常 | ||
| 12 | + */ | ||
| 13 | +class BaseLogic extends Logic | ||
| 14 | +{ | ||
| 15 | + | ||
| 16 | + protected $requestAll; | ||
| 17 | + | ||
| 18 | + protected $param; | ||
| 19 | + | ||
| 20 | + protected $request; | ||
| 21 | + | ||
| 22 | + protected $project; | ||
| 23 | + | ||
| 24 | + protected $side = Common::C; | ||
| 25 | + | ||
| 26 | + public function __construct() | ||
| 27 | + { | ||
| 28 | + $this->request = request(); | ||
| 29 | + $this->requestAll = request()->all(); | ||
| 30 | + $this->project = $this->request->get('project'); | ||
| 31 | + } | ||
| 32 | + | ||
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * 列表 | ||
| 36 | + * @param array $map | ||
| 37 | + * @param array $sort | ||
| 38 | + * @param array $columns | ||
| 39 | + * @param int $limit | ||
| 40 | + * @return array | ||
| 41 | + * @author zbj | ||
| 42 | + * @date 2023/4/13 | ||
| 43 | + */ | ||
| 44 | + public function getList(array $map = [], array $sort = ['id' => 'desc'], array $columns = ['*'], int $limit = 20) | ||
| 45 | + { | ||
| 46 | + $map[] = ['project_id' => $this->project['id']]; | ||
| 47 | + return parent::getList($map, $sort, $columns, $limit); | ||
| 48 | + } | ||
| 49 | + | ||
| 50 | + /** | ||
| 51 | + * @param $id | ||
| 52 | + * @return mixed | ||
| 53 | + * @author zbj | ||
| 54 | + * @date 2023/4/15 | ||
| 55 | + */ | ||
| 56 | + public function getCacheInfo($id) | ||
| 57 | + { | ||
| 58 | + $info = parent::getCacheInfo($id); | ||
| 59 | + if ($info && $info['project_id'] != $this->project['id']) { | ||
| 60 | + $info = null; | ||
| 61 | + } | ||
| 62 | + return $info; | ||
| 63 | + } | ||
| 64 | + | ||
| 65 | + /** | ||
| 66 | + * 保存 | ||
| 67 | + * @param $param | ||
| 68 | + * @return array | ||
| 69 | + * @throws BsideGlobalException | ||
| 70 | + * @author zbj | ||
| 71 | + * @date 2023/4/13 | ||
| 72 | + */ | ||
| 73 | + public function save($param) | ||
| 74 | + { | ||
| 75 | + $param['project_id'] = $this->project['id']; | ||
| 76 | + return parent::save($param); | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + /** | ||
| 80 | + * 批量删除 | ||
| 81 | + * @param $ids | ||
| 82 | + * @param array $map | ||
| 83 | + * @return array | ||
| 84 | + * @author zbj | ||
| 85 | + * @date 2023/4/13 | ||
| 86 | + */ | ||
| 87 | + public function delete($ids, $map = []) | ||
| 88 | + { | ||
| 89 | + $map[] = ['project_id' => $this->project['id']]; | ||
| 90 | + return parent::delete($ids, $map); | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | +} |
app/Http/Logic/Cside/InquiryLogic.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Logic\Cside; | ||
| 4 | + | ||
| 5 | +use App\Helper\Arr; | ||
| 6 | +use App\Models\Inquiry; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Class InquiryLogic | ||
| 10 | + * @package App\Http\Logic\Bside | ||
| 11 | + * @author zbj | ||
| 12 | + * @date 2023/5/4 | ||
| 13 | + */ | ||
| 14 | +class InquiryLogic extends BaseLogic | ||
| 15 | +{ | ||
| 16 | + public function __construct() | ||
| 17 | + { | ||
| 18 | + parent::__construct(); | ||
| 19 | + | ||
| 20 | + $this->model = new Inquiry(); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | + public function save($param) | ||
| 24 | + { | ||
| 25 | + $param['ip_info'] = Arr::s2a($param['ip_info']); | ||
| 26 | + $param['ip'] = $param['ip_info']['ip'] ?? ''; | ||
| 27 | + $param['ip_country'] = $param['ip_info']['country'] ?? ''; | ||
| 28 | + return parent::save($param); | ||
| 29 | + } | ||
| 30 | + | ||
| 31 | +} |
| @@ -4,6 +4,7 @@ namespace App\Http\Logic; | @@ -4,6 +4,7 @@ namespace App\Http\Logic; | ||
| 4 | 4 | ||
| 5 | use App\Enums\Common\Code; | 5 | use App\Enums\Common\Code; |
| 6 | use App\Enums\Common\Common; | 6 | use App\Enums\Common\Common; |
| 7 | +use App\Exceptions\CsideGlobalException; | ||
| 7 | use \App\Helper\Common as CommonHelper; | 8 | use \App\Helper\Common as CommonHelper; |
| 8 | use App\Exceptions\AsideGlobalException; | 9 | use App\Exceptions\AsideGlobalException; |
| 9 | use App\Exceptions\BsideGlobalException; | 10 | use App\Exceptions\BsideGlobalException; |
| @@ -45,6 +46,9 @@ class Logic | @@ -45,6 +46,9 @@ class Logic | ||
| 45 | if((request()->path()[0]) == Common::B){ | 46 | if((request()->path()[0]) == Common::B){ |
| 46 | throw new BsideGlobalException($code, $message); | 47 | throw new BsideGlobalException($code, $message); |
| 47 | } | 48 | } |
| 49 | + if((request()->path()[0]) == Common::C){ | ||
| 50 | + throw new CsideGlobalException($code, $message); | ||
| 51 | + } | ||
| 48 | throw new AsideGlobalException($code, $message); | 52 | throw new AsideGlobalException($code, $message); |
| 49 | } | 53 | } |
| 50 | 54 |
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Middleware\Cside; | ||
| 4 | + | ||
| 5 | +use App\Enums\Common\Code; | ||
| 6 | +use App\Models\Project\Project; | ||
| 7 | +use App\Services\ProjectServer; | ||
| 8 | +use Closure; | ||
| 9 | +use Illuminate\Http\Request; | ||
| 10 | + | ||
| 11 | +class ParamMiddleware | ||
| 12 | +{ | ||
| 13 | + protected $param = []; | ||
| 14 | + | ||
| 15 | + protected $project = []; | ||
| 16 | + | ||
| 17 | + /** | ||
| 18 | + * Handle an incoming request. | ||
| 19 | + * | ||
| 20 | + * @param \Illuminate\Http\Request $request | ||
| 21 | + * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next | ||
| 22 | + * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse | ||
| 23 | + */ | ||
| 24 | + public function handle(Request $request, Closure $next) | ||
| 25 | + { | ||
| 26 | + $this->param = $request->all(); | ||
| 27 | + $domain = $request->header('domain'); | ||
| 28 | + if(!isset($domain) || empty($domain)){ | ||
| 29 | + return response(['code'=>Code::USER_ERROR,'msg'=>'非法请求']); | ||
| 30 | + } | ||
| 31 | + $project = Project::getProjectByDomain($domain); | ||
| 32 | + if(empty($project)){ | ||
| 33 | + return response(['code'=>Code::USER_ERROR,'msg'=>'非法请求']); | ||
| 34 | + } | ||
| 35 | + // 设置数据信息 | ||
| 36 | +// $project = ProjectServer::useProject($project['id']); | ||
| 37 | +// if($project){ | ||
| 38 | +// return response(['code'=>Code::USER_ERROR,'msg'=>'数据库未配置']); | ||
| 39 | +// } | ||
| 40 | + $request->attributes->add(['project' => $project]); | ||
| 41 | + return $next($request); | ||
| 42 | + } | ||
| 43 | +} |
app/Http/Requests/Cside/InquiryRequest.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Http\Requests\Cside; | ||
| 4 | + | ||
| 5 | +use Illuminate\Foundation\Http\FormRequest; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Class InquiryRequest | ||
| 9 | + * @package App\Http\Requests\Cside | ||
| 10 | + * @author zbj | ||
| 11 | + * @date 2023/5/4 | ||
| 12 | + */ | ||
| 13 | +class InquiryRequest extends FormRequest | ||
| 14 | +{ | ||
| 15 | + /** | ||
| 16 | + * Determine if the user is authorized to make this request. | ||
| 17 | + * | ||
| 18 | + * @return bool | ||
| 19 | + */ | ||
| 20 | + public function authorize() | ||
| 21 | + { | ||
| 22 | + return true; | ||
| 23 | + } | ||
| 24 | + | ||
| 25 | + /** | ||
| 26 | + * Get the validation rules that apply to the request. | ||
| 27 | + * | ||
| 28 | + * @return array | ||
| 29 | + */ | ||
| 30 | + public function rules() | ||
| 31 | + { | ||
| 32 | + return [ | ||
| 33 | + 'name' => 'required|max:200', | ||
| 34 | + 'email' => 'required|email|max:200', | ||
| 35 | + 'phone' => 'max:200', | ||
| 36 | + 'content' => 'required', | ||
| 37 | + ]; | ||
| 38 | + } | ||
| 39 | + | ||
| 40 | + public function messages() | ||
| 41 | + { | ||
| 42 | + return []; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | +} |
| @@ -4,6 +4,7 @@ namespace App\Models\Project; | @@ -4,6 +4,7 @@ namespace App\Models\Project; | ||
| 4 | 4 | ||
| 5 | use App\Helper\Arr; | 5 | use App\Helper\Arr; |
| 6 | use App\Models\Base; | 6 | use App\Models\Base; |
| 7 | +use Illuminate\Support\Facades\Cache; | ||
| 7 | 8 | ||
| 8 | class DeployBuild extends Base | 9 | class DeployBuild extends Base |
| 9 | { | 10 | { |
| @@ -19,4 +20,8 @@ class DeployBuild extends Base | @@ -19,4 +20,8 @@ class DeployBuild extends Base | ||
| 19 | return Arr::setToArr($value); | 20 | return Arr::setToArr($value); |
| 20 | } | 21 | } |
| 21 | 22 | ||
| 23 | + public static function clearCache($row){ | ||
| 24 | + $cache_key = 'project_' . $row->original['test_domain']; | ||
| 25 | + Cache::forget($cache_key); | ||
| 26 | + } | ||
| 22 | } | 27 | } |
| @@ -4,6 +4,7 @@ namespace App\Models\Project; | @@ -4,6 +4,7 @@ namespace App\Models\Project; | ||
| 4 | 4 | ||
| 5 | use App\Helper\Arr; | 5 | use App\Helper\Arr; |
| 6 | use App\Models\Base; | 6 | use App\Models\Base; |
| 7 | +use Illuminate\Support\Facades\Cache; | ||
| 7 | 8 | ||
| 8 | class DeployOptimize extends Base | 9 | class DeployOptimize extends Base |
| 9 | { | 10 | { |
| @@ -19,4 +20,9 @@ class DeployOptimize extends Base | @@ -19,4 +20,9 @@ class DeployOptimize extends Base | ||
| 19 | return Arr::s2a($value); | 20 | return Arr::s2a($value); |
| 20 | } | 21 | } |
| 21 | 22 | ||
| 23 | + public static function clearCache($row){ | ||
| 24 | + $cache_key = 'project_' . $row->original['domain']; | ||
| 25 | + Cache::forget($cache_key); | ||
| 26 | + } | ||
| 27 | + | ||
| 22 | } | 28 | } |
| @@ -5,6 +5,7 @@ namespace App\Models\Project; | @@ -5,6 +5,7 @@ namespace App\Models\Project; | ||
| 5 | use App\Helper\Arr; | 5 | use App\Helper\Arr; |
| 6 | use App\Models\Base; | 6 | use App\Models\Base; |
| 7 | use App\Models\Devops\ServerConfig; | 7 | use App\Models\Devops\ServerConfig; |
| 8 | +use Illuminate\Support\Facades\Cache; | ||
| 8 | 9 | ||
| 9 | class Project extends Base | 10 | class Project extends Base |
| 10 | { | 11 | { |
| @@ -144,4 +145,30 @@ class Project extends Base | @@ -144,4 +145,30 @@ class Project extends Base | ||
| 144 | return Arr::s2a($value); | 145 | return Arr::s2a($value); |
| 145 | } | 146 | } |
| 146 | 147 | ||
| 148 | + /** | ||
| 149 | + * 根据域名获取项目信息 | ||
| 150 | + * @author zbj | ||
| 151 | + * @date 2023/5/5 | ||
| 152 | + */ | ||
| 153 | + public static function getProjectByDomain($domain){ | ||
| 154 | + $cache_key = 'project_'.$domain; | ||
| 155 | + $data = Cache::get($cache_key); | ||
| 156 | + if(!$data){ | ||
| 157 | + //是否测试域名 | ||
| 158 | + $project_id = DeployBuild::where('test_domain', $domain)->value('project_id'); | ||
| 159 | + //是否正式域名 | ||
| 160 | + if(!$project_id){ | ||
| 161 | + $project_id = DeployOptimize::where('domain', $domain)->value('project_id'); | ||
| 162 | + } | ||
| 163 | + if(!$project_id){ | ||
| 164 | + return []; | ||
| 165 | + } | ||
| 166 | + $data = self::find($project_id); | ||
| 167 | + if($data){ | ||
| 168 | + Cache::put($cache_key, $data); | ||
| 169 | + } | ||
| 170 | + } | ||
| 171 | + return $data; | ||
| 172 | + } | ||
| 173 | + | ||
| 147 | } | 174 | } |
| @@ -60,6 +60,12 @@ return [ | @@ -60,6 +60,12 @@ return [ | ||
| 60 | 'via' => \App\Factory\LogFormatterFactory::class, | 60 | 'via' => \App\Factory\LogFormatterFactory::class, |
| 61 | 'prefix' => 'bside', | 61 | 'prefix' => 'bside', |
| 62 | ], | 62 | ], |
| 63 | + //自定义B端错误日志 | ||
| 64 | + 'cside' => [ | ||
| 65 | + 'driver' => 'custom', | ||
| 66 | + 'via' => \App\Factory\LogFormatterFactory::class, | ||
| 67 | + 'prefix' => 'cside', | ||
| 68 | + ], | ||
| 63 | 69 | ||
| 64 | 'stack' => [ | 70 | 'stack' => [ |
| 65 | 'driver' => 'stack', | 71 | 'driver' => 'stack', |
routes/cside.php
0 → 100644
-
请 注册 或 登录 后发表评论