123
This commit is contained in:
@@ -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 = '斗罗大陆';
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user