From 08d20d07b886cc461712cf18258be2191afe3341 Mon Sep 17 00:00:00 2001 From: BrettonYe Date: Wed, 1 Jan 2025 14:49:14 +0800 Subject: [PATCH] Code variables type declaration --- app/Helpers/ClientApiResponse.php | 4 +- .../Controllers/Admin/AffiliateController.php | 19 +- .../Controllers/Admin/ArticleController.php | 30 +-- app/Http/Controllers/Admin/CertController.php | 9 +- .../Admin/Config/CategoryController.php | 30 ++- .../Admin/Config/CountryController.php | 32 ++- .../Admin/Config/EmailFilterController.php | 27 +-- .../Admin/Config/LabelController.php | 28 +-- .../Admin/Config/LevelController.php | 30 ++- .../Admin/Config/SsConfigController.php | 26 +-- .../Controllers/Admin/CouponController.php | 44 ++-- .../Controllers/Admin/InviteController.php | 10 +- app/Http/Controllers/Admin/LogsController.php | 57 ++--- .../Controllers/Admin/MarketingController.php | 29 ++- .../Controllers/Admin/NodeAuthController.php | 30 ++- app/Http/Controllers/Admin/NodeController.php | 82 ++++--- .../Admin/PermissionController.php | 7 +- .../Controllers/Admin/ReportController.php | 6 +- app/Http/Controllers/Admin/RoleController.php | 7 +- app/Http/Controllers/Admin/RuleController.php | 41 ++-- .../Controllers/Admin/RuleGroupController.php | 9 +- app/Http/Controllers/Admin/ShopController.php | 31 ++- .../Controllers/Admin/SubscribeController.php | 39 ++-- .../Controllers/Admin/SystemController.php | 32 ++- .../Controllers/Admin/TicketController.php | 42 ++-- .../Controllers/Admin/ToolsController.php | 77 +++---- app/Http/Controllers/Admin/UserController.php | 80 ++++--- .../Controllers/Admin/UserGroupController.php | 9 +- app/Http/Controllers/AdminController.php | 7 +- .../Api/Client/ClientController.php | 19 +- app/Http/Controllers/AuthController.php | 205 +++++++++--------- app/Http/Controllers/MessageController.php | 17 +- app/Http/Controllers/OAuthController.php | 7 +- app/Http/Controllers/PaymentController.php | 42 ++-- .../Controllers/User/AffiliateController.php | 23 +- .../Controllers/User/ArticleController.php | 5 +- .../Controllers/User/InviteController.php | 16 +- .../Controllers/User/InvoiceController.php | 20 +- app/Http/Controllers/User/NodeController.php | 19 +- app/Http/Controllers/User/ShopController.php | 24 +- .../Controllers/User/SubscribeController.php | 5 +- .../Controllers/User/TicketController.php | 27 ++- app/Http/Controllers/UserController.php | 82 +++---- app/Models/UserSubscribe.php | 3 +- app/Services/CouponService.php | 3 +- app/Utils/Clients/Protocols/Clash.php | 10 +- app/Utils/Clients/Protocols/QuantumultX.php | 12 +- app/Utils/Clients/Protocols/Surge.php | 6 +- app/Utils/Clients/Protocols/URLSchemes.php | 22 +- app/helpers.php | 4 +- resources/views/admin/layouts.blade.php | 2 +- resources/views/user/knowledge.blade.php | 6 +- resources/views/user/layouts.blade.php | 4 +- resources/views/user/nodeList.blade.php | 10 +- resources/views/user/profile.blade.php | 20 +- resources/views/user/services.blade.php | 2 +- 56 files changed, 694 insertions(+), 795 deletions(-) diff --git a/app/Helpers/ClientApiResponse.php b/app/Helpers/ClientApiResponse.php index 4893cda4..9193eb0a 100644 --- a/app/Helpers/ClientApiResponse.php +++ b/app/Helpers/ClientApiResponse.php @@ -21,12 +21,12 @@ trait ClientApiResponse self::$client = $client; } - public function succeed(?array $data = null, ?array $addition = null, array $codeResponse = ResponseEnum::HTTP_OK): JsonResponse + public function succeed(array|bool|null $data = null, ?array $addition = null, array $codeResponse = ResponseEnum::HTTP_OK): JsonResponse { return $this->jsonResponse(1, $codeResponse, $data, $addition); } - private function jsonResponse(int $status, array $codeResponse, array|string|null $data = null, ?array $addition = null): JsonResponse + private function jsonResponse(int $status, array $codeResponse, array|bool|null $data = null, ?array $addition = null): JsonResponse { [$code, $message] = $codeResponse; $code = $code > 1000 ? (int) ($code / 1000) : $code; diff --git a/app/Http/Controllers/Admin/AffiliateController.php b/app/Http/Controllers/Admin/AffiliateController.php index 945e64a2..42b97f04 100644 --- a/app/Http/Controllers/Admin/AffiliateController.php +++ b/app/Http/Controllers/Admin/AffiliateController.php @@ -5,14 +5,14 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\ReferralApply; use App\Models\ReferralLog; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class AffiliateController extends Controller { - // 提现申请列表 - public function index(Request $request) - { + public function index(Request $request): View + { // 提现申请列表 $query = ReferralApply::with('user:id,username'); $request->whenFilled('username', function ($username) use ($query) { $query->whereHas('user', function ($query) use ($username) { @@ -27,18 +27,16 @@ class AffiliateController extends Controller return view('admin.aff.index', ['applyList' => $query->latest()->paginate(15)->appends($request->except('page'))]); } - // 提现申请详情 - public function detail(Request $request, ReferralApply $aff) - { + public function detail(Request $request, ReferralApply $aff): View + { // 提现申请详情 return view('admin.aff.detail', [ 'referral' => $aff->load('user:id,username'), 'commissions' => $aff->referral_logs()->with(['invitee:id,username', 'order.goods:id,name'])->paginate()->appends($request->except('page')), ]); } - // 设置提现申请状态 public function setStatus(Request $request, ReferralApply $aff): JsonResponse - { + { // 设置提现申请状态 $status = (int) $request->input('status'); if ($aff->update(['status' => $status])) { @@ -55,9 +53,8 @@ class AffiliateController extends Controller return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.action')])]); } - // 用户返利流水记录 - public function rebate(Request $request) - { + public function rebate(Request $request): View + { // 用户返利流水记录 $query = ReferralLog::with(['invitee:id,username', 'inviter:id,username'])->orderBy('status')->latest(); $request->whenFilled('invitee_username', function ($username) use ($query) { diff --git a/app/Http/Controllers/Admin/ArticleController.php b/app/Http/Controllers/Admin/ArticleController.php index 450e2e8b..c6963f53 100644 --- a/app/Http/Controllers/Admin/ArticleController.php +++ b/app/Http/Controllers/Admin/ArticleController.php @@ -7,6 +7,7 @@ use App\Http\Requests\Admin\ArticleRequest; use App\Models\Article; use App\Services\ArticleService; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -16,9 +17,8 @@ use Str; class ArticleController extends Controller { - public function index(Request $request) - { - // 文章列表 + public function index(Request $request): View + { // 文章列表 $categories = Article::whereNotNull('category')->distinct()->get('category'); $articles = Article::query(); @@ -34,8 +34,7 @@ class ArticleController extends Controller } public function store(ArticleRequest $request): RedirectResponse - { - // 添加文章 + { // 添加文章 $data = $request->validated(); try { @@ -66,33 +65,29 @@ class ArticleController extends Controller return $file->storeAs('public', $fileName) ? 'upload/'.$fileName : false; } - public function create() - { - // 添加文章页面 + public function create(): View + { // 添加文章页面 $categories = Article::whereNotNull('category')->distinct()->get('category'); return view('admin.article.info', compact('categories')); } - public function show(Article $article) - { - // 文章页面 + public function show(Article $article): View + { // 文章页面 $article->content = (new ArticleService($article))->getContent(); return view('admin.article.show', compact('article')); } - public function edit(Article $article) - { - // 编辑文章页面 + public function edit(Article $article): View + { // 编辑文章页面 $categories = Article::whereNotNull('category')->distinct()->get('category'); return view('admin.article.info', compact('article', 'categories')); } public function update(ArticleRequest $request, Article $article): RedirectResponse - { - // 编辑文章 + { // 编辑文章 $data = $request->validated(); if ($data['type'] !== '4' && $request->hasFile('logo')) { @@ -113,8 +108,7 @@ class ArticleController extends Controller } public function destroy(Article $article): JsonResponse - { - // 删除文章 + { // 删除文章 try { $article->delete(); } catch (Exception $e) { diff --git a/app/Http/Controllers/Admin/CertController.php b/app/Http/Controllers/Admin/CertController.php index d36b8287..8ea3c5e8 100644 --- a/app/Http/Controllers/Admin/CertController.php +++ b/app/Http/Controllers/Admin/CertController.php @@ -6,13 +6,14 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Admin\CertRequest; use App\Models\NodeCertificate; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Log; class CertController extends Controller { - public function index() + public function index(): View { $certs = NodeCertificate::orderBy('id')->paginate()->appends(request('page')); foreach ($certs as $cert) { @@ -29,7 +30,7 @@ class CertController extends Controller return view('admin.node.cert.index', ['certs' => $certs]); } - public function store(CertRequest $request) + public function store(CertRequest $request): RedirectResponse { if ($cert = NodeCertificate::create($request->validated())) { return redirect(route('admin.node.cert.edit', $cert))->with('successMsg', trans('common.success_item', ['attribute' => trans('common.add')])); @@ -38,12 +39,12 @@ class CertController extends Controller return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function create() + public function create(): View { return view('admin.node.cert.info'); } - public function edit(NodeCertificate $cert) + public function edit(NodeCertificate $cert): View { return view('admin.node.cert.info', compact('cert')); } diff --git a/app/Http/Controllers/Admin/Config/CategoryController.php b/app/Http/Controllers/Admin/Config/CategoryController.php index 9a93b722..7a7e0c7a 100644 --- a/app/Http/Controllers/Admin/Config/CategoryController.php +++ b/app/Http/Controllers/Admin/Config/CategoryController.php @@ -8,63 +8,59 @@ use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class CategoryController extends Controller { - // 添加等级 public function store(Request $request): JsonResponse - { + { // 添加等级 $validator = Validator::make($request->all(), ['name' => 'required']); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if (GoodsCategory::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 编辑等级 public function update(Request $request, GoodsCategory $category): JsonResponse - { + { // 编辑等级 $validator = Validator::make($request->all(), [ 'name' => 'required', 'sort' => 'required|numeric', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if ($category->update($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除等级 public function destroy(GoodsCategory $category): JsonResponse - { + { // 删除等级 // 校验该等级下是否存在关联账号 if ($category->goods()->exists()) { - return Response::json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.goods.category')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.goods.category')])]); } try { if ($category->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.common.level')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/Config/CountryController.php b/app/Http/Controllers/Admin/Config/CountryController.php index aa97e1f3..bbeff327 100644 --- a/app/Http/Controllers/Admin/Config/CountryController.php +++ b/app/Http/Controllers/Admin/Config/CountryController.php @@ -8,70 +8,66 @@ use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class CountryController extends Controller { - // 添加国家/地区 public function store(Request $request): JsonResponse - { + { // 添加国家/地区 $validator = Validator::make($request->all(), [ 'code' => 'required|string|unique:country,code', 'name' => 'required', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if (Country::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 编辑国家/地区 public function update(Request $request, Country $country): JsonResponse - { + { // 编辑国家/地区 $validator = Validator::make($request->all(), ['name' => 'required']); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } try { if ($country->update($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.edit'), 'attribute' => trans('model.node.country')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除国家/地区 public function destroy(Country $country): JsonResponse - { + { // 删除国家/地区 // 校验该国家/地区下是否存在关联节点 if ($country->nodes()->exists()) { - return Response::json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.node.country')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.node.country')])]); } try { if ($country->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.node.country')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/Config/EmailFilterController.php b/app/Http/Controllers/Admin/Config/EmailFilterController.php index be7b1e56..894da55b 100644 --- a/app/Http/Controllers/Admin/Config/EmailFilterController.php +++ b/app/Http/Controllers/Admin/Config/EmailFilterController.php @@ -5,58 +5,55 @@ namespace App\Http\Controllers\Admin\Config; use App\Http\Controllers\Controller; use App\Models\EmailFilter; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class EmailFilterController extends Controller { - // 邮箱过滤列表 - public function index() - { + public function index(): View + { // 邮箱过滤列表 return view('admin.config.emailFilter', ['filters' => EmailFilter::orderByDesc('id')->paginate()]); } - // 添加邮箱后缀 public function store(Request $request): JsonResponse - { + { // 添加邮箱后缀 $validator = Validator::make($request->all(), [ 'type' => 'required|numeric|between:1,2', 'words' => 'required|unique:email_filter', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } try { if (EmailFilter::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.add'), 'attribute' => trans('admin.setting.email.tail')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 删除邮箱后缀 public function destroy(EmailFilter $filter): JsonResponse - { + { // 删除邮箱后缀 try { if ($filter->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('admin.setting.email.tail')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/Config/LabelController.php b/app/Http/Controllers/Admin/Config/LabelController.php index 860a87ab..37cbc1a2 100644 --- a/app/Http/Controllers/Admin/Config/LabelController.php +++ b/app/Http/Controllers/Admin/Config/LabelController.php @@ -8,60 +8,56 @@ use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class LabelController extends Controller { - // 添加标签 public function store(Request $request): JsonResponse - { + { // 添加标签 $validator = Validator::make($request->all(), [ 'name' => 'required|string|unique:label,name', 'sort' => 'required|numeric', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if (Label::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 编辑标签 public function update(Request $request, Label $label): JsonResponse - { + { // 编辑标签 $validator = Validator::make($request->all(), [ 'name' => 'required|string|unique:label,name,'.$label->id, 'sort' => 'required|numeric', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if ($label->update($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除标签 - public function destroy(Label $label): ?JsonResponse - { + public function destroy(Label $label): JsonResponse + { // 删除标签 try { $label->delete(); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.node.label')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } } } diff --git a/app/Http/Controllers/Admin/Config/LevelController.php b/app/Http/Controllers/Admin/Config/LevelController.php index 5805ccb9..ea78120e 100644 --- a/app/Http/Controllers/Admin/Config/LevelController.php +++ b/app/Http/Controllers/Admin/Config/LevelController.php @@ -8,67 +8,63 @@ use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class LevelController extends Controller { - // 添加等级 public function store(Request $request): JsonResponse - { + { // 添加等级 $validator = Validator::make($request->all(), [ 'level' => 'required|numeric|unique:level,level', 'name' => 'required', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if (Level::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 编辑等级 public function update(Request $request, Level $level): JsonResponse - { + { // 编辑等级 $validator = Validator::make($request->all(), [ 'level' => 'required|numeric|unique:level,level,'.$level->id, 'name' => 'required', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if ($level->update($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除等级 public function destroy(Level $level): JsonResponse - { + { // 删除等级 // 校验该等级下是否存在关联账号 if ($level->users()->exists()) { - return Response::json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.common.level')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.exists_error', ['attribute' => trans('model.common.level')])]); } try { if ($level->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.common.level')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/Config/SsConfigController.php b/app/Http/Controllers/Admin/Config/SsConfigController.php index 4c5ff740..bc6d0a51 100644 --- a/app/Http/Controllers/Admin/Config/SsConfigController.php +++ b/app/Http/Controllers/Admin/Config/SsConfigController.php @@ -8,53 +8,49 @@ use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; use Validator; class SsConfigController extends Controller { - // 添加SS配置 public function store(Request $request): JsonResponse - { + { // 添加SS配置 $validator = Validator::make($request->all(), [ 'name' => 'required|string|unique:ss_config,name', 'type' => 'required|numeric|between:1,3', ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if (SsConfig::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 设置SS默认配置 public function update(SsConfig $ss): JsonResponse - { + { // 设置SS默认配置 if ($ss->setDefault()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除SS配置 public function destroy(SsConfig $ss): JsonResponse - { + { // 删除SS配置 try { if ($ss->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('user.node.info')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/CouponController.php b/app/Http/Controllers/Admin/CouponController.php index 807d3867..85c05ca6 100644 --- a/app/Http/Controllers/Admin/CouponController.php +++ b/app/Http/Controllers/Admin/CouponController.php @@ -9,21 +9,19 @@ use App\Models\Level; use App\Models\UserGroup; use App\Utils\Helpers; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Log; use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; -use Redirect; -use Response; use Str; class CouponController extends Controller { - // 优惠券列表 - public function index(Request $request) - { + public function index(Request $request): View + { // 优惠券列表 $query = Coupon::query(); $request->whenFilled('sn', function ($sn) use ($query) { @@ -39,9 +37,8 @@ class CouponController extends Controller return view('admin.coupon.index', ['couponList' => $query->latest()->paginate(15)->appends($request->except('page'))]); } - // 优惠券列表 - public function show(Coupon $coupon) - { + public function show(Coupon $coupon): View + { // 优惠券列表 return view('admin.coupon.show', [ 'coupon' => $coupon, 'userGroups' => UserGroup::all()->pluck('name', 'id')->toArray(), @@ -49,16 +46,14 @@ class CouponController extends Controller ]); } - // 添加优惠券 - public function store(CouponRequest $request): ?RedirectResponse - { - // 优惠卷LOGO + public function store(CouponRequest $request): RedirectResponse + { // 添加优惠券 $logo = null; - if ($request->hasFile('logo')) { + if ($request->hasFile('logo')) { // 优惠卷LOGO $file = $request->file('logo'); $fileName = Str::random(8).time().'.'.$file->getClientOriginalExtension(); if (! $file->storeAs('public', $fileName)) { - return Redirect::back()->withInput()->withErrors(trans('common.failed_action_item', ['action' => trans('common.store'), 'attribute' => trans('model.coupon.logo')])); + return redirect()->back()->withInput()->withErrors(trans('common.failed_action_item', ['action' => trans('common.store'), 'attribute' => trans('model.coupon.logo')])); } $logo = 'upload/'.$fileName; } @@ -95,42 +90,39 @@ class CouponController extends Controller Coupon::create($data); } - return Redirect::route('admin.coupon.index')->with('successMsg', trans('common.success_item', ['attribute' => trans('common.generate')])); + return redirect(route('admin.coupon.index'))->with('successMsg', trans('common.success_item', ['attribute' => trans('common.generate')])); } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.generate'), 'attribute' => trans('model.coupon.attribute')]).': '.$e->getMessage()); - return Redirect::back()->withInput()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.generate')]).', '.$e->getMessage()); + return redirect()->back()->withInput()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.generate')]).', '.$e->getMessage()); } } - // 添加优惠券页面 - public function create() - { + public function create(): View + { // 添加优惠券页面 return view('admin.coupon.create', [ 'userGroups' => UserGroup::all()->pluck('name', 'id')->toArray(), 'levels' => Level::all()->pluck('name', 'level')->toArray(), ]); } - // 删除优惠券 public function destroy(Coupon $coupon): JsonResponse - { + { // 删除优惠券 try { if ($coupon->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.coupon.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } - // 导出卡券 public function exportCoupon(): void - { + { // 导出卡券 $couponList = Coupon::whereStatus(0)->get(); $filename = trans('model.coupon.attribute').'_'.date('Ymd').'.xlsx'; diff --git a/app/Http/Controllers/Admin/InviteController.php b/app/Http/Controllers/Admin/InviteController.php index 6e53d66b..08be6ef3 100644 --- a/app/Http/Controllers/Admin/InviteController.php +++ b/app/Http/Controllers/Admin/InviteController.php @@ -4,24 +4,24 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\Invite; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Log; use PhpOffice\PhpSpreadsheet\Exception; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; -use Response; use Str; class InviteController extends Controller { - public function index(): \Illuminate\Http\Response + public function index(): View { // 邀请码列表 - return Response::view('admin.aff.invite', [ + return view('admin.aff.invite', [ 'inviteList' => Invite::with(['invitee:id,username', 'inviter:id,username'])->orderBy('status')->orderByDesc('id')->paginate(15)->appends(request('page')), ]); } - public function create(): JsonResponse + public function generate(): JsonResponse { // 生成邀请码 for ($i = 0; $i < 10; $i++) { $obj = new Invite; @@ -30,7 +30,7 @@ class InviteController extends Controller $obj->save(); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); } public function export(): void diff --git a/app/Http/Controllers/Admin/LogsController.php b/app/Http/Controllers/Admin/LogsController.php index 5c754335..9a04fe06 100644 --- a/app/Http/Controllers/Admin/LogsController.php +++ b/app/Http/Controllers/Admin/LogsController.php @@ -15,16 +15,16 @@ use App\Models\UserCreditLog; use App\Models\UserDataFlowLog; use App\Models\UserDataModifyLog; use App\Utils\IP; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Response; class LogsController extends Controller { use DataChart; - public function orderList(Request $request) // 订单列表 - { + public function orderList(Request $request): View + { // 订单列表 $query = Order::with(['user:id,username', 'goods:id,name', 'coupon:id,name,sn']); $request->whenFilled('username', function ($username) use ($query) { @@ -72,19 +72,18 @@ class LogsController extends Controller $status = (int) $request->input('status'); if ($order->status === 3 && $status === 2 && $order->goods->type === 2 && Order::userActivePlan($order->user_id)->exists()) { - return Response::json(['status' => 'fail', 'message' => trans('admin.logs.order.update_conflict')]); // 防止预支付订单假激活 + return response()->json(['status' => 'fail', 'message' => trans('admin.logs.order.update_conflict')]); // 防止预支付订单假激活 } if ($order->update(['is_expire' => 0, 'expired_at' => null, 'status' => $status])) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); } - // 流量日志 - public function trafficLog(Request $request) - { + public function trafficLog(Request $request): View + { // 流量日志 $query = UserDataFlowLog::with(['user', 'node']); $request->whenFilled('port', function ($value) use ($query) { @@ -125,9 +124,8 @@ class LogsController extends Controller return view('admin.logs.traffic', compact(['totalTraffic', 'dataFlowLogs', 'nodes'])); } - // 邮件发送日志列表 - public function notificationLog(Request $request) - { + public function notificationLog(Request $request): View + { // 邮件发送日志列表 $query = NotificationLog::query(); $request->whenFilled('username', function ($username) use ($query) { @@ -141,9 +139,8 @@ class LogsController extends Controller return view('admin.logs.notification', ['notificationLogs' => $query->latest()->paginate(15)->appends($request->except('page'))]); } - // 在线IP监控(实时) - public function onlineIPMonitor(Request $request, ?int $id = null) - { + public function onlineIPMonitor(Request $request, ?int $id = null): View + { // 在线IP监控(实时) $query = NodeOnlineIp::with(['node:id,name', 'user:id,username'])->where('created_at', '>=', strtotime('-2 minutes')); if ($id !== null) { @@ -191,9 +188,8 @@ class LogsController extends Controller ]); } - // 用户余额变动记录 - public function userCreditLogList(Request $request) - { + public function userCreditLogList(Request $request): View + { // 用户余额变动记录 $query = UserCreditLog::with('user:id,username')->latest(); $request->whenFilled('username', function ($username) use ($query) { @@ -205,9 +201,8 @@ class LogsController extends Controller return view('admin.logs.userCreditHistory', ['userCreditLogs' => $query->paginate(15)->appends($request->except('page'))]); } - // 用户封禁记录 - public function userBanLogList(Request $request) - { + public function userBanLogList(Request $request): View + { // 用户封禁记录 $query = UserBanedLog::with('user:id,username,t'); $request->whenFilled('username', function ($username) use ($query) { @@ -219,9 +214,8 @@ class LogsController extends Controller return view('admin.logs.userBanHistory', ['userBanLogs' => $query->latest()->paginate(15)->appends($request->except('page'))]); } - // 用户流量变动记录 - public function userTrafficLogList(Request $request) - { + public function userTrafficLogList(Request $request): View + { // 用户流量变动记录 $query = UserDataModifyLog::with(['user:id,username', 'order.goods:id,name']); $request->whenFilled('username', function ($username) use ($query) { @@ -233,9 +227,8 @@ class LogsController extends Controller return view('admin.logs.userTraffic', ['userTrafficLogs' => $query->latest()->paginate(15)->appends($request->except('page'))]); } - // 用户在线IP记录 - public function userOnlineIPList(Request $request) - { + public function userOnlineIPList(Request $request): View + { // 用户在线IP记录 $query = User::activeUser(); foreach (['username', 'wechat', 'qq'] as $field) { @@ -261,15 +254,13 @@ class LogsController extends Controller return view('admin.logs.userOnlineIP', ['userList' => $userList]); } - // 用户流量监控 - public function userTrafficMonitor(User $user) - { + public function userTrafficMonitor(User $user): View + { // 用户流量监控 return view('admin.logs.userMonitor', array_merge(['username' => $user->username], $this->dataFlowChart($user->id))); } - // 回调日志 - public function callbackList(Request $request) - { + public function callbackList(Request $request): View + { // 回调日志 $query = PaymentCallback::query(); foreach (['trade_no', 'out_trade_no', 'status'] as $field) { diff --git a/app/Http/Controllers/Admin/MarketingController.php b/app/Http/Controllers/Admin/MarketingController.php index 181b7c64..f98bae32 100644 --- a/app/Http/Controllers/Admin/MarketingController.php +++ b/app/Http/Controllers/Admin/MarketingController.php @@ -10,17 +10,17 @@ use App\Models\UserGroup; use App\Models\UserHourlyDataFlow; use App\Notifications\Custom; use Helpers; +use Illuminate\Contracts\View\View; +use Illuminate\Database\Eloquent\Collection; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Notification; -use Response; use Validator; class MarketingController extends Controller { - // 群发消息列表 - public function index(Request $request) - { + public function index(Request $request): View + { // 群发消息列表 $query = Marketing::query(); $request->whenFilled('status', function ($value) use ($query) { @@ -34,17 +34,16 @@ class MarketingController extends Controller ]); } - // 推送消息 public function create(string $type, Request $request): JsonResponse - { + { // 推送消息 if ($request->isMethod('GET')) { - return Response::json(['status' => 'success', 'count' => $this->userStat($request)]); + return response()->json(['status' => 'success', 'count' => $this->userStat($request)]); } $validator = Validator::make($request->all(), ['title' => 'required|string', 'content' => 'required|string']); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->getMessageBag()->first()]); + return response()->json(['status' => 'fail', 'message' => $validator->getMessageBag()->first()]); } $title = $request->input('title'); @@ -52,12 +51,12 @@ class MarketingController extends Controller if ($type === 'push') { // if (! sysConfig('is_push_bear')) { - // return Response::json(['status' => 'fail', 'message' => '推送失败:请先启用并配置PushBear']); + // return response()->json(['status' => 'fail', 'message' => '推送失败:请先启用并配置PushBear']); // } // // Notification::send(PushBearChannel::class, new Custom($title, $content)); - // return Response::json(['status' => 'success', 'message' => '发送完成']); - return Response::json(['status' => 'fail', 'message' => trans('common.developing')]); + // return response()->json(['status' => 'success', 'message' => '发送完成']); + return response()->json(['status' => 'fail', 'message' => trans('common.developing')]); } if ($type === 'email') { @@ -66,16 +65,16 @@ class MarketingController extends Controller Notification::send($users, new Custom($title, $content, ['mail'])); Helpers::addMarketing($users->pluck('id')->toJson(), '1', $title, $content); - return Response::json(['status' => 'success', 'message' => trans('admin.marketing.processed')]); + return response()->json(['status' => 'success', 'message' => trans('admin.marketing.processed')]); } - return Response::json(['status' => 'fail', 'message' => trans('admin.marketing.targeted_users_not_found')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.marketing.targeted_users_not_found')]); } - return Response::json(['status' => 'fail', 'message' => trans('admin.marketing.unknown_sending_type')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.marketing.unknown_sending_type')]); } - private function userStat(Request $request) + private function userStat(Request $request): Collection|int { $users = User::query(); diff --git a/app/Http/Controllers/Admin/NodeAuthController.php b/app/Http/Controllers/Admin/NodeAuthController.php index e135f6df..8a915eb3 100644 --- a/app/Http/Controllers/Admin/NodeAuthController.php +++ b/app/Http/Controllers/Admin/NodeAuthController.php @@ -6,57 +6,53 @@ use App\Http\Controllers\Controller; use App\Models\Node; use App\Models\NodeAuth; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Log; -use Response; use Str; class NodeAuthController extends Controller { - // 节点授权列表 - public function index() - { + public function index(): View + { // 节点授权列表 return view('admin.node.auth', ['authorizations' => NodeAuth::with('node:id,name,type,server,ip,ipv6')->has('node')->orderBy('node_id')->paginate()->appends(request('page'))]); } - // 添加节点授权 public function store(): JsonResponse - { + { // 添加节点授权 $nodes = Node::whereStatus(1)->doesntHave('auth')->orderBy('id')->get(); if ($nodes->isEmpty()) { - return Response::json(['status' => 'success', 'message' => trans('admin.node.auth.empty')]); + return response()->json(['status' => 'success', 'message' => trans('admin.node.auth.empty')]); } $nodes->each(function ($node) { $node->auth()->create(['key' => Str::random(), 'secret' => Str::random(8)]); }); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); } - // 重置节点授权 public function update(NodeAuth $auth): JsonResponse - { + { // 重置节点授权 if ($auth->update(['key' => Str::random(), 'secret' => Str::random(8)])) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset')])]); } - // 删除节点授权 public function destroy(NodeAuth $auth): JsonResponse - { + { // 删除节点授权 try { if ($auth->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('admin.menu.node.auth')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('admin.menu.node.auth')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('admin.menu.node.auth')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/NodeController.php b/app/Http/Controllers/Admin/NodeController.php index 324eabca..32fc2558 100644 --- a/app/Http/Controllers/Admin/NodeController.php +++ b/app/Http/Controllers/Admin/NodeController.php @@ -14,37 +14,51 @@ use App\Models\NodeCertificate; use App\Models\RuleGroup; use App\Utils\NetworkDetection; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Log; -use Response; class NodeController extends Controller { use DataChart; - public function index(Request $request) // 节点列表 - { - $status = $request->input('status'); + public function index(Request $request): View + { // 节点列表 + $query = Node::whereNull('relay_node_id') + ->with([ + 'dailyDataFlows:node_id,u,d', + 'onlineLogs' => function ($query) { + $query->where('log_time', '>=', strtotime('-5 minutes'))->orderBy('log_time', 'desc'); + }, + 'heartbeats' => function ($query) { + $query->where('log_time', '>=', strtotime(config('tasks.recently_heartbeat')))->orderBy('log_time', 'desc'); + }, + 'childNodes', + ]) + ->withCount('onlineLogs'); // 提前统计在线人数 - $query = Node::whereNull('relay_node_id')->with(['onlineLogs', 'dailyDataFlows:node_id,u,d', 'heartbeats', 'childNodes']); - - if (isset($status)) { - $query->whereStatus($status); - } + $request->whenFilled('status', function ($value) use ($query) { + $query->where('status', $value); + }); $nodeList = $query->orderByDesc('sort')->orderBy('id')->paginate(15)->appends($request->except('page')); - foreach ($nodeList as $node) { - $node->online_users = $node->onlineLogs->where('log_time', '>=', strtotime('-5 minutes'))->sortBy('log_time')->first()?->online_user; // 在线人数 + + // 预处理每个节点的数据 + $nodeList->transform(function ($node) { + $node->online_users = $node->onlineLogs->first()?->online_user; // 在线人数 $node->transfer = formatBytes($node->dailyDataFlows->sum('u') + $node->dailyDataFlows->sum('d')); // 已产生流量 - $node_info = $node->heartbeats->where('log_time', '>=', strtotime(config('tasks.recently_heartbeat')))->sortBy('log_time')->first(); // 近期负载 + + $node_info = $node->heartbeats->first(); // 近期负载 $node->isOnline = $node_info !== null && ! empty($node_info->load); $node->load = $node_info->load ?? false; $node->uptime = $node_info === null ? 0 : formatTime($node_info->uptime); - } - return view('admin.node.index', ['nodeList' => $nodeList]); + return $node; + }); + + return view('admin.node.index', compact('nodeList')); } public function store(NodeRequest $request): JsonResponse @@ -55,18 +69,18 @@ class NodeController extends Controller $node->labels()->attach($request->input('labels')); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.add'), 'attribute' => trans('model.node.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - public function create() + public function create(): View { return view('admin.node.info', [ 'nodes' => Node::orderBy('id')->pluck('id', 'name'), @@ -164,10 +178,10 @@ class NodeController extends Controller $new = $node->replicate()->fill($clone); $new->save(); - return redirect()->route('admin.node.edit', $new); + return redirect(route('admin.node.edit', $new)); } - public function edit(Node $node) + public function edit(Node $node): View { // 编辑节点页面 return view('admin.node.info', [ 'node' => $node->load('labels'), @@ -187,30 +201,30 @@ class NodeController extends Controller // 更新节点标签 $node->labels()->sync($request->input('labels')); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.edit'), 'attribute' => trans('model.node.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } public function destroy(Node $node): JsonResponse { // 删除节点 try { if ($node->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.node.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } public function checkNode(Node $node): JsonResponse @@ -220,10 +234,10 @@ class NodeController extends Controller $data[$ip] = [config('common.network_status')[$status['icmp']], config('common.network_status')[$status['tcp']]]; } - return Response::json(['status' => 'success', 'title' => '['.$node->name.'] '.trans('admin.node.connection_test'), 'message' => $data ?? []]); + return response()->json(['status' => 'success', 'title' => '['.$node->name.'] '.trans('admin.node.connection_test'), 'message' => $data ?? []]); } - public function refreshGeo($id): JsonResponse + public function refreshGeo(?int $id = null): JsonResponse { // 刷新节点地理位置 $ret = false; if ($id) { @@ -238,13 +252,13 @@ class NodeController extends Controller } if ($ret) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); } - public function reload($id): JsonResponse + public function reload(?int $id = null): JsonResponse { // 重载节点 $ret = false; if ($id) { @@ -260,13 +274,13 @@ class NodeController extends Controller } if ($ret) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('admin.node.reload')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('admin.node.reload')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('admin.node.reload')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('admin.node.reload')])]); } - public function nodeMonitor(Node $node) + public function nodeMonitor(Node $node): View { // 节点流量监控 return view('admin.node.monitor', array_merge(['nodeName' => $node->name, 'nodeServer' => $node->server], $this->DataFlowChart($node->id, true))); } diff --git a/app/Http/Controllers/Admin/PermissionController.php b/app/Http/Controllers/Admin/PermissionController.php index e584d8d8..efbc0350 100644 --- a/app/Http/Controllers/Admin/PermissionController.php +++ b/app/Http/Controllers/Admin/PermissionController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\PermissionRequest; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; @@ -13,7 +14,7 @@ use Spatie\Permission\Models\Permission; class PermissionController extends Controller { - public function index(Request $request) + public function index(Request $request): View { $query = Permission::query(); @@ -35,12 +36,12 @@ class PermissionController extends Controller return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function create() + public function create(): View { return view('admin.permission.info'); } - public function edit(Permission $permission) + public function edit(Permission $permission): View { return view('admin.permission.info', compact('permission')); } diff --git a/app/Http/Controllers/Admin/ReportController.php b/app/Http/Controllers/Admin/ReportController.php index 86559e0c..1c834af7 100644 --- a/app/Http/Controllers/Admin/ReportController.php +++ b/app/Http/Controllers/Admin/ReportController.php @@ -112,7 +112,7 @@ class ReportController extends Controller } // 处理小时数据 - if ($hourlyDate->isToday() && $todayData) { + if ($todayData && $hourlyDate->isToday()) { $hourlyFlows = $todayData->flatMap(fn ($item) => $item['hourly'])->values(); } else { $hourlyFlows = $user->hourlyDataFlows() @@ -133,7 +133,7 @@ class ReportController extends Controller ->get() ->map(fn ($item) => $mapFlow($item, 'date')); - if ($endDate->isToday() && $todayData) { + if ($todayData && $endDate->isToday()) { $dailyFlows = $dailyFlows->concat($todayData->map(fn ($item) => $item['daily'])); } @@ -153,7 +153,7 @@ class ReportController extends Controller return view('admin.report.userDataAnalysis', compact('data')); } - public function nodeAnalysis(Request $request) + public function nodeAnalysis(Request $request): View { $currentTime = now(); $currentDate = $currentTime->format('m-d'); diff --git a/app/Http/Controllers/Admin/RoleController.php b/app/Http/Controllers/Admin/RoleController.php index 30c097fd..3d747a36 100644 --- a/app/Http/Controllers/Admin/RoleController.php +++ b/app/Http/Controllers/Admin/RoleController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Requests\Admin\RoleRequest; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Log; @@ -13,7 +14,7 @@ use Spatie\Permission\Models\Role; class RoleController extends Controller { - public function index() + public function index(): View { return view('admin.role.index', ['roles' => Role::with('permissions')->paginate(15)]); } @@ -29,12 +30,12 @@ class RoleController extends Controller return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function create() + public function create(): View { return view('admin.role.info', ['permissions' => Permission::all()->pluck('description', 'name')]); } - public function edit(Role $role) + public function edit(Role $role): View { return view('admin.role.info', [ 'role' => $role->load('permissions'), diff --git a/app/Http/Controllers/Admin/RuleController.php b/app/Http/Controllers/Admin/RuleController.php index 5faca2ee..a8806a29 100644 --- a/app/Http/Controllers/Admin/RuleController.php +++ b/app/Http/Controllers/Admin/RuleController.php @@ -8,16 +8,15 @@ use App\Models\Node; use App\Models\Rule; use App\Models\RuleLog; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; class RuleController extends Controller { - // 审计规则列表 - public function index(Request $request) - { + public function index(Request $request): View + { // 审计规则列表 $query = Rule::query(); $request->whenFilled('type', function ($value) use ($query) { @@ -27,45 +26,41 @@ class RuleController extends Controller return view('admin.rule.index', ['rules' => $query->paginate(15)->appends($request->except('page'))]); } - // 添加审计规则 public function store(RuleRequest $request): JsonResponse - { + { // 添加审计规则 if (Rule::create($request->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - // 编辑审计规则 public function update(RuleRequest $request, Rule $rule): JsonResponse - { + { // 编辑审计规则 if ($rule->update($request->validated())) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } - // 删除审计规则 public function destroy(Rule $rule): JsonResponse - { + { // 删除审计规则 try { if ($rule->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.rule.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } - // 用户触发审计规则日志 - public function ruleLogList(Request $request) - { + public function ruleLogList(Request $request): View + { // 用户触发审计规则日志 $query = RuleLog::with(['node:id,name', 'user:id,username', 'rule:id,name']); foreach (['user_id', 'node_id', 'rule_id'] as $field) { @@ -95,13 +90,13 @@ class RuleController extends Controller } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('admin.logs.rule.title')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } if ($ret || RuleLog::doesntExist()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/RuleGroupController.php b/app/Http/Controllers/Admin/RuleGroupController.php index 23cfccf2..f459036a 100644 --- a/app/Http/Controllers/Admin/RuleGroupController.php +++ b/app/Http/Controllers/Admin/RuleGroupController.php @@ -7,18 +7,19 @@ use App\Http\Requests\Admin\RuleGroupRequest; use App\Models\Rule; use App\Models\RuleGroup; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Log; class RuleGroupController extends Controller { - public function index() + public function index(): View { return view('admin.rule.group.index', ['ruleGroups' => RuleGroup::paginate(15)->appends(request('page'))]); } - public function store(RuleGroupRequest $request) + public function store(RuleGroupRequest $request): RedirectResponse { if ($group = RuleGroup::create($request->only('name', 'type'))) { $group->rules()->attach($request->input('rules')); @@ -29,12 +30,12 @@ class RuleGroupController extends Controller return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function create() + public function create(): View { return view('admin.rule.group.info', ['rules' => Rule::all()]); } - public function edit(RuleGroup $group) + public function edit(RuleGroup $group): View { return view('admin.rule.group.info', [ 'ruleGroup' => $group, diff --git a/app/Http/Controllers/Admin/ShopController.php b/app/Http/Controllers/Admin/ShopController.php index 01e523ce..ff8b8c01 100644 --- a/app/Http/Controllers/Admin/ShopController.php +++ b/app/Http/Controllers/Admin/ShopController.php @@ -10,18 +10,17 @@ use App\Models\GoodsCategory; use App\Models\Level; use Arr; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Http\UploadedFile; use Log; -use Redirect; -use Response; use Str; class ShopController extends Controller { - public function index(Request $request) + public function index(Request $request): View { $query = Goods::query(); @@ -62,33 +61,33 @@ class ShopController extends Controller } try { if ($good = Goods::create($data)) { - return Redirect::route('admin.goods.edit', $good)->with('successMsg', trans('common.success_item', ['attribute' => trans('common.add')])); + return redirect()->route('admin.goods.edit', $good)->with('successMsg', trans('common.success_item', ['attribute' => trans('common.add')])); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.add'), 'attribute' => trans('model.goods.attribute')]).': '.$e->getMessage()); - return Redirect::back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()); + return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()); } - return Redirect::back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); + return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function fileUpload(UploadedFile $file) + public function fileUpload(UploadedFile $file): RedirectResponse|string { // 图片上传 $fileName = Str::random(8).time().'.'.$file->getClientOriginalExtension(); if (! $file->storeAs('public', $fileName)) { - return Redirect::back()->withInput()->withErrors(trans('common.failed_action_item', ['action' => trans('common.store'), 'attribute' => trans('model.goods.logo')])); + return redirect()->back()->withInput()->withErrors(trans('common.failed_action_item', ['action' => trans('common.store'), 'attribute' => trans('model.goods.logo')])); } return 'upload/'.$fileName; } - public function create() + public function create(): View { return view('admin.shop.info', ['levels' => Level::orderBy('level')->get(), 'categories' => GoodsCategory::all()]); } - public function edit(Goods $good) + public function edit(Goods $good): View { return view('admin.shop.info', [ 'good' => $good, @@ -115,29 +114,29 @@ class ShopController extends Controller $data['is_hot'] = array_key_exists('is_hot', $data) ? 1 : 0; $data['status'] = array_key_exists('status', $data) ? 1 : 0; if ($good->update($data)) { - return Redirect::back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.edit')])); + return redirect()->back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.edit')])); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.edit'), 'attribute' => trans('model.goods.attribute')]).': '.$e->getMessage()); - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()); + return redirect()->back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.edit')]).', '.$e->getMessage()); } - return Redirect::back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.edit')])); + return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.edit')])); } public function destroy(Goods $good): JsonResponse { try { if ($good->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.goods.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } } diff --git a/app/Http/Controllers/Admin/SubscribeController.php b/app/Http/Controllers/Admin/SubscribeController.php index 41a9ae2d..10a590bc 100644 --- a/app/Http/Controllers/Admin/SubscribeController.php +++ b/app/Http/Controllers/Admin/SubscribeController.php @@ -4,22 +4,15 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Models\UserSubscribe; -use App\Models\UserSubscribeLog; use App\Utils\IP; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Response; -/** - * 订阅控制器. - * - * Class SubscribeController - */ class SubscribeController extends Controller { - // 订阅码列表 - public function index(Request $request) - { + public function index(Request $request): View + { // 订阅码列表 $query = UserSubscribe::with(['user:id,username']); $request->whenFilled('username', function ($username) use ($query) { @@ -37,10 +30,9 @@ class SubscribeController extends Controller return view('admin.subscribe.index', ['subscribeList' => $query->sortable(['id' => 'desc'])->paginate(20)->appends($request->except('page'))]); } - //订阅记录 - public function subscribeLog(Request $request, $userSubscribeId) - { - $query = UserSubscribeLog::whereUserSubscribeId($userSubscribeId); + public function subscribeLog(Request $request, UserSubscribe $userSubscribe): View + { // 订阅记录 + $query = $userSubscribe->userSubscribeLogs(); $request->whenFilled('id', function ($value) use ($query) { $query->where('id', $value); @@ -62,18 +54,19 @@ class SubscribeController extends Controller } } - return view('admin.subscribe.log', ['subscribeLog' => $subscribeLogs, 'subscribe' => UserSubscribe::find($userSubscribeId)]); + return view('admin.subscribe.log', ['subscribeLog' => $subscribeLogs, 'subscribe' => $userSubscribe]); } - // 设置用户的订阅的状态 - public function setSubscribeStatus(UserSubscribe $subscribe): JsonResponse + public function setSubscribeStatus(UserSubscribe $userSubscribe): JsonResponse { - if ($subscribe->status) { - $subscribe->update(['status' => 0, 'ban_time' => strtotime(sysConfig('traffic_ban_time').' minutes'), 'ban_desc' => 'Your subscription has been disabled by the administrator, please contact the administrator to restore it']); - } else { - $subscribe->update(['status' => 1, 'ban_time' => null, 'ban_desc' => null]); - } + $data = $userSubscribe->status + ? ['status' => 0, 'ban_time' => strtotime(sysConfig('traffic_ban_time').' minutes'), 'ban_desc' => 'Your subscription has been disabled by the administrator, please contact the administrator to restore it'] + : ['status' => 1, 'ban_time' => null, 'ban_desc' => null]; - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); + $ret = $userSubscribe->update($data) + ? ['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])] + : ['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]; + + return response()->json($ret); } } diff --git a/app/Http/Controllers/Admin/SystemController.php b/app/Http/Controllers/Admin/SystemController.php index afa0f0d5..5bbebf8a 100644 --- a/app/Http/Controllers/Admin/SystemController.php +++ b/app/Http/Controllers/Admin/SystemController.php @@ -21,19 +21,17 @@ use App\Models\SsConfig; use App\Notifications\Custom; use App\Services\TelegramService; use App\Utils\DDNS; -use Auth; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Notification; use NotificationChannels\Telegram\TelegramChannel; -use Response; class SystemController extends Controller { - // 系统设置 - public function index() - { + public function index(): View + { // 系统设置 return view('admin.config.system', array_merge([ 'payments' => $this->getPayments(), 'captcha' => $this->getCaptcha(), @@ -60,7 +58,7 @@ class SystemController extends Controller // 遍历映射,检查配置项是否存在 foreach ($paymentConfigs as $paymentName => $configKeys) { - $allConfigsExist = array_reduce($configKeys, function ($carry, $configKey) { + $allConfigsExist = array_reduce($configKeys, static function ($carry, $configKey) { return $carry && sysConfig($configKey); }, true); @@ -69,7 +67,7 @@ class SystemController extends Controller } } - return $payment; + return $payment ?? []; } private function getCaptcha(): bool @@ -147,7 +145,7 @@ class SystemController extends Controller } $file = $request->file('alipay_qrcode'); $file->move('uploads/images', $file->getClientOriginalName()); - if (Config::find('alipay_qrcode')->update(['value' => 'uploads/images/'.$file->getClientOriginalName()])) { + if (Config::findOrNew('alipay_qrcode')->update(['value' => 'uploads/images/'.$file->getClientOriginalName()])) { return redirect()->route('admin.system.index', '#payment')->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); } } @@ -160,7 +158,7 @@ class SystemController extends Controller } $file = $request->file('wechat_qrcode'); $file->move('uploads/images', $file->getClientOriginalName()); - if (Config::findOrFail('wechat_qrcode')->update(['value' => 'uploads/images/'.$file->getClientOriginalName()])) { + if (Config::findOrNew('wechat_qrcode')->update(['value' => 'uploads/images/'.$file->getClientOriginalName()])) { return redirect()->route('admin.system.index', '#payment')->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); } } @@ -182,11 +180,11 @@ class SystemController extends Controller // 支付设置判断 if ($value !== null && in_array($name, ['is_AliPay', 'is_QQPay', 'is_WeChatPay'], true) && ! in_array($value, $this->getPayments(), true)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.system.params_required', ['attribute' => trans('admin.system.payment.attribute')])]); + return response()->json(['status' => 'fail', 'message' => trans('admin.system.params_required', ['attribute' => trans('admin.system.payment.attribute')])]); } if ($value > 1 && $name === 'is_captcha' && ! $this->getCaptcha()) { - return Response::json(['status' => 'fail', 'message' => trans('admin.system.params_required', ['attribute' => trans('auth.captcha.attribute')])]); + return response()->json(['status' => 'fail', 'message' => trans('admin.system.params_required', ['attribute' => trans('auth.captcha.attribute')])]); } // 演示环境禁止修改特定配置项 @@ -203,7 +201,7 @@ class SystemController extends Controller ]; if (in_array($name, $denyConfig, true)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.system.demo_restriction')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.system.demo_restriction')]); } } @@ -221,10 +219,10 @@ class SystemController extends Controller // 更新配置 if (Config::findOrFail($name)->update(['value' => $value])) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.update')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.update')])]); } public function sendTestNotification(): JsonResponse // 推送通知测试 @@ -244,12 +242,12 @@ class SystemController extends Controller $selectedChannel = request('channel'); if (! array_key_exists($selectedChannel, $channels)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.system.notification.test.unknown_channel')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.system.notification.test.unknown_channel')]); } - Notification::sendNow(Auth::getUser(), new Custom(trans('admin.system.notification.test.title'), sysConfig('website_name').' '.trans('admin.system.notification.test.content')), [$channels[$selectedChannel]]); + Notification::sendNow(auth()->user(), new Custom(trans('admin.system.notification.test.title'), sysConfig('website_name').' '.trans('admin.system.notification.test.content')), [$channels[$selectedChannel]]); - return Response::json(['status' => 'success', 'message' => trans('admin.system.notification.test.success')]); + return response()->json(['status' => 'success', 'message' => trans('admin.system.notification.test.success')]); } public function common(): View diff --git a/app/Http/Controllers/Admin/TicketController.php b/app/Http/Controllers/Admin/TicketController.php index 33d259e2..b565cc30 100644 --- a/app/Http/Controllers/Admin/TicketController.php +++ b/app/Http/Controllers/Admin/TicketController.php @@ -9,18 +9,16 @@ use App\Models\User; use App\Notifications\TicketClosed; use App\Notifications\TicketCreated; use App\Notifications\TicketReplied; -use Auth; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Response; class TicketController extends Controller { - // 工单列表 - public function index(Request $request) - { - $query = Ticket::where(function ($query) { - $query->whereAdminId(Auth::id())->orwhere('admin_id'); + public function index(Request $request): View + { // 工单列表 + $query = Ticket::where(static function ($query) { + $query->whereAdminId(auth()->id())->orwhere('admin_id'); })->with('user'); $request->whenFilled('username', function ($username) use ($query) { @@ -32,28 +30,26 @@ class TicketController extends Controller return view('admin.ticket.index', ['ticketList' => $query->orderBy('status')->latest()->paginate(10)->appends($request->except('page'))]); } - // 创建工单 public function store(TicketRequest $request): JsonResponse - { + { // 创建工单 $data = $request->validated(); $user = User::find($data['uid']) ?: User::whereUsername($data['username'])->first(); - if ($user === Auth::user()) { - return Response::json(['status' => 'fail', 'message' => trans('admin.ticket.self_send')]); + if ($user === auth()->user()) { + return response()->json(['status' => 'fail', 'message' => trans('admin.ticket.self_send')]); } if ($ticket = Ticket::create(['user_id' => $user->id, 'admin_id' => auth()->id(), 'title' => $data['title'], 'content' => clean($data['content'])])) { $user->notify(new TicketCreated($ticket, route('ticket.edit', $ticket))); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.create')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.create')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.create')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.create')])]); } - // 回复 - public function edit(Ticket $ticket) - { + public function edit(Ticket $ticket): View + { // 回复 return view('admin.ticket.reply', [ 'ticket' => $ticket, 'user' => $ticket->user, @@ -61,9 +57,8 @@ class TicketController extends Controller ]); } - // 回复工单 public function update(Request $request, Ticket $ticket): JsonResponse - { + { // 回复工单 $content = substr(str_replace(['atob', 'eval'], '', clean($request->input('content'))), 0, 300); $reply = $ticket->reply()->create(['admin_id' => Auth::id(), 'content' => $content]); @@ -78,23 +73,22 @@ class TicketController extends Controller $ticket->user->notify(new TicketReplied($reply, route('ticket.edit', $ticket), true)); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.ticket.reply')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.ticket.reply')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.ticket.reply')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.ticket.reply')])]); } - // 关闭工单 public function destroy(Ticket $ticket): JsonResponse - { + { // 关闭工单 if (! $ticket->close()) { - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); } // 通知用户 if (sysConfig('ticket_closed_notification')) { $ticket->user->notify(new TicketClosed($ticket->id, $ticket->title, route('ticket.edit', $ticket), \request('reason'), true)); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.close')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.close')])]); } } diff --git a/app/Http/Controllers/Admin/ToolsController.php b/app/Http/Controllers/Admin/ToolsController.php index ca7a23de..2b999236 100644 --- a/app/Http/Controllers/Admin/ToolsController.php +++ b/app/Http/Controllers/Admin/ToolsController.php @@ -7,21 +7,22 @@ use App\Models\User; use App\Utils\IP; use DB; use Exception; +use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Redirect; -use Response; -use Session; +use Log; +use Symfony\Component\HttpFoundation\BinaryFileResponse; class ToolsController extends Controller { - // SS(R)链接反解析 - public function decompile(Request $request) - { + public function decompile(Request $request): JsonResponse|View + { // SS(R)链接反解析 if ($request->isMethod('POST')) { $content = $request->input('content'); if (empty($content)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.tools.decompile.content_placeholder')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.tools.decompile.content_placeholder')]); } // 反解析处理 @@ -43,15 +44,14 @@ class ToolsController extends Controller // 生成转换好的JSON文件 //file_put_contents(public_path('downloads/decompile.json'), $txt); - return Response::json(['status' => 'success', 'data' => $txt, 'message' => trans('common.success_item', ['attribute' => trans('admin.tools.decompile.attribute')])]); + return response()->json(['status' => 'success', 'data' => $txt, 'message' => trans('common.success_item', ['attribute' => trans('admin.tools.decompile.attribute')])]); } return view('admin.tools.decompile'); } - // 格式转换(SS转SSR) - public function convert(Request $request) - { + public function convert(Request $request): JsonResponse|View + { // 格式转换(SS转SSR) if ($request->isMethod('POST')) { $method = $request->input('method'); $transfer_enable = $request->input('transfer_enable'); @@ -62,13 +62,13 @@ class ToolsController extends Controller $content = $request->input('content'); if (empty($content)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.tools.convert.content_placeholder')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.tools.convert.content_placeholder')]); } // 校验格式 $content = json_decode($content, true); if (empty($content->port_password)) { - return Response::json(['status' => 'fail', 'message' => trans('admin.tools.convert.missing_error')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.tools.convert.missing_error')]); } // 转换成SSR格式JSON @@ -95,18 +95,17 @@ class ToolsController extends Controller // 生成转换好的JSON文件 file_put_contents(public_path('downloads/convert.json'), $json); - return Response::json(['status' => 'success', 'data' => $json, 'message' => trans('common.success_item', ['attribute' => trans('common.convert')])]); + return response()->json(['status' => 'success', 'data' => $json, 'message' => trans('common.success_item', ['attribute' => trans('common.convert')])]); } return view('admin.tools.convert'); } - // 下载转换好的JSON文件 - public function download(Request $request) - { + public function download(Request $request): BinaryFileResponse + { // 下载转换好的JSON文件 $type = (int) $request->input('type'); if (empty($type)) { - exit(trans('admin.tools.convert.params_unknown')); + abort(trans('admin.tools.convert.params_unknown')); } if ($type === 1) { @@ -116,29 +115,28 @@ class ToolsController extends Controller } if (! file_exists($filePath)) { - exit(trans('admin.tools.convert.file_missing')); + abort(trans('admin.tools.convert.file_missing')); } - return Response::download($filePath); + return response()->download($filePath); } - // 数据导入 - public function import(Request $request) - { + public function import(Request $request): RedirectResponse|View + { // 数据导入 if ($request->isMethod('POST')) { if (! $request->hasFile('uploadFile')) { - return Redirect::back()->withErrors(trans('admin.tools.import.file_required')); + return redirect()->back()->withErrors(trans('admin.tools.import.file_required')); } $file = $request->file('uploadFile'); // 只能上传JSON文件 if ($file->getClientMimeType() !== 'application/json' || $file->getClientOriginalExtension() !== 'json') { - return Redirect::back()->withErrors(trans('admin.tools.import.file_type_error', ['type' => 'JSON'])); + return redirect()->back()->withErrors(trans('admin.tools.import.file_type_error', ['type' => 'JSON'])); } if (! $file->isValid()) { - return Redirect::back()->withErrors(trans('admin.tools.import.file_error')); + return redirect()->back()->withErrors(trans('admin.tools.import.file_error')); } $save_path = realpath(storage_path('uploads')); @@ -149,7 +147,7 @@ class ToolsController extends Controller $data = file_get_contents($save_path.'/'.$new_name); $data = json_decode($data, true); if (! $data) { - return Redirect::back()->withErrors(trans('admin.tools.import.format_error', ['type' => 'JSON'])); + return redirect()->back()->withErrors(trans('admin.tools.import.format_error', ['type' => 'JSON'])); } try { @@ -178,21 +176,20 @@ class ToolsController extends Controller DB::rollBack(); Log::error(trans('common.error_action_item', ['action' => trans('common.import'), 'attribute' => trans('admin.menu.tools.import')]).': '.$e->getMessage()); - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.import')]).', '.$e->getMessage()); + return redirect()->back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.import')]).', '.$e->getMessage()); } - return Redirect::back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.import')])); + return redirect()->back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.import')])); } return view('admin.tools.import'); } - // 日志分析 - public function analysis() - { + public function analysis(): View + { // 日志分析 $file = storage_path('app/ssserver.log'); if (! file_exists($file)) { - Session::flash('analysisErrorMsg', trans('admin.tools.analysis.file_missing', ['file_name' => $file])); + session()->flash('analysisErrorMsg', trans('admin.tools.analysis.file_missing', ['file_name' => $file])); return view('admin.tools.analysis'); } @@ -223,9 +220,8 @@ class ToolsController extends Controller return view('admin.tools.analysis', ['urlList' => array_unique($url ?? [])]); } - // 类似Linux中的tail命令 - private function tail($file, $n, $base = 5) - { + private function tail(string $file, int $n, int $base = 5): array|false + { // 类似Linux中的tail命令 $fileLines = $this->countLine($file); if ($fileLines < 15000) { return false; @@ -239,7 +235,7 @@ class ToolsController extends Controller while ($counts <= $n) { try { fseek($fp, -$pos, SEEK_END); - } catch (Exception $e) { + } catch (Exception) { break; } @@ -253,11 +249,8 @@ class ToolsController extends Controller return array_slice($lines, 0, $n); } - /** - * 计算文件行数. - */ - private function countLine($file): int - { + private function countLine(string $file): int + { // 计算文件行数 $fp = fopen($file, 'rb'); $i = 0; while (! feof($fp)) { diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 0e818287..d0e2872c 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -17,19 +17,17 @@ use App\Services\ProxyService; use App\Utils\Helpers; use App\Utils\IP; use Arr; -use Auth; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; -use Session; use Spatie\Permission\Models\Role; use Str; class UserController extends Controller { - public function index(Request $request) + public function index(Request $request): View { $query = User::with('subscribe'); @@ -101,7 +99,7 @@ class UserController extends Controller $roles = $request->input('roles'); try { - $adminUser = Auth::getUser(); + $adminUser = auth()->user(); if ($roles && ($adminUser->can('give roles') || (in_array('Super Admin', $roles, true) && $adminUser->hasRole('Super Admin')))) { // 编辑用户权限, 只有超级管理员才有赋予超级管理的权限 $user->assignRole($roles); @@ -110,23 +108,23 @@ class UserController extends Controller if ($user) { Helpers::addUserTrafficModifyLog($user->id, 0, $data['transfer_enable'], trans('Manually add in dashboard.')); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.add')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.add'), 'attribute' => trans('model.user.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.add')])]); } - public function create() + public function create(): View { - if (Auth::getUser()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 + if (auth()->user()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 $roles = Role::all()->pluck('description', 'name'); - } elseif (Auth::getUser()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 - $roles = Auth::getUser()->roles()->pluck('description', 'name'); + } elseif (auth()->user()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 + $roles = auth()->user()->roles()->pluck('description', 'name'); } return view('admin.user.info', [ @@ -136,12 +134,12 @@ class UserController extends Controller ]); } - public function edit(User $user) + public function edit(User $user): View { - if (Auth::getUser()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 + if (auth()->user()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 $roles = Role::all()->pluck('description', 'name'); - } elseif (Auth::getUser()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 - $roles = Auth::getUser()->roles()->pluck('description', 'name'); + } elseif (auth()->user()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 + $roles = auth()->user()->roles()->pluck('description', 'name'); } return view('admin.user.info', [ @@ -155,23 +153,23 @@ class UserController extends Controller public function destroy(User $user): JsonResponse { if ($user->id === 1) { - return Response::json(['status' => 'fail', 'message' => trans('admin.user.admin_deletion')]); + return response()->json(['status' => 'fail', 'message' => trans('admin.user.admin_deletion')]); } try { if ($user->delete()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.delete')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.delete'), 'attribute' => trans('model.user.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')]).', '.$e->getMessage()]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.delete')])]); } - public function batchAddUsers(): ?JsonResponse + public function batchAddUsers(): JsonResponse { try { for ($i = 0; $i < (int) request('amount', 1); $i++) { @@ -179,36 +177,36 @@ class UserController extends Controller Helpers::addUserTrafficModifyLog($user->id, 0, $user->transfer_enable, trans('Batch generate user accounts in dashboard.')); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.generate'), 'attribute' => trans('model.user.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.generate')]).', '.$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.generate')]).', '.$e->getMessage()]); } } public function switchToUser(User $user): JsonResponse { // 存储当前管理员ID,并将当前登录信息改成要切换的用户的身份信息 - Session::put('admin', Auth::id()); - Session::put('user', $user->id); + session()->put('admin', auth()->id()); + session()->put('user', $user->id); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('admin.user.info.switch')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('admin.user.info.switch')])]); } public function resetTraffic(User $user): JsonResponse { try { if ($user->update(['u' => 0, 'd' => 0])) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.reset'), 'attribute' => trans('model.user.usable_traffic')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset').', '.$e->getMessage()])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset').', '.$e->getMessage()])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.reset')])]); } public function update(UserUpdateRequest $request, User $user): JsonResponse @@ -226,9 +224,9 @@ class UserController extends Controller $roles = $request->input('roles'); try { if (isset($roles)) { - $adminUser = Auth::getUser(); + $adminUser = auth()->user(); if ($adminUser->can('give roles') || $adminUser->hasRole('Super Admin') - || (in_array('Super Admin', $roles, true) && Auth::getUser()->hasRole('Super Admin'))) { + || (in_array('Super Admin', $roles, true) && auth()->user()->hasRole('Super Admin'))) { $user->syncRoles($roles); } } else { @@ -253,15 +251,15 @@ class UserController extends Controller } if ($user->update($data)) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.edit')])]); } } catch (Exception $e) { Log::error(trans('common.error_action_item', ['action' => trans('common.edit'), 'attribute' => trans('model.user.attribute')]).': '.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit').', '.$e->getMessage()])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit').', '.$e->getMessage()])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.edit')])]); } public function handleUserCredit(Request $request, User $user): JsonResponse @@ -269,20 +267,20 @@ class UserController extends Controller $amount = $request->input('amount'); if (empty($amount)) { - return Response::json(['status' => 'fail', 'message' => trans('common.error_item', ['attribute' => trans('user.recharge')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.error_item', ['attribute' => trans('user.recharge')])]); } // 加减余额 if ($user->updateCredit($amount)) { Helpers::addUserCreditLog($user->id, null, $user->credit - $amount, $user->credit, $amount, $request->input('description') ?? 'Manually edit in dashboard.'); // 写入余额变动日志 - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.recharge')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.recharge')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.recharge')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.recharge')])]); } - public function export(User $user) + public function export(User $user): View { return view('admin.user.export', [ 'user' => $user, @@ -295,10 +293,10 @@ class UserController extends Controller $proxyServer = new ProxyService($user); $server = $proxyServer->getProxyConfig(Node::findOrFail($request->input('id'))); - return Response::json(['status' => 'success', 'data' => $proxyServer->getUserProxyConfig($server, $request->input('type') !== 'text'), 'title' => $server['type']]); + return response()->json(['status' => 'success', 'data' => $proxyServer->getUserProxyConfig($server, $request->input('type') !== 'text'), 'title' => $server['type']]); } - public function oauth() + public function oauth(): View { $list = UserOauth::with('user:id,username')->paginate(15)->appends(\request('page')); @@ -314,6 +312,6 @@ class UserController extends Controller $node->avaliable = in_array($node->id, $nodeList, true) ? '✔️' : '❌'; } - return Response::json(['status' => 'success', 'data' => $nodes]); + return response()->json(['status' => 'success', 'data' => $nodes]); } } diff --git a/app/Http/Controllers/Admin/UserGroupController.php b/app/Http/Controllers/Admin/UserGroupController.php index 3d72e199..653fd5b0 100644 --- a/app/Http/Controllers/Admin/UserGroupController.php +++ b/app/Http/Controllers/Admin/UserGroupController.php @@ -7,18 +7,19 @@ use App\Http\Requests\Admin\UserGroupRequest; use App\Models\Node; use App\Models\UserGroup; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Log; class UserGroupController extends Controller { - public function index() + public function index(): View { return view('admin.user.group.index', ['groups' => UserGroup::paginate(15)->appends(request('page'))]); } - public function store(UserGroupRequest $request) + public function store(UserGroupRequest $request): RedirectResponse { if ($userGroup = UserGroup::create($request->only(['name']))) { $userGroup->nodes()->attach($request->input('nodes')); @@ -29,12 +30,12 @@ class UserGroupController extends Controller return redirect()->back()->withInput()->withErrors(trans('common.failed_item', ['attribute' => trans('common.add')])); } - public function create() + public function create(): View { return view('admin.user.group.info', ['nodes' => Node::whereStatus(1)->pluck('name', 'id')]); } - public function edit(UserGroup $group) + public function edit(UserGroup $group): View { return view('admin.user.group.info', [ 'group' => $group, diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 4755e4b6..15e02c7d 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -10,18 +10,17 @@ use App\Models\ReferralApply; use App\Models\ReferralLog; use App\Models\User; use App\Models\UserHourlyDataFlow; -use Cache; use DB; -use Response; +use Illuminate\Contracts\View\View; class AdminController extends Controller { - public function index() + public function index(): View { $past = strtotime('-'.sysConfig('expire_days').' days'); $today = today(); - $stats = Cache::remember('user_stats', now()->addMinutes(5), function () use ($today, $past) { + $stats = cache()->remember('user_stats', now()->addMinutes(5), function () use ($today, $past) { $dailyTrafficUsage = NodeHourlyDataFlow::whereDate('created_at', $today)->sum(DB::raw('u + d')); return [ diff --git a/app/Http/Controllers/Api/Client/ClientController.php b/app/Http/Controllers/Api/Client/ClientController.php index 10d0c8c2..20c26c17 100644 --- a/app/Http/Controllers/Api/Client/ClientController.php +++ b/app/Http/Controllers/Api/Client/ClientController.php @@ -33,7 +33,7 @@ class ClientController extends Controller } } - public function getUserInfo() + public function getUserInfo(): false|JsonResponse { $user = auth()->user(); @@ -79,8 +79,7 @@ class ClientController extends Controller public function getOrders(Request $request): JsonResponse { - $user = $request->user(); - $orders = $user->orders()->orderByDesc('id')->limit(8)->get(); + $orders = $request->user()->orders()->orderByDesc('id')->limit(8)->get(); $data = []; foreach ($orders as $order) { $data[] = [ @@ -125,6 +124,7 @@ class ClientController extends Controller public function getInvite(): JsonResponse { $user = auth()->user(); + $userService = new UserService; $referral_traffic = formatBytes(sysConfig('referral_traffic'), 'MiB'); $referral_percent = sysConfig('referral_percent'); @@ -136,8 +136,6 @@ class ClientController extends Controller 'referral_percent' => $referral_percent * 100, ]); - $userService = new UserService; - $data['invite_code'] = $code ?? $userService->inviteURI(true); $data['invite_url'] = $userService->inviteURI(); $data['invite_text'] = $data['invite_url'].'&(复制整段文字到浏览器打开即可访问),找梯子最重要的就是稳定,这个已经上线三年了,一直稳定没有被封过,赶紧下载备用吧!'.($code ? '安装后打开填写我的邀请码【'.$code.'】,你还能多得3天会员.' : ''); @@ -202,11 +200,10 @@ class ClientController extends Controller public function getProxyList(): JsonResponse { - $proxyServer = new ProxyService; - + $proxyService = new ProxyService; $servers = []; - foreach ($proxyServer->getNodeList(null, false) as $node) { - $server = $proxyServer->getProxyConfig($node); + foreach ($proxyService->getNodeList(null, false) as $node) { + $server = $proxyService->getProxyConfig($node); if ($server['type'] === '`shadowsocks`' || $server['type'] === 'shadowsocksr') { $server['type'] = 1; } @@ -237,7 +234,7 @@ class ClientController extends Controller } } - public function getconfig(): JsonResponse + public function getConfig(): JsonResponse { $config = $this->clientConfig(); Arr::forget($config, ['read', 'configured']); @@ -245,7 +242,7 @@ class ClientController extends Controller return $this->succeed(null, ['config' => $config]); } - private function clientConfig(?string $key = null) + private function clientConfig(?string $key = null): array|bool|string|int { if (! config('client')) { Artisan::call('config:cache'); diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 96a144df..3338c415 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -14,33 +14,29 @@ use App\Notifications\PasswordReset; use App\Notifications\Verification; use App\Utils\Helpers; use App\Utils\IP; -use Auth; -use Cache; -use Cookie; use Hash; use Hashids\Hashids; +use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Notification; -use Redirect; -use Response; use romanzipp\Turnstile\Rules\TurnstileCaptcha; -use Session; use Str; use Validator; class AuthController extends Controller { // 登录 - public function showLoginForm() + public function showLoginForm(): RedirectResponse|View { // 根据权限跳转 - if (Auth::check()) { - if (Auth::getUser()->can('admin.index')) { - return Redirect::route('admin.index'); + if (auth()->check()) { + if (auth()->getUser()?->can('admin.index')) { + return redirect()->route('admin.index'); } - return Redirect::route('home'); + return redirect()->route('home'); } return view('auth.login'); @@ -57,13 +53,13 @@ class AuthController extends Controller } // 验证账号并创建会话 - if (! Auth::attempt($data, $request->has('remember'))) { - return Redirect::back()->withInput()->withErrors(trans('auth.error.login_failed')); + if (! auth()->attempt($data, $request->has('remember'))) { + return redirect()->back()->withInput()->withErrors(trans('auth.error.login_failed')); } - $user = Auth::getUser(); + $user = auth()->getUser(); if (! $user) { - return Redirect::back()->withInput()->withErrors(trans('auth.error.login_error')); + return redirect()->back()->withInput()->withErrors(trans('auth.error.login_error')); } if ($user->can('admin.index')) { @@ -72,22 +68,22 @@ class AuthController extends Controller if ($request->routeIs('admin.login.post')) { // 管理页面登录, 非权限者清场 - Auth::logout(); + auth()->logout(); - return Redirect::route('login')->withErrors(trans('common.failed_item', ['attribute' => trans('auth.login')])); + return redirect()->route('login')->withErrors(trans('common.failed_item', ['attribute' => trans('auth.login')])); } // 校验普通用户账号状态 if ($user->status === -1) { - Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 + auth()->logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.error.account_baned')); + return redirect()->back()->withInput()->withErrors(trans('auth.error.account_baned')); } if ($user->status === 0 && sysConfig('is_activate_account')) { - Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 + auth()->logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.active.promotion', + return redirect()->back()->withInput()->withErrors(trans('auth.active.promotion', ['action' => ''.trans('common.active_item', ['attribute' => trans('common.account')]).''])); } @@ -115,7 +111,7 @@ class AuthController extends Controller $validator = Validator::make($request->all(), $rules[$captchaType]); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed')); + return redirect()->back()->withInput()->withErrors(trans('auth.captcha.error.failed')); } } @@ -124,21 +120,21 @@ class AuthController extends Controller public function logout(Request $request): RedirectResponse { // 退出 - Auth::logout(); + auth()->logout(); $request->session()->invalidate(); $request->session()->regenerateToken(); - return Redirect::route('login'); + return redirect()->route('login'); } - public function showRegistrationForm() + public function showRegistrationForm(): View { - Session::put('register_token', Str::random()); + session()->put('register_token', Str::random()); return view('auth.register', ['emailList' => (int) sysConfig('is_email_filtering') !== 2 ? false : EmailFilter::whereType(2)->get()]); } - public function register(RegisterRequest $request) + public function register(RegisterRequest $request): RedirectResponse { // 注册 $cacheKey = 'register_times_'.md5(IP::getClientIp()); // 注册限制缓存key @@ -149,13 +145,13 @@ class AuthController extends Controller $aff = $request->input('aff'); // 防止重复提交 - if ($register_token !== Session::pull('register_token')) { - return Redirect::back()->withInput()->withErrors(trans('auth.error.repeat_request')); + if ($register_token !== session()->pull('register_token')) { + return redirect()->back()->withInput()->withErrors(trans('auth.error.repeat_request')); } // 是否开启注册 if (! sysConfig('is_register')) { - return Redirect::back()->withErrors(trans('auth.register.error.disable')); + return redirect()->back()->withErrors(trans('auth.register.error.disable')); } // 校验域名邮箱黑白名单 @@ -171,22 +167,22 @@ class AuthController extends Controller // 校验邀请码合法性 if ($invite_code) { if (Invite::whereCode($invite_code)->whereStatus(0)->doesntExist()) { - return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.invite.unavailable')); + return redirect()->back()->withInput($request->except('code'))->withErrors(trans('auth.invite.unavailable')); } } elseif ((int) sysConfig('is_invite_register') === 2) { // 必须使用邀请码 - return Redirect::back()->withInput()->withErrors(trans('validation.required', ['attribute' => trans('user.invite.attribute')])); + return redirect()->back()->withInput()->withErrors(trans('validation.required', ['attribute' => trans('user.invite.attribute')])); } } // 注册前发送激活码 if ((int) sysConfig('is_activate_account') === 1) { if (! $verify_code) { - return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.required')); + return redirect()->back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.required')); } $verifyCode = VerifyCode::whereAddress($data['username'])->whereCode($verify_code)->whereStatus(0)->first(); if (! $verifyCode) { - return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.error.timeout')); + return redirect()->back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.error.timeout')); } $verifyCode->status = 1; @@ -200,17 +196,17 @@ class AuthController extends Controller } // 24小时内同IP注册限制 - if (sysConfig('register_ip_limit') && Cache::has($cacheKey)) { - $registerTimes = Cache::get($cacheKey); + if (sysConfig('register_ip_limit') && cache()->has($cacheKey)) { + $registerTimes = cache()->get($cacheKey); if ($registerTimes >= sysConfig('register_ip_limit')) { - return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.register.error.throttle')); + return redirect()->back()->withInput($request->except('code'))->withErrors(trans('auth.register.error.throttle')); } } // 获取可用端口 $port = Helpers::getPort(); if ($port > sysConfig('max_port')) { - return Redirect::back()->withInput()->withErrors(trans('auth.register.error.disable')); + return redirect()->back()->withInput()->withErrors(trans('auth.register.error.disable')); } // 获取aff @@ -221,26 +217,23 @@ class AuthController extends Controller // 创建新用户 if (! $user = Helpers::addUser($data['username'], $data['password'], $transfer_enable, (int) sysConfig('default_days'), $inviter_id, $data['nickname'])) { // 注册失败,抛出异常 - return Redirect::back()->withInput()->withErrors(trans('auth.register.failed')); + return redirect()->back()->withInput()->withErrors(trans('auth.register.failed')); } // 注册次数+1 - if (Cache::has($cacheKey)) { - Cache::increment($cacheKey); + if (cache()->has($cacheKey)) { + cache()->increment($cacheKey); } else { - Cache::put($cacheKey, 1, Day); // 24小时 + cache()->put($cacheKey, 1, Day); // 24小时 } // 更新邀请码 if ($affArr['code_id'] && sysConfig('is_invite_register')) { - $invite = Invite::find($affArr['code_id']); - if ($invite) { - $invite->update(['invitee_id' => $user->id, 'status' => 1]); - } + Invite::find($affArr['code_id'])?->update(['invitee_id' => $user->id, 'status' => 1]); } // 清除邀请人Cookie - Cookie::unqueue('register_aff'); + cookie()->unqueue('register_aff'); // 注册后发送激活码 if ((int) sysConfig('is_activate_account') === 2) { @@ -250,7 +243,7 @@ class AuthController extends Controller $user->notifyNow(new AccountActivation($activeUserUrl)); - Session::flash('successMsg', + session()->flash('successMsg', __("Thank you for signing up! Before you start, you need to verify your email by clicking on the link we have just sent to your email! If you haven't received an email, we would be happy to send another one.")); } else { // 则直接给推荐人加流量 @@ -265,13 +258,13 @@ class AuthController extends Controller $user->update(['status' => 1]); } - Session::flash('successMsg', trans('common.success_item', ['attribute' => trans('auth.register.attribute')])); + session()->flash('successMsg', trans('common.success_item', ['attribute' => trans('auth.register.attribute')])); } - return Redirect::route('login')->withInput(); + return redirect()->route('login')->withInput(); } - private function emailChecker($email, $returnType = 0) + private function emailChecker(string $email, int $returnType = 0): RedirectResponse|JsonResponse|false { // 邮箱检查 $emailFilterList = EmailFilter::whereType(sysConfig('is_email_filtering'))->pluck('words')->toArray(); $emailSuffix = explode('@', $email); // 提取邮箱后缀 @@ -281,27 +274,27 @@ class AuthController extends Controller case 1: // 黑名单 if (in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) { if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email.error.banned')); + return redirect()->back()->withErrors(trans('auth.email.error.banned')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.banned')]); + return response()->json(['status' => 'fail', 'message' => trans('auth.email.error.banned')]); } break; case 2: // 白名单 if (! in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) { if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email.error.invalid')); + return redirect()->back()->withErrors(trans('auth.email.error.invalid')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); + return response()->json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); } break; default: if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email.error.invalid')); + return redirect()->back()->withErrors(trans('auth.email.error.invalid')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); + return response()->json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); } } @@ -347,7 +340,7 @@ class AuthController extends Controller return $uid && User::whereId($uid)->exists() ? $uid : null; } - private function addVerifyUrl($uid, $email): string + private function addVerifyUrl(int $uid, string $email): string { // 生成申请的请求地址 $token = md5(sysConfig('website_name').$email.microtime()); $verify = new Verify; @@ -358,21 +351,21 @@ class AuthController extends Controller return $token; } - public function resetPassword(Request $request) + public function resetPassword(Request $request): RedirectResponse|View { // 重设密码页 if ($request->isMethod('POST')) { // 校验请求 $validator = Validator::make($request->all(), ['username' => 'required|'.(sysConfig('username_type') ?? 'email').'|exists:user,username']); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors($validator->errors()); + return redirect()->back()->withInput()->withErrors($validator->errors()); } $username = $request->input('username'); // 是否开启重设密码 if (! sysConfig('password_reset_notification')) { - return Redirect::back()->withErrors(trans('auth.password.reset.error.disabled', ['email' => sysConfig('webmaster_email')])); + return redirect()->back()->withErrors(trans('auth.password.reset.error.disabled', ['email' => sysConfig('webmaster_email')])); } // 查找账号 @@ -380,10 +373,10 @@ class AuthController extends Controller // 24小时内重设密码次数限制 $resetTimes = 0; - if (Cache::has('resetPassword_'.md5($username))) { - $resetTimes = Cache::get('resetPassword_'.md5($username)); + if (cache()->has('resetPassword_'.md5($username))) { + $resetTimes = cache()->get('resetPassword_'.md5($username)); if ($resetTimes >= sysConfig('reset_password_times')) { - return Redirect::back()->withErrors(trans('auth.password.reset.error.throttle', ['time' => sysConfig('reset_password_times')])); + return redirect()->back()->withErrors(trans('auth.password.reset.error.throttle', ['time' => sysConfig('reset_password_times')])); } } @@ -394,18 +387,18 @@ class AuthController extends Controller $resetUrl = route('resettingPasswd', $token); $user->notifyNow(new PasswordReset($resetUrl)); - Cache::put('resetPassword_'.md5($username), $resetTimes + 1, Day); + cache()->put('resetPassword_'.md5($username), $resetTimes + 1, Day); - return Redirect::back()->with('successMsg', trans('auth.password.reset.sent')); + return redirect()->back()->with('successMsg', trans('auth.password.reset.sent')); } return view('auth.resetPassword'); } - public function reset(Request $request, $token) + public function reset(Request $request, ?string $token): RedirectResponse|View { // 重设密码 if (! $token) { - return Redirect::route('login'); + return redirect()->route('login'); } if ($request->isMethod('POST')) { @@ -414,7 +407,7 @@ class AuthController extends Controller ]); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors($validator->errors()); + return redirect()->back()->withInput()->withErrors($validator->errors()); } $password = $request->input('password'); @@ -422,36 +415,36 @@ class AuthController extends Controller $verify = Verify::type(1)->whereToken($token)->firstOrFail(); $user = $verify->user; if (! $verify) { - return Redirect::route('login'); + return redirect()->route('login'); } if ($user->status === -1) { - return Redirect::back()->withErrors(trans('auth.error.account_baned')); + return redirect()->back()->withErrors(trans('auth.error.account_baned')); } if ($verify->status === 1) { - return Redirect::back()->withErrors(trans('auth.error.url_timeout')); + return redirect()->back()->withErrors(trans('auth.error.url_timeout')); } if (Hash::check($password, $verify->user->password)) { - return Redirect::back()->withErrors(trans('auth.password.reset.error.same')); + return redirect()->back()->withErrors(trans('auth.password.reset.error.same')); } // 更新密码 if (! $user->update(['password' => $password])) { - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('auth.password.reset.attribute')])); + return redirect()->back()->withErrors(trans('common.failed_item', ['attribute' => trans('auth.password.reset.attribute')])); } // 置为已使用 $verify->status = 1; $verify->save(); - return Redirect::route('login')->with('successMsg', trans('auth.password.reset.success')); + return redirect()->route('login')->with('successMsg', trans('auth.password.reset.success')); } $verify = Verify::type(1)->whereToken($token)->first(); if (! $verify) { - return Redirect::route('login'); + return redirect()->route('login'); } if (time() - strtotime($verify->created_at) >= 1800) { @@ -463,38 +456,38 @@ class AuthController extends Controller return view('auth.reset', ['verify' => Verify::type(1)->whereToken($token)->first()]); // 重新获取一遍verify } - public function activeUser(Request $request) + public function activeUser(Request $request): RedirectResponse|View { // 激活账号页 if ($request->isMethod('POST')) { $validator = Validator::make($request->all(), ['username' => 'required|'.(sysConfig('username_type') ?? 'email').'|exists:user,username']); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors($validator->errors()); + return redirect()->back()->withInput()->withErrors($validator->errors()); } $username = $request->input('username'); // 是否开启账号激活 if (! sysConfig('is_activate_account')) { - return Redirect::back()->withInput()->withErrors(trans('auth.active.error.disable')); + return redirect()->back()->withInput()->withErrors(trans('auth.active.error.disable')); } // 查找账号 $user = User::whereUsername($username)->firstOrFail(); if ($user->status === -1) { - return Redirect::back()->withErrors(trans('auth.error.account_baned')); + return redirect()->back()->withErrors(trans('auth.error.account_baned')); } if ($user->status === 1) { - return Redirect::back()->withErrors(trans('auth.active.error.activated')); + return redirect()->back()->withErrors(trans('auth.active.error.activated')); } // 24小时内激活次数限制 $activeTimes = 0; - if (Cache::has('activeUser_'.md5($username))) { - $activeTimes = Cache::get('activeUser_'.md5($username)); + if (cache()->has('activeUser_'.md5($username))) { + $activeTimes = cache()->get('activeUser_'.md5($username)); if ($activeTimes >= sysConfig('active_times')) { - return Redirect::back()->withErrors(trans('auth.active.error.throttle', ['email' => sysConfig('webmaster_email')])); + return redirect()->back()->withErrors(trans('auth.active.error.throttle', ['email' => sysConfig('webmaster_email')])); } } @@ -506,40 +499,36 @@ class AuthController extends Controller Notification::route('mail', $username)->notifyNow(new AccountActivation($activeUserUrl)); - Cache::put('activeUser_'.md5($username), $activeTimes + 1, Day); + cache()->put('activeUser_'.md5($username), $activeTimes + 1, Day); - return Redirect::back()->with('successMsg', trans('auth.active.sent')); + return redirect()->back()->with('successMsg', trans('auth.active.sent')); } return view('auth.activeUser'); } - public function active($token) + public function active(string $token): RedirectResponse|View { // 激活账号 - if (! $token) { - return Redirect::route('login'); - } - $verify = Verify::type(1)->with('user')->whereToken($token)->firstOrFail(); $user = $verify->user; if (! $verify) { - return Redirect::route('login'); + return redirect()->route('login'); } if (empty($user) || $verify->status > 0) { - Session::flash('errorMsg', trans('auth.error.url_timeout')); + session()->flash('errorMsg', trans('auth.error.url_timeout')); return view('auth.active'); } if ($user->status === 1) { - Session::flash('errorMsg', trans('auth.active.error.activated')); + session()->flash('errorMsg', trans('auth.active.error.activated')); return view('auth.active'); } if (time() - strtotime($verify->created_at) >= 1800) { - Session::flash('errorMsg', trans('auth.error.url_timeout')); + session()->flash('errorMsg', trans('auth.error.url_timeout')); // 置为已失效 $verify->status = 2; @@ -550,9 +539,9 @@ class AuthController extends Controller // 更新账号状态 if (! $user->update(['status' => 1])) { - Session::flash('errorMsg', trans('common.active_item', ['attribute' => trans('common.failed')])); + session()->flash('errorMsg', trans('common.active_item', ['attribute' => trans('common.failed')])); - return Redirect::back(); + return redirect()->back(); } // 置为已使用 @@ -565,17 +554,17 @@ class AuthController extends Controller $inviter->incrementData(sysConfig('referral_traffic') * MiB); } - Session::flash('successMsg', trans('common.active_item', ['attribute' => trans('common.success')])); + session()->flash('successMsg', trans('common.active_item', ['attribute' => trans('common.success')])); return view('auth.active'); } - public function sendCode(Request $request) + public function sendCode(Request $request): JsonResponse { // 发送注册验证码 $validator = Validator::make($request->all(), ['username' => 'required|'.(sysConfig('username_type') ?? 'email').'|unique:user,username']); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->getMessageBag()->first()]); + return response()->json(['status' => 'fail', 'message' => $validator->getMessageBag()->first()]); } $email = $request->input('username'); $ip = IP::getClientIP(); @@ -590,12 +579,12 @@ class AuthController extends Controller // 是否开启注册发送验证码 if ((int) sysConfig('is_activate_account') !== 1) { - return Response::json(['status' => 'fail', 'message' => trans('auth.active.error.disable')]); + return response()->json(['status' => 'fail', 'message' => trans('auth.active.error.disable')]); } // 防刷机制 - if (Cache::has('send_verify_code_'.md5($ip))) { - return Response::json(['status' => 'fail', 'message' => trans('auth.register.error.throttle')]); + if (cache()->has('send_verify_code_'.md5($ip))) { + return response()->json(['status' => 'fail', 'message' => trans('auth.register.error.throttle')]); } // 发送邮件 @@ -604,12 +593,12 @@ class AuthController extends Controller Notification::route('mail', $email)->notifyNow(new Verification($code)); } - Cache::put('send_verify_code_'.md5($ip), $ip, Minute); + cache()->put('send_verify_code_'.md5($ip), $ip, Minute); - return Response::json(['status' => 'success', 'message' => trans('auth.captcha.sent')]); + return response()->json(['status' => 'success', 'message' => trans('auth.captcha.sent')]); } - public function free() + public function free(): View { // 公开的邀请码列表 return view('auth.free', ['inviteList' => Invite::whereInviterId(null)->whereStatus(0)->paginate()]); } @@ -617,9 +606,9 @@ class AuthController extends Controller public function switchLang(string $locale): RedirectResponse { // 切换语言 if (array_key_exists($locale, config('common.language'))) { - Session::put('locale', $locale); + session()->put('locale', $locale); } - return Redirect::back(); + return redirect()->back(); } } diff --git a/app/Http/Controllers/MessageController.php b/app/Http/Controllers/MessageController.php index 8bbac5d4..6fabdd27 100644 --- a/app/Http/Controllers/MessageController.php +++ b/app/Http/Controllers/MessageController.php @@ -3,20 +3,19 @@ namespace App\Http\Controllers; use App\Models\NotificationLog; +use Illuminate\Contracts\View\View; use Illuminate\Mail\Markdown; class MessageController extends Controller { - public function index(string $type, string $msgId) + public function index(string $type, string $msgId): View { - if ($type === 'markdown') { - $log = NotificationLog::whereMsgId($msgId)->latest()->firstOrFail(); - $title = $log->title; - $content = Markdown::parse($log->content)->toHtml(); + //if ($type === 'markdown') { + $log = NotificationLog::whereMsgId($msgId)->latest()->firstOrFail(); + $title = $log->title; + $content = Markdown::parse($log->content)->toHtml(); - return view('components.message', compact('title', 'content')); - } - - return false; + return view('components.message', compact('title', 'content')); + //} } } diff --git a/app/Http/Controllers/OAuthController.php b/app/Http/Controllers/OAuthController.php index ae8b243e..a15a5f31 100644 --- a/app/Http/Controllers/OAuthController.php +++ b/app/Http/Controllers/OAuthController.php @@ -6,7 +6,6 @@ use App\Models\User; use App\Models\UserOauth; use App\Utils\Helpers; use App\Utils\IP; -use Auth; use Illuminate\Http\RedirectResponse; use Laravel\Socialite\Facades\Socialite; use Str; @@ -15,7 +14,7 @@ class OAuthController extends Controller { public function unbind(string $provider): RedirectResponse { - $user = Auth::user(); + $user = auth()->user(); if ($user && $user->userAuths()->whereType($provider)->delete()) { return redirect()->back()->with('successMsg', trans('common.success_item', ['attribute' => trans('user.oauth.unbind')])); @@ -33,7 +32,7 @@ class OAuthController extends Controller return redirect()->route('login')->withErrors(trans('auth.oauth.login_failed')); } - $user = Auth::user(); + $user = auth()->user(); if (! $user) { return redirect()->back()->withErrors(trans('common.failed_item', ['attribute' => trans('user.oauth.bind')])); @@ -103,7 +102,7 @@ class OAuthController extends Controller private function handleLogin(User $user): RedirectResponse { - Auth::login($user); + auth()->login($user); Helpers::userLoginAction($user, IP::getClientIp()); return redirect()->route('login'); diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index f8087fa5..bbb71171 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -20,10 +20,10 @@ use App\Utils\Payments\PayPal; use App\Utils\Payments\Stripe; use App\Utils\Payments\THeadPay; use Exception; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Log; -use Response; class PaymentController extends Controller { @@ -70,21 +70,21 @@ class PaymentController extends Controller $payment = Payment::whereTradeNo($request->input('trade_no'))->first(); if ($payment) { if ($payment->status === 1) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.pay')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.pay')])]); } if ($payment->status === -1) { - return Response::json(['status' => 'error', 'message' => trans('user.payment.order_creation.order_timeout')]); + return response()->json(['status' => 'error', 'message' => trans('user.payment.order_creation.order_timeout')]); } - return Response::json(['status' => 'fail', 'message' => trans('common.payment.status.wait')]); + return response()->json(['status' => 'fail', 'message' => trans('common.status.payment_pending')]); } - return Response::json(['status' => 'error', 'message' => trans('user.payment.order_creation.unknown_order')]); + return response()->json(['status' => 'error', 'message' => trans('user.payment.order_creation.unknown_order')]); } - public function purchase(Request $request) // 创建支付订单 - { + public function purchase(Request $request): JsonResponse + { // 创建支付订单 $goods_id = $request->input('goods_id'); $coupon_sn = $request->input('coupon_sn'); $coupon = null; @@ -96,13 +96,13 @@ class PaymentController extends Controller // 充值余额 if ($credit) { if (! is_numeric($credit) || $credit <= 0) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.error')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.error')]); } $amount = $credit; } elseif ($goods_id && self::$method) { // 购买服务 $goods = Goods::find($goods_id); if (! $goods || ! $goods->status) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.product_unavailable')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.product_unavailable')]); } $amount = $goods->price; @@ -111,14 +111,14 @@ class PaymentController extends Controller // 无生效套餐,禁止购买加油包 if ($goods->type === 1 && $activePlan) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.plan_required')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.plan_required')]); } // 单个商品限购 if ($goods->limit_num) { $count = Order::uid()->where('status', '>=', 0)->whereGoodsId($goods_id)->count(); if ($count >= $goods->limit_num) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.order_limit', ['limit_num' => $goods->limit_num, 'count' => $count])]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.order_limit', ['limit_num' => $goods->limit_num, 'count' => $count])]); } } @@ -139,24 +139,24 @@ class PaymentController extends Controller if (self::$method !== 'credit') { // 判断是否开启在线支付 if (! sysConfig('is_onlinePay') && ! sysConfig('wechat_qrcode') && ! sysConfig('alipay_qrcode')) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.payment_disabled')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.payment_disabled')]); } // 判断是否存在同个商品的未支付订单 if (Order::uid()->whereStatus(0)->exists()) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.pending_order')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.pending_order')]); } } elseif (auth()->user()->credit < $amount) { // 验证账号余额是否充足 - return Response::json(['status' => 'fail', 'message' => trans('user.payment.insufficient_balance')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.insufficient_balance')]); } // 价格异常判断 if ($amount < 0) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.price_issue')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.price_issue')]); } if ($amount === 0 && self::$method !== 'credit') { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.order_creation.price_zero')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.order_creation.price_zero')]); } } @@ -190,20 +190,20 @@ class PaymentController extends Controller Log::emergency(trans('common.failed_action_item', ['action' => trans('common.create'), 'attribute' => trans('model.order.attribute')]).': '.$e->getMessage()); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_action_item', ['action' => trans('common.create'), 'attribute' => trans('model.order.attribute')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_action_item', ['action' => trans('common.create'), 'attribute' => trans('model.order.attribute')])]); } public function close(Order $order): JsonResponse { if (! $order->close()) { - return Response::json(['status' => 'fail', 'message' => trans('common.failed_action_item', ['action' => trans('common.close'), 'attribute' => trans('model.order.attribute')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_action_item', ['action' => trans('common.close'), 'attribute' => trans('model.order.attribute')])]); } - return Response::json(['status' => 'success', 'message' => trans('common.success_action_item', ['action' => trans('common.close'), 'attribute' => trans('model.order.attribute')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_action_item', ['action' => trans('common.close'), 'attribute' => trans('model.order.attribute')])]); } - public function detail($trade_no) // 支付单详情 - { + public function detail(string $trade_no): View + { // 支付单详情 $payment = Payment::uid()->with(['order', 'order.goods'])->whereTradeNo($trade_no)->firstOrFail(); $goods = $payment->order->goods; diff --git a/app/Http/Controllers/User/AffiliateController.php b/app/Http/Controllers/User/AffiliateController.php index 1b77a571..6e2aa8d6 100644 --- a/app/Http/Controllers/User/AffiliateController.php +++ b/app/Http/Controllers/User/AffiliateController.php @@ -8,17 +8,16 @@ use App\Models\ReferralApply; use App\Models\ReferralLog; use App\Services\UserService; use App\Utils\Helpers; -use Auth; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; -use Response; class AffiliateController extends Controller { // 推广返利 - public function index() + public function index(): View { if (ReferralLog::uid()->doesntExist() && Order::uid()->whereStatus(2)->doesntExist()) { - return Response::view('auth.error', ['message' => trans('user.purchase.required').''.trans('common.back').''], 402); + return view('auth.error', ['message' => trans('user.purchase.required').''.trans('common.back').''], 402); } return view('user.referral', [ @@ -30,7 +29,7 @@ class AffiliateController extends Controller 'aff_link' => (new UserService)->inviteURI(), 'referralLogList' => ReferralLog::uid()->with('invitee:id,username')->latest()->paginate(10, ['*'], 'log_page'), 'referralApplyList' => ReferralApply::uid()->latest()->paginate(10, ['*'], 'apply_page'), - 'referralUserList' => Auth::getUser()->invitees()->select(['username', 'created_at'])->latest()->paginate(10, ['*'], 'user_page'), + 'referralUserList' => auth()->user()->invitees()->select(['username', 'created_at'])->latest()->paginate(10, ['*'], 'user_page'), ]); } @@ -38,33 +37,33 @@ class AffiliateController extends Controller public function withdraw(): JsonResponse { // 判断账户是否过期 - if (Auth::getUser()->expiration_date < date('Y-m-d')) { - return Response::json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.account')]); + if (auth()->user()->expiration_date < date('Y-m-d')) { + return response()->json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.account')]); } // 判断是否已存在申请 if (ReferralApply::uid()->whereIn('status', [0, 1])->first()) { - return Response::json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.applied')]); + return response()->json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.applied')]); } // 校验可以提现金额是否超过系统设置的阀值 $referrals = ReferralLog::uid()->whereStatus(0)->get(); $commission = $referrals->sum('commission'); if ($commission < sysConfig('referral_money')) { - return Response::json([ + return response()->json([ 'status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.unfulfilled', ['amount' => Helpers::getPriceTag(sysConfig('referral_money'))]), ]); } $ref = new ReferralApply; - $ref->user_id = Auth::id(); + $ref->user_id = auth()->id(); $ref->before = $commission; $ref->amount = $commission; $ref->link_logs = $referrals->pluck('id')->toArray(); if ($ref->save()) { - return Response::json(['status' => 'success', 'title' => trans('common.success_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.wait')]); + return response()->json(['status' => 'success', 'title' => trans('common.success_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.wait')]); } - return Response::json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.error')]); + return response()->json(['status' => 'fail', 'title' => trans('common.failed_item', ['attribute' => trans('common.request')]), 'message' => trans('user.referral.msg.error')]); } } diff --git a/app/Http/Controllers/User/ArticleController.php b/app/Http/Controllers/User/ArticleController.php index ba893337..fb17ba60 100644 --- a/app/Http/Controllers/User/ArticleController.php +++ b/app/Http/Controllers/User/ArticleController.php @@ -6,11 +6,12 @@ use App\Http\Controllers\Controller; use App\Models\Article; use App\Services\ArticleService; use App\Services\NodeService; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; class ArticleController extends Controller { - public function index(NodeService $nodeService) + public function index(NodeService $nodeService): View { // 帮助中心 $subscribe = auth()->user()->subscribe; @@ -19,7 +20,7 @@ class ArticleController extends Controller 'subUrl' => route('sub', $subscribe->code), 'subStatus' => $subscribe->status, 'subMsg' => $subscribe->ban_desc, - 'knowledges' => Article::type(1)->lang()->orderByDesc('sort')->latest()->get()->groupBy('category'), + 'knowledge' => Article::type(1)->lang()->orderByDesc('sort')->latest()->get()->groupBy('category'), ]); } diff --git a/app/Http/Controllers/User/InviteController.php b/app/Http/Controllers/User/InviteController.php index d50f587a..7748c29d 100644 --- a/app/Http/Controllers/User/InviteController.php +++ b/app/Http/Controllers/User/InviteController.php @@ -5,19 +5,19 @@ namespace App\Http\Controllers\User; use App\Http\Controllers\Controller; use App\Models\Invite; use App\Models\Order; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; -use Response; use Str; class InviteController extends Controller { - public function index(): \Illuminate\Http\Response + public function index(): View { // 邀请页面 if (Order::uid()->active()->where('origin_amount', '>', 0)->doesntExist()) { - return Response::view('auth.error', ['message' => trans('user.purchase.required').' '.trans('common.back').''], 402); + return view('auth.error', ['message' => trans('user.purchase.required').' '.trans('common.back').''], 402); } - return Response::view('user.invite', [ + return view('user.invite', [ 'num' => auth()->user()->invite_num, // 还可以生成的邀请码数量 'inviteList' => Invite::uid()->with('invitee')->paginate(10), // 邀请码列表 'referral_traffic' => formatBytes(sysConfig('referral_traffic'), 'MiB'), @@ -26,10 +26,10 @@ class InviteController extends Controller } public function store(): JsonResponse - { // 生成邀请码 + { // 生成邀请码 $user = auth()->user(); if ($user->invite_num <= 0) { - return Response::json(['status' => 'fail', 'message' => trans('user.invite.generate_failed')]); + return response()->json(['status' => 'fail', 'message' => trans('user.invite.generate_failed')]); } $invite = $user->invites()->create([ 'code' => strtoupper(mb_substr(md5(microtime().Str::random()), 8, 12)), @@ -38,9 +38,9 @@ class InviteController extends Controller if ($invite) { $user->decrement('invite_num'); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.generate')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.generate')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.generate')])]); } } diff --git a/app/Http/Controllers/User/InvoiceController.php b/app/Http/Controllers/User/InvoiceController.php index 6aaaca17..bfe85f45 100644 --- a/app/Http/Controllers/User/InvoiceController.php +++ b/app/Http/Controllers/User/InvoiceController.php @@ -4,23 +4,23 @@ namespace App\Http\Controllers\User; use App\Http\Controllers\Controller; use App\Models\Order; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Response; class InvoiceController extends Controller { - public function index(Request $request): \Illuminate\Http\Response + public function index(Request $request): View { // 订单列表 - return Response::view('user.invoices', [ + return view('user.invoices', [ 'orderList' => auth()->user()->orders()->with(['goods', 'payment'])->orderByDesc('id')->paginate(10)->appends($request->except('page')), 'prepaidPlan' => Order::userPrepay()->exists(), ]); } - public function show(string $sn): \Illuminate\Http\Response + public function show(string $sn): View { // 订单明细 - return Response::view('user.invoiceDetail', ['order' => Order::uid()->whereSn($sn)->with(['goods', 'coupon'])->firstOrFail()]); + return view('user.invoiceDetail', ['order' => Order::uid()->whereSn($sn)->with(['goods', 'coupon'])->firstOrFail()]); } public function activate(): JsonResponse @@ -29,22 +29,22 @@ class InvoiceController extends Controller if ($activePlan) { if ($activePlan->expired()) { // 关闭先前套餐后,新套餐自动运行 if (Order::userActivePlan()->exists()) { - return Response::json(['status' => 'success', 'message' => trans('common.active_item', ['attribute' => trans('common.success')])]); + return response()->json(['status' => 'success', 'message' => trans('common.active_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'success', 'message' => trans('common.close')]); + return response()->json(['status' => 'success', 'message' => trans('common.close')]); } } else { $prepaidPlan = Order::userPrepay()->first(); if ($prepaidPlan) { // 关闭先前套餐后,新套餐自动运行 if ($prepaidPlan->complete()) { - return Response::json(['status' => 'success', 'message' => trans('common.active_item', ['attribute' => trans('common.success')])]); + return response()->json(['status' => 'success', 'message' => trans('common.active_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'success', 'message' => trans('common.close')]); + return response()->json(['status' => 'success', 'message' => trans('common.close')]); } } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); } } diff --git a/app/Http/Controllers/User/NodeController.php b/app/Http/Controllers/User/NodeController.php index 99438e17..2b4b8b8f 100644 --- a/app/Http/Controllers/User/NodeController.php +++ b/app/Http/Controllers/User/NodeController.php @@ -6,35 +6,30 @@ use App\Http\Controllers\Controller; use App\Models\Node; use App\Models\NodeHeartbeat; use App\Services\ProxyService; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Response; class NodeController extends Controller { - public function index(): \Illuminate\Http\Response + public function index(): View { // 节点列表 - $user = auth()->user(); - - // 获取当前用户可用节点 - $nodeList = $user->nodes()->whereIn('is_display', [1, 3])->with(['labels', 'level_table'])->get(); + $nodeList = auth()->user()->nodes()->whereIn('is_display', [1, 3])->with(['labels', 'level_table'])->get(); // 获取当前用户可用节点 $onlineNode = NodeHeartbeat::recently()->distinct()->pluck('node_id')->toArray(); foreach ($nodeList as $node) { - // 节点在线状态 - $node->offline = ! in_array($node->id, $onlineNode, true); + $node->offline = ! in_array($node->id, $onlineNode, true); // 节点在线状态 } - return Response::view('user.nodeList', [ + return view('user.nodeList', [ 'nodesGeo' => $nodeList->pluck('name', 'geo')->toArray(), 'nodeList' => $nodeList, ]); } - public function show(Request $request, Node $node): JsonResponse + public function show(Request $request, Node $node, ProxyService $proxyServer): JsonResponse { // 节点详细 - $proxyServer = new ProxyService; $server = $proxyServer->getProxyConfig($node); - return Response::json(['status' => 'success', 'data' => $proxyServer->getUserProxyConfig($server, $request->input('type') !== 'text'), 'title' => $server['type']]); + return response()->json(['status' => 'success', 'data' => $proxyServer->getUserProxyConfig($server, $request->input('type') !== 'text'), 'title' => $server['type']]); } } diff --git a/app/Http/Controllers/User/ShopController.php b/app/Http/Controllers/User/ShopController.php index 1777176d..e2fd49a5 100644 --- a/app/Http/Controllers/User/ShopController.php +++ b/app/Http/Controllers/User/ShopController.php @@ -9,15 +9,15 @@ use App\Models\Node; use App\Models\Order; use App\Services\CouponService; use App\Utils\Helpers; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Validation\Rule; -use Response; use Validator; class ShopController extends Controller { - public function index(): \Illuminate\Http\Response + public function index(): View { // 商品列表 $user = auth()->user(); // 余额充值商品,只取10个 @@ -38,7 +38,7 @@ class ShopController extends Controller $goods->node_countries = $nodes->where('level', '<=', $goods->level)->pluck('country_code')->unique(); } - return Response::view('user.services', [ + return view('user.services', [ 'chargeGoodsList' => Goods::type(3)->orderBy('price')->get(), 'goodsList' => $goodsList, 'renewTraffic' => $renewPrice ? Helpers::getPriceTag($renewPrice) : 0, @@ -52,7 +52,7 @@ class ShopController extends Controller $order = Order::userActivePlan()->firstOrFail(); $renewCost = $order->goods->renew; if ($user->credit < $renewCost) { - return Response::json(['status' => 'fail', 'message' => trans('user.payment.insufficient_balance')]); + return response()->json(['status' => 'fail', 'message' => trans('user.payment.insufficient_balance')]); } $user->update(['u' => 0, 'd' => 0]); @@ -63,7 +63,7 @@ class ShopController extends Controller // 扣余额 $user->updateCredit(-$renewCost); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.reset')])]); } public function checkBonus(Request $request, Goods $good): JsonResponse @@ -71,7 +71,7 @@ class ShopController extends Controller $coupon_sn = $request->input('coupon_sn'); if (empty($coupon_sn)) { - return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.coupon.error.unknown')]); + return response()->json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.coupon.error.unknown')]); } $coupon = (new CouponService($coupon_sn))->search($good); // 检查券合规性 @@ -86,16 +86,16 @@ class ShopController extends Controller 'value' => $coupon->type === 2 ? $coupon->value : Helpers::getPriceTag($coupon->value), ]; - return Response::json(['status' => 'success', 'data' => $data, 'message' => trans('common.applied', ['attribute' => trans('model.coupon.attribute')])]); + return response()->json(['status' => 'success', 'data' => $data, 'message' => trans('common.applied', ['attribute' => trans('model.coupon.attribute')])]); } - public function show(Goods $good): \Illuminate\Http\Response + public function show(Goods $good): View { // 显示服务详细 $user = auth()->user(); // 有重置日时按照重置日为标准,否则就以过期日为标准 $dataPlusDays = $user->reset_time ?? $user->expired_at; - return Response::view('user.buy', [ + return view('user.buy', [ 'dataPlusDays' => $dataPlusDays > date('Y-m-d') ? $dataPlusDays->diffInDays() : 0, 'activePlan' => Order::userActivePlan()->exists(), 'goods' => $good, @@ -113,13 +113,13 @@ class ShopController extends Controller ]); if ($validator->fails()) { - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); + return response()->json(['status' => 'fail', 'message' => $validator->errors()->all()]); } if ((new CouponService($request->input('coupon_sn')))->charge()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.recharge')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.recharge')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.recharge')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.recharge')])]); } } diff --git a/app/Http/Controllers/User/SubscribeController.php b/app/Http/Controllers/User/SubscribeController.php index 7002988b..90428a62 100644 --- a/app/Http/Controllers/User/SubscribeController.php +++ b/app/Http/Controllers/User/SubscribeController.php @@ -9,7 +9,6 @@ use App\Services\ProxyService; use App\Utils\IP; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; -use Redirect; class SubscribeController extends Controller { @@ -22,13 +21,13 @@ class SubscribeController extends Controller preg_match('/[0-9A-Za-z]+/', $code, $matches, PREG_UNMATCHED_AS_NULL); if (empty($matches) || empty($code)) { - return Redirect::route('login'); + return redirect()->route('login'); } $code = $matches[0]; self::$subType = is_numeric($request->input('type')) ? $request->input('type') : null; // 检查订阅码是否有效 - $subscribe = UserSubscribe::whereCode($code)->first(); + $subscribe = UserSubscribe::whereCode($code)->firstOrFail(); $this->proxyServer = new ProxyService; if (! $subscribe) { diff --git a/app/Http/Controllers/User/TicketController.php b/app/Http/Controllers/User/TicketController.php index a96e14bf..774c2f7b 100644 --- a/app/Http/Controllers/User/TicketController.php +++ b/app/Http/Controllers/User/TicketController.php @@ -7,41 +7,40 @@ use App\Models\Ticket; use App\Models\User; use App\Notifications\TicketCreated; use App\Notifications\TicketReplied; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Notification; -use Response; class TicketController extends Controller { - public function index(Request $request) + public function index(Request $request): View { // 工单 return view('user.tickets', [ 'tickets' => auth()->user()->tickets()->latest()->paginate(10)->appends($request->except('page')), ]); } - public function store(Request $request): ?JsonResponse + public function store(Request $request): JsonResponse { // 添加工单 - $user = auth()->user(); $title = $request->input('title'); $content = substr(str_replace(['atob', 'eval'], '', clean($request->input('content'))), 0, 300); if (empty($title) || empty($content)) { - return Response::json([ + return response()->json([ 'status' => 'fail', 'message' => trans('validation.required', ['attribute' => ucfirst(trans('validation.attributes.title')).'&'.ucfirst(trans('validation.attributes.content'))]), ]); } - if ($ticket = $user->tickets()->create(compact('title', 'content'))) { + if ($ticket = auth()->user()->tickets()->create(compact('title', 'content'))) { // 通知相关管理员 Notification::send(User::find(1), new TicketCreated($ticket, route('admin.ticket.edit', $ticket))); } - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.submit')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.submit')])]); } - public function edit(Ticket $ticket) + public function edit(Ticket $ticket): View { // 回复工单 return view('user.replyTicket', [ 'ticket' => $ticket, @@ -49,12 +48,12 @@ class TicketController extends Controller ]); } - public function reply(Request $request, Ticket $ticket) + public function reply(Request $request, Ticket $ticket): JsonResponse { $content = substr(str_replace(['atob', 'eval'], '', clean($request->input('content'))), 0, 300); if (empty($content)) { - return Response::json([ + return response()->json([ 'status' => 'fail', 'message' => trans('validation.required', ['attribute' => ucfirst(trans('validation.attributes.title')).'&'.ucfirst(trans('validation.attributes.content'))]), ]); } @@ -69,18 +68,18 @@ class TicketController extends Controller // 通知相关管理员 Notification::send(User::find(1), new TicketReplied($reply, route('admin.ticket.edit', $ticket))); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.ticket.reply')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('user.ticket.reply')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.ticket.reply')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('user.ticket.reply')])]); } public function close(Ticket $ticket): JsonResponse { // 关闭工单 if ($ticket->close()) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.close')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.close')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.close')])]); } } diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 563ece9f..8cd3ce31 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -7,28 +7,25 @@ use App\Models\Article; use App\Services\NodeService; use App\Services\UserService; use App\Utils\Helpers; -use Cache; use DB; use Exception; use Hash; +use Illuminate\Contracts\View\View; use Illuminate\Http\JsonResponse; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Log; -use Redirect; -use Response; -use Session; use Str; class UserController extends Controller { use DataChart; - public function index(NodeService $nodeService) + public function index(NodeService $nodeService): View { // 用户转换 - if (Session::has('user')) { - auth()->loginUsingId(Session::pull('user')); + if (session()->has('user')) { + auth()->loginUsingId(session()->pull('user')); } $user = auth()->user(); $totalTransfer = $user->transfer_enable; @@ -59,90 +56,83 @@ class UserController extends Controller $user = auth()->user(); // 系统开启登录加积分功能才可以签到 if (! sysConfig('is_checkin')) { - return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.disable')]); + return response()->json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.disable')]); } // 已签到过,验证是否有效 - if (Cache::has('userCheckIn_'.$user->id)) { - return Response::json(['status' => 'success', 'title' => trans('common.success'), 'message' => trans('user.home.attendance.done')]); + if (cache()->has('userCheckIn_'.$user->id)) { + return response()->json(['status' => 'success', 'title' => trans('common.success'), 'message' => trans('user.home.attendance.done')]); } $traffic = random_int((int) sysConfig('min_rand_traffic'), (int) sysConfig('max_rand_traffic')) * MiB; if (! $user->incrementData($traffic)) { - return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.failed')]); + return response()->json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.failed')]); } Helpers::addUserTrafficModifyLog($user->id, $user->transfer_enable, $user->transfer_enable + $traffic, trans('user.home.attendance.attribute')); - // 多久后可以再签到 - $ttl = sysConfig('traffic_limit_time') ? sysConfig('traffic_limit_time') * Minute : Day; - Cache::put('userCheckIn_'.$user->id, '1', $ttl); + cache()->put('userCheckIn_'.$user->id, '1', sysConfig('traffic_limit_time') ? sysConfig('traffic_limit_time') * Minute : Day); // 多久后可以再签到 - return Response::json(['status' => 'success', 'message' => trans('user.home.attendance.success', ['data' => formatBytes($traffic)])]); + return response()->json(['status' => 'success', 'message' => trans('user.home.attendance.success', ['data' => formatBytes($traffic)])]); } // 修改个人资料 - public function profile() + public function profile(): View { - $user = auth()->user(); - $auth = $user->userAuths()->pluck('type')->toArray(); - - return view('user.profile', compact('auth')); + return view('user.profile', ['auth' => auth()->user()->userAuths()->pluck('type')->toArray()]); } public function updateProfile(Request $request): RedirectResponse { $user = auth()->user(); - // 修改密码 - if ($request->has(['password', 'new_password'])) { + $url = null; + if ($request->has(['password', 'new_password'])) { // 修改密码 + $url = url()->previous().'#account'; $data = $request->only(['password', 'new_password']); if (! Hash::check($data['password'], $user->password)) { - return Redirect::back()->withErrors(trans('auth.password.reset.error.wrong')); + return redirect($url)->withErrors(trans('auth.password.reset.error.wrong')); } if (Hash::check($data['new_password'], $user->password)) { - return Redirect::back()->withErrors(trans('auth.password.reset.error.same')); + return redirect($url)->withErrors(trans('auth.password.reset.error.same')); } // 演示环境禁止改管理员密码 if ($user->id === 1 && config('app.env') === 'demo') { - return Redirect::back()->withErrors(trans('auth.password.reset.error.demo')); + return redirect($url)->withErrors(trans('auth.password.reset.error.demo')); } if (! $user->update(['password' => $data['new_password']])) { - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); + return redirect($url)->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); } - - return Redirect::back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); - // 修改代理密码 } - if ($request->has('passwd')) { + if ($request->has('passwd')) { // 修改代理密码 + $url = url()->previous().'#proxy'; $passwd = $request->input('passwd'); if (! $user->update(['passwd' => $passwd])) { - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); + return redirect($url)->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); } - - return Redirect::back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); } // 修改联系方式 if ($request->has(['nickname', 'wechat', 'qq'])) { + $url = url()->previous().'#contact'; $data = $request->only(['nickname', 'wechat', 'qq']); if (empty($data['nickname'])) { - return Redirect::back()->withErrors(trans('validation.required', ['attribute' => trans('model.user.nickname')])); + return redirect($url)->withErrors(trans('validation.required', ['attribute' => trans('model.user.nickname')])); } if (! $user->update($data)) { - return Redirect::back()->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); + return redirect($url)->withErrors(trans('common.failed_item', ['attribute' => trans('common.update')])); } } - return Redirect::back()->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); + return redirect($url)->with('successMsg', trans('common.success_item', ['attribute' => trans('common.update')])); } - public function exchangeSubscribe(): ?JsonResponse + public function exchangeSubscribe(): JsonResponse { // 更换订阅地址 try { DB::beginTransaction(); @@ -156,35 +146,35 @@ class UserController extends Controller DB::commit(); - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.change')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.change')])]); } catch (Exception $e) { DB::rollBack(); Log::error(trans('user.subscribe.error').':'.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.change')]).$e->getMessage()]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.change')]).$e->getMessage()]); } } public function switchToAdmin(): JsonResponse { // 转换成管理员的身份 - if (! Session::has('admin')) { - return Response::json(['status' => 'fail', 'message' => trans('http-statuses.401')]); + if (! session()->has('admin')) { + return response()->json(['status' => 'fail', 'message' => trans('http-statuses.401')]); } // 管理员信息重新写入user - $user = auth()->loginUsingId(Session::pull('admin')); + $user = auth()->loginUsingId(session()->pull('admin')); if ($user) { - return Response::json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.toggle')])]); + return response()->json(['status' => 'success', 'message' => trans('common.success_item', ['attribute' => trans('common.toggle')])]); } - return Response::json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.toggle')])]); + return response()->json(['status' => 'fail', 'message' => trans('common.failed_item', ['attribute' => trans('common.toggle')])]); } public function switchCurrency(string $code): RedirectResponse { // 切换语言 - Session::put('currency', $code); + session()->put('currency', $code); - return Redirect::back(); + return redirect()->back(); } } diff --git a/app/Models/UserSubscribe.php b/app/Models/UserSubscribe.php index 59eb7146..59b1c842 100644 --- a/app/Models/UserSubscribe.php +++ b/app/Models/UserSubscribe.php @@ -2,7 +2,6 @@ namespace App\Models; -use Auth; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -24,7 +23,7 @@ class UserSubscribe extends Model public function scopeUid(Builder $query): Builder { - return $query->whereUserId(Auth::id()); + return $query->whereUserId(auth()->id()); } public function user(): BelongsTo diff --git a/app/Services/CouponService.php b/app/Services/CouponService.php index 2bb89f0f..f0764cfb 100644 --- a/app/Services/CouponService.php +++ b/app/Services/CouponService.php @@ -6,7 +6,6 @@ use App\Models\Coupon; use App\Models\Goods; use App\Models\User; use App\Utils\Helpers; -use Auth; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Log; @@ -18,7 +17,7 @@ class CouponService public function __construct(private readonly string $code) { - $this->user = Auth::getUser(); + $this->user = auth()->user(); } public function search(Goods $goods): JsonResponse|Coupon diff --git a/app/Utils/Clients/Protocols/Clash.php b/app/Utils/Clients/Protocols/Clash.php index 3063048f..76f8c789 100644 --- a/app/Utils/Clients/Protocols/Clash.php +++ b/app/Utils/Clients/Protocols/Clash.php @@ -46,9 +46,9 @@ class Clash implements Protocol 'password' => $server['passwd'], 'cipher' => $server['method'], 'obfs' => $server['obfs'], - 'obfs-param' => $server['obfs_param'], + 'obfs-param' => $server['obfs_param'] ?? '', 'protocol' => $server['protocol'], - 'protocol-param' => $server['protocol_param'], + 'protocol-param' => $server['protocol_param'] ?? '', 'udp' => $server['udp'], ]; } @@ -66,13 +66,13 @@ class Clash implements Protocol 'udp' => $server['udp'], ]; - if ($server['v2_tls']) { + if (isset($server['v2_tls']) && $server['v2_tls']) { $array['tls'] = true; $array['servername'] = $server['v2_host']; } $array['network'] = $server['v2_net']; - if ($server['v2_net'] === 'ws') { + if (isset($server['v2_net']) && $server['v2_net'] === 'ws') { $array['ws-opts'] = []; $array['ws-opts']['path'] = $server['v2_path']; if ($server['v2_host']) { @@ -98,7 +98,7 @@ class Clash implements Protocol 'udp' => $server['udp'], ]; - if (! empty($server['sni'])) { + if (isset($server['sni'])) { $array['sni'] = $server['sni']; } diff --git a/app/Utils/Clients/Protocols/QuantumultX.php b/app/Utils/Clients/Protocols/QuantumultX.php index 69777c59..182e736e 100644 --- a/app/Utils/Clients/Protocols/QuantumultX.php +++ b/app/Utils/Clients/Protocols/QuantumultX.php @@ -41,9 +41,9 @@ class QuantumultX implements Protocol "method={$server['method']}", "password={$server['passwd']}", "ssr-protocol={$server['protocol']}", - "ssr-protocol-param={$server['protocol_param']}", + 'ssr-protocol-param='.($server['protocol_param'] ?? ''), "obfs={$server['obfs']}", - "obfs-host={$server['obfs_param']}", + 'obfs-host='.($server['obfs_param'] ?? ''), 'fast-open=true', "udp-relay={$server['udp']}", "tag={$server['name']}", @@ -63,24 +63,24 @@ class QuantumultX implements Protocol "tag={$server['name']}", ]; - if ($server['v2_tls']) { + if (isset($server['v2_tls']) && $server['v2_tls']) { if ($server['v2_net'] === 'tcp') { $config[] = 'obfs=over-tls'; } else { $config[] = 'obfs=wss'; } - } elseif ($server['v2_net'] === 'ws') { + } elseif (isset($server['v2_net']) && $server['v2_net'] === 'ws') { $config[] = 'obfs=ws'; } - if ($server['v2_tls']) { + if (isset($server['v2_tls']) && $server['v2_tls']) { $config[] = 'tls-verification=true'; if (! empty($server['v2_host'])) { $config[] = "tls-host={$server['v2_host']}"; } } - if ($server['v2_type'] === 'ws' && ! empty($server['v2_path'])) { + if (isset($server['v2_type']) && $server['v2_type'] === 'ws' && ! empty($server['v2_path'])) { $config[] = "obfs-uri={$server['v2_path']}"; $config[] = "obfs-host={$server['v2_host']}"; } diff --git a/app/Utils/Clients/Protocols/Surge.php b/app/Utils/Clients/Protocols/Surge.php index b3cb5343..493d5d59 100644 --- a/app/Utils/Clients/Protocols/Surge.php +++ b/app/Utils/Clients/Protocols/Surge.php @@ -49,10 +49,10 @@ class Surge implements Protocol "udp-relay={$server['udp']}", ]; - if ($server['v2_tls']) { + if (isset($server['v2_tls']) && $server['v2_tls']) { array_push($config, 'tls=true', "sni={$server['v2_host']}"); } - if ($server['v2_net'] === 'ws') { + if (isset($server['v2_net']) && $server['v2_net'] === 'ws') { array_push($config, 'ws=true', "ws-path={$server['v2_path']}", "ws-headers=Host:{$server['v2_host']}"); } @@ -66,7 +66,7 @@ class Surge implements Protocol $server['host'], $server['port'], "password={$server['passwd']}", - $server['sni'] ? "sni={$server['sni']}" : '', + isset($server['sni']) ? "sni={$server['sni']}" : '', 'tfo=true', "udp-relay={$server['udp']}", // "skip-cert-verify={$server['allow_insecure']}" diff --git a/app/Utils/Clients/Protocols/URLSchemes.php b/app/Utils/Clients/Protocols/URLSchemes.php index 8d988a50..89b2759c 100644 --- a/app/Utils/Clients/Protocols/URLSchemes.php +++ b/app/Utils/Clients/Protocols/URLSchemes.php @@ -33,11 +33,11 @@ class URLSchemes implements Protocol $setting = "{$server['host']}:{$server['port']}:{$server['protocol']}:{$server['method']}:{$server['obfs']}:"; return 'ssr://'.base64url_encode($setting.base64url_encode($server['passwd']).'/?'.http_build_query([ - 'obfsparam' => $server['obfs_param'] ? base64url_encode($server['obfs_param']) : '', - 'protoparam' => $server['protocol_param'] ? base64url_encode($server['protocol_param']) : '', - 'remarks' => $server['name'] ? base64url_encode($server['name']) : '', - 'group' => $server['group'] ? base64url_encode($server['group']) : '', - 'udpport' => $server['udp'], + 'obfsparam' => base64url_encode($server['obfs_param'] ?? ''), + 'protoparam' => base64url_encode($server['protocol_param'] ?? ''), + 'remarks' => base64url_encode($server['name']), + 'group' => base64url_encode($server['group'] ?? ''), + 'udpport' => $server['udp'] ?? 0, 'uot' => 0, ])).PHP_EOL; } @@ -51,12 +51,12 @@ class URLSchemes implements Protocol 'port' => $server['port'], 'id' => $server['uuid'], 'aid' => $server['v2_alter_id'], - 'net' => $server['v2_net'], - 'type' => $server['v2_type'], - 'host' => $server['v2_host'], - 'path' => $server['v2_path'], - 'tls' => $server['v2_tls'], - 'sni' => $server['v2_sni'], + 'net' => $server['v2_net'] ?? '', + 'type' => $server['v2_type'] ?? '', + 'host' => $server['v2_host'] ?? '', + 'path' => $server['v2_path'] ?? '', + 'tls' => $server['v2_tls'] ?? '', + 'sni' => $server['v2_sni'] ?? '', 'remark' => $server['name'], ]; diff --git a/app/helpers.php b/app/helpers.php index 83ecc9a1..c5ab4b63 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -58,7 +58,7 @@ if (! function_exists('formatTime')) { // 获取系统设置 if (! function_exists('sysConfig')) { - function sysConfig(?string $key = null, ?string $default = null): array|string|null + function sysConfig(?string $key = null, ?string $default = null): array|null|string { return $key ? config("settings.$key", $default) : config('settings'); } @@ -83,7 +83,7 @@ if (! function_exists('array_clean')) { // string url safe sanitize if (! function_exists('string_urlsafe')) { - function string_urlsafe($string, $force_lowercase = true, $anal = false): string + function string_urlsafe(string $string, bool $force_lowercase = true, bool $anal = false): string { $clean = preg_replace('/[~`!@#$%^&*()_=+\[\]{}\\|;:"\'<>,.?\/]/', '_', strip_tags($string)); $clean = preg_replace('/\s+/', '-', $clean); diff --git a/resources/views/admin/layouts.blade.php b/resources/views/admin/layouts.blade.php index 0a9dcb57..87d0443e 100644 --- a/resources/views/admin/layouts.blade.php +++ b/resources/views/admin/layouts.blade.php @@ -57,7 +57,7 @@