forked from XiaoLFeng/XF_Index
AddFeature:添加修改友链API
添加接口 apiCustomEdit 修改友链API 设计接口路由表 添加修改发送邮件 Signed-off-by: XiaoLFeng <gm@x-lf.cn>
This commit is contained in:
parent
65e29d7436
commit
d2c2b9ca8b
|
@ -548,6 +548,196 @@ public function apiCustomBlogVerify(HttpRequest $request): JsonResponse
|
|||
return Response::json($returnData, $returnData['code']);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改友链API
|
||||
*
|
||||
* @param HttpRequest $request 获取HTTP中 Request 数据
|
||||
* @return JsonResponse 返回JSON数据
|
||||
*/
|
||||
public function apiCustomEdit(HttpRequest $request, string $friendId): JsonResponse
|
||||
{
|
||||
/**
|
||||
* @var array $returnData Json的 return 返回值
|
||||
* @var Validator $dataCheck 数据判断
|
||||
* @var array $errorInfo 错误信息
|
||||
* @var array $errorSingle 输出单个错误信息
|
||||
*/
|
||||
// 验证Cookie是否有效
|
||||
if ($request->hasCookie('friend_edit')) {
|
||||
// 检查Cookie解析是否为此博客
|
||||
if (password_verify($friendId, $request->cookie('friend_edit'))) {
|
||||
// 获取数据库
|
||||
$resultBlog = DB::table('blog_link')
|
||||
->find($friendId);
|
||||
if (!empty($resultBlog->id)) {
|
||||
// 检查数据
|
||||
$dataCheck = Validator::make($request->all(), [
|
||||
'userEmail' => 'required|email',
|
||||
'userServerHost' => 'required|string',
|
||||
'userBlog' => 'required|string',
|
||||
'userUrl' => 'required|regex:#[a-zA-z]+://[^\s]*#',
|
||||
'userDescription' => 'required|string',
|
||||
'userIcon' => 'required|regex:#[a-zA-z]+://[^\s]*#',
|
||||
'checkRssJudge' => 'boolean',
|
||||
'userRss' => 'string|regex:#[a-zA-z]+://[^\s]*#',
|
||||
'userSelColor' => 'required|int',
|
||||
'userRemark' => 'string',
|
||||
]);// 检查发现错误
|
||||
if ($dataCheck->fails()) {
|
||||
$errorType = array_keys($dataCheck->failed());
|
||||
$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 = [
|
||||
'output' => 'DataFormatError',
|
||||
'code' => 403,
|
||||
'data' => [
|
||||
'message' => '输入内容有错误',
|
||||
'errorSingle' => $errorSingle,
|
||||
'error' => $errorInfo,
|
||||
],
|
||||
];
|
||||
} else {
|
||||
// 检查数据
|
||||
if (empty($request->checkRssJudge)) {
|
||||
$request->checkRssJudge = 0;
|
||||
}
|
||||
// 数据载入数组
|
||||
$this->data['oldBlog'] = (object)[
|
||||
'blogOwnEmail' => $resultBlog->blogOwnEmail,
|
||||
'blogUrl' => $resultBlog->blogUrl,
|
||||
'blogName' => $resultBlog->blogName,
|
||||
'blogDescription' => $resultBlog->blogDescription,
|
||||
'blogIcon' => $resultBlog->blogIcon,
|
||||
'blogRssJudge' => $resultBlog->blogRssJudge,
|
||||
'blogRSS' => $resultBlog->blogRSS,
|
||||
'blogSetColor' => $resultBlog->blogSetColor,
|
||||
'blogRemark' => $resultBlog->blogRemark,
|
||||
'blogServerHost' => $resultBlog->blogServerHost,
|
||||
];
|
||||
$this->data['blog'] = (object)[
|
||||
'blogOwnEmail' => $request->userEmail,
|
||||
'blogUrl' => $request->userUrl,
|
||||
'blogName' => $request->userBlog,
|
||||
'blogDescription' => $request->userDescription,
|
||||
'blogIcon' => $request->userIcon,
|
||||
'blogRssJudge' => $request->checkRssJudge,
|
||||
'blogRSS' => $request->userRss,
|
||||
'blogSetColor' => $request->userSelColor,
|
||||
'blogRemark' => $request->userRemark,
|
||||
'blogServerHost' => $request->userServerHost,
|
||||
];
|
||||
|
||||
// 修改数据
|
||||
$updateData = DB::table('blog_link')
|
||||
->where('id', $resultBlog->id)
|
||||
->update([
|
||||
'blogOwnEmail' => $request->userEmail,
|
||||
'blogUrl' => $request->userUrl,
|
||||
'blogName' => $request->userBlog,
|
||||
'blogDescription' => $request->userDescription,
|
||||
'blogIcon' => $request->userIcon,
|
||||
'blogRssJudge' => $request->checkRssJudge,
|
||||
'blogRSS' => $request->userRss,
|
||||
'blogSetColor' => $request->userSelColor,
|
||||
'blogRemark' => $request->userRemark,
|
||||
'blogServerHost' => $request->userServerHost,
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
]);
|
||||
|
||||
if ($updateData) {
|
||||
// 邮件发送系统
|
||||
// 新用户
|
||||
if ($this->data['oldBlog']->blogOwnEmail != $this->data['blog']->blogOwnEmail) {
|
||||
$this->data['sendEmail'] = [
|
||||
'userEmail' => $this->data['blog']->blogOwnEmail,
|
||||
'userBlog' => $this->data['blog']->blogName,
|
||||
'userUrl' => $this->data['blog']->blogUrl,
|
||||
];
|
||||
Mail::send('mail.link-custom-edit', $this->data, function (Message $mail) {
|
||||
$mail->from(env('MAIL_USERNAME'), env('APP_NAME'));
|
||||
$mail->to($this->data['sendEmail']['userEmail']);
|
||||
$mail->subject(env('APP_NAME') . '-友链自主修改通知');
|
||||
});
|
||||
}
|
||||
$this->data['sendEmail'] = [
|
||||
'userEmail' => $this->data['oldBlog']->blogOwnEmail,
|
||||
'userBlog' => $this->data['oldBlog']->blogName,
|
||||
'userUrl' => $this->data['oldBlog']->blogUrl,
|
||||
];
|
||||
// 用户
|
||||
Mail::send('mail.link-custom-edit', $this->data, function (Message $mail) {
|
||||
$mail->from(env('MAIL_USERNAME'), env('APP_NAME'));
|
||||
$mail->to($this->data['sendEmail']['userEmail']);
|
||||
$mail->subject(env('APP_NAME') . '-友链自主修改通知');
|
||||
});
|
||||
// 站长
|
||||
Mail::send('mail.link-custom-edit-admin', $this->data, function (Message $mail) {
|
||||
$mail->from(env('MAIL_USERNAME'), env('APP_NAME'));
|
||||
$mail->to($this->data['sqlEmail']);
|
||||
$mail->subject(env('APP_NAME') . '-友链自主修改通知');
|
||||
});
|
||||
|
||||
// 消息成功通知
|
||||
$returnData = [
|
||||
'output' => 'Success',
|
||||
'code' => 200,
|
||||
'data' => [
|
||||
'message' => '您已成功修改',
|
||||
],
|
||||
];
|
||||
$cookie = cookie('friend_edit', '', -1, '/');
|
||||
return Response::json($returnData, $returnData['code'])
|
||||
->cookie($cookie);
|
||||
} else {
|
||||
$returnData = [
|
||||
'output' => 'UpdateFail',
|
||||
'code' => 403,
|
||||
'data' => [
|
||||
'message' => '更新失败请联系管理员',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$returnData = [
|
||||
'output' => 'NoBlog',
|
||||
'code' => 403,
|
||||
'data' => [
|
||||
'message' => '没有对应博客',
|
||||
],
|
||||
];
|
||||
}
|
||||
} else {
|
||||
$returnData = [
|
||||
'output' => 'Mismatch',
|
||||
'code' => 403,
|
||||
'data' => [
|
||||
'message' => '不匹配',
|
||||
],
|
||||
];
|
||||
}
|
||||
} else {
|
||||
$returnData = [
|
||||
'output' => 'InvalidValidation',
|
||||
'code' => 403,
|
||||
'data' => [
|
||||
'message' => '无效验证',
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
return Response::json($returnData, $returnData['code']);
|
||||
}
|
||||
|
||||
protected function viewEditFriend(HttpRequest $request, $friendId): Application|Factory|View|RedirectResponse
|
||||
{
|
||||
// 检查内容是否为空
|
||||
|
|
84
resources/views/mail/link-custom-edit-admin.blade.php
Normal file
84
resources/views/mail/link-custom-edit-admin.blade.php
Normal file
|
@ -0,0 +1,84 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<title>Mail</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
</head>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600"
|
||||
style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0; font-size: 30px;"><b>{{ env('APP_NAME') }}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
|
||||
<tr>
|
||||
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
|
||||
时间: <b>{{ date('Y-m-d H:i:s') }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
|
||||
Dear. <a style="text-decoration: none;color: #198754;" href="mailto:{{ $sqlEmail }}">{{ $sqlEmail }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
|
||||
您好站长:{{ $sqlAuthor }}<br/>
|
||||
本站友链(<a style="text-decoration: none;color: #198754;" href="{{ $oldBlog->blogUrl }}">{{ $oldBlog->blogName }}</a>)已自行修改<br/>
|
||||
请检查修改问题确保无误!
|
||||
<hr/>
|
||||
这是您以前的信息:<br/>
|
||||
<ul>
|
||||
<li>博主邮箱:{{ $blog->blogOwnEmail }}</li>
|
||||
<li>贵站名字:{{ $blog->blogName }}</li>
|
||||
<li>贵站地址:{{ $blog->blogUrl }}</li>
|
||||
<li>图片地址:{{ $blog->blogIcon }}</li>
|
||||
<li>贵站介绍:{{ $blog->blogDescription }}</li>
|
||||
@if(!empty($blog->blogRemark))
|
||||
<li>备注内容:{{ $blog->blogRemark }}</li>
|
||||
@endif
|
||||
@if($blog->blogRssJudge == 1)
|
||||
<li>RSS地址:{{ $blog->blogRSS }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
<hr/>
|
||||
这是您的修改信息:<br/>
|
||||
<ul>
|
||||
<li>博主邮箱:{{ $oldBlog->blogOwnEmail }}</li>
|
||||
<li>贵站名字:{{ $oldBlog->blogName }}</li>
|
||||
<li>贵站地址:{{ $oldBlog->blogUrl }}</li>
|
||||
<li>图片地址:{{ $oldBlog->blogIcon }}</li>
|
||||
<li>贵站介绍:{{ $oldBlog->blogDescription }}</li>
|
||||
@if(!empty($oldBlog->blogRemark))
|
||||
<li>备注内容:{{ $oldBlog->blogRemark }}</li>
|
||||
@endif
|
||||
@if($oldBlog->blogRssJudge == 1)
|
||||
<li>RSS地址:{{ $oldBlog->blogRSS }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
<hr/>
|
||||
此邮件为凭证,若发生意外修改请使用此邮件提交于站长!谢谢您对本站的支持!<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td style="font-family: Arial, sans-serif; font-size: 14px;">
|
||||
<font style="color: grey;">© 2022 - {{ date('Y') }}. {{ env('APP_NAME') }} All Rights Reserved.</font><br/>
|
||||
<font style="color: grey;">本邮件为自动发出,请勿直接回复</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td style="padding: 30px 0 20px 0;"></td>
|
||||
</tr>
|
||||
</html>
|
86
resources/views/mail/link-custom-edit.blade.php
Normal file
86
resources/views/mail/link-custom-edit.blade.php
Normal file
|
@ -0,0 +1,86 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
|
||||
<title>Mail</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
</head>
|
||||
<table align="center" border="0" cellpadding="0" cellspacing="0" width="600"
|
||||
style="border-collapse: collapse;border: 1px solid #cccccc;box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175)">
|
||||
<tr>
|
||||
<td align="center" bgcolor="#70bbd9" style="padding: 30px 0 30px 0; font-size: 30px;"><b>{{ env('APP_NAME') }}</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding: 30px 30px 30px 30px;">
|
||||
<tr>
|
||||
<td style="padding: 10px 0px 30px 0px;color: #08212b; font-family: Arial, sans-serif; font-size: 10px;">
|
||||
时间: <b>{{ date('Y-m-d H:i:s') }}</b>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 0px 10px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 24px;">
|
||||
Dear. <a style="text-decoration: none;color: #198754;" href="mailto:{{ $sendEmail['userEmail'] }}">{{ $sendEmail['userEmail'] }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding: 0px 5px 5px 0px;color: #000000; font-family: Arial, sans-serif; font-size: 16px;">
|
||||
您好 <a style="text-decoration: none;color: #198754;" href="{{ $sendEmail['userUrl'] }}"><b> {{ $sendEmail['userBlog'] }}</b></a> 的站长:<b>
|
||||
{{ $sendEmail['userEmail'] }}</b><br/>
|
||||
您在本博客(<a style="text-decoration: none;color: #198754;" href="{{ env('APP_BLOG') }}">{{ env('APP_NAME') }}</a>)自主修改友链<br/>
|
||||
邮件为通知您您已成功修改友链,修改立即生效,我们告知您已做出了修改,若您未执行修改请立刻联系站长
|
||||
{{ $sqlAuthor }}({{ $sqlEmail }})
|
||||
<hr/>
|
||||
这是您现在的信息:<br/>
|
||||
<ul>
|
||||
<li>博主邮箱:{{ $blog->blogOwnEmail }}</li>
|
||||
<li>贵站名字:{{ $blog->blogName }}</li>
|
||||
<li>贵站地址:{{ $blog->blogUrl }}</li>
|
||||
<li>图片地址:{{ $blog->blogIcon }}</li>
|
||||
<li>贵站介绍:{{ $blog->blogDescription }}</li>
|
||||
@if(!empty($blog->blogRemark))
|
||||
<li>备注内容:{{ $blog->blogRemark }}</li>
|
||||
@endif
|
||||
@if($blog->blogRssJudge == 1)
|
||||
<li>RSS地址:{{ $blog->blogRSS }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
<hr/>
|
||||
这是您以前的修改信息:<br/>
|
||||
<ul>
|
||||
<li>博主邮箱:{{ $oldBlog->blogOwnEmail }}</li>
|
||||
<li>贵站名字:{{ $oldBlog->blogName }}</li>
|
||||
<li>贵站地址:{{ $oldBlog->blogUrl }}</li>
|
||||
<li>图片地址:{{ $oldBlog->blogIcon }}</li>
|
||||
<li>贵站介绍:{{ $oldBlog->blogDescription }}</li>
|
||||
@if(!empty($oldBlog->blogRemark))
|
||||
<li>备注内容:{{ $oldBlog->blogRemark }}</li>
|
||||
@endif
|
||||
@if($oldBlog->blogRssJudge == 1)
|
||||
<li>RSS地址:{{ $oldBlog->blogRSS }}</li>
|
||||
@endif
|
||||
</ul>
|
||||
<hr/>
|
||||
此邮件为凭证,若发生意外修改请使用此邮件提交于站长!谢谢您对本站的支持!<br/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td bgcolor="#f0f0f0" style="padding: 30px 20px 30px 20px;">
|
||||
<table border="0" cellpadding="0" cellspacing="0" width="100%">
|
||||
<tr>
|
||||
<td style="font-family: Arial, sans-serif; font-size: 14px;">
|
||||
<font style="color: grey;">© 2022 - {{ date('Y') }}. {{ env('APP_NAME') }} All Rights Reserved.</font><br/>
|
||||
<font style="color: grey;">本邮件为自动发出,请勿直接回复</font>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<tr>
|
||||
<td style="padding: 30px 0 20px 0;"></td>
|
||||
</tr>
|
||||
</html>
|
|
@ -43,8 +43,9 @@
|
|||
|
||||
});
|
||||
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');
|
||||
Route::post('add', [Link::class, 'apiCustomAdd'])->name('api.link.custom.add');
|
||||
Route::post('edit/{friendId}', [Link::class, 'apiCustomEdit'])->name('api.link.custom.edit');
|
||||
Route::get('search', [Link::class, 'apiCustomSearch'])->name('api.link.custom.search');
|
||||
Route::post('blogCheck',[Link::class,'apiCustomBlogCheck'])->name('api.link.custom.blogCheck');
|
||||
Route::post('blogVerify',[Link::class,'apiCustomBlogVerify'])->name('api.link.custom.blogVerify');
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue
Block a user