239 lines
6.5 KiB
PHP
239 lines
6.5 KiB
PHP
<?php
|
||
|
||
namespace App\Services\TG\Hook\Mod;
|
||
use App\Models\Article as ModelArticle;
|
||
|
||
class Dog extends Base {
|
||
|
||
public function Github($aParam)
|
||
{
|
||
$iId = $aParam["aArg"][1] ?? false;
|
||
|
||
if (empty($aParam["aOption"]) && empty($aParam["aArg"])) {
|
||
return "/dog#github {id}";
|
||
}
|
||
|
||
$oArticle = ModelArticle::find($iId);
|
||
|
||
$this->oHttp->sToUrl = "https://api.github.com/repos/".$oArticle->user_name."/".$oArticle->project_name;
|
||
$this->oHttp->sMetHod = "get";
|
||
$r = $this->oHttp->send();
|
||
|
||
$aGitHub = json_decode($r, true);
|
||
|
||
if (!isset($aGitHub["id"])) {
|
||
$aGitHub["thisSendUrl"] = $this->oHttp->sToUrl;
|
||
return $this->toJson($aGitHub);
|
||
}
|
||
|
||
$tmp = str_replace("T", " ", rtrim($aGitHub["updated_at"], "Z")); //updated_at, pushed_at
|
||
$tmp = strtotime($tmp);
|
||
$tmpDate = date("Y-m-d H:i:s", $tmp + (8 * 3600));
|
||
|
||
$aGitHubNew = [];
|
||
$aGitHubNew["⭐️星星"] = $aGitHub["stargazers_count"];
|
||
$aGitHubNew["♻️最后更新"] = $tmpDate; // 替换T为空格并去掉Z
|
||
$aGitHubNew["watchers"] = $aGitHub["watchers_count"];
|
||
$aGitHubNew["forks"] = $aGitHub["forks_count"];
|
||
$aGitHubNew["watchers"] = $aGitHub["watchers_count"];
|
||
$aGitHubNew["url"] = $this->urlFormat($aGitHub["html_url"]);
|
||
|
||
return $this->toJson($aGitHubNew);
|
||
|
||
}
|
||
|
||
public function List($aParam)
|
||
{
|
||
if (isset($aParam['aOption'][1])) {
|
||
$sOrderBy = $aParam['aOption'][1];
|
||
} else {
|
||
$sOrderBy = "i_in10";
|
||
}
|
||
|
||
$aArticleList = ModelArticle::orderBy($sOrderBy)->get()->toArray();
|
||
|
||
$str = "";
|
||
foreach ($aArticleList as &$row) { // 使用引用来修改原数组
|
||
unset($row['updated_at']); // 移除 updated_at 字段
|
||
unset($row['created_at']); // 移除 created_at 字段
|
||
// $aTmp[] = $this->toJson($row);
|
||
// $this->oTGHttp->sendToTG(json_encode($row, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
|
||
// $str .= "\n";
|
||
$str .= $this->toJson($row);
|
||
$str .= "\n\n";
|
||
}
|
||
|
||
return $str;
|
||
}
|
||
|
||
public function Find($aParam)
|
||
{
|
||
$iId = $aParam['aArg'][1];
|
||
|
||
$aSingle = ModelArticle::find($iId)->toArray();
|
||
|
||
unset($aSingle['updated_at']);
|
||
unset($aSingle['created_at']);
|
||
|
||
return $this->toJson($aSingle);
|
||
}
|
||
|
||
|
||
public function Like($aParams)
|
||
{
|
||
$aArticleList = ModelArticle::where($this->cmdGood($aParams['aOption'][1]), 'like', '%' . $aParams['aArg'][1] . '%')
|
||
->orderBy("user_name")
|
||
->get()
|
||
->toArray();
|
||
|
||
if (empty($aArticleList)) {
|
||
$this->oTGHttp->sendToTG("没有");
|
||
} else {
|
||
|
||
$aTmp = [];
|
||
foreach ($aArticleList as &$row) { // 使用引用来修改原数组
|
||
unset($row['updated_at']); // 移除 updated_at 字段
|
||
unset($row['created_at']); // 移除 created_at 字段
|
||
$aTmp[] = $this->toJson($row);
|
||
}
|
||
}
|
||
|
||
return $aTmp;
|
||
}
|
||
|
||
public function Clone($aParam)
|
||
{
|
||
$iId = $aParam['aArg'][1];
|
||
|
||
// 查找文章
|
||
$aArticle = ModelArticle::find($iId);
|
||
|
||
if ($aArticle) {
|
||
// 复制文章
|
||
$newArticle = $aArticle->replicate();
|
||
|
||
// 如果需要,可以修改新文章的某些字段,例如标题或状态
|
||
// $newArticle->title = $newArticle->title . ' - Copy'; // 修改标题
|
||
// $newArticle->status = 'draft'; // 例如,将状态设置为草稿
|
||
|
||
// 保存新文章
|
||
$newArticle->save();
|
||
|
||
// 发送新文章的 ID 到 Telegram
|
||
$sMsg = "新文章已创建,ID: " . $newArticle->id;
|
||
// $this->oTGHttp->sendToTG($sMsg);
|
||
|
||
// 返回 HTTP 响应
|
||
// $this->oHttp::response(200, 'ok');
|
||
|
||
return $this->toJson($sMsg);
|
||
|
||
} else {
|
||
throw new \Exception("没有这个id");
|
||
}
|
||
}
|
||
|
||
public function Add($aParams)
|
||
{
|
||
|
||
$newArticle = new ModelArticle();
|
||
$newArticle->user_name = $aParams['aArg'][1];
|
||
$r = $newArticle->save();
|
||
|
||
return $r;
|
||
|
||
}
|
||
|
||
public function Del($aParams)
|
||
{
|
||
|
||
$article = ModelArticle::find($aParams['aArg'][1]);
|
||
|
||
if ($article) {
|
||
$r = $article->delete();
|
||
} else {
|
||
$r = false;
|
||
}
|
||
|
||
return $r;
|
||
|
||
}
|
||
|
||
public function JsonAdd($aParam) {
|
||
|
||
return $this->JsonSet($aParam, "add");
|
||
|
||
}
|
||
|
||
public function Json($aParam)
|
||
{
|
||
$iId = $aParam["aOption"][1] ?? false;
|
||
$sJson = $aParam["aArg"] ?? false;
|
||
|
||
if (empty($aParam["aOption"]) && empty($aParam["aArg"])) {
|
||
return "/article#json__id? <json> | 有id为set,无id为add";
|
||
}
|
||
|
||
|
||
// if (!$iId) {
|
||
// return "需要id";
|
||
// }
|
||
//
|
||
// if (!$sJson) {
|
||
// return "需要json";
|
||
// }
|
||
|
||
if (!$iId) {
|
||
|
||
$oArticle = new ModelArticle();
|
||
|
||
} else {
|
||
|
||
$oArticle = ModelArticle::find($iId);
|
||
if (!$oArticle) {
|
||
return "没到到这个";
|
||
}
|
||
|
||
}
|
||
|
||
$sJson = implode(" ", $sJson);
|
||
|
||
$aJson = json_decode($sJson, true);
|
||
|
||
foreach ($aJson as $k => $v) {
|
||
$oArticle->$k = $v;
|
||
}
|
||
|
||
$oArticle->save();
|
||
|
||
$aParam["aArg"][1] = $oArticle->id;
|
||
return $this->Find($aParam);
|
||
}
|
||
|
||
// /ArticleSet__id__user_name xxx
|
||
public function Set($aParams)
|
||
{
|
||
$sField = $this->cmdGood($aParams['aOption'][2]);
|
||
|
||
$article = ModelArticle::find($aParams['aOption'][1]);
|
||
|
||
$sSet = $aParams['aArg'][1];
|
||
|
||
if ($article) {
|
||
$article->$sField = $sSet;
|
||
|
||
$r = $article->save();
|
||
} else {
|
||
// 处理未找到的情况
|
||
throw new \Exception("Article not found");
|
||
}
|
||
|
||
$aParam["aArg"][1] = $article->id;
|
||
return $this->Find($aParam);
|
||
|
||
// return $this->toJson($article);
|
||
|
||
}
|
||
|
||
}
|