no message
This commit is contained in:
parent
aeff16682e
commit
9320dfdcc8
51
app/Models/Option.php
Executable file
51
app/Models/Option.php
Executable file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Option extends Model
|
||||
{
|
||||
protected $table = 'option';
|
||||
public $timestamps = false;
|
||||
|
||||
public static function _hit($sThisName, $k)
|
||||
{
|
||||
$v = self::where("this_name", $sThisName)->where("k", $k)->first()?->v;
|
||||
|
||||
return $v;
|
||||
}
|
||||
|
||||
public static function _list($sThisName)
|
||||
{
|
||||
$oSelf = self::where("this_name", $sThisName)->get();
|
||||
|
||||
return self::_filterList($oSelf);
|
||||
}
|
||||
|
||||
// public static function _limit($sThisName, $iSkip, $iTake)
|
||||
// {
|
||||
// $oSelf = self::where("this_name", $sThisName)->skip($iSkip)->take($iTake)->get();
|
||||
//
|
||||
// return self::__filterList($oSelf);
|
||||
// }
|
||||
|
||||
public static function _filter($oOption)
|
||||
{
|
||||
$arr = [];
|
||||
$arr[$oOption->this_name."#".$oOption->k] = $oOption->v;
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
public static function _filterList($oOption)
|
||||
{
|
||||
$arr = [];
|
||||
foreach ($oOption as $oOptionRow) {
|
||||
$arr[] = self::_filter($oOptionRow);
|
||||
}
|
||||
|
||||
return $arr;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,207 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TG\Hook\Mod;
|
||||
|
||||
use App\Models\Blade as ModelBlade;
|
||||
use App\Services\TG\Hook\Mod\DDT;
|
||||
|
||||
|
||||
class Blade extends Base {
|
||||
|
||||
private function subStr($string, $length = 50) {
|
||||
if (strlen($string) > $length) {
|
||||
return mb_substr($string, 0, $length) . '...'; // 添加省略号
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
private function _filter($oBladeRow)
|
||||
{
|
||||
$oBladeRow->content = $this->subStr($oBladeRow->content);
|
||||
unset($oBladeRow->id);
|
||||
|
||||
return $oBladeRow;
|
||||
}
|
||||
|
||||
private function filter($oBlade, $sMod = "row")
|
||||
private $oDDT;
|
||||
|
||||
public function __construct($aUpdate)
|
||||
{
|
||||
|
||||
if ($sMod == "row") {
|
||||
|
||||
$oBlade = $this->_filter($oBlade);
|
||||
|
||||
} else if ($sMod == "list") {
|
||||
foreach ($oBlade as &$oBladeRow) {
|
||||
$oBladeRow = $this->_filter($oBladeRow);
|
||||
}
|
||||
|
||||
}
|
||||
return $oBlade;
|
||||
$this->oDDT = new DDT(new ModelBlade());
|
||||
$this->oDDT->_setPrimaryKey("code"); // 可选,默认id
|
||||
$this->oDDT->_setStrField(["content"]); // 可选,指定长文本字段
|
||||
$this->oDDT->_setThisName("blade"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死
|
||||
|
||||
}
|
||||
|
||||
public function List()
|
||||
public function __call($sName, $aArg)
|
||||
{
|
||||
$oBlade = ModelBlade::all();
|
||||
$oBlade = $this->filter($oBlade, "list");
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Find($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? "id";
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
return $this->oDDT->$sName($aArg[0]);
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#find__{field?} {value}";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, $sValue)->first();
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Content($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? "code";
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#content__{field?} {value}";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, $sValue)->first();
|
||||
|
||||
return $oBlade->content;
|
||||
}
|
||||
|
||||
public function Like($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? false;
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#like__{field} {value}";
|
||||
}
|
||||
|
||||
if (!$sField) {
|
||||
return "需要field";
|
||||
}
|
||||
|
||||
if (!$sValue) {
|
||||
return "需要value";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, "like", "%".$sValue."%")->get();
|
||||
|
||||
$oBlade = $this->filter($oBlade);
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Add($aParam)
|
||||
{
|
||||
$sCode = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sCode == "?") {
|
||||
return "/blade#add <code>";
|
||||
}
|
||||
|
||||
if (!$sCode) {
|
||||
return "需要code";
|
||||
}
|
||||
|
||||
$bExists = ModelBlade::where("code", $sCode)->exists();
|
||||
if ($bExists) {
|
||||
return "code以存在";
|
||||
}
|
||||
|
||||
$oBlade = new ModelBlade();
|
||||
$oBlade->code = $sCode;
|
||||
$oBlade->save();
|
||||
|
||||
$aParam["aOption"][1] = "code";
|
||||
$aParam["aArg"][1] = $sCode;
|
||||
return $this->Find($aParam);
|
||||
}
|
||||
|
||||
public function Del($aParam)
|
||||
{
|
||||
$sCode = $aParam["aArg"][1] ?? false;
|
||||
$sWhereField = $aParam["aOption"][1] ?? false;
|
||||
|
||||
if ($sCode == "?") {
|
||||
return "/blade#del__<whereField> <code>";
|
||||
}
|
||||
|
||||
if (!$sCode) {
|
||||
return "需要code";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where("code", $sCode);
|
||||
|
||||
if (!$oBlade->exists()) {
|
||||
return "没有这个code";
|
||||
}
|
||||
|
||||
$r = $oBlade->delete();
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
public function Set($aParam)
|
||||
{
|
||||
$sSetValue = $aParam["aArg"] ?? false;
|
||||
$sSetValue = implode(" ", $sSetValue);
|
||||
|
||||
if ($sSetValue == "?") {
|
||||
$tmp = "/blade#set__<whereField>__<WhereValue>__<setField> <setValue>";
|
||||
$tmp .= "\n /blade#set__<code>__<setField> <serValue>";
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
// 有第三参数说明是findSet模式
|
||||
if (isset($aParam["aOption"][3])) {
|
||||
$sWhereField = $aParam["aOption"][1] ?? false;
|
||||
$sWhereValue = $aParam["aOption"][2] ?? false;
|
||||
$sSetField = $aParam["aOption"][3] ?? false;
|
||||
$sMod = "findSet";
|
||||
} else {
|
||||
$sWhereField = "code";
|
||||
$sWhereValue = $aParam["aOption"][1] ?? false;
|
||||
$sSetField = $aParam["aOption"][2] ?? false;
|
||||
$sMod = "set";
|
||||
}
|
||||
|
||||
if (!$sWhereField) {
|
||||
return "需要whereField";
|
||||
}
|
||||
|
||||
if (!$sWhereValue) {
|
||||
return "需要whereValue";
|
||||
}
|
||||
|
||||
if (!$sSetField) {
|
||||
return "需要setValue";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sWhereField, $sWhereValue)->get();
|
||||
|
||||
if ($oBlade->isEmpty()) {
|
||||
return "没找到这个blade";
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($oBlade as $oBladeRow) {
|
||||
$oBladeRow->$sSetField = $sSetValue;
|
||||
$oBladeRow->save();
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($i == 1) {
|
||||
$aParam["aOption"][1] = "code";
|
||||
$aParam["aArg"][1] = $oBladeRow->code;
|
||||
return $this->find($aParam);
|
||||
}
|
||||
|
||||
return "影响".$i."条数据";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
207
app/Services/TG/Hook/Mod/BladeOld.php
Normal file
207
app/Services/TG/Hook/Mod/BladeOld.php
Normal file
@ -0,0 +1,207 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TG\Hook\Mod;
|
||||
use App\Models\Blade as ModelBlade;
|
||||
|
||||
class Blade extends Base {
|
||||
|
||||
private function subStr($string, $length = 50) {
|
||||
if (strlen($string) > $length) {
|
||||
return mb_substr($string, 0, $length) . '...'; // 添加省略号
|
||||
}
|
||||
return $string;
|
||||
}
|
||||
|
||||
private function _filter($oBladeRow)
|
||||
{
|
||||
$oBladeRow->content = $this->subStr($oBladeRow->content);
|
||||
unset($oBladeRow->id);
|
||||
|
||||
return $oBladeRow;
|
||||
}
|
||||
|
||||
private function filter($oBlade, $sMod = "row")
|
||||
{
|
||||
|
||||
if ($sMod == "row") {
|
||||
|
||||
$oBlade = $this->_filter($oBlade);
|
||||
|
||||
} else if ($sMod == "list") {
|
||||
foreach ($oBlade as &$oBladeRow) {
|
||||
$oBladeRow = $this->_filter($oBladeRow);
|
||||
}
|
||||
|
||||
}
|
||||
return $oBlade;
|
||||
}
|
||||
|
||||
public function List()
|
||||
{
|
||||
$oBlade = ModelBlade::all();
|
||||
$oBlade = $this->filter($oBlade, "list");
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Find($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? "id";
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#find__{field?} {value}";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, $sValue)->first();
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Content($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? "code";
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#content__{field?} {value}";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, $sValue)->first();
|
||||
|
||||
return $oBlade->content;
|
||||
}
|
||||
|
||||
public function Like($aParam)
|
||||
{
|
||||
$sField = $aParam["aOption"][1] ?? false;
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sValue == "?") {
|
||||
return "/blade#like__{field} {value}";
|
||||
}
|
||||
|
||||
if (!$sField) {
|
||||
return "需要field";
|
||||
}
|
||||
|
||||
if (!$sValue) {
|
||||
return "需要value";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sField, "like", "%".$sValue."%")->get();
|
||||
|
||||
$oBlade = $this->filter($oBlade);
|
||||
|
||||
return $this->toJson($oBlade);
|
||||
}
|
||||
|
||||
public function Add($aParam)
|
||||
{
|
||||
$sCode = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sCode == "?") {
|
||||
return "/blade#add <code>";
|
||||
}
|
||||
|
||||
if (!$sCode) {
|
||||
return "需要code";
|
||||
}
|
||||
|
||||
$bExists = ModelBlade::where("code", $sCode)->exists();
|
||||
if ($bExists) {
|
||||
return "code以存在";
|
||||
}
|
||||
|
||||
$oBlade = new ModelBlade();
|
||||
$oBlade->code = $sCode;
|
||||
$oBlade->save();
|
||||
|
||||
$aParam["aOption"][1] = "code";
|
||||
$aParam["aArg"][1] = $sCode;
|
||||
return $this->Find($aParam);
|
||||
}
|
||||
|
||||
public function Del($aParam)
|
||||
{
|
||||
$sCode = $aParam["aArg"][1] ?? false;
|
||||
$sWhereField = $aParam["aOption"][1] ?? false;
|
||||
|
||||
if ($sCode == "?") {
|
||||
return "/blade#del__<whereField> <code>";
|
||||
}
|
||||
|
||||
if (!$sCode) {
|
||||
return "需要code";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where("code", $sCode);
|
||||
|
||||
if (!$oBlade->exists()) {
|
||||
return "没有这个code";
|
||||
}
|
||||
|
||||
$r = $oBlade->delete();
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
public function Set($aParam)
|
||||
{
|
||||
$sSetValue = $aParam["aArg"] ?? false;
|
||||
$sSetValue = implode(" ", $sSetValue);
|
||||
|
||||
if ($sSetValue == "?") {
|
||||
$tmp = "/blade#set__<whereField>__<WhereValue>__<setField> <setValue>";
|
||||
$tmp .= "\n /blade#set__<code>__<setField> <serValue>";
|
||||
return $tmp;
|
||||
}
|
||||
|
||||
// 有第三参数说明是findSet模式
|
||||
if (isset($aParam["aOption"][3])) {
|
||||
$sWhereField = $aParam["aOption"][1] ?? false;
|
||||
$sWhereValue = $aParam["aOption"][2] ?? false;
|
||||
$sSetField = $aParam["aOption"][3] ?? false;
|
||||
$sMod = "findSet";
|
||||
} else {
|
||||
$sWhereField = "code";
|
||||
$sWhereValue = $aParam["aOption"][1] ?? false;
|
||||
$sSetField = $aParam["aOption"][2] ?? false;
|
||||
$sMod = "set";
|
||||
}
|
||||
|
||||
if (!$sWhereField) {
|
||||
return "需要whereField";
|
||||
}
|
||||
|
||||
if (!$sWhereValue) {
|
||||
return "需要whereValue";
|
||||
}
|
||||
|
||||
if (!$sSetField) {
|
||||
return "需要setValue";
|
||||
}
|
||||
|
||||
$oBlade = ModelBlade::where($sWhereField, $sWhereValue)->get();
|
||||
|
||||
if ($oBlade->isEmpty()) {
|
||||
return "没找到这个blade";
|
||||
}
|
||||
|
||||
$i = 0;
|
||||
foreach ($oBlade as $oBladeRow) {
|
||||
$oBladeRow->$sSetField = $sSetValue;
|
||||
$oBladeRow->save();
|
||||
$i++;
|
||||
}
|
||||
|
||||
if ($i == 1) {
|
||||
$aParam["aOption"][1] = "code";
|
||||
$aParam["aArg"][1] = $oBladeRow->code;
|
||||
return $this->find($aParam);
|
||||
}
|
||||
|
||||
return "影响".$i."条数据";
|
||||
}
|
||||
|
||||
}
|
||||
@ -6,6 +6,7 @@ namespace App\Services\TG\Hook\Mod;
|
||||
//use App\Services\TomTool\Http;
|
||||
//use App\Models\BladeJctj as ModelBladeJctj;
|
||||
use App\Models\Me as ModelMe;
|
||||
use App\Models\Option as ModelOption;
|
||||
|
||||
class DDT extends Base {
|
||||
|
||||
@ -13,15 +14,16 @@ class DDT extends Base {
|
||||
public $sPrimaryKey = "id";
|
||||
public $iStrMaxLen = 50;
|
||||
public $aStrField = [];
|
||||
public $sMe;
|
||||
public $sThisName;
|
||||
|
||||
public function __construct($oModelSelf)
|
||||
public function __construct($oModelSelf = false)
|
||||
{
|
||||
|
||||
$this->_setModel($oModelSelf);
|
||||
|
||||
}
|
||||
|
||||
//// 定义系列
|
||||
public function _setStrMaxLen($iStrMaxLen)
|
||||
{
|
||||
$this->iStrMaxLen = $iStrMaxLen;
|
||||
@ -32,11 +34,130 @@ class DDT extends Base {
|
||||
$this->aStrField = $aStrField;
|
||||
}
|
||||
|
||||
public function _setMe($sMe)
|
||||
public function _setThisName($sThisName)
|
||||
{
|
||||
$this->sMe = $sMe;
|
||||
$this->sThisName = $sThisName;
|
||||
}
|
||||
|
||||
|
||||
public function _setModel($oModelSelf)
|
||||
{
|
||||
$this->oModelSelf = $oModelSelf;
|
||||
}
|
||||
|
||||
public function _setPrimaryKey($key)
|
||||
{
|
||||
$this->sPrimaryKey = $key;
|
||||
}
|
||||
//// 定义系列 end
|
||||
|
||||
//// option 系列
|
||||
public function option($aParam)
|
||||
{
|
||||
|
||||
$aOption = ModelOption::_list($this->sThisName);
|
||||
|
||||
return $this->toJson($aOption);
|
||||
}
|
||||
|
||||
public function optionAdd($aParam)
|
||||
{
|
||||
$k = $aParam["aArg"][1] ?? false;
|
||||
$v = $aParam["aArg"][2] ?? false;
|
||||
|
||||
if ($k == "?") {
|
||||
return "#optionAdd {k} {v}";
|
||||
}
|
||||
|
||||
if (!$k) {
|
||||
return "需要k";
|
||||
}
|
||||
|
||||
if (!$v) {
|
||||
return "需要v";
|
||||
}
|
||||
|
||||
$oOption = new ModelOption();
|
||||
$oOption->this_name = $this->sThisName;
|
||||
$oOption->k = $k;
|
||||
$oOption->v = $v;
|
||||
$oOption->save();
|
||||
|
||||
return $this->toJson(ModelOption::_filter($oOption));
|
||||
}
|
||||
|
||||
public function optionSet($aParam)
|
||||
{
|
||||
$k = $aParam["aOption"][1] ?? false;
|
||||
$v = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($v == "?") {
|
||||
return "#optionSet__{k} {v}";
|
||||
}
|
||||
|
||||
if (!$k) {
|
||||
return "需要k";
|
||||
}
|
||||
|
||||
if (!$v) {
|
||||
return "需要v";
|
||||
}
|
||||
|
||||
$oOption = ModelOption::where("this_name", $this->sThisName)->where("k", $k)->first();
|
||||
|
||||
if (!$oOption) {
|
||||
return "没找到这个";
|
||||
}
|
||||
|
||||
$oOption->v = $v;
|
||||
$oOption->save();
|
||||
|
||||
return $this->toJson(ModelOption::_filter($oOption));
|
||||
}
|
||||
|
||||
public function optionDel($aParam)
|
||||
{
|
||||
$k = $aParam["aArg"][1] ?? false;
|
||||
$is_done = $aParam["is_done"] ?? false;
|
||||
|
||||
if ($k == "?") {
|
||||
return "#optionDel {k}";
|
||||
}
|
||||
|
||||
if (!$k) {
|
||||
return "需要k";
|
||||
}
|
||||
|
||||
$oOption = ModelOption::where("this_name", $this->sThisName)->where("k", $k)->first();
|
||||
|
||||
if (!$oOption) {
|
||||
return "没找到这个";
|
||||
}
|
||||
|
||||
if ($is_done === false) {
|
||||
|
||||
$sMsg = "匹配以下,确认用optionDelDone()。";
|
||||
$sOption = $this->toJson($oOption);
|
||||
|
||||
return $sMsg."\n\n".$sOption;
|
||||
|
||||
} else if ($is_done === true) {
|
||||
|
||||
$r = $oOption->delete();
|
||||
|
||||
return $r;
|
||||
}
|
||||
}
|
||||
|
||||
public function optionDelDone($aParam)
|
||||
{
|
||||
$aParam["is_done"] = true;
|
||||
|
||||
return $this->optionDel($aParam);
|
||||
}
|
||||
//// option 系列 end
|
||||
|
||||
//// 辅助系列
|
||||
private function filterList($oSelfList)
|
||||
{
|
||||
foreach ($oSelfList as &$oSelfListRow) {
|
||||
@ -67,10 +188,16 @@ class DDT extends Base {
|
||||
|
||||
return $str;
|
||||
}
|
||||
//// 辅助系列 end
|
||||
|
||||
//// me系列
|
||||
public function me()
|
||||
{
|
||||
$oMe = ModelMe::where("class", $this->sMe)->get();
|
||||
$oMe = ModelMe::where("class", $this->sThisName)->get();
|
||||
|
||||
if ($oMe->isEmpty()) {
|
||||
return "空";
|
||||
}
|
||||
|
||||
return $this->meToStr_list($oMe);
|
||||
}
|
||||
@ -89,7 +216,7 @@ class DDT extends Base {
|
||||
}
|
||||
|
||||
$oMe = new ModelMe();
|
||||
$oMe->class = $this->sMe;
|
||||
$oMe->class = $this->sThisName;
|
||||
$oMe->rag = $sRag;
|
||||
$oMe->save();
|
||||
|
||||
@ -184,6 +311,7 @@ class DDT extends Base {
|
||||
return "删除".$i."条数据";
|
||||
}
|
||||
}
|
||||
//// me系列 end
|
||||
|
||||
private function filterRow($oSelfRow)
|
||||
{
|
||||
@ -205,16 +333,6 @@ class DDT extends Base {
|
||||
|
||||
return $input;
|
||||
}
|
||||
|
||||
public function _setModel($oModelSelf)
|
||||
{
|
||||
$this->oModelSelf = $oModelSelf;
|
||||
}
|
||||
|
||||
public function _setPrimaryKey($key)
|
||||
{
|
||||
$this->sPrimaryKey = $key;
|
||||
}
|
||||
|
||||
public function list()
|
||||
{
|
||||
@ -434,7 +552,9 @@ class DDT extends Base {
|
||||
// tomd($sTable, 1);
|
||||
// $columns = \DB::select("SHOW FULL COLUMNS FROM blade");
|
||||
$columns = \DB::select("SHOW CREATE TABLE `{$sTable}`");
|
||||
tomd($columns[0]->{"Create Table"}, 1);
|
||||
|
||||
return $this->toJson($columns[0]->{"Create Table"});
|
||||
// tomd($columns[0]->{"Create Table"}, 1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
44
app/Services/TG/Hook/Mod/Db.php
Normal file
44
app/Services/TG/Hook/Mod/Db.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TG\Hook\Mod;
|
||||
//use App\Models\Article as ModelArticle;
|
||||
|
||||
class Db extends Base {
|
||||
|
||||
public function sql($aParam)
|
||||
{
|
||||
if ($aParam["aArg"][1] == "?") {
|
||||
return "/db#sql {value}";
|
||||
}
|
||||
|
||||
$aValue = $aParam["aArg"];
|
||||
$sValue = implode(" ", $aValue);
|
||||
|
||||
$r = \DB::statement($sValue);
|
||||
|
||||
return $r;
|
||||
}
|
||||
|
||||
public function me()
|
||||
{
|
||||
$str = "
|
||||
添加字段:ALTER TABLE `ship` ADD `good_test` TEXT DEFAULT NULL AFTER `api_huodong`
|
||||
|
||||
删除字段:ALTER TABLE `ship` DROP COLUMN `good_test`
|
||||
|
||||
修改字段:ALTER TABLE `ship` MODIFY `good_test` VARCHAR(255) DEFAULT NULL
|
||||
";
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
public function showCreateTable($aParam)
|
||||
{
|
||||
$sValue = $aParam["aArg"][1] ?? false;
|
||||
|
||||
$columns = \DB::select("SHOW CREATE TABLE `{$sValue}`");
|
||||
|
||||
return $columns[0]->{"Create Table"};
|
||||
}
|
||||
|
||||
}
|
||||
@ -16,7 +16,7 @@ class Jctj extends Base {
|
||||
$this->oDDT = new DDT(new ModelBladeJctj());
|
||||
$this->oDDT->_setPrimaryKey("id"); // 可选,默认id
|
||||
$this->oDDT->_setStrField(["content"]); // 可选,指定长文本字段
|
||||
$this->oDDT->_setMe("jctj"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死
|
||||
$this->oDDT->_setThisName("jctj"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ class JctjOption extends Base {
|
||||
$this->aUpdate = $aUpdate;
|
||||
$this->oDDT = new DDT(new ModelBladeJctjOption());
|
||||
$this->oDDT->_setPrimaryKey("k");
|
||||
$this->oDDT->_setThisName("jctj_option");
|
||||
// $this->oDDT->_setStrField(["content"]);
|
||||
|
||||
}
|
||||
|
||||
231
app/Services/TG/Hook/Mod/Upload.php
Normal file
231
app/Services/TG/Hook/Mod/Upload.php
Normal file
@ -0,0 +1,231 @@
|
||||
<?php
|
||||
|
||||
namespace App\Services\TG\Hook\Mod;
|
||||
|
||||
//use App\Models\BladeJctj as ModelBladeJctj;
|
||||
use App\Services\TG\Hook\Mod\DDT;
|
||||
use App\Models\option as ModelOption;
|
||||
|
||||
class Upload extends Base {
|
||||
|
||||
private $oDDT;
|
||||
|
||||
public function __construct($aUpdate)
|
||||
{
|
||||
|
||||
$this->oDDT = new DDT();
|
||||
$this->oDDT->_setPrimaryKey("id"); // 可选,默认id
|
||||
// $this->oDDT->_setStrField(["content"]); // 可选,指定长文本字段
|
||||
$this->oDDT->_setThisName("upload"); // 必须,me用,正常就是类名,只不过后期没准改名,所以就这里写死
|
||||
|
||||
}
|
||||
|
||||
public function __call($sName, $aArg)
|
||||
{
|
||||
|
||||
return $this->oDDT->$sName($aArg[0]);
|
||||
|
||||
}
|
||||
|
||||
public function limit($aParam)
|
||||
{
|
||||
$iSkip = $aParam["aArg"][1] ?? 0;
|
||||
$iTake = $aParam["aArg"][2] ?? 0;
|
||||
$sLike = $aParam["like"] ?? '';
|
||||
$isDel = $aParam["is_del"] ?? false;
|
||||
|
||||
if ($iSkip == "?") {
|
||||
return "#limit {skip} {take}";
|
||||
}
|
||||
|
||||
if (!$iTake) {
|
||||
$iTake = ModelOption::_hit("upload", "limit");
|
||||
}
|
||||
|
||||
// if (!$iSkip) {
|
||||
// return "需要skip";
|
||||
// }
|
||||
|
||||
if (!$iTake) {
|
||||
return "需要take";
|
||||
}
|
||||
|
||||
$t = $this->getFileList($iSkip, $iTake, $sLike, $isDel);
|
||||
|
||||
return $t;
|
||||
|
||||
}
|
||||
|
||||
public function page($aParam)
|
||||
{
|
||||
$iPage = $aParam["aArg"][1] ?? 1;
|
||||
$sLike = $aParam["like"] ?? '';
|
||||
|
||||
if ($iPage == "?") {
|
||||
return "#page {page:defaut=1}";
|
||||
}
|
||||
|
||||
$iLimit = ModelOption::_hit("upload", "limit") ?? 0;
|
||||
|
||||
if (!$iLimit) {
|
||||
return "需要option里的limit值";
|
||||
}
|
||||
|
||||
$iPageTrue = $iPage - 1;
|
||||
|
||||
$iSkip = $iPageTrue * $iLimit;
|
||||
|
||||
$aParam["aArg"][1] = $iSkip;
|
||||
$aParam["aArg"][2] = $iLimit;
|
||||
|
||||
return $this->limit($aParam);
|
||||
}
|
||||
|
||||
public function like($aParam)
|
||||
{
|
||||
$iPage = $aParam["aOption"][1] ?? 1;
|
||||
$sLike = $aParam["aArg"][1] ?? false;
|
||||
// $is_del = $aParam
|
||||
|
||||
if ($sLike == "?") {
|
||||
return "#like {like}";
|
||||
}
|
||||
|
||||
if (!$sLike) {
|
||||
return "需要like";
|
||||
}
|
||||
|
||||
$aParam["like"] = $sLike;
|
||||
$aParam["aArg"][1] = $iPage;
|
||||
$aParam["aOption"] = [];
|
||||
|
||||
return $this->page($aParam);
|
||||
}
|
||||
|
||||
public function list($aParam)
|
||||
{
|
||||
return $this->page($aParam);
|
||||
}
|
||||
|
||||
public function del($aParam)
|
||||
{
|
||||
$sName = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sName == "?") {
|
||||
return "#del {name}";
|
||||
}
|
||||
|
||||
if (!$sName) {
|
||||
return "需要name";
|
||||
}
|
||||
|
||||
$filePath = 'upload/'.$sName; // 替换为你要删除的文件路径
|
||||
|
||||
if (file_exists($filePath)) {
|
||||
if (unlink($filePath)) {
|
||||
return "文件已成功删除。";
|
||||
} else {
|
||||
return "删除文件时出错。";
|
||||
}
|
||||
} else {
|
||||
return "文件不存在。";
|
||||
}
|
||||
}
|
||||
|
||||
public function show($aParam)
|
||||
{
|
||||
$sName = $aParam["aArg"][1] ?? false;
|
||||
|
||||
if ($sName == "?") {
|
||||
return "#show {name}";
|
||||
}
|
||||
|
||||
if (!$sName) {
|
||||
return "需要name";
|
||||
}
|
||||
|
||||
$str = "";
|
||||
$str .= $sName."\n\n";
|
||||
$str .= "<img src='/upload/".$sName."'>";
|
||||
|
||||
return $str;
|
||||
}
|
||||
|
||||
public function likeDel($aParam)
|
||||
{
|
||||
$aParam["is_del"] = true;
|
||||
|
||||
return $this->like($aParam);
|
||||
}
|
||||
|
||||
private function getFileList($skip = 0, $take = 10, $searchTerm = '', $is_del = false) // 添加 is_del 参数
|
||||
{
|
||||
$directory = 'upload';
|
||||
|
||||
if (is_dir($directory)) {
|
||||
$str = "";
|
||||
$str .= "<table>";
|
||||
$str .= "<tr><th>NO</th><th>文件名</th><th>预览</th></tr>"; // 添加表头
|
||||
|
||||
$files = scandir($directory);
|
||||
$count = 0; // 计数器
|
||||
$id = 1; // ID 从1开始
|
||||
$countDel = 0;
|
||||
|
||||
foreach ($files as $file) {
|
||||
// 排除当前目录(.)和上级目录(..)
|
||||
if ($file !== '.' && $file !== '..') {
|
||||
// 如果提供了搜索关键字,检查文件名是否包含该关键字
|
||||
if ($searchTerm && stripos($file, $searchTerm) === false) {
|
||||
continue; // 不包含关键字则跳过
|
||||
}
|
||||
|
||||
// 如果 is_del 为 true,删除匹配的文件
|
||||
if ($is_del) {
|
||||
$filePath = $directory . '/' . $file;
|
||||
if (file_exists($filePath)) {
|
||||
unlink($filePath); // 删除文件
|
||||
$countDel++;
|
||||
}
|
||||
continue; // 删除后跳过当前循环
|
||||
}
|
||||
|
||||
// 跳过指定数量的文件
|
||||
if ($count < $skip) {
|
||||
$count++;
|
||||
continue; // 跳过当前循环
|
||||
}
|
||||
|
||||
// 检查是否超过取的限制
|
||||
if ($count >= $skip + $take) {
|
||||
break; // 超过限制则退出循环
|
||||
}
|
||||
|
||||
$str .= "<tr>";
|
||||
$str .= "<td>".$id."</td>"; // 输出 ID
|
||||
$str .= "<td>".$file."</td>";
|
||||
$str .= "<td><img height='50px' src='./upload/".$file."'></td>";
|
||||
$str .= "</tr>";
|
||||
|
||||
$count++; // 增加计数
|
||||
$id++; // 增加 ID
|
||||
}
|
||||
}
|
||||
|
||||
$str .= "</table>";
|
||||
|
||||
if ($is_del === true) {
|
||||
return $countDel;
|
||||
} else {
|
||||
return $str;
|
||||
}
|
||||
|
||||
} else {
|
||||
return "目录不存在。";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -19,7 +19,7 @@ pre {
|
||||
}
|
||||
|
||||
.cmd_text {
|
||||
width:380px;
|
||||
width:500px;
|
||||
// font-size:16px;
|
||||
//background-color:#222;
|
||||
// border:1px solid cyan;
|
||||
@ -185,24 +185,20 @@ a{
|
||||
<div class="menu_top">
|
||||
<a href="/cmd/image/upload">图片上传</a>
|
||||
</div>
|
||||
<table class="cmd_table">
|
||||
<table id="cmd_table" class="cmd_table">
|
||||
<tr>
|
||||
<td>
|
||||
<input class="cmd_user cmd_input cmd_enter" id="cmd_user" value="tom">
|
||||
<input class="cmd_site cmd_input cmd_enter" id="cmd_site" value="master">
|
||||
<input class="cmd_hook cmd_input cmd_enter" id="cmd_hook" value="">
|
||||
<input class="cmd_user cmd_input" id="cmd_user" value="tom">
|
||||
<input class="cmd_site cmd_input" id="cmd_site" value="master">
|
||||
<input class="cmd_hook cmd_input" id="cmd_hook" value="">
|
||||
<input id="cmd_option" class="cmd_option cmd_input">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input id="cmd_text" class="cmd_text cmd_input cmd_enter">
|
||||
<input id="cmd_option" class="cmd_option cmd_input">
|
||||
<!--
|
||||
<button><i class="fa fa-plus"></i> 添加</button>
|
||||
<input type="button" value="普通按钮">
|
||||
-->
|
||||
<input id="cmd_text" name="cmd_text" class="cmd_text cmd_input cmd_enter">
|
||||
</td>
|
||||
<tr>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
|
||||
@ -250,7 +246,8 @@ a{
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
|
||||
$('#cmd_text').focus();
|
||||
$('input[name="cmd_text"]').first().focus();
|
||||
bind();
|
||||
|
||||
function toggleArea(type)
|
||||
{
|
||||
@ -283,11 +280,23 @@ $(document).ready(function(){
|
||||
$("#cmd_r").show();
|
||||
}
|
||||
|
||||
if (type == "+") {
|
||||
var cmd_text_clone = $("#cmd_text").clone();
|
||||
cmd_text_clone.val('');
|
||||
cmd_text_clone.attr('id', 'cmd_text_' + Date.now());
|
||||
$("#cmd_table").append("<tr class='clone'><td></td></tr>");
|
||||
$("#cmd_table tr:last td").append(cmd_text_clone);
|
||||
bind();
|
||||
}
|
||||
|
||||
if (type == "-") {
|
||||
$("#cmd_table tbody tr.clone:last").remove();
|
||||
}
|
||||
}
|
||||
|
||||
function submit(enterType)
|
||||
function submit(input, enterType)
|
||||
{
|
||||
var value = $("#cmd_text").val();
|
||||
var value = input.val();
|
||||
var site = $("#cmd_site").val();
|
||||
var hook = $("#cmd_hook").val();
|
||||
var area = $("#cmd_area").val();
|
||||
@ -362,14 +371,18 @@ $(document).ready(function(){
|
||||
});
|
||||
|
||||
|
||||
$('.cmd_enter').keypress(function(e){
|
||||
|
||||
if(e.which == 13){ // 检测回车键
|
||||
toggleArea($("#cmd_option").val());
|
||||
submit("input");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function bind() {
|
||||
$('.cmd_enter').keypress(function(e){
|
||||
|
||||
if(e.which == 13){ // 检测回车键
|
||||
//toggleArea($("#cmd_option").val());
|
||||
|
||||
submit($(this), "input");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user