This commit is contained in:
Default
2025-04-17 17:29:51 +08:00
parent efad19295d
commit 1f8c738381
16 changed files with 466 additions and 215 deletions

View File

@@ -0,0 +1,27 @@
<?php
namespace app\services;
use app\model\ChapterModel;
class ChapterService
{
/**
* SiteContext
*
* @var SiteContext
*/
public $SiteContext;
/**
* ChapterModel
*
* @var ChapterModel
*/
public $ChapterModel;
public function __construct(SiteContext $SiteContext)
{
$this->ChapterModel = ChapterModel::getInstance();
}
}

View File

@@ -0,0 +1,254 @@
<?php
namespace app\services;
use app\model\DomainModel;
use app\model\NovelModel;
class NovelService
{
/**
* SiteContext
*
* @var SiteContext
*/
public $SiteContext;
/**
* NovelModel
*
* @var NovelModel
*/
public $NovelModel;
public function __construct(SiteContext $SiteContext)
{
$this->SiteContext = $SiteContext;
$this->NovelModel = NovelModel::getInstance();
}
/**
* GetNovelInfoUrl
*
* @param int $intNId
* @param string $intPinYin
* @return string
*/
public function getNovelInfoUrl($intNId, $intPinYin): string
{
$strKey = 'NOVEL_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'intNId' => $intNId,
'strPinYin' => $intPinYin
]);
return (string)$strUrl;
}
/**
* GetForgeNovelInfoUrl
* 伪造小说
* @param int $intNId
* @param string $intPinYin
* @return string
*/
public function getForgeNovelInfoUrl($intNId, $intPinYin, $intNForgeId): string
{
$strKey = 'KAN_NOVEL_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'intNId' => $intNId,
'strPinYin' => $intPinYin,
'intNForgeId' => $intNForgeId,
]);
return (string)$strUrl;
}
/**
* GetNovelChapterUrl
*
* @param int $intNId
* @param string $intPinYin
* @return string
*
*/
public function getNovelChapterUrl($intNId, $intPinYin, $intChapterSort, $intChapterPage = 1): string
{
$strKey = 'CONTENT_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'intNId' => $intNId,
'strPinYin' => $intPinYin,
'intChapterSort' => $intChapterSort,
'intChapterPage' => $intChapterPage,
]);
return (string)$strUrl;
}
/**
* GetNovelLasterChapterUrl
*
* @param int $intNId
* @param string $intPinYin
* @return string
*
*/
public function getNovelLasterChapterUrl($intNId, $intPinYin): string
{
$strKey = 'NEWS_CONTENT_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'intNId' => $intNId,
'strPinYin' => $intPinYin,
]);
return (string)$strUrl;
}
/**
* GetNovelCategoryUrl
* 小说分类
* @param int $intNId
* @param string $intPinYin
* @return string
*
*/
public function getNovelCategoryUrl($strGender, $strCategory, $strStatus, $intPage): string
{
$strKey = 'CATEGORY_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'strGender' => $strGender,
'strCategory' => $strCategory,
'strStatus' => $strStatus,
'intPage' => $intPage,
]);
return (string)$strUrl;
}
/**
* getNovelCatalogUrl
* 小说目录
* @param int $intNId
* @param string $intPinYin
* @return string
*
*/
public function getNovelCatalogUrl($intNId, $intPinYin, $strOrder, $intPage = 1): string
{
$strKey = 'NOVEL_CATALOG_URL';
$strUrl = $this->getPageUrl($strKey, [
'intNId' => $intNId,
'strPinYin' => $intPinYin,
'strOrder' => $strOrder,
'intPage' => $intPage,
]);
return (string)$strUrl;
}
/**
* Undocumented function
*
* @param int $intPage
* @param string $strKeyWords
* @return string
*/
public function getNovelSearchUrl($strKeyWords, $intPage = 1): string
{
$strKey = 'SEARCH_INFO_URL';
$strUrl = $this->getPageUrl($strKey, [
'intPage' => $intPage,
'strSearchKeywords' => $strKeyWords
]);
return (string)$strUrl;
}
/**
* Undocumented function
*
* @param array $arrArgs
* @return string
*/
public function getPageUrl($strKey, array $arrArgs,): string
{
$strSfVal = $this->SiteContext->DomainModel->getFomartSubject($strKey, '', false);
$arrKeys = [];
$arrVals = [];
foreach ($arrArgs as $strKey => $strVal) {
$arrKeys[] = '{' . $strKey . '}';
$arrVals[] = $strVal;
}
return str_replace($arrKeys, $arrVals, $strSfVal);
}
protected $arrSortType = [
'day_desc' => 'daily',
'week_desc' => 'weekly',
'month_desc' => 'monthly',
'total_desc' => 'total',
'tuijian_desc' => 'total',
];
protected $arrStatus = [
'all' => NULL,
'lianzai' => '连载中',
'wanjie' => '已完结',
];
/**
* 获取小说数据
*
* @param array $arrParams
* @return void
*/
public function getNovelData(array $arrParams): array
{
// 提取参数
$intPage = (int)$arrParams['page'] ?? 0;
$intLimit = (int)$arrParams['limit'] ?? 10;
$strNCategory = $arrParams['n_category'] ?? '';
$strSortType = (string)$arrParams['sort_type'] ?? '';
$strNStatus = (string) $arrParams['n_status'] ?? '';
$strNSex = (string) $arrParams['n_sex'] ?? '';
$strKey = (string) $arrParams['key'] ?? '';
$strDiffKey = (string) $arrParams['diff_key'] ?? '';
$intCacheKey = (int)$arrParams['cache_life'] ?? 0;
echo $intPage;
print_r($arrParams);
exit;
if ($intPage == 0) {
} else {
}
// 模拟数据处理(可以根据实际需求从数据库获取数据)
$data = [];
for ($i = 1; $i <= $arrParams['limit']; $i++) {
$data[] = [
'id' => $i,
'name' => "小说名称 {$i}",
'category' => $arrParams['n_category'] ?? '默认分类',
'status' => $arrParams['n_status'] ?? '连载中',
'order' => $arrParams['sort_type'] ?? '默认排序',
];
}
// 分页数据
$p_data = [
'current_page' => $arrParams['page'],
'total_page' => 5,
'total_count' => 50,
];
return [
'data' => $data,
'p_data' => $p_data,
];
}
}

