This commit is contained in:
Default
2025-04-09 02:13:20 +08:00
parent 466abd8cd6
commit 064a5d4a92
13 changed files with 319 additions and 408 deletions

View File

@@ -22,25 +22,33 @@ class Index extends BaseController
*/
public function index(Request $Request)
{
// 获取路由附加的参数
$boolIsMobile = $Request->param('boolIsMobile');
$intTTL = 24 * 3600;
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
// 推荐等级为9的连载的 随机15个小说
$strKey = $Request->DomainModel->d_domain . ':H5:';
$arrRecommendNovel = $NovelModel->getHighLevelNovelOnCache($strKey, 8);
$arrNewsNovel = $NovelModel->getSexNovelOnCache($strKey, 8, 0);
$strKey = sprintf('%s:H5:INDEX:TUIJIAN:%s', $Request->DomainModel->d_domain, 8);
$arrRecommendNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8);
$strKey = sprintf('%s:H5:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 8);
$arrNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, NULL, ['og_novel_update_time' => -1]);
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'daily', 0);
$arrDayRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'daily');
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 0);
$arrWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'weekly');
$strKey = sprintf('%s:H5:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 0);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'monthly');
$strStatus = '已完结';
$strKey = sprintf('%s:H5:INDEX:RANK:%s:%s', $Request->DomainModel->d_domain, 'total', 'finished');
$arrEndNovelRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'total', $strStatus);
// Title 模板
@@ -88,40 +96,57 @@ class Index extends BaseController
// 获取路由附加的参数
$boolIsMobile = $Request->param('boolIsMobile');
$NovelModel = new NovelModel;
$intTTL = 24 * 3600;
$NovelModel = NovelModel::getInstance();
// 推荐等级为9的连载的 随机15个小说
$arrRecommendSerializationNovel = $NovelModel->getHighLevelNovelOnCache($Request->DomainModel->d_domain, 13);
$strKey = sprintf('%s:PC:INDEX:TUIJIAN:%s', $Request->DomainModel->d_domain, 13);
$arrRecommendSerializationNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 13, 0, NULL);
// 推荐等级为9的完结的 随机12个小说
$arrRecommendEndNovel = $NovelModel->getFinishedNovelOnCache($Request->DomainModel->d_domain, 12);
$strKey = sprintf('%s:PC:INDEX:TUIJIAN:WANJIE:%s', $Request->DomainModel->d_domain, 12);
$arrRecommendEndNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 12, 0, "已完结");
// 男生频道,最新的 随机5个小说
$arrBoyNewsNovel = $NovelModel->getSexNovelOnCache($Request->DomainModel->d_domain, 5, 1);
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 1, 5);
$arrBoyNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 1, NULL, ['og_novel_update_time' => -1]);
// 男生频道,周排行榜 随机10个小说
$arrBoyWeekRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 1, 'weekly');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 1);
$arrBoyWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'weekly');
// 男生频道,月排行榜 随机10个小说
$arrBoyMoonRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 1, 'monthly');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 1);
$arrBoyMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'monthly');
// 男生频道,总排行榜 随机10个小说
$arrBoyTotalRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 1, 'total');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'total', 1);
$arrBoyTotalRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 1, 'total');
// 女生频道,最新的 随机5个小说
$arrGirlNewsNovel = $NovelModel->getSexNovelOnCache($Request->DomainModel->d_domain, 5, 2);
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 2, 5);
$arrGirlNewsNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 5, 2, NULL, ['og_novel_update_time' => -1]);
// 女生频道,周排行榜 随机10个小说
$arrGirlWeekRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 2, 'weekly');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 2);
$arrGirlWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'weekly');
// 女生频道,月排行榜 随机10个小说
$arrGirlMoonRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 2, 'monthly');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 2);
$arrGirlMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'monthly');
// 女生频道,总排行榜 随机10个小说
$arrBGirlTotalRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 2, 'total');
$strKey = sprintf('%s:PC:INDEX:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'total', 2);
$arrBGirlTotalRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 2, 'total');
// 最近更新-随机50
$arrNewsUpdateNovel = $NovelModel->getSexNovelOnCache($Request->DomainModel->d_domain, 50);
$strKey = sprintf('%s:PC:INDEX:ZUIJIAN:SEX:%s:%s', $Request->DomainModel->d_domain, 0, 50);
$arrNewsUpdateNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 50, 0, NULL, ['og_novel_update_time' => -1]);
// Title 模板
ConverterMovel::setVal([

View File

@@ -31,17 +31,20 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
// 模拟数据-日排行榜 随机10个小说
$NovelModel = new NovelModel;
$strKey = $Request->DomainModel->d_domain . ':RANK:';
$NovelModel = NovelModel::getInstance();
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'daily', 0);
$arrDayRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'daily');
// 模拟数据-周排行榜 随机10个小说
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'weekly', 0);
$arrWeekRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'weekly');
// 模拟数据-月排行榜 随机10个小说
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'monthly', 0);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'monthly');
// 模拟数据-总排行榜 随机10个小说
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s', $Request->DomainModel->d_domain, 'total', 0);
$arrTotalRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'total');
// 模拟数据-新书榜 随机10个小说n_id倒叙
@@ -55,6 +58,7 @@ class Novel extends BaseController
// 模拟数据-完结榜 随机10个小说
$strStatus = '已完结';
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s:%s', $Request->DomainModel->d_domain, 'total', 0, 'finished');
$arrEdnNovelRankNovel = $NovelModel->getRankNovelOnCache($strKey, 10, 0, 'total', $strStatus);
// Title 模板
@@ -154,7 +158,7 @@ class Novel extends BaseController
$strKey = sprintf("Novel:Library:%s:%s:%s:%s", $intGender, $strSearchCategory, $strSearchStatus, $intPage);
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$arrPage = $NovelModel->getCustomPage01($strKey, $intPage, $intLimit, $intLifeTime, $intGender, $strSearchStatus);
$strTemplate = '';
@@ -213,7 +217,7 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
$strNovelChannel = $Request->param('strChannel'); // 区分男生/女生频道
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$intType = ['boys' => 1, 'girls' => 2][$strNovelChannel];
$intLifeTime = 24 * 3600;
@@ -358,15 +362,13 @@ class Novel extends BaseController
public function getKanNovelInfo(Request $Request)
{
// $arrNovel['og_novel_book_name'] = kan 小说 的 名字
$intNId = $Request->param('n_id');
$intForgeId = $Request->param('n_forge_id');
$boolIsMobile = $Request->param('boolIsMobile');
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
// 小说详情
$arrNovel = $NovelModel->getNovelByNId($intNId);
@@ -382,8 +384,8 @@ class Novel extends BaseController
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
// 最后章节
$ChapterModel = new ChapterModel;
$arrLatestChapter = $ChapterModel->getLatestChapter($intNId);
$ChapterModel = ChapterModel::getInstance();
$arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId);
$strFocus = '';
// 要点
@@ -397,19 +399,19 @@ class Novel extends BaseController
}
// 最近五个章节
$arrChapter = $ChapterModel->getChapterAll([
$arrChapter = $ChapterModel->findMany([
'n_id' => $intNId,
'c_page' => 0,
], 10, ['c_sort_num' => -1]);
// 点击数
$NovelClicksModel = new NovelClicksModel;
$NovelClicksModel = NovelClicksModel::getInstance();
$arrNovelClicks = $NovelClicksModel->getStats($intNId);
// 推荐小说
$arrRelateveNId = array_column($arrNovel['n_related_novel'], 'n_id');
$arrRelateveNovel = $NovelModel->getNovel(['n_id' => [
$arrRelateveNovel = $NovelModel->findMany(['n_id' => [
'$in' => $arrRelateveNId,
]], 10);
@@ -468,7 +470,7 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
// 小说详情
$arrNovel = $NovelModel->getNovelByNId($intNId);
@@ -477,8 +479,8 @@ class Novel extends BaseController
$arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']);
// 最后章节
$ChapterModel = new ChapterModel;
$arrLatestChapter = $ChapterModel->getLatestChapter($intNId);
$ChapterModel = ChapterModel::getInstance();
$arrLatestChapter = $ChapterModel->getLatestChapterByNId($intNId);
$strFocus = '';
// 要点
@@ -492,19 +494,19 @@ class Novel extends BaseController
}
// 最近五个章节
$arrChapter = $ChapterModel->getChapterAll([
$arrChapter = $ChapterModel->findMany([
'n_id' => $intNId,
'c_page' => 0,
], 10, ['c_sort_num' => -1]);
// 点击数
$NovelClicksModel = new NovelClicksModel;
$NovelClicksModel = NovelClicksModel::getInstance();
$arrNovelClicks = $NovelClicksModel->getStats($intNId);
// 推荐小说
$arrRelateveNId = array_column($arrNovel['n_related_novel'], 'n_id');
$arrRelateveNovel = $NovelModel->getNovel(['n_id' => [
$arrRelateveNovel = $NovelModel->findMany(['n_id' => [
'$in' => $arrRelateveNId,
]], 10);
@@ -559,12 +561,12 @@ class Novel extends BaseController
$intNId = $Request->param('n_id');
// 小说详情
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$arrNovel = $NovelModel->getNovelByNId($intNId);
// 最新章节
$ChapterModel = new ChapterModel;
$arrChapter = $ChapterModel->getLatestChapter($intNId);
$ChapterModel = ChapterModel::getInstance();
$arrChapter = $ChapterModel->getLatestChapterByNId($intNId);
// 上一章节和下一章节
$arrPreChapter = $arrNextChapter = [];
@@ -649,15 +651,15 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
// 小说详情
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$intNId = $intNovelId;
$arrNovel = $NovelModel->getNovelByNId($intNId);
// 章节
$ChapterModel = new ChapterModel;
$ChapterModel = ChapterModel::getInstance();
$arrFilter = ['n_id' => $intNId, 'c_sort_num' => $intChapterSort, 'c_page' => $intChapterPage];
$arrChapter = $ChapterModel->getChapter($arrFilter);
$arrChapter = $ChapterModel->findOne($arrFilter);
// 上一章节和下一章节
$arrPreChapter = $arrNextChapter = [];
@@ -723,11 +725,11 @@ class Novel extends BaseController
$boolIsMobile = $Request->param('boolIsMobile');
// 小说详情
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$intNId = $intNovelId;
$arrNovel = $NovelModel->getNovelByNId($intNId);
$ChapterModel = new ChapterModel;
$ChapterModel = ChapterModel::getInstance();
$strKey = sprintf('Nid:%s:Chapter-Page:%s:Order:%s', $intNId, $intPage, $strOrder);
@@ -741,7 +743,7 @@ class Novel extends BaseController
$arrSort = ['c_sort_num' => -1];
}
$arrPage = $ChapterModel->getCommonPageOnCache($strKey, $arrFilter, $intPage, $intLimit, $intLifeTime, $arrSort);
$arrPage = $ChapterModel->findPaginatedWithCache($arrFilter, $intPage, $intLimit, $arrSort, $strKey, $intLifeTime);
$intButtomNum = 5;
if ($boolIsMobile == false) {
@@ -816,7 +818,7 @@ class Novel extends BaseController
return response('请输入搜索的关键字', 400);
}
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
$arrFilter = [
'$or' => [
@@ -827,7 +829,7 @@ class Novel extends BaseController
]
];
$arrPage = $NovelModel->getCommonPageOnCache($arrFilter, $intPage, $intLimit, [], $strKey);
$arrPage = $NovelModel->findPaginatedWithCache($arrFilter, $intPage, $intLimit, [], $strKey);
$intButtomNum = 10;

View File

@@ -17,12 +17,16 @@ class User extends BaseController
// 获取路由附加的参数
$boolIsMobile = $Request->param('boolIsMobile');
$NovelModel = new NovelModel;
$NovelModel = NovelModel::getInstance();
// 推荐等级为9的完结 随机15个小说
$arrRecommendEndNovel = $NovelModel->getFinishedNovelOnCache($Request->DomainModel->d_domain, 8);
$intTTL = 24 * 3600;
$strKey = sprintf('%s:ALL:USER:TUIJIAN:WANJIE:%s', $Request->DomainModel->d_domain, 8);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($Request->DomainModel->d_domain, 5, 2, 'monthly');
$arrRecommendEndNovel = $NovelModel->getCommonNovelOnCache($strKey, $intTTL, 8, 0, "已完结");
$strKey = sprintf('%s:PC:NOVEL:RANK:%s:SEX:%s:%s', $Request->DomainModel->d_domain, 'monthly', 0);
$arrMoonRankNovel = $NovelModel->getRankNovelOnCache($strKey, 5, 0, 'monthly');
View::assign([
'arrRecommendEndNovel' => $arrRecommendEndNovel,
@@ -68,9 +72,9 @@ class User extends BaseController
}
}
public function getPcIndex(Request $Request)
{
@@ -109,7 +113,7 @@ class User extends BaseController
['id' => 10, 'name' => '小说3', 'author' => '作者3'],
['id' => 11, 'name' => '小说3', 'author' => '作者3'],
['id' => 12, 'name' => '小说3', 'author' => '作者3'],
];
// 模拟数据-男生频道,最新的 随机5个小说
@@ -161,7 +165,7 @@ class User extends BaseController
];
// 模拟数据-男生频道,最新的 随机5个小说
$arrGirlNewsNovel = [
['id' => 1, 'name' => '小说1', 'author' => '作者1'],
@@ -248,7 +252,7 @@ class User extends BaseController
'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel,
'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel,
'arrAdBanner' => [],
]);
if ($boolIsMobile) {
@@ -258,7 +262,7 @@ class User extends BaseController
}
}
public function test()
{