96 lines
3.4 KiB
PHP
Executable File
96 lines
3.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers\Api\v1;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\TomTool\Flow;
|
|
use App\Services\TomTool\Telegram\Slave as TeleSlave;
|
|
use App\Models\Articles;
|
|
use App\Models\Categories;
|
|
use App\Models\ArticleFreenodeThumbNum;
|
|
use App\Services\TomTool\HttpV2;
|
|
use App\Services\TagService;
|
|
|
|
class ArticlesController extends Controller
|
|
{
|
|
public function find(Request $oRequest)
|
|
{
|
|
$aData = $oRequest->all();
|
|
$sArticleType = $aData["articleType"] ?? "freenode";
|
|
$sArticleCode = $aData["articleCode"] ?? "fn".date("Ymd");
|
|
|
|
$iCategoryId = Categories::where("sSlug", "freenode")->first()?->id;
|
|
$oArticle = Articles::where("iCategoryId", $iCategoryId)->where("sSlug", $sArticleCode)->first();
|
|
|
|
if (!$oArticle) {
|
|
$oArticle = Articles::where("iCategoryId", $iCategoryId)->orderBy("id", "desc")->first();
|
|
}
|
|
|
|
return response()->json($oArticle);
|
|
}
|
|
|
|
public function receiveFreenode(Request $oRequest)
|
|
{
|
|
|
|
$sObjName = "nodehub:article_receive_freenode";
|
|
$oFlow = Flow::make($sObjName);
|
|
|
|
$aData = $oRequest->all();
|
|
$aArticle = $aData["article"];
|
|
$sArticleTitle = $aArticle["title"];
|
|
$sArticleTitleSub = $aArticle["title_sub"];
|
|
$sArticleContent = $aArticle["content"];
|
|
$aArticleTags = $aArticle["tags"];
|
|
$sSlug = 'fn'.date("Ymd");
|
|
$sImgAuthor = "tg_xiuren_a";
|
|
$i7like = $aArticle["7like"];
|
|
|
|
$oThumbNum = ArticleFreenodeThumbNum::firstOrCreate(["author_code" => $sImgAuthor]);
|
|
$iThumbNum = $oThumbNum->num;
|
|
|
|
$sImagesApi = "https://".config("path.url_resource_base")."/api/images/get/url-by-num";
|
|
|
|
$aApiArg = [
|
|
"sAuthorCode" => $sImgAuthor,
|
|
"iNum" => $iThumbNum+1,
|
|
];
|
|
$sApiResult = HttpV2::make($sImagesApi, "post")->withToken()->setDataA($aApiArg)->send();
|
|
$aApiResult = json_decode($sApiResult, true);
|
|
|
|
if (!isset($aApiResult["isDone"]) || !$aApiResult["isDone"]) {
|
|
echo $sApiResult;
|
|
return response()->json($oFlow->fail("{$sObjName}的图片api调用失败"));
|
|
}
|
|
|
|
$sThumbPath = $aApiResult["aData"]["sFileUrl"];
|
|
$sThumbNumTrue = $aApiResult["aData"]["iTrueNum"];
|
|
|
|
$oCategories = Categories::where("sSlug", "freenode")->first();
|
|
|
|
$oArticle = Articles::updateOrCreate(
|
|
['sSlug' => $sSlug],
|
|
[
|
|
'sThumb' => $sThumbPath,
|
|
'iCategoryId' => $oCategories->id,
|
|
'sTitle' => $sArticleTitle,
|
|
'sTitleSub' => $sArticleTitleSub,
|
|
'sContent' => $sArticleContent,
|
|
'i7like' => $i7like,
|
|
'iStatus' => 1,
|
|
'iUserId' => 1,
|
|
],
|
|
);
|
|
|
|
(new TagService())->syncArticleTagsByName($oArticle, $aArticleTags);
|
|
|
|
ArticleFreenodeThumbNum::where("author_code", $sImgAuthor)->update(["num" => $sThumbNumTrue]);
|
|
|
|
$sArticleUrl = config("app.url")."/feenode/".$sSlug;
|
|
|
|
TeleSlave::notify()->send($sArticleUrl." 发布成功");
|
|
|
|
return response()->json($oFlow->done());
|
|
}
|
|
}
|