diff --git a/.gitignore b/.gitignore
index 4f6ac3a6..6558a36f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
public/fn/
README.md
_env/
+public/upload/
diff --git a/app/Services/Article/CacheTg.php b/app/Services/Article/CacheTg.php
index 4100c17f..9a5fb549 100644
--- a/app/Services/Article/CacheTg.php
+++ b/app/Services/Article/CacheTg.php
@@ -219,15 +219,16 @@ final class CacheTg
$sType = $aDataMixRow['type'] ?? "str";
if ($sType == 'str') {
$sRowName = 'str';
+
+// $sContent = str_replace("
", " ", $sContent);
$aContent = $this->ffq_tg_str_fetch($sContent);
$sArticleName = $aContent["name"] ?? '';
$sStrTiqu = $aContent["tiqu"] ?? '';
$sStrBaoliu = $aContent["baoliu"] ?? '';
-
$sStrBaoliu = str_replace("翻翻墙", "{{sAuthorName}}", $sStrBaoliu);
$sStrBaoliu = str_replace("😀", "{{sIconText}}", $sStrBaoliu);
$sStrBaoliu = str_replace("📊", "{{sIconText}}", $sStrBaoliu);
-
+
if (!$sStrTiqu) {
$aDataMixNew["data"][] = [
"type" => "str",
@@ -250,6 +251,81 @@ final class CacheTg
];
}
+
+ $sStrBaoliu = nl2br($sStrBaoliu);
+ $sStrBaoliu = str_replace(array("\r", "\n"), '', $sStrBaoliu);
+
+ $tmp = "
";
+
+ if (preg_match('/机场自介(.*?)'.$tmp.'/', $sStrBaoliu, $matches)) {
+ $sStr = $matches[1];
+ $aDataMixNew["data"][] = [
+ "type" => "str",
+ "name" => "jichangzijie",
+ "content" => [
+ "title" => "机场自介",
+ "base" => $sStr
+ ],
+ ];
+ }
+
+ if (preg_match('/链接导航(.*?)'.$tmp.'/', $sStrBaoliu, $matches)) {
+ $sStr = $matches[1];
+ $aDataMixNew["data"][] = [
+ "type" => "str",
+ "name" => "lianjiedaohang",
+ "content" => [
+ "title" => "链接导航",
+ "base" => $sStr,
+ ],
+ ];
+ }
+
+ if (preg_match('/主观点评(.*?)'.$tmp.'/', $sStrBaoliu, $matches)) {
+ $sStr = $matches[1];
+ $aDataMixNew["data"][] = [
+ "type" => "str",
+ "name" => "zhuguandianping",
+ "content" => [
+ "title" => "{{sAuthorName}}主观点评",
+ "base" => $sStr
+ ],
+ ];
+ }
+
+ if (preg_match('/主观评分(.*?)'.$tmp.'/', $sStrBaoliu, $matches)) {
+ $sStr = $matches[1];
+ $aDataMixNew["data"][] = [
+ "type" => "str",
+ "name" => "zhuguanpingfen",
+ "content" => [
+ "title" => "{{sAuthorName}}主观评分",
+ "base" => $sStr
+ ],
+ ];
+ }
+
+// if (preg_match('/提醒您(.*?)'.$tmp.'/', $sStrBaoliu, $matches)) {
+// $sStr = $matches[1];
+// $aDataMixNew["data"][] = [
+// "type" => "str",
+// "name" => "tixingnin",
+// "content" => [
+// "title" => "提醒",
+// "base" => $sStr
+// ],
+// ];
+// }
+
+ $aDataMixNew["data"][] = [
+ "type" => "str",
+ "name" => "tixingnin",
+ "content" => [
+ "title" => "提醒",
+ "base" => "任何机场都有跑路可能,建议仅月付,以降低风险。(不针对任何机场)",
+ ],
+ ];
+
preg_match('/论坛[::]\s*(https?:\/\/[^\s]*?\.html)/u', $sStrBaoliu, $matches);
if (isset($matches[1])) {
$sUrl = $matches[1];
@@ -278,42 +354,30 @@ final class CacheTg
],
];
} else if ($sType == 'img') {
+// $aDataMixNew["images"][] = $aDataMixRow;
$aDataMixNew["data"][] = $aDataMixRow;
} else {
$aDataMixNew["data"][] = $aDataMixRow;
}
}
-
+
return $aDataMixNew;
}
private function ffq_tg_str_fetch($str) {
- $start = strpos($str, '#');
- $end = strpos($str, '📊');
$arr = [
- "tiqu" => '',
- "baoliu" => $str,
- "name" => '',
+ "tiqu" => '',
+ "baoliu" => $str,
+ "name" => '',
];
- if ($start !== false && $end !== false && $end > $start) {
- $length = $end - $start;
- $extracted = mb_substr($str, $start, $length, 'UTF-8');
+ if (preg_match('/#([^📊]+)📊/u', $str, $matches)) {
+ $arr["tiqu"] = $matches[1]; // 提取内容(不含 # 和 📊)
+ $arr["baoliu"] = preg_replace('/#([^📊]+)📊/u', '', $str); // 去掉提取部分
- $cleaned = str_replace($extracted, '', $str);
-
- $arr["tiqu"] = $extracted;
- $arr["baoliu"] = $cleaned;
- }
-
- if (!empty($arr["tiqu"])) {
- $arr["tiqu"] = substr($arr["tiqu"], 1);
$tmp = explode("#", $arr["tiqu"]);
- $name = $tmp[0] ?? '';
- if ($name) {
- $arr["name"] = $name;
- }
+ $arr["name"] = $tmp[0] ?? '';
}
return $arr;
diff --git a/app/Services/Article/Schema.php b/app/Services/Article/Schema.php
index cb2ec70b..66dfc5f5 100644
--- a/app/Services/Article/Schema.php
+++ b/app/Services/Article/Schema.php
@@ -10,7 +10,7 @@ use App\Models\Option as ModelOption;
use App\Services\TomTool\Telegram\Slave as TeleSlave;
use App\Services\TomTool\Flow;
//use App\Services\Article\Cmd as ServiceArticleCmd;
-use App\Models\DogOption as ModelDogOption;
+//use App\Models\Option as ModelOption;
final class Schema
{
@@ -116,10 +116,8 @@ final class Schema
$sSiteUrl = $this->sSiteUrl;
$aSchema = json_decode($this->oArticle->schema, true);
$isTest = $this->isTest;
-
$aArticle["data"] = [];
foreach ($aSchema as $k => $aArticleSchemaRow) {
-
$sContent = $aArticleSchemaRow["content"]["base"] ?? "⚠️ 没有content?";
if ($aArticleSchemaRow['type'] == 'str') {
@@ -172,51 +170,95 @@ final class Schema
////// step 3 文章化
$aArticleOrder = $aArticle["dataOrder"];
-
+
$sEnter = "
";
$sArticle = '';
+ $sArticle .= $sEnter;
+ $j = false;
+
foreach ($aArticleOrder as $aArticleOrderRow) {
$sContent = $aArticleOrderRow["content"]["base"] ?? "⚠️ content里的base没有?";
$sContent = trim($sContent);
- $sContent = nl2br($sContent);
- $sContent = str_replace("
", " ", $sContent);
+ $sContent = str_replace("
", $sEnter, $sContent);
$sTmpName = $aArticleOrderRow["name"] ?? '';
- if ($sTmpName == "str_jieshao") {
- $sContent = preg_replace('/套餐.*'.$sEnter.'/', '', $sContent);
- $sContent = preg_replace('/论坛.*'.$sEnter.'/', '', $sContent);
+ if ($sTmpName == "tixingnin") {
+ $sArticle .= "::: tip 提醒您";
+ $sArticle .= $sContent;
+ $sArticle .= $sEnter;
+ $sArticle .= ":::";
+ $sArticle .= $sEnter;
+ } else if ($sTmpName == "jichangzijie") {
+ $sArticle .= "::: note 机场自介";
+ $sArticle .= $sContent;
+ $sArticle .= $sEnter;
+ $sArticle .= ":::";
+ $sArticle .= $sEnter;
+ } else if ($sTmpName == "lianjiedaohang") {
+ $sContent = nl2br($sContent);
+ $br = "
";
+ $sContent = preg_replace('/套餐.*'.$br.'/', '', $sContent);
+ $sContent = preg_replace('/论坛.*\.html/', '', $sContent);
+ $sArticle .= "::: info 链接导航";
+ $sArticle .= $this->clearBr($sContent);
+ $sArticle .= $sEnter;
+ $sArticle .= ":::";
+ $sArticle .= $sEnter;
+ } else if ($sTmpName == "zhuguandianping") {
+ $sArticle .= "::: important {$sSiteName}点评";
+ $sArticle .= $sContent;
+ $sArticle .= $sEnter;
+ $sArticle .= ":::";
+ $sArticle .= $sEnter;
+ } else if ($sTmpName == "zhuguanpingfen") {
+ $sContent = preg_replace('/(以上评分仅供参考)/', '', $sContent);
+ $sContent = preg_replace('/(?setDataA($aResultData)->done();
}
+ private function clearBr($sStr)
+ {
+ $sEnter = "
+";
+ return str_replace("
", $sEnter, $sStr);
+ }
+
private function articleSort(array $data, string $field, array $priorityOrder): array
{
// 保留原始键名
@@ -249,12 +298,12 @@ final class Schema
private function nameToTitleCS($sName)
{
- $sTitle = $sName;
+ $sTitle = trim($sName);
$iCesuCount = ModelArticleSchema::where("name", $sName)->count();
if ($iCesuCount > 1) {
- $sWrap = ModelDogOption::_hit("article", "ffq_tg-title_wrap");
+ $sWrap = ModelOption::_hit("ffq_tg_a-title_wrap");
if (!$sWrap) {
return "未设置dog_option::ffq_tg-title_wrap";
@@ -265,7 +314,7 @@ final class Schema
$sTitle = str_replace('{{cesu_count}}', (string) $iCesuCount, $sTitle);
} else {
- $sWrap = ModelDogOption::_hit("article", "ffq_tg-title_wrap-first");
+ $sWrap = ModelOption::_hit("ffq_tg_a-title_wrap-first");
if (!$sWrap) {
return "未设置dog_option::ffq_tg-title_wrap-first";
diff --git a/app/Services/Cron/ArticleSchema.php b/app/Services/Cron/ArticleSchema.php
index 9d146116..93de9ddc 100644
--- a/app/Services/Cron/ArticleSchema.php
+++ b/app/Services/Cron/ArticleSchema.php
@@ -29,6 +29,11 @@ final class ArticleSchema
echo " - 没有需要同步的文章\n";
}
+// foreach ($oArticleSchemaList->toArray() as $R) {
+// unset($R["schema"]);
+// tomd($R);
+// }
+
foreach ($oArticleSchemaList as $oArticleSchema) {
$aCmdList = json_decode($oArticleSchema->cmd, true);
@@ -122,89 +127,6 @@ final class ArticleSchema
echo "ok\n";
}
- // 废弃,不是通知了,直接推
- public static function notifySalve()
- {
- echo "\nnotifySlave::开始\n";
-
- $oArticleSchemaList = ModelArticleSchema::where("enable_sync", 1)->where("status", 1)->get();
-
- if ($oArticleSchemaList->isEmpty()) {
- echo " - 没有需要同步的文章\n";
- }
-
- foreach ($oArticleSchemaList as $oArticleSchema) {
-
- $aCmdList = json_decode($oArticleSchema->cmd, true);
-
- foreach ($aCmdList as $sCmdKey => $aCmd) {
- $sSiteCode = $aCmd["site_code"] ?? "none";
- $oSite = ModelSiteMap::where("code", $sSiteCode)->first();
-
- if (!$oSite) {
- $sMsg = "siteMap里的code没有映射:{$sSiteCode}\n";
- TeleSlave::warn()->send($sMsg);
- echo $sMsg;
- continue;
- }
- $sSiteGroupCode = $oSite->group_code;
- $sSiteUrlBase = $oSite->url;
-
- $sSiteArticleApiPath = ModelSitePathMap::where("site_group_code", $sSiteGroupCode)->where("path_group_code", "article_receive_schema")->first()?->path;
-
- if (!$sSiteArticleApiPath) {
- $sMsg = "sitePathMap里没找到映射:{$sSiteGroupCode}:article_receive_schema\n";
- TeleSlave::warn()->send($sMsg);
- echo $sMsg;
- continue;
- }
-
- $aCmd["key"] = $sCmdKey;
- $aCmd["article_code"] = $oArticleSchema->code;
-
- $sSiteArticleApiUrl = "https://".$sSiteUrlBase.$sSiteArticleApiPath;
-
- // 附加config
- $sArticleConfig = ModelArticleConfig::where("article_group_code", $oArticleSchema->group_code)->where("site_group_code", $sSiteGroupCode)->first()?->config;
- $aArticleConfig = json_decode($sArticleConfig, true);
- $aCmd["config"] = $aArticleConfig;
-
-
- // 按需要附加其他
- if ($aCmd["cmd"] == "new") {
- ServiceArticleSchema::start($oArticleSchema->code,);
- }
- tomd($aCmd);
- tomd($oArticleSchema->group_code);
- tomd($sSiteGroupCode);
- tomd($sArticleConfig, 1);
-// $aA
-
- $sHttpResult = HttpV2::make($sSiteArticleApiUrl)->enableJsonAs()->setDataA($aCmd)->send();
- $aHttpResult = json_decode($sHttpResult, true);
-
- $bHttpIsDone = $aHttpResult["isDone"] ?? false;
-
- if (!$bHttpIsDone) {
- $sMsg = "slave那边同步失败?";
- TeleSlave::warn()->send($sMsg);
- continue;
- }
-
- $oCmdFLow = ServiceArticleCmd::startWithO($oArticleSchema)->moveToLog($sCmdKey);
-
- if ($oCmdFLow->isFail()) {
- $sMsg = "movetolog失败?";
- TeleSlave::warn()->send($sMsg);
- continue;
- }
-
- }
- }
-
- echo "ok\n";
- }
-
public static function cacheTgSave()
{
diff --git a/app/Services/Tg/Hook/Mod/Article.php b/app/Services/Tg/Hook/Mod/Article.php
index 2b2b5e73..7703644d 100644
--- a/app/Services/Tg/Hook/Mod/Article.php
+++ b/app/Services/Tg/Hook/Mod/Article.php
@@ -3,8 +3,8 @@
namespace App\Services\Tg\Hook\Mod;
use App\Models\ArticleSchema as ModelArticleSchema;
-//use App\Models\ArticleCache as ModelArticleCache;
-//use App\Models\ArticleCacheTime as ModelArticleCacheTime;
+use App\Models\ArticleCache as ModelArticleCache;
+use App\Models\ArticleCacheTime as ModelArticleCacheTime;
use App\Services\Tg\Hook\Dog;
use App\Services\Article\CacheTg as ServiceArticleCacheTg;
use App\Services\Article\Schema as ServiceArticleSchema;
@@ -43,15 +43,6 @@ class Article extends Base {
return $r;
}
-// public function testCron()
-
- public function cacheSave($aParam)
- {
- $r = ServiceArticleCacheTg::start()->saveToSchema();
-
- return $r->getResult();
- }
-
public function build_test_ttcp($aParam)
{
$oArticleCodeFirst = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first();
diff --git a/app/Services/Tg/Hook/Mod/ArticleCache.php b/app/Services/Tg/Hook/Mod/ArticleCache.php
index 3aa5e014..e32dbba3 100644
--- a/app/Services/Tg/Hook/Mod/ArticleCache.php
+++ b/app/Services/Tg/Hook/Mod/ArticleCache.php
@@ -25,4 +25,23 @@ class ArticleCache extends Base {
return $this->oDog->$sName($aArg[0]);
}
+ public function save($aParam)
+ {
+ $r = ServiceArticleCacheTg::start()->saveToSchema();
+
+ return $r->getResult();
+ }
+
+ public function reCron()
+ {
+ $o = ModelArticleCacheTime::first();
+ $o->time = time() - 600;
+ $o->save();
+
+ $o = ModelArticleCache::orderBy("id", "desc")->first();
+ $o->status = 1;
+ $o->save();
+
+ return $o;
+ }
}
diff --git a/app/Services/Tg/Hook/Mod/ArticleSchema.php b/app/Services/Tg/Hook/Mod/ArticleSchema.php
index cb0de394..97b6a394 100644
--- a/app/Services/Tg/Hook/Mod/ArticleSchema.php
+++ b/app/Services/Tg/Hook/Mod/ArticleSchema.php
@@ -26,4 +26,16 @@ class ArticleSchema extends Base {
return $this->oDog->$sName($aArg[0]);
}
+ public function last()
+ {
+ $iLastId = ModelArticleSchema::where("status", 1)->orderBy("id", "desc")->first()?->id;
+
+ $aParam = [];
+ $aParam["aArg"][1] = $iLastId;
+
+ $r = $this->find($aParam);
+
+ return $r;
+ }
+
}
diff --git a/app/Services/Tg/Hook/Mod/Dev.php b/app/Services/Tg/Hook/Mod/Dev.php
index 5698fc5c..056d7238 100644
--- a/app/Services/Tg/Hook/Mod/Dev.php
+++ b/app/Services/Tg/Hook/Mod/Dev.php
@@ -32,6 +32,15 @@ class Dev extends Base {
}
+ public function ff()
+ {
+ $str = "{\"update_id\":897485962,\n\"message\":{\"message_id\":55,\"from\":{\"id\":7740568271,\"is_bot\":false,\"first_name\":\"sakai\",\"username\":\"gemcode_business\",\"language_code\":\"zh-hans\"},\"chat\":{\"id\":7740568271,\"first_name\":\"sakai\",\"username\":\"gemcode_business\",\"type\":\"private\"},\"date\":1763118782,\"forward_origin\":{\"type\":\"channel\",\"chat\":{\"id\":-1001566003179,\"title\":\"\\u7ffb\\u7ffb\\u5899 | \\u673a\\u573a\\u8bc4\\u6d4b\",\"username\":\"ffqchannel\",\"type\":\"channel\"},\"message_id\":13130,\"date\":1763035978},\"forward_from_chat\":{\"id\":-1001566003179,\"title\":\"\\u7ffb\\u7ffb\\u5899 | \\u673a\\u573a\\u8bc4\\u6d4b\",\"username\":\"ffqchannel\",\"type\":\"channel\"},\"forward_from_message_id\":13130,\"forward_date\":1763035978,\"media_group_id\":\"14104950256698836\",\"document\":{\"file_name\":\"\\u9752\\u4e1d\\u4e91\\u4e28\\u5355\\u7ebf\\u7a0b\\u6d59\\u6c5f\\u7535\\u4fe1@1Gbps.jpg\",\"mime_type\":\"image/jpeg\",\"thumbnail\":{\"file_id\":\"AAMCBQADGQEAAxVpFwZD2UKeOXZ0S3KpGyd0PBNsMQAC3RkAAuIusVSVoOT9g1zrBAEAB20AAzYE\",\"file_unique_id\":\"AQAD3RkAAuIusVRy\",\"file_size\":36130,\"width\":320,\"height\":309},\"thumb\":{\"file_id\":\"AAMCBQADGQEAAxVpFwZD2UKeOXZ0S3KpGyd0PBNsMQAC3RkAAuIusVSVoOT9g1zrBAEAB20AAzYE\",\"file_unique_id\":\"AQAD3RkAAuIusVRy\",\"file_size\":36130,\"width\":320,\"height\":309},\"file_id\":\"BQACAgUAAxkBAAMVaRcGQ9lCnjl2dEtyqRsndDwTbDEAAt0ZAALiLrFUlaDk_YNc6wQ2BA\",\"file_unique_id\":\"AgAD3RkAAuIusVQ\",\"file_size\":682117},\"caption\":\"#\\u9752\\u4e1d\\u4e91 #ss #trojan\\n\\n\\ud83d\\udcca \\u4e3b\\u89c2\\u8bc4\\u5206 \\n\\u7a33\\u5b9a \\u2605\\u2606\\u2606\\u2606\\u2606\\n\\u901f\\u5ea6 \\u2605\\u2605\\u2606\\u2606\\u2606\\n\\u5ef6\\u8fdf \\u2605\\u2605\\u2605\\u2606\\u2606\\n\\u6027\\u4ef7\\u6bd4 \\u2605\\u2605\\u2605\\u2606\\u2606\\n\\uff08\\u4ee5\\u4e0a\\u8bc4\\u5206\\u4ec5\\u4f9b\\u53c2\\u8003\\uff09\\n\\n\\ud83d\\ude00 \\u673a\\u573a\\u81ea\\u4ecb \\n\\ud83d\\udcf6 \\u9999\\u6e2f/\\u65e5\\u672c/\\u65b0\\u52a0\\u5761/\\u53f0\\u6e7e/\\u7f8e\\u56fd+\\u5341\\u4f59\\u4e2a\\u51b7\\u95e8\\u8282\\u70b9\\n\\ud83e\\uddd8 \\u8f7b\\u677e\\u89e3\\u9501 Netflix / ChatGPT / Disney+\\uff0c\\u7545\\u6e38\\u5168\\u7403\\u6d41\\u5a92\\u4f53\\n\\n\\ud83d\\ude00 \\u94fe\\u63a5\\u5bfc\\u822a\\n\\u5f00\\u4e1a\\uff1a2025.4.1\\n\\u5b98\\u7f51\\uff1a\\u70b9\\u51fb\\u8fdb\\u5165\\n\\u9891\\u9053\\uff1ahttps://t.me/qingsiyun_offical_channel\\n\\u7fa4\\u7ec4\\uff1ahttps://t.me/qingsiyun_offical_group\\n\\u5957\\u9910\\uff1ahttps://t.me/ffqimages/102 2025.4.23\\u66f4\\u65b0\\n\\u8bba\\u575b\\uff1ahttps://www.ffqla.net/thread-689-1-1.html\\n\\n\\ud83d\\ude00\\u4e3b\\u89c2\\u70b9\\u8bc4\\n\\u7a33\\u5b9a\\u6027\\u6781\\u5dee\\uff0c\\u622a\\u6b62\\u76ee\\u524d\\uff0c\\u8282\\u70b9\\u5168\\u90e8\\u8d85\\u65f6\\n\\n\\ud83d\\ude00\\u7ffb\\u7ffb\\u5899\\u63d0\\u9192\\u60a8 \\n\\u4efb\\u4f55\\u673a\\u573a\\u90fd\\u6709\\u8dd1\\u8def\\u53ef\\u80fd\\uff0c\\u5efa\\u8bae\\u4ec5\\u6708\\u4ed8\\uff0c\\u4ee5\\u964d\\u4f4e\\u98ce\\u9669\\u3002\\uff08\\u672c\\u6d88\\u606f\\u4e0d\\u9488\\u5bf9\\u4efb\\u4f55\\u673a\\u573a\\uff09\",\"caption_entities\":[{\"offset\":0,\"length\":4,\"type\":\"hashtag\"},{\"offset\":5,\"length\":3,\"type\":\"hashtag\"},{\"offset\":9,\"length\":7,\"type\":\"hashtag\"},{\"offset\":18,\"length\":9,\"type\":\"bold\"},{\"offset\":77,\"length\":2,\"type\":\"custom_emoji\",\"custom_emoji_id\":\"6190348849194734065\"},{\"offset\":80,\"length\":6,\"type\":\"bold\"},{\"offset\":159,\"length\":2,\"type\":\"custom_emoji\",\"custom_emoji_id\":\"6190313819441468309\"},{\"offset\":162,\"length\":4,\"type\":\"bold\"},{\"offset\":182,\"length\":4,\"type\":\"text_link\",\"url\":\"https://302verify.com/xyzF6\"},{\"offset\":190,\"length\":38,\"type\":\"url\"},{\"offset\":232,\"length\":36,\"type\":\"url\"},{\"offset\":272,\"length\":26,\"type\":\"url\"},{\"offset\":314,\"length\":41,\"type\":\"url\"},{\"offset\":357,\"length\":2,\"type\":\"custom_emoji\",\"custom_emoji_id\":\"6190543385443439890\"},{\"offset\":359,\"length\":4,\"type\":\"bold\"},{\"offset\":383,\"length\":2,\"type\":\"bold\"},{\"offset\":383,\"length\":2,\"type\":\"custom_emoji\",\"custom_emoji_id\":\"6190543385443439890\"},{\"offset\":385,\"length\":6,\"type\":\"bold\"}]}}";
+
+ $aStr = json_decode($str, true);
+ $s = $this->toJson($aStr);
+ tomd($s, 1);
+ }
+
public function test2()
{
// $r = TeleSlave::warn()->enableSlaveQueue(false)->send("xxxx");
diff --git a/app/Services/TomTool/Flow.php b/app/Services/TomTool/Flow.php
index fb6fc395..fe79e9fe 100755
--- a/app/Services/TomTool/Flow.php
+++ b/app/Services/TomTool/Flow.php
@@ -120,8 +120,11 @@ class Flow
}
// data
- public function msg(string $msg): self
+ public function msg($msg = "msg未设置"): self
{
+ if (is_array($msg)) {
+ $msg = json_encode($msg);
+ }
$this->put('sMsg', $msg);
return $this;
}