2023-06-13 20:27:06 +08:00
|
|
|
<?php
|
|
|
|
/*
|
|
|
|
* Copyright © 2016 - 2023 筱锋xiao_lfeng. All Rights Reserved.
|
|
|
|
* 开发开源遵循 MIT 许可,若需商用请联系开发者
|
|
|
|
* https://www.x-lf.com/
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Function;
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
use App\Http\Controllers\Index;
|
|
|
|
use Illuminate\Contracts\Foundation\Application;
|
|
|
|
use Illuminate\Contracts\View\Factory;
|
|
|
|
use Illuminate\Contracts\View\View;
|
2023-06-22 15:21:42 +08:00
|
|
|
use Illuminate\Http\JsonResponse;
|
2023-06-13 20:27:06 +08:00
|
|
|
use Illuminate\Http\Request;
|
2023-06-22 15:21:42 +08:00
|
|
|
use Illuminate\Mail\Message;
|
2023-06-13 20:27:06 +08:00
|
|
|
use Illuminate\Support\Facades\DB;
|
2023-06-22 15:21:42 +08:00
|
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
use Illuminate\Support\Facades\Response;
|
2023-06-24 16:03:27 +08:00
|
|
|
use Illuminate\Support\Facades\Validator;
|
2023-06-13 20:27:06 +08:00
|
|
|
|
|
|
|
class Link extends Controller
|
|
|
|
{
|
|
|
|
protected array $data;
|
|
|
|
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
$data = new Index();
|
|
|
|
$this->data = $data->data;
|
|
|
|
}
|
|
|
|
|
2023-06-22 15:21:42 +08:00
|
|
|
public function apiCustomAdd(Request $request): JsonResponse
|
|
|
|
{
|
2023-06-24 16:03:27 +08:00
|
|
|
/** @var array $returnData Json的 return 返回值 */
|
|
|
|
/** @var Validator $dataCheck 数据判断 */
|
|
|
|
/** @var array $errorInfo 错误信息 */
|
2023-06-24 21:00:27 +08:00
|
|
|
/** @var array $errorSingle 输出单个错误信息 */
|
2023-06-22 15:21:42 +08:00
|
|
|
// 检查数据
|
2023-06-24 21:00:27 +08:00
|
|
|
$dataCheck = Validator::make($request->all(), [
|
2023-06-24 16:03:27 +08:00
|
|
|
'userEmail' => 'required|email',
|
|
|
|
'userServerHost' => 'required|string',
|
|
|
|
'userBlog' => 'required|string',
|
2023-06-24 21:00:27 +08:00
|
|
|
'userUrl' => 'required|regex:#[a-zA-z]+://[^\s]*#',
|
2023-06-24 16:03:27 +08:00
|
|
|
'userDescription' => 'required|string',
|
2023-06-24 21:00:27 +08:00
|
|
|
'userIcon' => 'required|regex:#[a-zA-z]+://[^\s]*#',
|
2023-06-24 16:03:27 +08:00
|
|
|
'checkRssJudge' => 'boolean',
|
2023-06-24 21:00:27 +08:00
|
|
|
'userRss' => 'string|regex:#[a-zA-z]+://[^\s]*#',
|
2023-06-24 16:03:27 +08:00
|
|
|
'userLocation' => 'required|int',
|
|
|
|
'userSelColor' => 'required|int',
|
|
|
|
'userRemark' => 'required|string',
|
|
|
|
]);
|
2023-06-22 15:21:42 +08:00
|
|
|
|
2023-06-24 16:03:27 +08:00
|
|
|
// 检查发现错误
|
|
|
|
if ($dataCheck->fails()) {
|
|
|
|
$errorType = array_keys($dataCheck->failed());
|
|
|
|
$i = 0;
|
|
|
|
foreach ($dataCheck->failed() as $valueData) {
|
|
|
|
$errorInfo[$errorType[$i]] = array_keys($valueData);
|
2023-06-24 21:00:27 +08:00
|
|
|
if ($i == 0) {
|
|
|
|
$errorSingle = [
|
|
|
|
'info' => $errorType[$i],
|
|
|
|
'need' => $errorInfo[$errorType[$i]],
|
|
|
|
];
|
|
|
|
}
|
2023-06-24 16:03:27 +08:00
|
|
|
$i++;
|
|
|
|
}
|
|
|
|
$returnData = [
|
|
|
|
'output' => 'DataFormatError',
|
|
|
|
'code' => 403,
|
|
|
|
'data' => [
|
|
|
|
'message' => '输入内容有错误',
|
2023-06-24 21:00:27 +08:00
|
|
|
'errorSingle' => $errorSingle,
|
2023-06-24 16:03:27 +08:00
|
|
|
'error' => $errorInfo,
|
|
|
|
],
|
|
|
|
];
|
|
|
|
} else {
|
2023-06-22 15:21:42 +08:00
|
|
|
// 检查数据
|
|
|
|
if (empty($request->checkRssJudge)) {
|
|
|
|
$request->checkRssJudge = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
// 根据数据库检查邮箱用户是否已存在
|
|
|
|
$resultBlog = DB::table('blog_link')
|
|
|
|
->where([
|
2023-06-24 21:00:27 +08:00
|
|
|
['blogOwnEmail', '=', $request->userEmail, 'or'],
|
|
|
|
['blogName', '=', $request->userBlog, 'or'],
|
|
|
|
['blogUrl', '=', $request->userUrl, 'or']
|
2023-06-22 15:21:42 +08:00
|
|
|
])->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,
|
2023-06-22 23:02:38 +08:00
|
|
|
'blogRemark' => $request->userRemark,
|
2023-06-22 15:21:42 +08:00
|
|
|
]);
|
|
|
|
if ($insertData) {
|
|
|
|
// 邮件发送系统
|
2023-06-24 21:00:27 +08:00
|
|
|
Mail::send('mail.link-custom-add', $request->toArray(), function (Message $mail) {
|
2023-06-22 15:21:42 +08:00
|
|
|
global $request;
|
2023-06-24 21:00:27 +08:00
|
|
|
$mail->from(env('MAIL_USERNAME'), env('APP_NAME'));
|
2023-06-22 15:21:42 +08:00
|
|
|
$mail->to($request->userEmail);
|
2023-06-24 21:00:27 +08:00
|
|
|
$mail->subject(env('APP_NAME') . '-友链等待审核通知');
|
2023-06-22 15:21:42 +08:00
|
|
|
});
|
|
|
|
// 消息成功通知
|
|
|
|
$returnData = [
|
|
|
|
'output' => 'Success',
|
|
|
|
'code' => 200,
|
|
|
|
'data' => [
|
|
|
|
'message' => '您已成功申请',
|
|
|
|
],
|
|
|
|
];
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
$returnData = [
|
|
|
|
'output' => 'AlreadyUser',
|
|
|
|
'code' => 403,
|
|
|
|
'data' => [
|
|
|
|
'message' => '已有此用户,您是否已在本博客注册过',
|
|
|
|
],
|
|
|
|
];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-24 21:00:27 +08:00
|
|
|
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);
|
2023-06-22 15:21:42 +08:00
|
|
|
}
|
|
|
|
|
2023-06-13 20:27:06 +08:00
|
|
|
private function GetFriendsLink(array &$data): void
|
|
|
|
{
|
2023-06-24 21:00:27 +08:00
|
|
|
$data['blogLink'] = DB::table('blog_link')->whereNotIn('blog_link.blogLocation', [0])->get()->toArray();
|
2023-06-13 20:27:06 +08:00
|
|
|
$data['blogSort'] = DB::table('blog_sort')->orderBy('blog_sort.sort')->get()->toArray();
|
|
|
|
}
|
2023-06-24 21:00:27 +08:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
2023-06-13 20:27:06 +08:00
|
|
|
}
|