debug
This commit is contained in:
@@ -62,8 +62,6 @@ abstract class BaseController
|
||||
*/
|
||||
protected function initialize()
|
||||
{
|
||||
// TODO 因为视图无法渲染 request 暂时使用这个
|
||||
View::assign("DomainModel", $this->request->DomainModel);
|
||||
$this->initSiteTKD();
|
||||
}
|
||||
|
||||
|
||||
@@ -357,14 +357,13 @@ class Novel extends BaseController
|
||||
*/
|
||||
public function getKanNovelInfo(Request $Request)
|
||||
{
|
||||
// TODO 这个页面数据没有处理
|
||||
// FIXED 不要这样打标记好不好,沟通成本太高了,你直接标注缺少什么数据,什么数据有问题,什么数据需要转换
|
||||
// TODO 这个是 kan 小说页面的控制器,是直接复制 小说详情的控制器,
|
||||
// 1.从这个页面上看,这个应该展示 kan 小说的名字才对,目前 title 还是 小说的名字 ,
|
||||
|
||||
// $arrNovel['og_novel_book_name'] = kan 小说 的 名字
|
||||
|
||||
$intNId = $Request->param('n_id');
|
||||
|
||||
$intForgeId = $Request->param('n_forge_id');
|
||||
|
||||
$boolIsMobile = $Request->param('boolIsMobile');
|
||||
|
||||
$NovelModel = new NovelModel;
|
||||
@@ -372,6 +371,13 @@ class Novel extends BaseController
|
||||
// 小说详情
|
||||
$arrNovel = $NovelModel->getNovelByNId($intNId);
|
||||
|
||||
foreach ($arrNovel['n_forge_novel'] as $arrForgeNovel) {
|
||||
if ($arrForgeNovel['n_forge_id'] == $intForgeId) {
|
||||
$arrNovel['og_novel_book_name'] = $arrForgeNovel['n_forge_title'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// 分品拼音
|
||||
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
|
||||
|
||||
@@ -826,9 +832,7 @@ class Novel extends BaseController
|
||||
ConverterMovel::setVal([
|
||||
'intPage' => $intPage,
|
||||
'strSearchKeywords' => $strSearchKeywords,
|
||||
// FIXED 如果不知道怎么做,就不要用这个模板,你现在太过依赖这个模板,这个模板如果是一个刚毕业的大学生的垃圾论文项目,你也被他的四维锁死?
|
||||
// 这个和模板没有关系, 昨天 grok 使用超限制了,使用you.com 提供的 tkd 设计,它设计的 tkd模板 需要的 字段比较多,那几个 性别 和 分类 放在搜索是不太合理
|
||||
// 现在改了,使用grok 设计的 ,ai 记录在 app/home/view/kuangyu/推广SEO过程设计记录/TKD/搜索页Tkd.md
|
||||
|
||||
]);
|
||||
|
||||
$strTitleTemplate = $Request->DomainModel->getFomartSubject(getFomartSubjectKey(__METHOD__) . '@TITLE');
|
||||
@@ -850,7 +854,7 @@ class Novel extends BaseController
|
||||
'strKeywords' => $strKeywords,
|
||||
'strDescription' => $strDescription,
|
||||
]);
|
||||
|
||||
|
||||
$strView = $boolIsMobile ? '' : 'pc/getSearchNovel';
|
||||
|
||||
return $this->rending($strView);
|
||||
|
||||
@@ -91,14 +91,8 @@
|
||||
|
||||
<!-- 现在是使用这个 -->
|
||||
{$DomainModel->d_statis|raw}
|
||||
{:request()->DomainModel->d_statis}
|
||||
<!-- FIXED 打开TP模板文档,找到变量原样输出 -->
|
||||
<!-- TODO 问题描述:下面 -->
|
||||
<!-- 我这边测试: 无法调用用 Request 渲染 , 只能渲染 通过 view:assign() 传递过来的变量 START-->
|
||||
<!-- 1.{Request->DomainModel->d_statis|raw} 这个在页面上展示的 就是: {Request->DomainModel->d_statis} -->
|
||||
<!-- 2.{$DomainModel->d_statis|raw} 使用这个是可以正常渲染的,这个在basecontroll 里面 加入 assign了,你看看这样操作行不-->
|
||||
<!-- TODO END -->
|
||||
{:request()->DomainModel->d_domian}
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -124,4 +124,15 @@ class CategoryModel extends MongoModel
|
||||
{
|
||||
return in_array($strName, self::$arrMan) ? 'man' : 'women';
|
||||
}
|
||||
|
||||
/**
|
||||
* determine the gender of the novel category
|
||||
*
|
||||
* @param string $strName
|
||||
* @return string
|
||||
*/
|
||||
static public function checkSexZh(string $strName): string
|
||||
{
|
||||
return in_array($strName, self::$arrMan) ? '男生' : '女生';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ class ChapterModel extends MongoModel
|
||||
* @param integer $intNId
|
||||
* @return null|array
|
||||
*/
|
||||
public function getLatestChapter(int $intNId): null|array
|
||||
public function getLatestChapter(int $intNId, bool $boolReadContent = true): null|array
|
||||
{
|
||||
$arrFilter = ['n_id' => $intNId, 'c_page' => 0];
|
||||
|
||||
@@ -135,8 +135,10 @@ class ChapterModel extends MongoModel
|
||||
|
||||
if (!empty($arrChapter)) {
|
||||
applyToKeys($arrChapter, ['created_at', 'updated_at'], 'formatMongoDate');
|
||||
|
||||
$arrChapter['content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']);
|
||||
$arrChapter['content'] = '';
|
||||
if ($boolReadContent) {
|
||||
$arrChapter['content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']);
|
||||
}
|
||||
}
|
||||
|
||||
return $arrChapter ?? [];
|
||||
|
||||
@@ -88,6 +88,7 @@ class NovelModel extends MongoModel
|
||||
|
||||
$arrOptions['limit'] = $intCount;
|
||||
|
||||
$arrFilter['n_have_chapter'] = 1;
|
||||
|
||||
$Cursor = $this->getCol()->find($arrFilter, $arrOptions);
|
||||
|
||||
@@ -110,14 +111,11 @@ class NovelModel extends MongoModel
|
||||
*/
|
||||
public function getNovelByNId(int $intNId): null|array
|
||||
{
|
||||
$arrFilter = ['n_id' => $intNId];
|
||||
$arrFilter = ['n_id' => $intNId, 'n_have_chapter' => 1];
|
||||
$arrOptions = self::$arrNovelOptions;
|
||||
$arrNovel = $this->getOne($arrFilter, $arrOptions);
|
||||
applyToKeys($arrNovel, ['created_at', 'updated_at'], 'formatMongoDate');
|
||||
if (!empty($arrNovel['og_novel_category'])) {
|
||||
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
|
||||
$arrNovel['category_sex'] = CategoryModel::checkSex($arrNovel['og_novel_category']);
|
||||
}
|
||||
|
||||
|
||||
return $arrNovel;
|
||||
}
|
||||
@@ -141,6 +139,8 @@ class NovelModel extends MongoModel
|
||||
return $arrResult;
|
||||
}
|
||||
|
||||
$arrFilter['n_have_chapter'] = 1;
|
||||
|
||||
$pipeline = [
|
||||
['$match' => $arrFilter],
|
||||
['$sample' => ['size' => $intCount]]
|
||||
@@ -180,7 +180,7 @@ class NovelModel extends MongoModel
|
||||
$strStatus = NULL,
|
||||
array $arrSort = ['n_level' => -1]
|
||||
): array {
|
||||
$arrFilter = [];
|
||||
$arrFilter = ['n_have_chapter' => 1,];
|
||||
|
||||
switch ($intType) {
|
||||
case 1:
|
||||
@@ -219,6 +219,7 @@ class NovelModel extends MongoModel
|
||||
int $intLifeTime = 24 * 3600,
|
||||
): array {
|
||||
try {
|
||||
$arrFilter['n_have_chapter'] = 1;
|
||||
|
||||
$arrResult = $this->checkCacheByKey($strKey);
|
||||
if ($arrResult !== NULL) {
|
||||
@@ -295,7 +296,7 @@ class NovelModel extends MongoModel
|
||||
return $arrResult;
|
||||
}
|
||||
|
||||
$arrFilter = [];
|
||||
$arrFilter = ['n_have_chapter' => 1,];
|
||||
|
||||
switch ($intType) {
|
||||
case 1:
|
||||
@@ -362,12 +363,12 @@ class NovelModel extends MongoModel
|
||||
$intLifeTime = 24 * 3600;
|
||||
|
||||
$arrResult = $this->checkCacheByKey($strKey);
|
||||
|
||||
|
||||
if ($arrResult !== NULL) {
|
||||
return $arrResult;
|
||||
}
|
||||
|
||||
$arrFilter = [];
|
||||
$arrFilter = ['n_have_chapter' => 1,];
|
||||
switch ($intType) {
|
||||
case 1:
|
||||
$arrCategory = array_values(CategoryModel::getManCategory());
|
||||
@@ -398,10 +399,10 @@ class NovelModel extends MongoModel
|
||||
],
|
||||
];
|
||||
|
||||
|
||||
|
||||
$Cursor = $this->getCol()->find($arrFilter, $arrOptions);
|
||||
$arrResult = iterator_to_array($Cursor);
|
||||
|
||||
|
||||
shuffle($arrResult);
|
||||
|
||||
$arrResult = array_slice($arrResult, 0, $intCount);
|
||||
@@ -435,6 +436,7 @@ class NovelModel extends MongoModel
|
||||
}
|
||||
$arrFilter = [
|
||||
'og_novel_status' => "已完结",
|
||||
'n_have_chapter' => 1,
|
||||
];
|
||||
|
||||
$arrOptions = [
|
||||
@@ -487,19 +489,16 @@ class NovelModel extends MongoModel
|
||||
if ($arrResult !== NULL) {
|
||||
return $arrResult;
|
||||
}
|
||||
|
||||
$arrFilter = ['n_have_chapter' => 1,];
|
||||
|
||||
if ($intType == 1) {
|
||||
$arrCategory = array_values(CategoryModel::getManCategory());
|
||||
$arrFilter = [
|
||||
'og_novel_category' => ['$in' => $arrCategory]
|
||||
];
|
||||
$arrFilter['og_novel_category'] = ['$in' => $arrCategory];
|
||||
} elseif ($intType == 2) {
|
||||
$arrCategory = array_values(CategoryModel::getWomenCategory());
|
||||
$arrFilter = [
|
||||
'og_novel_category' => ['$in' => $arrCategory]
|
||||
];
|
||||
} else {
|
||||
$arrFilter = [];
|
||||
}
|
||||
$arrFilter['og_novel_category'] = ['$in' => $arrCategory];
|
||||
}
|
||||
|
||||
$arrOptions = [
|
||||
'sort' => ['og_novel_update_time' => -1],
|
||||
|
||||
@@ -36,8 +36,8 @@ class Scheduler
|
||||
|
||||
$arrFilter = [];
|
||||
// for ($intNId = 1; $intNId <= 531208; $intNId++) {
|
||||
// for ($intNId = 1; $intNId <= 10000; $intNId++) {
|
||||
for ($intNId = 1; $intNId <= 20000; $intNId++) {
|
||||
// for ($intNId = 1; $intNId <= 10000; $intNId++) {
|
||||
for ($intNId = 1; $intNId <= 6; $intNId++) {
|
||||
$arrFilter[] = [
|
||||
'n_source_id' => $intNId,
|
||||
'page' => 0,
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace app\task\crawler\zw630\page;
|
||||
|
||||
use app\model\ChapterModel;
|
||||
use storage\StorageCore;
|
||||
|
||||
class ChapterPage extends BasePage
|
||||
@@ -70,7 +71,7 @@ class ChapterPage extends BasePage
|
||||
$arrExisting = (array) $arrExisting;
|
||||
$this->arrChapterInfo = array_merge($arrExisting, $this->getChapterInfo());
|
||||
|
||||
$this->arrChapterInfo['updated_at'] = new \MongoDB\BSON\UTCDateTime(); // 添加更新时间
|
||||
$this->arrChapterInfo['updated_at'] = new \MongoDB\BSON\UTCDateTime();
|
||||
$Col->updateOne(
|
||||
['c_site_uuid' => $strUUId],
|
||||
['$set' => $this->arrChapterInfo],
|
||||
@@ -94,6 +95,8 @@ class ChapterPage extends BasePage
|
||||
|
||||
$this->getMongoBase()->insertOne('chapter', $this->arrChapterInfo);
|
||||
|
||||
$this->updateNovelHaveChapter($intNId);
|
||||
|
||||
if (!StorageCore::getInstance()->has($this->arrChapterInfo['c_content_path'])) {
|
||||
StorageCore::getInstance()->set($this->arrChapterInfo['c_content_path'], $this->strChapterContent);
|
||||
}
|
||||
@@ -106,6 +109,29 @@ class ChapterPage extends BasePage
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
*
|
||||
* @param integer $intNId
|
||||
* @return void
|
||||
*/
|
||||
protected function updateNovelHaveChapter(int $intNId)
|
||||
{
|
||||
$arrFilter = [
|
||||
'n_id' => $intNId,
|
||||
];
|
||||
|
||||
$ChapterModel = new ChapterModel;
|
||||
$arrLasteChapter = $ChapterModel->getLatestChapter($intNId, false);
|
||||
|
||||
if (!empty($arrLasteChapter)) {
|
||||
$arrUpdate['$set']['n_have_chapter'] = 1;
|
||||
$arrUpdate['$set']['og_novel_latest_chapter_name'] = $arrLasteChapter['name'];
|
||||
$this->getMongoBase()->updateOne('novel', $arrFilter, $arrUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
protected $arrNextPage;
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace app\task\crawler\zw630\page;
|
||||
|
||||
use app\model\CategoryModel;
|
||||
use ddl\DDLManage;
|
||||
use QL\QueryList;
|
||||
|
||||
@@ -51,6 +52,7 @@ class NovelPage extends BasePage
|
||||
$arrNovelInfo['n_site_uuid'] = $strUUId;
|
||||
$arrNovelInfo['n_source_id'] = $intNSourceId;
|
||||
$arrNovelInfo['n_level'] = 1;
|
||||
$arrNovelInfo['n_have_chapter'] = 0;
|
||||
$arrNovelInfo['n_id'] = $this->getMongoBase()->getNextSequence('novel');
|
||||
$this->getMongoBase()->insertOne('novel', $arrNovelInfo);
|
||||
}
|
||||
@@ -176,7 +178,17 @@ class NovelPage extends BasePage
|
||||
$this->arrNovelInfo['n_source_id'] = $this->arrData['n_source_id'];
|
||||
$this->arrNovelInfo['n_id'] = $this->getMongoBase()->getNextSequence('novel');
|
||||
$this->arrNovelInfo['n_level'] = 1;
|
||||
$this->arrNovelInfo['n_have_chapter'] = 0;
|
||||
$this->arrNovelInfo['n_cover_path'] = '/img/' . date('Y/m/d', time() - 24 * 3600 * 14) . '/' . $this->arrNovelInfo['n_id'] . '.jpg';
|
||||
|
||||
|
||||
if (!empty($this->arrNovelInfo['og_novel_category'])) {
|
||||
$this->arrNovelInfo['category_pinyin'] = CategoryModel::getPinYinByZh($this->arrNovelInfo['og_novel_category']);
|
||||
$this->arrNovelInfo['category_sex'] = CategoryModel::checkSex($this->arrNovelInfo['og_novel_category']);
|
||||
$this->arrNovelInfo['category_sex_zh'] = CategoryModel::checkSexZh($this->arrNovelInfo['og_novel_category']);
|
||||
}
|
||||
|
||||
|
||||
$this->getMongoBase()->insertOne('novel', $this->arrNovelInfo);
|
||||
|
||||
$this->boolIsFirstSave = true;
|
||||
|
||||
@@ -25,7 +25,7 @@ class Site
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $strDomain = 'https://www.630zw.org';
|
||||
protected $strDomain = 'https://www.630zw.com';
|
||||
|
||||
/**
|
||||
* Undocumented function
|
||||
|
||||
Reference in New Issue
Block a user