diff --git a/app/Http/Controllers/Api/TG/HookController.php b/app/Http/Controllers/Api/TG/HookController.php index 2bb8531f..1f8c5c5e 100755 --- a/app/Http/Controllers/Api/TG/HookController.php +++ b/app/Http/Controllers/Api/TG/HookController.php @@ -31,7 +31,7 @@ final class HookController $aData['fromId'] = (string) $aUpdate["message"]["from"]["id"]; if (!isset($aUpdate["message"]["text"])) { - throw new \Exception("?"); + throw new \Exception(json_encode($aUpdate)); } $sText = &$aUpdate["message"]["text"]; diff --git a/app/Models/Article.php b/app/Models/Article.php index db8a2664..98e41e45 100755 --- a/app/Models/Article.php +++ b/app/Models/Article.php @@ -4,19 +4,21 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; -class Blade extends Model +class Article extends Model { - protected $table = 'blade'; - public $timestamps = false; + protected $table = 'article'; +// public $timestamps = false; + +// public static function _listKey() +// { +// $aSelf = self::all()->toArray(); +// +// foreach ($aSelf as &$aSelfRow) { +// unset($aSelfRow["content"]); +// } +// +// return $aSelf; +// } + - public static function _listKey() - { - $aSelf = self::all()->toArray(); - - foreach ($aSelf as &$aSelfRow) { - unset($aSelfRow["content"]); - } - - return $aSelf; - } } diff --git a/app/Models/ArticleOption.php b/app/Models/ArticleOption.php index 98e41e45..6a2757f8 100755 --- a/app/Models/ArticleOption.php +++ b/app/Models/ArticleOption.php @@ -4,9 +4,9 @@ namespace App\Models; use Illuminate\Database\Eloquent\Model; -class Article extends Model +class ArticleOption extends Model { - protected $table = 'article'; + protected $table = 'article_option'; // public $timestamps = false; // public static function _listKey() diff --git a/app/Models/DogOption.php b/app/Models/DogOption.php index 147070c8..fbebc1bd 100755 --- a/app/Models/DogOption.php +++ b/app/Models/DogOption.php @@ -12,7 +12,7 @@ class DogOption extends Model public static function _hit($sDogName, $k) { $v = self::where("dog_name", $sDogName)->where("k", $k)->first()?->v; - +// tomd($sDogName); return $v; } diff --git a/app/Services/TG/Hook/Dog.php b/app/Services/TG/Hook/Dog.php index 6b46ac53..9ec8455d 100644 --- a/app/Services/TG/Hook/Dog.php +++ b/app/Services/TG/Hook/Dog.php @@ -24,6 +24,8 @@ class Dog extends Mod\Base { public $aOutFormat = []; public $sDogName; private $aMsg = []; + public $aSelectField = []; + public $aHideField = []; public function __construct($oModelSelf = false) { @@ -31,13 +33,42 @@ class Dog extends Mod\Base { } //// 定义系列 + + // 必须,关联option和me那些 + public function _setDogName($sDogName) + { + $this->sDogName = $sDogName; +// tomd($this->sDogName); + } + + // 必须,使用的model + public function _setModel($oModelSelf) + { + $this->oModelSelf = $oModelSelf; + } + + // str字段的最大长度 public function _setStrMaxLen($iStrMaxLen) { $this->iStrMaxLen = $iStrMaxLen; } + // 隐藏某些字段[id,name] + public function _setHideField($aHideField = []) + { + $this->aHideField = $aHideField; + } + + // 选择性取某些字段[id,name] + public function _setSelectField($aSelectField = []) + { + $this->aSelectField = $aSelectField; + } + + // 设置长字符串字段 public function _setStrField($aStrField) { +// tomd($this->sDogName); $this->iStrMaxLen = ModelDogOption::_hit($this->sDogName, "str_len_max"); if (!$this->iStrMaxLen) { @@ -49,35 +80,24 @@ class Dog extends Mod\Base { $this->aStrField = $aStrField; } - public function _setDogName($sDogName) - { - $this->sDogName = $sDogName; - } - - - public function _setModel($oModelSelf) - { - $this->oModelSelf = $oModelSelf; - } - + // 设置主键 public function _setPrimaryKey($key) { $this->sPrimaryKey = $key; } + // 写入数据时格式化某些字段 [transfer_enable => gb] public function _setInFormat($aInFormat) { $this->aInFormat = $aInFormat; } + // 输出数据时格式化某些字段 [transfer_enable => gb] public function _setOutFormat($aOutFormat) { $this->aOutFormat = $aOutFormat; } -// public function _setFormatField($aFormatField) -// { -// $this->aFormatField = $aFormatField; -// } + //// 定义系列 end //// option 系列 @@ -91,8 +111,8 @@ class Dog extends Mod\Base { public function optionAdd($aParam) { - $k = $aParam["aArg"][1] ?? false; - $v = $aParam["aArg"][2] ?? false; + $k = $aParam["aOption"][1] ?? false; + $v = $aParam["aArg"][1] ?? false; if ($k == "?") { return "#optionAdd {k} {v}"; @@ -360,33 +380,39 @@ class Dog extends Mod\Base { public function clone($aParam) { - $sValue = $aParam['aArg'][1] ?? false; -// $sWhereField = $aParam["aOption"][1] ?? $this->sPrimaryKey; - $sKeyType = $aParam["aOption"][1] ?? "int"; + $sWhereValue = $aParam['aArg'][1] ?? false; + $sWhereField = $aParam["aOption"][1] ?? $this->sPrimaryKey; + $sWhereFieldType = $aParam["aOption"][2] ?? "int"; - if ($sValue == "?") { - return "#clone__{keyType?int:int,str,int自增str随机} {whereValue}"; + if ($sWhereValue == "?") { + return "#clone__[whereField]__[whereFieldType(:int,str)] [whereValue]"; +// return "#clone__{keyType?int:int,str,int自增str随机} {whereValue}"; } - if (!$sValue) { + if (!$sWhereField) { + return "需要field"; + } + + if (!$sWhereValue) { return "需要value"; } // 查找文章 - $oModelSelf = $this->oModelSelf->where($this->sPrimaryKey, $sValue)->first(); + $oModelSelf = $this->oModelSelf->where($sWhereField, $sWhereValue)->first(); if (!$oModelSelf) { return "没找到这个"; } $oModelSelfNew = $oModelSelf->replicate(); - if ($sKeyType == "str") { - $oModelSelfNew->code = $oModelSelfNew->{$this->sPrimaryKey}."-clone".rand(0, 9999); + if ($sWhereFieldType == "str") { + $oModelSelfNew->$sWhereField = $oModelSelfNew->{$sWhereField}."-clone".rand(0, 9999); } $oModelSelfNew->save(); $aParam = []; - $aParam["aArg"][1] = $oModelSelfNew->{$this->sPrimaryKey}; + $aParam["aOption"][1] = $sWhereField; + $aParam["aArg"][1] = $oModelSelfNew->$sWhereField; return $this->find($aParam); } @@ -417,12 +443,12 @@ class Dog extends Mod\Base { $sHitField = $aParam["sHitField"] ?? false; if ($sValue == "?") { - return "#find__{field?primaryKey}__{page?1} {value?all}"; + return "#find__{field?primaryKey}__{page?1} {value?_all}"; } $iLimit = $this->_getLimit(); - if ($sValue === false ) { + if ($sValue === "_all" ) { $oSelf = $this->oModelSelf; @@ -555,6 +581,20 @@ class Dog extends Mod\Base { private function filterData($aData) { + if ($this->aSelectField) { + $aDataNew = []; + foreach ($this->aSelectField as $sSelectField) { + $aDataNew[$sSelectField] = $aData[$sSelectField]; + } + $aData = $aDataNew; + } + + if ($this->aHideField) { + foreach ($this->aHideField as $sHideField) { + unset($aData[$sHideField]); + } + } + foreach ($this->aStrField as $sStrField) { $aData[$sStrField] = $this->subStr($aData[$sStrField]); } @@ -564,6 +604,8 @@ class Dog extends Mod\Base { $aData[$sFormatField] = date("Y-m-d", (int) $aData[$sFormatField]); } else if ($sFormatType == "dateFull") { $aData[$sFormatField] = date("Y-m-d", (int) $aData[$sFormatField]); + } else if ($sFormatType == "gb") { + $aData[$sFormatField] = round($aData[$sFormatField] / 1073741824, 2)."gb"; } } @@ -603,7 +645,7 @@ class Dog extends Mod\Base { $aJson = json_decode($sJson, true); foreach ($aJson as $k => $v) { - $this->oModelSelf->$k = $v; + $this->oModelSelf->$k = $this->inFormat($k, $v); } $this->oModelSelf->save(); @@ -637,7 +679,7 @@ class Dog extends Mod\Base { if (!$oModelSelf) { return "没找到这个"; } - + $aJson = json_decode($sJson, true); foreach ($aJson as $k => $v) { @@ -790,14 +832,14 @@ class Dog extends Mod\Base { private function mapInFormat($sValue) { $aValue = explode("^", $sValue, 2); - + if (!isset($aValue[1])) { return $sValue; } $sValueQian = $aValue[0]; $sValueHou = $aValue[1]; - + if ($sValueHou == "int") { if ($sValueQian == "zero") { @@ -808,6 +850,12 @@ class Dog extends Mod\Base { $sValueQian = date("Y-m-d H:i:s", strtotime("+{$sValueQian} days")); + } else if ($sValueHou == "dateNow") { + $sValueQian = date("Y-m-d"); + } else if ($sValueHou == "dateTimeNow") { + $sValueQian = date("Y-m-d H:i:s"); + } else if ($sValueHou == "gb") { + $sValueQian = $sValueQian * 1073741824; } return $sValueQian; diff --git a/app/Services/TG/Hook/Mod/Article.php b/app/Services/TG/Hook/Mod/Article.php index 801b1577..cba93caa 100644 --- a/app/Services/TG/Hook/Mod/Article.php +++ b/app/Services/TG/Hook/Mod/Article.php @@ -2,21 +2,20 @@ namespace App\Services\TG\Hook\Mod; -use App\Models\BladeJctj as ModelBladeJctj; +use App\Models\Article as ModelArticle; use App\Services\TG\Hook\Dog; - -class Jctj extends Base { +class Article extends Base { private $oDog; public function __construct($aUpdate) { - $this->oDog = new Dog(new ModelBladeJctj()); - $this->oDog->_setPrimaryKey("id"); // 可选,默认id + $this->oDog = new Dog(new ModelArticle()); +// $this->oDog->_setPrimaryKey("id"); // 可选,默认id + $this->oDog->_setDogName("article"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死,要在最前面 $this->oDog->_setStrField(["content"]); // 可选,指定长文本字段 - $this->oDog->_setThisName("jctj"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死 }