feature: crawler wuxian video

bug-fix : video author
This commit is contained in:
Default
2025-05-01 20:14:52 +08:00
parent 3e270591b2
commit 83adda543a
12 changed files with 1238 additions and 7 deletions

View File

@@ -7,6 +7,7 @@ use app\admin\controller\Domain;
use app\admin\controller\Novel;
use app\admin\controller\Site;
use app\admin\controller\SystemConfig;
use app\admin\controller\Video;
use app\admin\middleware\AdminAuth;
use think\facade\Route;
@@ -38,7 +39,14 @@ Route::group("/system", function () {
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");
Route::get("/category/list", [Novel::class, "getCategory"])->name("Novel@getCategory");
})->middleware(AdminAuth::class);
# 视频
Route::group("/video", function () {
Route::get("/list", [Video::class, "getVideoList"])->name("Domain@getVideoList");
Route::post("/level/set", [Video::class, "updateVideoLevel"])->name("Video@updateVideoLevel");
Route::get("/category/list", [Video::class, "getCategory"])->name("Video@getCategory");
})->middleware(AdminAuth::class);
# 站点

View File

@@ -0,0 +1,104 @@
<?php
declare(strict_types=1);
namespace app\admin\controller;
use app\admin\BaseController;
use app\model\AdminUserModel;
use app\model\VideoModel;
use app\model\VideoCategoryModel;
use app\Request;
use think\Response;
class Video extends BaseController
{
/**
* 根据关键词修改小说评级
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function updateVideoLevel(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrData = [
"keywords" => $Request->post('keywords'),
"v_level" => (int)$Request->post('v_level'),
];
$arrRule = [
'keywords' => 'require',
'v_level' => 'require',
];
$this->validate($arrData, $arrRule);
$arrKeywords = explode(',', $arrData['keywords']);
$VideoModel = VideoModel::getInstance();
$VideoModel->updateByKeywords($arrKeywords, $arrData['v_level']);
return $this->success();
}
/**
* 小说分页
*
* @param Request $Request
* @param AdminUserModel|null $AdminUserModel
* @return Response
*/
public function getVideoList(Request $Request, ?AdminUserModel $AdminUserModel)
{
$intPage = $Request->param('page', 1, 'intval');
$intLimit = $Request->param('limit', 10, 'intval');
try {
$VideoModel = VideoModel::getInstance();
$Col = $VideoModel->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 = [
'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 Response
*/
public function getCategory(Request $Request, ?AdminUserModel $AdminUserModel)
{
$arrResult = VideoCategoryModel::$arrCategory;
return $this->success($arrResult);
}
}