From c02e31d05778c83287807b49c3b6c96d385be071 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Fri, 16 Jun 2023 20:31:59 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/console/modules/aside.blade.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/views/console/modules/aside.blade.php b/resources/views/console/modules/aside.blade.php index 6a401c4..9a0b0a7 100644 --- a/resources/views/console/modules/aside.blade.php +++ b/resources/views/console/modules/aside.blade.php @@ -34,7 +34,7 @@ class="flex items-center w-full p-2 text-gray-900 transition duration-75 rounded
  • - 待审核 -- 2.43.0 From 980d7aaa89103c5ea4b07b63a7fb600276c8da6b Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Mon, 19 Jun 2023 17:08:21 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2023_06_11_145919_update_blog_link_table.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/database/migrations/2023_06_11_145919_update_blog_link_table.php b/database/migrations/2023_06_11_145919_update_blog_link_table.php index faee97f..afb4c7d 100644 --- a/database/migrations/2023_06_11_145919_update_blog_link_table.php +++ b/database/migrations/2023_06_11_145919_update_blog_link_table.php @@ -20,6 +20,14 @@ public function up() { Schema::table('blog_link', function (Blueprint $table) { $table->boolean('blogAddType')->default(0)->after('blogLocation'); + $table->unsignedInteger('blogUserLocation') + ->default(0) + ->after('blogSetColor') + ->comment('用户期望位置'); + $table->unsignedBigInteger('blogForUser') + ->nullable() + ->after('blogUserLocation') + ->comment('绑定已注册用户'); }); } -- 2.43.0 From e3344478f1335a95da3072d824631c05470e42df Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Mon, 19 Jun 2023 17:08:42 +0800 Subject: [PATCH 03/19] =?UTF-8?q?Api=E6=9E=B6=E6=9E=84=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Providers/RouteServiceProvider.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index bd816f6..bb88ce4 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -45,7 +45,7 @@ public function boot() $this->routes(function () { Route::prefix('api') ->middleware('api') - ->namespace($this->namespace) + ->namespace($this->namespace.'\\api') ->group(base_path('routes/api.php')); Route::middleware('web') -- 2.43.0 From eba0a7b5331e080e671c2bf7475aef9698bb0d64 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 15:20:28 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=81?= =?UTF-8?q?=E7=A7=BB=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/2023_06_11_145919_update_blog_link_table.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/database/migrations/2023_06_11_145919_update_blog_link_table.php b/database/migrations/2023_06_11_145919_update_blog_link_table.php index afb4c7d..9bca0ab 100644 --- a/database/migrations/2023_06_11_145919_update_blog_link_table.php +++ b/database/migrations/2023_06_11_145919_update_blog_link_table.php @@ -28,6 +28,10 @@ public function up() ->nullable() ->after('blogUserLocation') ->comment('绑定已注册用户'); + $table->string('blogRemark') + ->nullable() + ->after('blogForUser') + ->comment('博客备注信息'); }); } -- 2.43.0 From 86d4585f1e0848ca73d8b724ec959d8824fb51ac Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 15:21:42 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=A7=84=E8=8C=83?= =?UTF-8?q?=E5=8C=96=E5=8F=8AAPI=E7=94=A8=E6=88=B7=E5=8F=8B=E9=93=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Function/Link.php | 94 +++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index c3f5d21..4e3c8ac 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -12,8 +12,13 @@ use Illuminate\Contracts\Foundation\Application; use Illuminate\Contracts\View\Factory; use Illuminate\Contracts\View\View; +use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\Mail\Message; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Response; +use Nette\Schema\ValidationException; class Link extends Controller { @@ -25,19 +30,104 @@ public function __construct() $this->data = $data->data; } - protected function ViewLink(Request $request): Factory|View|Application + protected function viewLink(Request $request): Factory|View|Application { $this->data['webSubTitle'] = '友链'; $this->GetFriendsLink($this->data); return view('function.link',$this->data); } - protected function ViewMakeFriend(): Factory|View|Application + protected function viewMakeFriend(): Factory|View|Application { $this->data['webSubTitle'] = '添加友链'; return view('function.make-friend',$this->data); } + public function apiCustomAdd(Request $request): JsonResponse + { + // 检查数据 + try { + $request->validate([ + 'userEmail' => 'required|email', + 'userServerHost' => 'required|string', + 'userBlog' => 'required|string', + 'userUrl' => 'required|string', + 'userDescription' => 'required|string', + 'userIcon' => 'required|string', + 'checkRssJudge' => 'boolean', + 'userRss' => 'string', + 'userLocation' => 'required|int', + 'userSelColor' => 'required|int' + ]); + + // 检查数据 + if (empty($request->checkRssJudge)) { + $request->checkRssJudge = 0; + } + + // 根据数据库检查邮箱用户是否已存在 + $resultBlog = DB::table('blog_link') + ->where([ + ['blogOwnEmail','=',$request->userEmail,'or'], + ['blogName','=',$request->userBlog,'or'], + ['blogUrl','=',$request->userUrl,'or'] + ])->get()->toArray(); + + if (empty($resultBlog)) { + // 数据写入数据库 + $insertData = DB::table('blog_link') + ->insert([ + 'blogOwnEmail' => $request->userEmail, + 'blogUrl' => $request->userUrl, + 'blogName' => $request->userBlog, + 'blogDescription' => $request->userDescription, + 'blogIcon' => $request->userIcon, + 'blogRssJudge' => $request->checkRssJudge, + 'blogRSS' => $request->userRss, + 'blogUserLocation' => $request->userLocation, + 'blogSetColor' => $request->userSelColor, + ]); + if ($insertData) { + // 邮件发送系统 + Mail::send('mail.link-custom-add',$request->toArray(),function (Message $mail) { + global $request; + $mail->from(env('MAIL_USERNAME'),env('APP_NAME')); + $mail->to($request->userEmail); + $mail->subject(env('APP_NAME').'-友链等待审核通知'); + }); + // 消息成功通知 + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '您已成功申请', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'AlreadyUser', + 'code' => 403, + 'data' => [ + 'message' => '已有此用户,您是否已在本博客注册过', + ], + ]; + } + } catch (ValidationException $exception) { + $errors = $exception->validator->errors(); + $returnData = [ + 'output' => 'DataFormatError', + 'code' => 403, + 'data' => [ + 'message' => '输入内容有错误', + 'error' => $errors, + ], + ]; + } + + return Response::json($returnData,$returnData['code']); + } + private function GetFriendsLink(array &$data): void { $data['blogLink'] = DB::table('blog_link')->whereNotIn('blog_link.blogLocation',[0])->get()->toArray(); -- 2.43.0 From 916fdf6d4b89919a7638ad60a1539b608511c5ae Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 23:02:38 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E8=A7=84=E8=8C=83=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Function/Link.php | 4 +++- routes/web.php | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index 4e3c8ac..ca9c75a 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -57,7 +57,8 @@ public function apiCustomAdd(Request $request): JsonResponse 'checkRssJudge' => 'boolean', 'userRss' => 'string', 'userLocation' => 'required|int', - 'userSelColor' => 'required|int' + 'userSelColor' => 'required|int', + 'userRemark' => 'required|string', ]); // 检查数据 @@ -86,6 +87,7 @@ public function apiCustomAdd(Request $request): JsonResponse 'blogRSS' => $request->userRss, 'blogUserLocation' => $request->userLocation, 'blogSetColor' => $request->userSelColor, + 'blogRemark' => $request->userRemark, ]); if ($insertData) { // 邮件发送系统 diff --git a/routes/web.php b/routes/web.php index b65ee3c..86ff720 100644 --- a/routes/web.php +++ b/routes/web.php @@ -29,8 +29,8 @@ Route::get('about',[Index::class,'ViewAboutMe'])->name('about'); Route::prefix('function')->group(function () { - Route::get('link',[UserLink::class,'ViewLink'])->name('function.link'); - Route::get('make-friend',[UserLink::class,'ViewMakeFriend'])->name('function.make-friend'); + Route::get('link',[UserLink::class, 'viewLink'])->name('function.link'); + Route::get('make-friend',[UserLink::class, 'viewMakeFriend'])->name('function.make-friend'); Route::get('sponsor',function () { return view('function.sponsor'); })->name('function.sponsor'); -- 2.43.0 From 26ef12dd7d1fcbc6bd45fa223f607a9de1c75bc3 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 23:02:53 +0800 Subject: [PATCH 07/19] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8F=8B=E9=93=BE?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/mail/link-custom-add.blade.php | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 resources/views/mail/link-custom-add.blade.php diff --git a/resources/views/mail/link-custom-add.blade.php b/resources/views/mail/link-custom-add.blade.php new file mode 100644 index 0000000..e52d01a --- /dev/null +++ b/resources/views/mail/link-custom-add.blade.php @@ -0,0 +1,61 @@ + + + + + Mail + + + + + + + + + + + + +
    $G_TitleName
    + + + + + + + + + + +
    + 时间: {{ date('Y-m-d H:i:s') }} +
    + Dear. {{ $userEmail }} +
    + 您好 {{ $userBlog }} 的站长:{{ $userEmail }}
    + 您在本博客({{ env('APP_NAME') }})申请了友链
    +
    + 请在确认一次您的信息是否正确:
    +
      +
    • 博主邮箱:{{ $userEmail }}
    • +
    • 贵站名字:{{ $userBlog }}
    • +
    • 贵站地址:{{ $userUrl }}
    • +
    • 图片地址:{{ $userIcon }}
    • +
    • 贵站介绍:{{ $userDescription }}
    • +
    • 备注内容:{{ $userRemark }}
    • +
    • RSS地址:{{ $userRSS }}
    • +
    +
    +
    + + + + +
    + © 2022 - {{ date('Y') }}. {{ env('APP_NAME') }} All Rights Reserved.
    + 本邮件为自动发出,请勿直接回复 +
    +
    + + + + -- 2.43.0 From 6515e662ea6e3d74d8713ee8fd2602ea288171b1 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 23:03:21 +0800 Subject: [PATCH 08/19] =?UTF-8?q?check.blade=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../console/friends-link/check.blade.php | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 resources/views/console/friends-link/check.blade.php diff --git a/resources/views/console/friends-link/check.blade.php b/resources/views/console/friends-link/check.blade.php new file mode 100644 index 0000000..b7713c2 --- /dev/null +++ b/resources/views/console/friends-link/check.blade.php @@ -0,0 +1,101 @@ + + + + + + + + + @include('modules.head') + {!! $webHeader !!} + + + + + +@include('console.modules.aside') + +
    + + + + + -- 2.43.0 From 7dafb62a97de657229f50ac48162ad1fce529818 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Thu, 22 Jun 2023 23:03:27 +0800 Subject: [PATCH 09/19] =?UTF-8?q?API=E8=B7=AF=E7=94=B1=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/api.php | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/routes/api.php b/routes/api.php index 3002ad7..5b235d8 100644 --- a/routes/api.php +++ b/routes/api.php @@ -6,6 +6,7 @@ */ use App\Http\Controllers\Authme; +use App\Http\Controllers\Function\Link; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Response; @@ -26,13 +27,22 @@ return $request->user(); }); -Route::prefix('api')->group(function () { - Route::prefix('auth')->group(function () { - Route::post('login',[Authme::class,'Login'])->name('api.auth.login'); - Route::post('register',[Authme::class,'Register'])->name('api.auth.register'); - Route::match(['get','post'],'logout',function () { - Auth::logout(); - return Response::redirectTo(''); - })->name('logout'); +// 登陆类 +Route::prefix('auth')->group(function () { + Route::post('login',[Authme::class,'Login'])->name('api.auth.login'); + Route::post('register',[Authme::class,'Register'])->name('api.auth.register'); + Route::match(['get','post'],'logout',function () { + Auth::logout(); + return Response::redirectTo(''); + })->name('logout'); +}); + +// 友链类 +Route::prefix('link')->group(function () { + Route::prefix('console')->group(function () { + + }); + Route::prefix('custom')->group(function () { + Route::post('add',[Link::class,'apiCustomAdd']); }); }); -- 2.43.0 From 265a0f479008bafd5a7b5b5ffabc9ddce43fc9f7 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 15:22:48 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E9=87=8D=E7=BD=AE=E5=91=BD=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/auth/login.blade.php | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 12f4ace..55b4a25 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -46,7 +46,7 @@ class="block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ri
    @@ -63,22 +63,22 @@ class="font-semibold leading-6 text-indigo-600 hover:text-indigo-500">点击注 {!! $webFooter !!} -- 2.43.0 From c406baeac5bdfc1e31fc63c91e1cda5f972aac00 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 16:03:27 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Function/Link.php | 59 +++++++++++++++----------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index ca9c75a..06e843e 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -18,7 +18,7 @@ use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Response; -use Nette\Schema\ValidationException; +use Illuminate\Support\Facades\Validator; class Link extends Controller { @@ -45,22 +45,41 @@ protected function viewMakeFriend(): Factory|View|Application public function apiCustomAdd(Request $request): JsonResponse { + /** @var array $returnData Json的 return 返回值 */ + /** @var Validator $dataCheck 数据判断 */ + /** @var array $errorInfo 错误信息 */ // 检查数据 - try { - $request->validate([ - 'userEmail' => 'required|email', - 'userServerHost' => 'required|string', - 'userBlog' => 'required|string', - 'userUrl' => 'required|string', - 'userDescription' => 'required|string', - 'userIcon' => 'required|string', - 'checkRssJudge' => 'boolean', - 'userRss' => 'string', - 'userLocation' => 'required|int', - 'userSelColor' => 'required|int', - 'userRemark' => 'required|string', - ]); + $dataCheck = Validator::make($request->all(),[ + 'userEmail' => 'required|email', + 'userServerHost' => 'required|string', + 'userBlog' => 'required|string', + 'userUrl' => 'required|string', + 'userDescription' => 'required|string', + 'userIcon' => 'required|string', + 'checkRssJudge' => 'boolean', + 'userRss' => 'string', + 'userLocation' => 'required|int', + 'userSelColor' => 'required|int', + 'userRemark' => 'required|string', + ]); + // 检查发现错误 + if ($dataCheck->fails()) { + $errorType = array_keys($dataCheck->failed()); + $i = 0; + foreach ($dataCheck->failed() as $valueData) { + $errorInfo[$errorType[$i]] = array_keys($valueData); + $i++; + } + $returnData = [ + 'output' => 'DataFormatError', + 'code' => 403, + 'data' => [ + 'message' => '输入内容有错误', + 'error' => $errorInfo, + ], + ]; + } else { // 检查数据 if (empty($request->checkRssJudge)) { $request->checkRssJudge = 0; @@ -115,16 +134,6 @@ public function apiCustomAdd(Request $request): JsonResponse ], ]; } - } catch (ValidationException $exception) { - $errors = $exception->validator->errors(); - $returnData = [ - 'output' => 'DataFormatError', - 'code' => 403, - 'data' => [ - 'message' => '输入内容有错误', - 'error' => $errors, - ], - ]; } return Response::json($returnData,$returnData['code']); -- 2.43.0 From 87753e987d358e98dd2b2f88e87f97421dfb24b2 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 20:59:12 +0800 Subject: [PATCH 12/19] =?UTF-8?q?Api=E8=B7=AF=E7=94=B1=E8=A1=A8=E5=91=BD?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/api.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routes/api.php b/routes/api.php index 5b235d8..93b2db2 100644 --- a/routes/api.php +++ b/routes/api.php @@ -43,6 +43,6 @@ }); Route::prefix('custom')->group(function () { - Route::post('add',[Link::class,'apiCustomAdd']); + Route::post('add',[Link::class,'apiCustomAdd'])->name('api.link.custom.add'); }); }); -- 2.43.0 From b0aeb5260d3bfdc8ccfa80c980735f9bc638d199 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 20:59:41 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=8F=8B=E9=93=BE=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E8=A1=A8=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/views/function/link.blade.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/views/function/link.blade.php b/resources/views/function/link.blade.php index 5031dca..9679d47 100644 --- a/resources/views/function/link.blade.php +++ b/resources/views/function/link.blade.php @@ -49,7 +49,7 @@ class="w-16 h-16 p-1 rounded-full ring-2 ring-gray-300 dark:ring-gray-500 me-2 s
    - + 修改友链 -- 2.43.0 From cff04fbcd8e0f2559d581d8802610c0483529992 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 21:00:27 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E5=8F=8B=E9=93=BE=E6=A3=80=E7=B4=A2?= =?UTF-8?q?=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Function/Link.php | 79 ++++++++++++++++++-------- 1 file changed, 54 insertions(+), 25 deletions(-) diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index 06e843e..cc43f9b 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -30,34 +30,22 @@ public function __construct() $this->data = $data->data; } - protected function viewLink(Request $request): Factory|View|Application - { - $this->data['webSubTitle'] = '友链'; - $this->GetFriendsLink($this->data); - return view('function.link',$this->data); - } - - protected function viewMakeFriend(): Factory|View|Application - { - $this->data['webSubTitle'] = '添加友链'; - return view('function.make-friend',$this->data); - } - public function apiCustomAdd(Request $request): JsonResponse { /** @var array $returnData Json的 return 返回值 */ /** @var Validator $dataCheck 数据判断 */ /** @var array $errorInfo 错误信息 */ + /** @var array $errorSingle 输出单个错误信息 */ // 检查数据 - $dataCheck = Validator::make($request->all(),[ + $dataCheck = Validator::make($request->all(), [ 'userEmail' => 'required|email', 'userServerHost' => 'required|string', 'userBlog' => 'required|string', - 'userUrl' => 'required|string', + 'userUrl' => 'required|regex:#[a-zA-z]+://[^\s]*#', 'userDescription' => 'required|string', - 'userIcon' => 'required|string', + 'userIcon' => 'required|regex:#[a-zA-z]+://[^\s]*#', 'checkRssJudge' => 'boolean', - 'userRss' => 'string', + 'userRss' => 'string|regex:#[a-zA-z]+://[^\s]*#', 'userLocation' => 'required|int', 'userSelColor' => 'required|int', 'userRemark' => 'required|string', @@ -69,6 +57,12 @@ public function apiCustomAdd(Request $request): JsonResponse $i = 0; foreach ($dataCheck->failed() as $valueData) { $errorInfo[$errorType[$i]] = array_keys($valueData); + if ($i == 0) { + $errorSingle = [ + 'info' => $errorType[$i], + 'need' => $errorInfo[$errorType[$i]], + ]; + } $i++; } $returnData = [ @@ -76,6 +70,7 @@ public function apiCustomAdd(Request $request): JsonResponse 'code' => 403, 'data' => [ 'message' => '输入内容有错误', + 'errorSingle' => $errorSingle, 'error' => $errorInfo, ], ]; @@ -88,9 +83,9 @@ public function apiCustomAdd(Request $request): JsonResponse // 根据数据库检查邮箱用户是否已存在 $resultBlog = DB::table('blog_link') ->where([ - ['blogOwnEmail','=',$request->userEmail,'or'], - ['blogName','=',$request->userBlog,'or'], - ['blogUrl','=',$request->userUrl,'or'] + ['blogOwnEmail', '=', $request->userEmail, 'or'], + ['blogName', '=', $request->userBlog, 'or'], + ['blogUrl', '=', $request->userUrl, 'or'] ])->get()->toArray(); if (empty($resultBlog)) { @@ -110,11 +105,11 @@ public function apiCustomAdd(Request $request): JsonResponse ]); if ($insertData) { // 邮件发送系统 - Mail::send('mail.link-custom-add',$request->toArray(),function (Message $mail) { + Mail::send('mail.link-custom-add', $request->toArray(), function (Message $mail) { global $request; - $mail->from(env('MAIL_USERNAME'),env('APP_NAME')); + $mail->from(env('MAIL_USERNAME'), env('APP_NAME')); $mail->to($request->userEmail); - $mail->subject(env('APP_NAME').'-友链等待审核通知'); + $mail->subject(env('APP_NAME') . '-友链等待审核通知'); }); // 消息成功通知 $returnData = [ @@ -136,12 +131,46 @@ public function apiCustomAdd(Request $request): JsonResponse } } - return Response::json($returnData,$returnData['code']); + return Response::json($returnData, $returnData['code']); + } + + protected function viewLink(Request $request): Factory|View|Application + { + $this->data['webSubTitle'] = '友链'; + $this->GetFriendsLink($this->data); + return view('function.link', $this->data); } private function GetFriendsLink(array &$data): void { - $data['blogLink'] = DB::table('blog_link')->whereNotIn('blog_link.blogLocation',[0])->get()->toArray(); + $data['blogLink'] = DB::table('blog_link')->whereNotIn('blog_link.blogLocation', [0])->get()->toArray(); $data['blogSort'] = DB::table('blog_sort')->orderBy('blog_sort.sort')->get()->toArray(); } + + protected function viewMakeFriend(): Factory|View|Application + { + $this->data['webSubTitle'] = '添加友链'; + $this->data['blogColor'] = DB::table('blog_color') + ->orderBy('id') + ->get() + ->toArray(); + $this->data['blogSort'] = DB::table('blog_sort') + ->orderBy('sort') + ->get() + ->toArray(); + return view('function.make-friend', $this->data); + } + + protected function viewEditFriend(): Factory|View|Application + { + $this->data['webSubTitle'] = '修改友链'; + + return view('function.edit-friend', $this->data); + } + + protected function viewSearchFriends(): Factory|View|Application + { + $this->data['webSubTitle'] = '查询列表'; + return view('function.edit-search', $this->data); + } } -- 2.43.0 From a469cd3bac67c4646d0d987645b70d4f11749a8f Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 21:00:57 +0800 Subject: [PATCH 15/19] =?UTF-8?q?make-friend.blade=E5=8F=8B=E9=93=BE?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/function/make-friend.blade.php | 151 ++++++++++++++++-- 1 file changed, 135 insertions(+), 16 deletions(-) diff --git a/resources/views/function/make-friend.blade.php b/resources/views/function/make-friend.blade.php index 4010ac6..8d80588 100644 --- a/resources/views/function/make-friend.blade.php +++ b/resources/views/function/make-friend.blade.php @@ -23,7 +23,7 @@ class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translat
    返回友链
    -
    +
    @@ -102,7 +102,7 @@ class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translat
    @@ -126,12 +126,15 @@ class="relative left-[calc(50%-11rem)] aspect-[1155/678] w-[36.125rem] -translat
    - + + @if(empty($blogSort[0])) + + @else + @foreach($blogSort as $blogValue) + + @endforeach + @endif
    @@ -149,23 +152,35 @@ class="w-16 h-16 p-1 rounded-full ring-2 ring-gray-300 dark:ring-gray-500 me-2 s
    - + + @if(empty($blogColor[0])) + + @else + @foreach($blogColor as $blogValue) + + @endforeach + @endif
    +
    + +
    +
    + +
    + +
    +

    - +
    @@ -180,6 +195,38 @@ class="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate @include('modules.footer')
    + + + + @@ -203,6 +250,78 @@ class="relative left-[calc(50%+3rem)] aspect-[1155/678] w-[36.125rem] -translate }); }) + +function buttonSubmit() { + if ($('#remember').prop('checked')) { + ajax(); + } else { + Toast.toggle('请您确认知情友链申请要求',''); + } +} + +class Toast { + static toggle(data,icon) { + this.set(data,icon); + $('#toast').fadeIn(300); + setTimeout(function () { + $('#toast').fadeOut(300); + }, 3000); + } + static set(data,icon) { + $('#toast-icon').html(icon); + $('#toast-info').text(data); + } +} + +class Enum { + static userEmail = '用户邮箱'; + static userServerHost = '服务商'; + static userBlog = '博客名字'; + static userUrl = '博客地址'; + static userDescription = '博客描述'; + static userIcon = '图片地址'; + static checkRssJudge = 'RSS选项'; + static userRss = 'RSS地址'; + static userLocation = '所属位置'; + static userSelColor = '选择颜色'; + static userRemark = '留言备注'; +} + +function ajax() { + $.ajax({ + async: true, + method: "POST", + data: $('#FormData').serialize(), + url: '{{ route('api.link.custom.add') }}', + dataType: "json", + success: function (returnData) { + if (returnData.output === "Success") { + Toast.toggle('友链申请成功',''); + location.href = '{{ route('home') }}' + } else { + Toast('未知错误',''); + } + }, + error: function (returnData) { + Toast.set('其他错误',''); + if (returnData.responseJSON.output === 'DataFormatError') { + for (let key in Enum) { + if (returnData.responseJSON.data.errorSingle.info === key) { + Toast.toggle(Enum[key]+'错误,注意格式',''); + } + } + } else if (returnData.responseJSON.output === "AlreadyUser") { + $('#toast-interactive').fadeIn(300); + $('#edit-friend').attr('href',"{{ route('function.edit-search') }}?searchName="+$('#userBlog').val()+"&searchUrl="+$('#userUrl').val()); + setTimeout(function () { + $('#toast-interactive').fadeOut(300); + }, 10000); + } else { + Toast.toggle('未知错误',''); + } + } + }); +} {!! $webFooter !!} -- 2.43.0 From defb971d62d68c460488acb1d3a13d21da3abfe6 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 21:01:08 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E8=B7=AF=E7=94=B1=E8=A1=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/web.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/routes/web.php b/routes/web.php index 86ff720..64a8a73 100644 --- a/routes/web.php +++ b/routes/web.php @@ -31,6 +31,8 @@ Route::prefix('function')->group(function () { Route::get('link',[UserLink::class, 'viewLink'])->name('function.link'); Route::get('make-friend',[UserLink::class, 'viewMakeFriend'])->name('function.make-friend'); + Route::get('edit-search',[UserLink::class, 'viewSearchFriends'])->name('function.edit-search'); + Route::get('edit-friend',[UserLink::class, 'viewEditFriend'])->name('function.edit-friend'); Route::get('sponsor',function () { return view('function.sponsor'); })->name('function.sponsor'); @@ -39,6 +41,13 @@ })->name('function.music'); }); +Route::prefix('account')->middleware('auth')->group(function () { + Route::prefix('friend')->group(function () { + Route::get('link')->name('account.friend.link'); + Route::get('edit')->name('account.friend.edit'); + }); +}); + Route::prefix('console')->middleware('auth')->group(function () { Route::get('dashboard', [Dashboard::class,'ViewDashboard'])->name('console.dashboard'); Route::prefix('friends-link')->group(function () { -- 2.43.0 From b0b9d3d2415fa4ee479d70d6a32144120dbda9ce Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 22:50:44 +0800 Subject: [PATCH 17/19] =?UTF-8?q?=E5=8F=8B=E9=93=BE=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E6=9F=A5=E6=89=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Function/Link.php | 105 +++++++++++++++++++++++++ 1 file changed, 105 insertions(+) diff --git a/app/Http/Controllers/Function/Link.php b/app/Http/Controllers/Function/Link.php index cc43f9b..fba3798 100644 --- a/app/Http/Controllers/Function/Link.php +++ b/app/Http/Controllers/Function/Link.php @@ -134,6 +134,111 @@ public function apiCustomAdd(Request $request): JsonResponse return Response::json($returnData, $returnData['code']); } + public function apiCustomSearch(Request $request): JsonResponse + { + /** @var array $returnData Json的 return 返回值 */ + if (!empty($request->location_search)) { + if ($request->searchType == 'all') { + $resultData = DB::table('blog_link') + ->where([ + ['blogName', 'LIKE', '%' . $request->location_search . '%', 'or'], + ['blogUrl', 'LIKE', '%' . $request->location_search . '%', 'or'], + ['blogOwnEmail', 'LIKE', '%' . $request->location_search . '%', 'or']]) + ->select('blogName','blogUrl','blogDescription','blogIcon') + ->orderBy('id') + ->get() + ->toArray(); + if (!empty($resultData)) { + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '数据输出成功', + 'data' => $resultData, + ], + ]; + } else { + $returnData = [ + 'output' => 'NoData', + 'code' => 200, + 'data' => [ + 'message' => '没有数据', + ], + ]; + } + } else { + if ($request->searchType == 'blogName') { + $resultData = DB::table('blog_link') + ->where([['blogName', 'LIKE', '%' . $request->location_search . '%']]) + ->select('blogName','blogUrl','blogDescription','blogIcon') + ->orderBy('id') + ->get() + ->toArray(); + if (!empty($resultData)) { + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '数据输出成功', + 'data' => $resultData, + ], + ]; + } else { + $returnData = [ + 'output' => 'NoData', + 'code' => 200, + 'data' => [ + 'message' => '没有数据', + ], + ]; + } + } elseif ($request->searchType == 'blogUrl') { + $resultData = DB::table('blog_link') + ->where([['blogUrl', 'LIKE', '%' . $request->location_search . '%']]) + ->select('blogName','blogUrl','blogDescription','blogIcon') + ->orderBy('id') + ->get() + ->toArray(); + if (!empty($resultData)) { + $returnData = [ + 'output' => 'Success', + 'code' => 200, + 'data' => [ + 'message' => '数据输出成功', + 'data' => $resultData, + ], + ]; + } else { + $returnData = [ + 'output' => 'NoData', + 'code' => 200, + 'data' => [ + 'message' => '没有数据', + ], + ]; + } + } else { + $returnData = [ + 'output' => 'TypeError', + 'code' => 403, + 'data' => [ + 'message' => '类型错误请检查', + ], + ]; + } + } + } else { + $returnData = [ + 'output' => 'SearchEmpty', + 'code' => 403, + 'data' => [ + 'message' => '搜索为空,请输入内容', + ], + ]; + } + return Response::json($returnData,$returnData['code']); + } + protected function viewLink(Request $request): Factory|View|Application { $this->data['webSubTitle'] = '友链'; -- 2.43.0 From c7550fbf3fd436124795998199b39dc6338aaabb Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 22:51:03 +0800 Subject: [PATCH 18/19] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AD=89=E5=BE=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/Console/Link.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Console/Link.php b/app/Http/Controllers/Console/Link.php index 4dd1149..c3f8fc2 100644 --- a/app/Http/Controllers/Console/Link.php +++ b/app/Http/Controllers/Console/Link.php @@ -91,6 +91,11 @@ protected function ViewList(Request $request): Factory|View|Application|Redirect protected function ViewCheck(Request $request): Factory|View|Application { + // 检查是否存在含有未在本站分配位置 + $this->data['blog'] = DB::table('blog_link') + ->whereIn('blog_link.blogLocation',[0]) + ->get() + ->toArray(); return view('console.friends-link.check', $this->data); } @@ -106,6 +111,11 @@ protected function ViewSort(): Factory|View|Application protected function ViewColor(): Factory|View|Application { - return view('concole.friends-link.color',$this->data); + return view('console.friends-link.color',$this->data); + } + + protected function apiConsoleAdd() { + // 检查数据 + } } -- 2.43.0 From d83e013c0c5ed8fe632e4d1d591bf51e85f8dc37 Mon Sep 17 00:00:00 2001 From: XiaoLFeng Date: Sat, 24 Jun 2023 22:51:19 +0800 Subject: [PATCH 19/19] =?UTF-8?q?api=E8=B7=AF=E7=94=B1=E8=A1=A8=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=EF=BC=88search=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- routes/api.php | 1 + 1 file changed, 1 insertion(+) diff --git a/routes/api.php b/routes/api.php index 93b2db2..503f5cb 100644 --- a/routes/api.php +++ b/routes/api.php @@ -44,5 +44,6 @@ }); Route::prefix('custom')->group(function () { Route::post('add',[Link::class,'apiCustomAdd'])->name('api.link.custom.add'); + Route::get('search',[Link::class, 'apiCustomSearch'])->name('api.link.custom.search'); }); }); -- 2.43.0