作者 刘锟

Merge remote-tracking branch 'origin/master' into akun

... ... @@ -16,9 +16,12 @@ use App\Models\Product\Keyword;
use App\Models\Product\Product;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redis;
class VideoTask extends Command
{
... ... @@ -50,15 +53,19 @@ class VideoTask extends Command
* @var int 最大子任务
*/
public $max_sub_task = 200;
public $max_num = 49000;
/**
* @return bool
*/
public function handle()
{
echo '开始:'.PHP_EOL;
Log::info('开始视频推广任务');
$this->createSubTask();
$number = KeywordVideoTaskLog::getMonthVideoNum();
if($number >= $this->max_num){
Log::info('当月以达到最大视频生成数,任务执行数:' . $number);
return true;
}
$this->createSubTask($number);
$this->sendSubTask();
Log::info('结束视频推广任务');
return true;
... ... @@ -69,13 +76,16 @@ class VideoTask extends Command
* TODO 获取需要生成子任务的项目,获取项目中未生成视频的关键词,通过关键词生成初始化子任务
* @return bool
*/
public function createSubTask()
public function createSubTask($number)
{
$sub_task_num = $this->max_sub_task;
while (true) {
if ($sub_task_num <= 0){
break;
}
if($number >= $this->max_num){
break;
}
$task_project = KeywordVideoTask::where(['status' => KeywordVideoTask::STATUS_OPEN])->orderBy('sort', 'desc')->orderBy('id', 'desc')->first();
if (empty($task_project)){
break;
... ... @@ -124,6 +134,7 @@ class VideoTask extends Command
}
}
}
Cache::put('video_keyword_number_month',$number + count($keyword),3600);
$task_project->status = KeywordVideoTask::STATUS_CLOSE;
$task_project->save();
}
... ...
... ... @@ -48,15 +48,14 @@ class Demo extends Command
protected $description = 'demo';
public function handle(){
$p = new PurchaserInfo();
$lists = $p->list();
foreach ($lists as $k => $v){
$info = $p->read(['project_id'=>$v['project_id'],'keyword'=>$v['keyword'],'buyer'=>$v['buyer']]);
if($info === false){
continue;
$this->synchronizationFile('/upload/p/1720/file/2024-07/4d.mp4');
}
$p->del(['project_id'=>$v['project_id'],'keyword'=>$v['keyword'],'buyer'=>$v['buyer'],'id'=>['!=',$v['id']]]);
}
return true;
public function synchronizationFile($path_name){
//同步到大文件
$file_path = config('filesystems.disks.cos')['cdn1'].$path_name;
$directoryPath = pathinfo($path_name, PATHINFO_DIRNAME);
$cmd = 'curl -F "file_path='.$file_path.'" -F "save_path=/www/wwwroot/cos'.$directoryPath.'" https://v6-file.globalso.com/upload.php';
return shell_exec($cmd);
}
}
... ...
... ... @@ -36,7 +36,7 @@ class Kernel extends ConsoleKernel
$schedule->command('recommended_suppliers')->dailyAt('03:00')->withoutOverlapping(1); //每天凌晨1点执行一次生成推荐商
$schedule->command('update_keyword_content')->hourly()->withoutOverlapping(1);
// 每月15号执行任务
$schedule->command('delete_template_log')->monthlyOn(15, '00:00')->withoutOverlapping();
$schedule->command('delete_template_log')->monthlyOn(15, '00:01')->withoutOverlapping();
// 每日推送已完成视频任务项目生成对应界面
$schedule->command('notice_c')->dailyAt('04:00')->withoutOverlapping(1);
}
... ...
... ... @@ -473,7 +473,7 @@ class ProductLogic extends BaseLogic
$v['updated_at'] = date('Y-m-d H:i:s');
$data[] = $v;
}
return $extendList->insert($data);
return $extendInfoModel->insert($data);
}
return $this->success();
}
... ...
... ... @@ -10,6 +10,8 @@
namespace App\Models\Com;
use App\Models\Base;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
class KeywordVideoTaskLog extends Base
{
... ... @@ -19,4 +21,26 @@ class KeywordVideoTaskLog extends Base
const STATUS_ERROR = 3;
protected $table = 'gl_keyword_video_task_log';
/**
* 获取当月视频生成数量
* FIXME 混剪视频订阅计划 50000/m
* @return mixed
*/
public static function getMonthVideoNum()
{
$key = 'video_keyword_number_month';
$num = Cache::get($key, function () use ($key) {
$this_day = date('d');
if($this_day >= 13) {
$start_date = Carbon::now()->day(13)->format('Y-m-d 00:00:00');
} else {
$start_date = Carbon::now()->subMonth()->day(13)->format('Y-m-d 00:00:00');
}
$num = self::where('created_at', '>', $start_date)->count();
Cache::put($key, $num, 3600);
return $num;
});
return $num;
}
}
... ...
... ... @@ -9,10 +9,10 @@ use Illuminate\Support\Facades\Route;
Route::middleware(['aloginauth'])->group(function () {
Route::get('/', [Aside\Com\IndexController::class, 'index'])->name('admin.home.white');
Route::get('/get_menu', [Aside\Com\IndexController::class, 'get_menu'])->name('admin.get_menu.white');
Route::any('/', [Aside\Com\IndexController::class, 'index'])->name('admin.home.white');
Route::any('/get_menu', [Aside\Com\IndexController::class, 'get_menu'])->name('admin.get_menu.white');
Route::any('/editPassword', [Aside\Com\IndexController::class, 'editPassword'])->name('admin.editPassword.white');
Route::get('/logout', [Aside\LoginController::class, 'logout'])->name('admin.logout.white');
Route::any('/logout', [Aside\LoginController::class, 'logout'])->name('admin.logout.white');
Route::any('/getAccessAddress', [Aside\LoginController::class, 'getAccessAddress'])->name('admin.getAccessAddress');//获取B端地址
Route::any('/sendNotify', [Aside\Com\CNoticeController::class, 'sendNotify'])->name('admin.sendNotify');
Route::any('/getCountry', [Aside\Com\CNoticeController::class, 'getCountry'])->name('admin.getCountry');
... ... @@ -106,8 +106,8 @@ Route::middleware(['aloginauth'])->group(function () {
//菜单
Route::prefix('menu')->group(function () {
Route::get('/', [Aside\Manage\MenuController::class, 'list'])->name('admin.menu');
Route::get('/info', [Aside\Manage\MenuController::class, 'info'])->name('admin.menu_info');
Route::any('/', [Aside\Manage\MenuController::class, 'list'])->name('admin.menu');
Route::any('/info', [Aside\Manage\MenuController::class, 'info'])->name('admin.menu_info');
Route::post('/save', [Aside\Manage\MenuController::class, 'save'])->name('admin.menu_save');
Route::any('/delete', [Aside\Manage\MenuController::class, 'delete'])->name('admin.menu_delete');
Route::any('/sort', [Aside\Manage\MenuController::class, 'setSort'])->name('admin.menu_sort');
... ... @@ -122,27 +122,27 @@ Route::middleware(['aloginauth'])->group(function () {
});
//权限组
Route::prefix('group')->group(function () {
Route::get('/', [Aside\Manage\GroupController::class, 'list'])->name('admin.group');
Route::get('/info', [Aside\Manage\GroupController::class, 'info'])->name('admin.group_info');
Route::any('/', [Aside\Manage\GroupController::class, 'list'])->name('admin.group');
Route::any('/info', [Aside\Manage\GroupController::class, 'info'])->name('admin.group_info');
Route::post('/save', [Aside\Manage\GroupController::class, 'save'])->name('admin.group_save');
Route::any('/delete', [Aside\Manage\GroupController::class, 'delete'])->name('admin.group_delete');
});
//部门
Route::prefix('dept')->group(function () {
Route::get('/', [Aside\Manage\DeptController::class, 'lists'])->name('admin.dept');
Route::get('/info', [Aside\Manage\DeptController::class, 'info'])->name('admin.dept_info');
Route::any('/', [Aside\Manage\DeptController::class, 'lists'])->name('admin.dept');
Route::any('/info', [Aside\Manage\DeptController::class, 'info'])->name('admin.dept_info');
Route::post('/save', [Aside\Manage\DeptController::class, 'save'])->name('admin.dept_save');
Route::any('/delete', [Aside\Manage\DeptController::class, 'delete'])->name('admin.dept_delete');
});
//人事管理
Route::prefix('hr')->group(function () {
Route::get('/', [Aside\Manage\HrController::class, 'list'])->name('admin.hr');
Route::get('/info', [Aside\Manage\HrController::class, 'info'])->name('admin.hr_info');
Route::any('/', [Aside\Manage\HrController::class, 'list'])->name('admin.hr');
Route::any('/info', [Aside\Manage\HrController::class, 'info'])->name('admin.hr_info');
Route::post('/save', [Aside\Manage\HrController::class, 'save'])->name('admin.hr_save');
Route::post('/sort', [Aside\Manage\HrController::class, 'sort'])->name('admin.hr_sort');
Route::get('/getSearchParamsList', [Aside\Manage\HrController::class, 'getSearchParamsList'])->name('admin.hr_getSearchParamsList');
Route::any('/getSearchParamsList', [Aside\Manage\HrController::class, 'getSearchParamsList'])->name('admin.hr_getSearchParamsList');
});
//管理员日志
... ... @@ -159,8 +159,8 @@ Route::middleware(['aloginauth'])->group(function () {
//项目管理
Route::prefix('project')->group(function () {
Route::get('/', [Aside\Project\ProjectController::class, 'lists'])->name('admin.project');
Route::get('/info', [Aside\Project\ProjectController::class, 'info'])->name('admin.project_info');
Route::any('/', [Aside\Project\ProjectController::class, 'lists'])->name('admin.project');
Route::any('/info', [Aside\Project\ProjectController::class, 'info'])->name('admin.project_info');
Route::post('/save', [Aside\Project\ProjectController::class, 'save'])->name('admin.project_save');
Route::any('/deleteMinorLanguages', [Aside\Project\ProjectController::class, 'deleteMinorLanguages'])->name('admin.project_deleteMinorLanguages');
Route::any('/inquiry_set', [Aside\Project\ProjectController::class, 'inquiry_set'])->name('admin.project_inquiry_set');
... ... @@ -220,8 +220,8 @@ Route::middleware(['aloginauth'])->group(function () {
});
//工单管理
Route::prefix('task')->group(function () {
Route::get('/', [Aside\Task\TaskController::class, 'list'])->name('admin.task');
Route::get('/info', [Aside\Task\TaskController::class, 'info'])->name('admin.task_info');
Route::any('/', [Aside\Task\TaskController::class, 'list'])->name('admin.task');
Route::any('/info', [Aside\Task\TaskController::class, 'info'])->name('admin.task_info');
Route::post('/save', [Aside\Task\TaskController::class, 'save'])->name('admin.task_save');
Route::post('/status', [Aside\Task\TaskController::class, 'status'])->name('admin.task_status');
Route::post('/save_follow', [Aside\Task\TaskController::class, 'save_follow'])->name('admin.task_save_follow');
... ...