This commit is contained in:
Default
2025-04-01 18:12:44 +08:00
parent 5c61969df2
commit f26147b8a1
3 changed files with 88 additions and 41 deletions

View File

@@ -88,7 +88,7 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
// 性别
$arrSex = [
'all' => 0,
'nansheng-xiaoshuo' => 1,
@@ -110,7 +110,7 @@ class Novel extends BaseController
$strCategoryKey = array_search($strCategory, CategoryModel::$arrCategoryPinYin);
$strSearchCategory = CategoryModel::$arrCategory[$strCategoryKey];
}
// 小说状态
$arrStatus = [
'all' => NULL,
@@ -324,22 +324,33 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
$NovelModel = new NovelModel;
// 小说详情
$arrNovel = $NovelModel->getNovelInfo($intNId);
// 最后章节
$ChapterModel = new ChapterModel;
$arrLatestChapter = $ChapterModel->getLatestChapter($intNId);
// 最近五个章节
$arrChapter = $ChapterModel->getChapterAll([
'n_id' => $intNId,
'c_page' => 0,
], 5, ['c_sort_num' => -1]);
// 点击数
$NovelClicksModel = new NovelClicksModel;
$arrNovelClicks = $NovelClicksModel->getStats($intNId);
// 推荐小说
$arrRelateveNId = array_column($arrNovel['n_related_novel'], 'n_id');
$arrRelateveNovel = $NovelModel->getNovelAll([
'$in' => $arrRelateveNId,
], 100);
// echo '<pre>';
// print_r($arrNovel);
// exit;
$strNovel = '斗罗大陆';

View File

@@ -68,23 +68,31 @@ class ChapterModel extends MongoModel
* @param integer $intNId
* @return null|array
*/
public function getChapterAll(array $arrFilter, array $arrOptions = []): null|array
public function getChapterAll(array $arrFilter, int $intCount = 10, array $arrSort = ['c_sort_num' => -1], bool $boolReadContent = false): null|array
{
// $arrFilter = ['n_id' => $intNId, 'c_page' => 0];
// $arrOptions = self::$arrChapterOptions;
$arrOptions = self::$arrChapterOptions;
// $arrOptions['sort'] = ['c_sort_num' => -1];
$arrOptions['sort'] = $arrSort;
// $arrChapter = $this->getOne($arrFilter, $arrOptions);
$arrOptions['limit'] = $intCount;
// if (!empty($arrChapter)) {
// applyToKeys($arrChapter, ['created_at', 'updated_at'], 'formatMongoDate');
$arrFilter = [];
// $arrChapter['content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']);
// }
$Cursor = $this->getCol()->find($arrFilter, $arrOptions);
$arrResult = iterator_to_array($Cursor);
// return $arrChapter;
foreach ($arrResult as &$arrItem) {
applyToKeys($arrItem, ['created_at', 'updated_at'], 'formatMongoDate');
$arrItem['content'] = '';
if ($boolReadContent) {
$arrItem['content'] = StorageCore::getInstance()->read($arrItem['c_content_path']);
}
}
return $arrResult;
}
}

View File

@@ -22,6 +22,30 @@ class NovelModel extends MongoModel
*/
protected $strCollection = 'novel';
static public $arrNovelOptions = [
'typeMap' => [
'root' => 'array',
'document' => 'array',
'array' => 'array',
],
'projection' => [
'_id' => 0,
'og_title' => 0,
'n_site_name' => 0,
'n_site_code' => 0,
'n_site_uuid' => 0,
'n_source_id' => 0,
'n_page_title' => 0,
'og_description' => 0,
'og_novel_latest_chapter_name' => 0,
'og_image' => 0,
'og_novel_latest_chapter_url' => 0,
'og_novel_read_url' => 0,
'og_type' => 0,
'og_url' => 0,
],
];
/**
* 根据关键词数组更新小说推荐等级
* @param array $arrKeywords 关键词数组,例如 ["斗罗", "遮天", "凡人"]
@@ -53,29 +77,36 @@ class NovelModel extends MongoModel
return true;
}
static public $arrNovelOptions = [
'typeMap' => [
'root' => 'array',
'document' => 'array',
'array' => 'array',
],
'projection' => [
'_id' => 0,
'og_title' => 0,
'n_site_name' => 0,
'n_site_code' => 0,
'n_site_uuid' => 0,
'n_source_id' => 0,
'n_page_title' => 0,
'og_description' => 0,
'og_novel_latest_chapter_name' => 0,
'og_image' => 0,
'og_novel_latest_chapter_url' => 0,
'og_novel_read_url' => 0,
'og_type' => 0,
'og_url' => 0,
],
];
/**
* Undocumented function
*
* @param integer $intNId
* @return null|array
*/
public function getNovelAll(array $arrFilter, int $intCount = 10, array $arrSort = []): null|array
{
// $arrFilter = ['n_id' => $intNId, 'c_page' => 0];
$arrOptions = self::$arrNovelOptions;
$arrOptions['sort'] = $arrSort;
$arrOptions['limit'] = $intCount;
$arrFilter = [];
$Cursor = $this->getCol()->find($arrFilter, $arrOptions);
$arrResult = iterator_to_array($Cursor);
foreach ($arrResult as &$arrItem) {
applyToKeys($arrItem, ['created_at', 'updated_at'], 'formatMongoDate');
}
return $arrResult;
}
/**
* Undocumented function
@@ -89,9 +120,6 @@ class NovelModel extends MongoModel
$arrOptions = self::$arrNovelOptions;
$arrNovel = $this->getOne($arrFilter, $arrOptions);
applyToKeys($arrNovel, ['created_at', 'updated_at'], 'formatMongoDate');
return $arrNovel;
}