From 114b95ed1f0199c07ce128434220a7886b36558b Mon Sep 17 00:00:00 2001 From: Default Date: Tue, 8 Apr 2025 20:49:20 +0800 Subject: [PATCH] debug --- code/app/home/BaseController.php | 18 ++++ code/app/home/controller/Index.php | 4 + code/app/home/controller/Novel.php | 12 ++- code/app/model/GanRaoMaModel.php | 96 +++++++++++-------- code/database/mongo/migrations/gan_rao_ma.php | 2 +- 5 files changed, 87 insertions(+), 45 deletions(-) diff --git a/code/app/home/BaseController.php b/code/app/home/BaseController.php index 7bc3838..19e6e94 100644 --- a/code/app/home/BaseController.php +++ b/code/app/home/BaseController.php @@ -5,6 +5,7 @@ declare(strict_types=1); namespace app\home; use app\model\ConverterMovel; +use app\model\GanRaoMaModel; use think\App; use think\exception\ValidateException; use think\facade\View; @@ -93,4 +94,21 @@ abstract class BaseController View::assign("TemplatesModel", $this->request->TemplatesModel); return View::fetch($strTemplate); } + + /** + * generate GRM + * + * @param integer $intDeviceType + * @param integer $intNum + * @return void + */ + public function generateGrm(int $intDeviceType, string|int $strDiff, int $intNum) + { + $strDomain = $this->request->DomainModel->d_domain; + $strPageCode = $this->request->controller() . '@' . $this->request->action() . '@' . $intDeviceType; + + $arrGRM = GanRaoMaModel::getGrmCode($strDomain, $strPageCode, $strDiff, $intNum); + + View::assign("arrGRM", $arrGRM); + } } diff --git a/code/app/home/controller/Index.php b/code/app/home/controller/Index.php index 1ad2d09..4120698 100644 --- a/code/app/home/controller/Index.php +++ b/code/app/home/controller/Index.php @@ -22,6 +22,7 @@ class Index extends BaseController */ public function index(Request $Request) { + // 获取路由附加的参数 $boolIsMobile = $Request->param('boolIsMobile'); @@ -73,6 +74,7 @@ class Index extends BaseController $strView = $boolIsMobile ? '' : 'pc/index'; + $this->generateGrm(1, 0, 30); return $this->rending($strView); } @@ -157,6 +159,8 @@ class Index extends BaseController $strView = $boolIsMobile ? '' : 'pc/index'; + // 生成多少个干扰吗 + $this->generateGrm(2, 0, 30); return $this->rending($strView); } } diff --git a/code/app/home/controller/Novel.php b/code/app/home/controller/Novel.php index a7645d4..66f98c6 100644 --- a/code/app/home/controller/Novel.php +++ b/code/app/home/controller/Novel.php @@ -713,8 +713,8 @@ class Novel extends BaseController * 小说章节列表页面 * * @param Request $Request - * @param [type] $intNovelId 小说id - * @param integer $intPage 目录分页 + * @param int $intNovelId 小说id + * @param int $intPage 目录分页 * @param string $strOrder 正序倒叙:zheng/dao * @return void */ @@ -785,7 +785,13 @@ class Novel extends BaseController ]); - $strView = $boolIsMobile ? '' : 'pc/getNovelChapterAll'; + if ($boolIsMobile) { + $strView = ''; + $this->generateGrm(1, $intNovelId . '-' . $intPage, 30); + } else { + $strView = 'pc/getNovelChapterAll'; + $this->generateGrm(2, $intNovelId . '-' . $intPage, 20); + } return $this->rending($strView); } diff --git a/code/app/model/GanRaoMaModel.php b/code/app/model/GanRaoMaModel.php index fa16573..5857788 100644 --- a/code/app/model/GanRaoMaModel.php +++ b/code/app/model/GanRaoMaModel.php @@ -22,12 +22,29 @@ class GanRaoMaModel extends MongoModel */ protected $strCollection = 'gan_rao_ma'; - + + static public $arrOptions = [ + 'typeMap' => [ + 'root' => 'array', + 'document' => 'array', + 'array' => 'array', + ], + 'projection' => [ + '_id' => 0, + ], + ]; + + /** * 可选属性 */ const POSSIBLE_ATTRIBUTES = [ - 'draggable', 'date-time', 'lang', 'id', 'dir', 'class' + 'draggable', + 'date-time', + 'lang', + 'id', + 'dir', + 'class' ]; /** @@ -56,6 +73,8 @@ class GanRaoMaModel extends MongoModel '', '', '', + + '<%s id="%s"> ', ]; const LETTERS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; @@ -106,14 +125,13 @@ class GanRaoMaModel extends MongoModel for ($i = 0; $i < $intNumTags; $i++) { // 生成随机标签名 $strTagName = self::generateRandomString(rand(3, self::TAG_MAX_LENGTH), self::LETTERS); - + // 随机属性数量 $intNumAttributes = rand(self::ATTR_MIN_COUNT, self::ATTR_MAX_COUNT); $strAttributes = self::generateAttributes($intNumAttributes); // 拼接标签 $strHtmlResult .= "<{$strTagName}{$strAttributes}>\n"; - } return $strHtmlResult; @@ -130,7 +148,7 @@ class GanRaoMaModel extends MongoModel { $strAttributes = ''; $arrUsedAttributes = array_rand(array_flip(self::POSSIBLE_ATTRIBUTES), $intTotal); - + foreach ((array) $arrUsedAttributes as $strAttrName) { $strAttrValue = self::generateRandomString( rand(3, self::ATTR_VALUE_MAX_LENGTH), @@ -138,7 +156,7 @@ class GanRaoMaModel extends MongoModel ); $strAttributes .= " {$strAttrName}=\"{$strAttrValue}\""; } - + return $strAttributes; } @@ -154,11 +172,11 @@ class GanRaoMaModel extends MongoModel { $intCharsetLength = strlen($strCharset); $strRandomString = ''; - + for ($i = 0; $i < $length; $i++) { $strRandomString .= $strCharset[rand(0, $intCharsetLength - 1)]; } - + return $strRandomString; } @@ -169,61 +187,57 @@ class GanRaoMaModel extends MongoModel * * @param string $strDomain 域名 * @param string $strPageCode 视图编码 - * @param int $intLine 所在行数 * @param string $strDifference 差异 - * @param int $intStartNumber 生成标签,随机起始位置 随机生成(10-20)个标签 10 - * @param int $intEndNumber 生成标签,随机结束位置 随机生成(10-20)个标签 20 - * @param int $intIndex 把标签转成数组,这个是索引,根据索引取哪一行标签 - * @param int $intType 生成标签类型: 1.标准html标签,2.自定义标签 + * @param int $intNum 生成数量 * @return string */ - static public function getGrmCode($strDomain, $strPageCode, $intLine, $strDifference, $intStartNumber, $intEndNumber,$intIndex,$intType): string + static public function getGrmCode($strDomain, $strPageCode, $strDifference, $intNum) { - + $arrFilter = [ 'grm_domain' => (string) $strDomain, 'grm_page_code' => (string) $strPageCode, - 'grm_page_line' => (string)$intLine, 'grm_page_diff' => (string) $strDifference, ]; - $arrGrm = self::getInstance()->getOne($arrFilter); - - if (empty($arrGrm)) { - if($intType == 1){ - $intNum = mt_rand($intStartNumber, $intEndNumber); - $arrGrmCode = self::$arrSelfClosing; - shuffle($arrGrmCode); - $arrGrmCode = array_slice($arrGrmCode, 0, $intNum); - $strGrmCode = implode('', $arrGrmCode); - $intRandNum = substr_count($strGrmCode, '%s'); - $arrRandStr = self::generateRandomStrings($intRandNum); - $strGrmCode = sprintf($strGrmCode, ...$arrRandStr); - }else{ - $strGrmCode = self::generateRandomCustomizeHtml($intStartNumber, $intEndNumber); + $arrResult = self::getInstance()->getOne($arrFilter, self::$arrOptions); + + if (empty($arrResult)) { + + // $intNum = mt_rand($intStartNumber, $intEndNumber); + // $arrGrmCode = self::$arrSelfClosing; + // shuffle($arrGrmCode); + // $arrGrmCode = array_slice($arrGrmCode, 0, $intNum); + // $strGrmCode = implode('', $arrGrmCode); + // $intRandNum = substr_count($strGrmCode, '%s'); + // $arrRandStr = self::generateRandomStrings($intRandNum); + // $strGrmCode = sprintf($strGrmCode, ...$arrRandStr); + + $arrGrmCode = []; + while ($intNum-- > 0) { + $arrGrmCode[] = self::generateRandomCustomizeHtml(mt_rand(1, 3), mt_rand(4, 10)); } + $arrData = $arrFilter; - $arrData['grm_code'] = $strGrmCode; + $arrData['grm_code'] = $arrGrmCode; self::getInstance()->insert($arrData); } else { - $strGrmCode = $arrGrm['grm_code']; + $arrGrmCode = $arrResult['grm_code']; } - // $arrGrmCode = self::splitTagsToArray($strGrmCode); - // $strGrmCode = $arrGrmCode[$intIndex]; - // echo $intIndex; - return $strGrmCode; + + return $arrGrmCode; } static public function splitTagsToArray(string $htmlTags): array { - // 按换行符分割,兼容不同系统 + // 按换行符分割,兼容不同系统 $tagsArray = preg_split('/\r\n|\n|\r/', $htmlTags); - + // 去除空白行并清理首尾空格 - $tagsArray = array_filter(array_map('trim', $tagsArray), function($tag) { + $tagsArray = array_filter(array_map('trim', $tagsArray), function ($tag) { return !empty($tag); }); - + // 重置索引 return array_values($tagsArray); - } + } } diff --git a/code/database/mongo/migrations/gan_rao_ma.php b/code/database/mongo/migrations/gan_rao_ma.php index e12b9a1..f8daf59 100644 --- a/code/database/mongo/migrations/gan_rao_ma.php +++ b/code/database/mongo/migrations/gan_rao_ma.php @@ -3,7 +3,7 @@ return [ 'collection' => 'gan_rao_ma', 'indexes' => [ [ - 'key' => ['grm_domain' => 1, 'grm_page_code' => 1, 'grm_page_line' => 1, 'grm_page_diff' => 1], + 'key' => ['grm_domain' => 1, 'grm_page_code' => 1, 'grm_page_diff' => 1], 'options' => ['unique' => true] ], ]