View File

@@ -0,0 +1,72 @@
<?php
namespace app\services;
use app\model\DomainModel;
use app\model\TemplatesModel;
use think\facade\Request;
use think\facade\Config;
use think\exception\HttpException;
class SiteContext
{
/**
* Request
*
* @var \think\Request
*/
public $Request;
/**
* DomainModel
*
* @var DomainModel
*/
public $DomainModel;
/**
* TemplatesModel
*
* @var TemplatesModel
*/
public $TemplatesModel;
public function __construct()
{
$this->Request = request();
}
/**
* GetViewConfig
*
* @return array
*/
public function getViewConfig(): array
{
$strDomain = $this->Request->rootDomain();
$this->DomainModel = DomainModel::getDomainOnCacheByDomain($strDomain);
if (empty($this->DomainModel)) {
throw new HttpException(404, 'Site config not Found');
}
$this->TemplatesModel = TemplatesModel::getTemplateOnCacheByTId($this->DomainModel->t_id);
if (empty($this->DomainModel)) {
throw new HttpException(500, 'Site template not Found');
}
$this->Request->DomainModel = $this->DomainModel;
$this->Request->TemplatesModel = $this->TemplatesModel;
return [
'type' => 'Think',
'auto_rule' => 3,
'view_dir_name' => 'view',
'view_suffix' => 'html',
'view_path' => root_path(ltrim($this->TemplatesModel->t_path, '/')),
];
}
}