diff --git a/code/app/home/controller/Novel.php b/code/app/home/controller/Novel.php index f8e4681..c9bd7ee 100644 --- a/code/app/home/controller/Novel.php +++ b/code/app/home/controller/Novel.php @@ -13,6 +13,7 @@ use app\model\NovelModel; use storage\StorageCore; use think\facade\View; use app\Request; +use app\task\crawler\zw630\page\ChapterPage; use template\page\CusteomPage02; class Novel extends BaseController @@ -329,10 +330,22 @@ class Novel extends BaseController // 小说详情 $arrNovel = $NovelModel->getNovelInfo($intNId); + // 分品拼音 + $arrNovel['category_pinyin'] = CategoryModel::getPinYinByZh($arrNovel['og_novel_category']); + + // 最后章节 $ChapterModel = new ChapterModel; $arrLatestChapter = $ChapterModel->getLatestChapter($intNId); + // 要点 + $strFocus = strip_tags($arrLatestChapter['content']); + $intCount = mb_strlen($strFocus); + if ($intCount > 300) { + $intPos = mt_rand(0, $intCount - 300); + $strFocus = mb_substr($strFocus, $intPos, 300); + } + // 最近五个章节 $arrChapter = $ChapterModel->getChapterAll([ 'n_id' => $intNId, @@ -365,7 +378,7 @@ class Novel extends BaseController 'arrNovel' => $arrNovel, 'arrChapter' => $arrChapter, 'arrNovelClicks' => $arrNovelClicks, - 'arrLatestChapter' => $arrLatestChapter, + 'strFocus' => $strFocus, 'strPageCode' => 'boy', 'strTitle' => $strTitle, ]); @@ -385,10 +398,22 @@ class Novel extends BaseController public function getNovelNewsChapter(Request $Request) { + $boolIsMobile = $Request->param('boolIsMobile'); + $intNId = $Request->param('n_id'); + // 小说详情 + $NovelModel = new NovelModel; + $arrNovel = $NovelModel->getNovelInfo($intNId); + + // 最新章节 + $ChapterModel = new ChapterModel; + $arrChapter = $ChapterModel->getLatestChapter($intNId); + + // 上一章节和下一章节 + $arrPreChapter = $ChapterModel->getPreChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); + $arrNextChapter = $ChapterModel->getNextChapter($arrChapter['n_id'], $arrChapter['c_sort_num'], $arrChapter['c_page']); - $boolIsMobile = $Request->param('boolIsMobile'); // 模拟数据-随机推荐数据10条 $arrNewsNovel = [ diff --git a/code/app/home/view/kuangyu/Pc/getNovelInfo.html b/code/app/home/view/kuangyu/Pc/getNovelInfo.html index 67a3391..5d4fcd6 100644 --- a/code/app/home/view/kuangyu/Pc/getNovelInfo.html +++ b/code/app/home/view/kuangyu/Pc/getNovelInfo.html @@ -17,7 +17,7 @@
最新要点
- {$arrLatestChapter.content}
+ {$strFocus} 展开类别: - {$arrNovel.og_novel_category} diff --git a/code/app/model/CategoryModel.php b/code/app/model/CategoryModel.php index af7dd11..55fc671 100644 --- a/code/app/model/CategoryModel.php +++ b/code/app/model/CategoryModel.php @@ -70,4 +70,10 @@ class CategoryModel extends MongoModel { return self::$arrWomen; } + + static public function getPinYinByZh(string $strZh) + { + $intKey = array_search($strZh, self::$arrCategory); + return self::$arrCategoryPinYin[$intKey]; + } } diff --git a/code/app/model/ChapterModel.php b/code/app/model/ChapterModel.php index 79cd8ca..c8588c3 100644 --- a/code/app/model/ChapterModel.php +++ b/code/app/model/ChapterModel.php @@ -58,7 +58,6 @@ class ChapterModel extends MongoModel $arrChapter['content'] = StorageCore::getInstance()->read($arrChapter['c_content_path']); } - return $arrChapter; } @@ -78,8 +77,6 @@ class ChapterModel extends MongoModel $arrOptions['limit'] = $intCount; - $arrFilter = []; - $Cursor = $this->getCol()->find($arrFilter, $arrOptions); $arrResult = iterator_to_array($Cursor); @@ -95,4 +92,74 @@ class ChapterModel extends MongoModel return $arrResult; } + + /** + * Undocumented function + * + * @param integer $intNId + * @param integer $intCSortNum + * @param integer $intCPage + * @return null|array + */ + public function getPreChapter(int $intNId, int $intCSortNum, int $intCPage): null|array + { + $arrFilter = [ + '$and' => [ + [ + '$or' => [ + ['c_sort_num' => ['$lt' => $intCSortNum]], + [ + '$and' => [ + ['c_sort_num' => ['$eq' => $intCSortNum]], + ['c_page' => ['$lt' => $intCPage]] + ] + ] + ] + ], + ['n_id' => $intNId] + ] + ]; + + + $arrSort = [ + 'c_sort_num' => -1, + 'c_page' => -1, + ]; + return $this->getChapterAll($arrFilter, 1, $arrSort); + } + + /** + * Undocumented function + * + * @param integer $intNId + * @param integer $intCSortNum + * @param integer $intCPage + * @return null|array + */ + public function getNextChapter(int $intNId, int $intCSortNum, int $intCPage): null|array + { + $arrFilter = [ + '$and' => [ + [ + '$or' => [ + ['c_sort_num' => ['$gt' => $intCSortNum]], + [ + '$and' => [ + ['c_sort_num' => ['$eq' => $intCSortNum]], + ['c_page' => ['$gt' => $intCPage]] + ] + ] + ] + ], + ['n_id' => $intNId] + ] + ]; + + + $arrSort = [ + 'c_sort_num' => 1, + 'c_page' => 1, + ]; + return $this->getChapterAll($arrFilter, 1, $arrSort); + } } diff --git a/code/app/model/NovelModel.php b/code/app/model/NovelModel.php index cc42988..a94f350 100644 --- a/code/app/model/NovelModel.php +++ b/code/app/model/NovelModel.php @@ -102,12 +102,13 @@ class NovelModel extends MongoModel foreach ($arrResult as &$arrItem) { applyToKeys($arrItem, ['created_at', 'updated_at'], 'formatMongoDate'); - } return $arrResult; } + + /** * Undocumented function *