fn_b/app/Http/Controllers/Api/v1/ArticlesController.php
2026-03-09 18:16:08 +08:00

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());
}
}