This commit is contained in:
Default
2025-03-27 23:10:03 +08:00
parent 81b573c296
commit dd0d52f693
45 changed files with 2502 additions and 1279 deletions

View File

@@ -2,6 +2,8 @@
declare(strict_types=1);
use app\admin\controller\Domain;
use app\admin\controller\Novel;
use app\admin\middleware\AdminAuth;
use think\facade\Route;
@@ -24,37 +26,19 @@ Route::group("/system", function () {
Route::get("/cjpz/list", "SystemConfig/getCaiJiPeiZhiList")->name("SystemConfig@getCaiJiPeiZhiList");
Route::post("/cjpz/save", "SystemConfig/saveCaiJiPeiZhi")->name("SystemConfig@saveCaiJiPeiZhi");
Route::get("/zydd/list", "SystemConfig/getZiYuanDuanDianList")->name("SystemConfig@getZiYuanDuanDianList");
Route::post("/zydd/save", "SystemConfig/saveZiYuanDuanDian")->name("SystemConfig@saveZiYuanDuanDian");
Route::get("/plan/list", "SystemConfig/getPlanTaskList")->name("SystemConfig@getPlanTaskList");
Route::post("/plan/save", "SystemConfig/savePlanTask")->name("SystemConfig@savePlanTask");
Route::get("/keyword/list", "SeoKeywords/getSeoKeywordList")->name("SeoKeywords@getSeoKeywordList");
Route::post("/keyword/save", "SeoKeywords/saveSeoKeyword")->name("SeoKeywords@saveSeoKeyword");
Route::post("/keyword/del", "SeoKeywords/delSeoKeyword")->name("SeoKeywords@delSeoKeyword");
})->middleware(AdminAuth::class);
# 广告
Route::group("/guanggao", function () {
# 主
Route::get("/main/group/list", "GuangGao/getGuangGaoFenZuList")->name("GuangGao@getGuangGaoFenZuList");
Route::post("/main/group/save", "GuangGao/saveGuangGaoFenZu")->name("GuangGao@saveGuangGaoFenZu");
Route::post("/main/group/del", "GuangGao/delGuangGaoFenZu")->name("GuangGao@delGuangGaoFenZu");
Route::get("/main/list", "GuangGao/getGuangGaoList")->name("GuangGao@getGuangGaoList");
Route::post("/main/save", "GuangGao/saveGuangGao")->name("GuangGao@saveGuangGao");
Route::post("/main/del", "GuangGao/delGuangGao")->name("GuangGao@delGuangGao");
# 广告配置
Route::get("/ggpz/list", "GuangGao/getGuangGaoPeiZhiList")->name("GuangGao@getGuangGaoPeiZhiList");
Route::post("/ggpz/save", "GuangGao/saveGuangGaoPeiZhi")->name("GuangGao@saveGuangGaoPeiZhi");
})->middleware(AdminAuth::class);
# 小说
Route::group("/xiaoshuo", function () {
Route::get("/main/list", "XiaoShuo/getXiaoShuoList")->name("XiaoShuo@getXiaoShuoList");
Route::get("/zhangjie/list", "XiaoShuo/getXiaoShuoZhangJieList")->name("XiaoShuo@getXiaoShuoZhangJieList");
Route::get("/fenlei/list", "XiaoShuo/getXiaoShuoFenLeiList")->name("XiaoShuo@getXiaoShuoFenLeiList");
Route::group("/novel", function () {
Route::get("/list", [Novel::class, "getNovelList"])->name("Domain@getNovelList");
Route::post("/level/set", [Novel::class, "updateNovelLevel"])->name("Novel@updateNovelLevel");
Route::get("/category/list", [Novel::class, "getCategory"])->name("Domain@getCategory");
})->middleware(AdminAuth::class);
# 站点
Route::group("/site", function () {
Route::get("/domain/list", [Domain::class, "getDomainList"])->name("Domain@getDomainList");
Route::post("/domain/upload", [Domain::class, "uploadDomain"])->name("Domain@uploadDomain");
})->middleware(AdminAuth::class);

View File

@@ -0,0 +1,118 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\DomainModel;
use app\Request;
use PhpOffice\PhpSpreadsheet\IOFactory;
use think\Response;
class Domain extends BaseController
{
/**
* upload site domain info file
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function uploadDomain(Request $Request, ?AdminUserModel $AdminUserModel)
{
$File = $Request->file('excel_file');
if (!$File) {
return $this->error("9999", '请上传 Excel 文件');
}
try {
$arrAllowedExt = ['xls', 'xlsx'];
$strExt = $File->getOriginalExtension();
if (!in_array($strExt, $arrAllowedExt)) {
return $this->error("9999", '仅支持 xls 或 xlsx 文件');
}
$FilePath = $File->getPathname();
$Spreadsheet = IOFactory::load($FilePath);
$Sheet = $Spreadsheet->getActiveSheet();
$arrData = $Sheet->toArray();
array_shift($arrData);
foreach ($arrData as $arrRows) {
$arrDomain = [
'd_domain' => $arrRows[0],
't_id' => $arrRows[1],
'd_title' => $arrRows[2],
'd_keywords' => $arrRows[3],
'd_description' => $arrRows[4],
'd_statis' => $arrRows[5],
'd_logo_type' => (int)$arrRows[6],
'd_text_log' => $arrRows[7],
'd_img_log' => $arrRows[8],
];
$DomainModel = DomainModel::where('d_domain', $arrDomain['d_domain'])->findOrEmpty();
$DomainModel->fill($arrDomain);
$DomainModel->save();
}
return $this->success();
} catch (\Exception $e) {
return $this->error("9999", '导入失败: ' . $e->getMessage());
}
}
/**
* 列表
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getDomainList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"page" => $Request->get('page', 1),
"limit" => $Request->get('limit', 10),
"key" => $Request->get('key'),
];
$arrRule = [
'page' => 'require|number',
'limit' => 'require|number',
];
$this->validate($arrData, $arrRule);
$DomainModel = DomainModel::alias('d');
if (!empty($arrData['key'])) {
$strKey = $arrData['key'];
$DomainModel->where(function ($DomainModel) use ($strKey) {
$DomainModel->whereOr([
['d.d_domain', 'like', "%" . $strKey . "%"],
['d.d_id', 'like', "%" . $strKey . "%"],
]);
});
}
$Paginate = $DomainModel->paginate([
'list_rows' => $arrData['limit'],
'page' => $arrData['page'],
]);
$arrResult = [
'items' => $Paginate->items(),
'total' => $Paginate->total(),
'current_page' => $Paginate->currentPage(),
'total_pages' => $Paginate->lastPage(),
];
return $this->success($arrResult);
}
}

View File

@@ -0,0 +1,115 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\CategoryModel;
use app\model\FenLeiModel;
use app\model\GuangGaoFenZuModel;
use app\model\GuangGaoModel;
use app\model\GuangGaoPeiZhiModel;
use app\model\NovelModel;
use app\model\NvYouModel;
use app\model\ShiPinModel;
use app\Request;
use think\Response;
class Novel extends BaseController
{
/**
* 根据关键词修改小说评级
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function updateNovelLevel(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"keywords" => $Request->post('keywords'),
"n_level" => (int)$Request->post('n_level'),
];
$arrRule = [
'keywords' => 'require',
'n_level' => 'require',
];
$this->validate($arrData, $arrRule);
$arrKeywords = explode(',', $arrData['keywords']);
$NovelModel = new NovelModel;
$NovelModel->updateByKeywords($arrKeywords, $arrData['n_level']);
return $this->success();
}
/**
* 小说分页
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getNovelList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$intPage = $Request->param('page', 1, 'intval');
$intLimit = $Request->param('limit', 10, 'intval');
try {
$NovelModel = new NovelModel;
$Col = $NovelModel->getCol();
// 查询条件(可选)
$arrFilter = [];
// 示例:如果需要筛选,例如 status=1
// $arrFilter['status'] = 1;
$arrOptions = [
'sort' => ['_id' => -1],
'skip' => ($intPage - 1) * $intLimit,
'limit' => $intLimit,
];
$Cursor = $Col->find($arrFilter, $arrOptions);
$arrData = iterator_to_array($Cursor);
$intTotal = $Col->countDocuments($arrFilter);
$arrResult = [
'code' => 200,
'msg' => '查询成功',
'data' => $arrData,
'total' => $intTotal,
'page' => $intPage,
'limit' => $intLimit,
'pages' => ceil($intTotal / $intLimit)
];
return $this->success($arrResult);
} catch (\Exception $e) {
return $this->error("9999", $e->getMessage());
}
}
/**
* get category data
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return void
*/
public function getCategory(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrResult = [
'all' => CategoryModel::getCategory(),
'man' => CategoryModel::getManCategory(),
'women' => CategoryModel::getWomenCategory(),
];
return $this->success($arrResult);
}
}