TemplateLog.php 2.6 KB
<?php
/**
 * @remark :
 * @name   :TemplateLog.php
 * @author :lyh
 * @method :post
 * @time   :2024/7/10 14:44
 */

namespace App\Console\Commands\DeleteTemplate;

use App\Models\Project\Project;
use App\Models\Template\BTemplateLog;
use App\Models\User\UserLog;
use App\Services\ProjectServer;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class TemplateLog extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'delete_template_log';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = '定时清理日志';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    public function handle(){
        $this->deleteUserLog();
        $projectModel = new Project();
        $list = $projectModel->list(['delete_status'=>0]);
        foreach ($list as $v){
            echo date('Y-m-d H:i:s') . 'project_id:'.$v['id'] . PHP_EOL;
            ProjectServer::useProject($v['id']);
            $this->deleteTemplate();
            DB::disconnect('custom_mysql');
        }
        echo date('Y-m-d H:i:s') . 'end' . PHP_EOL;
    }

    /**
     * @remark :定时清理可视化日志
     * @name   :deleteTemplate
     * @author :lyh
     * @method :post
     * @time   :2024/7/10 14:48
     */
    public function deleteTemplate(){
        $date = date('Y-m-d H:i:s', strtotime('-30 days'));
        $templateLogModel = new BTemplateLog();
        $templateLogModel->del(['created_at'=>['<=',$date],'source'=>['!=',1]]);
        //查询最近20天是否有装修记录,首页保存最新的20条记录
        $counts = $templateLogModel->counts(['source'=>1,'source_id'=>0,'is_custom'=>0,'created_at'=>['>=',$date]]);
        if($counts == 0){
            $latestIds = $templateLogModel->where(['source'=>1,'is_custom'=>0])->orderBy('created_at', 'desc')->take(20)->pluck('id'); // 仅提取ID字段
            $templateLogModel->del(['id'=>['not in',$latestIds],'source'=>1,'is_custom'=>0,'is_list'=>0]);
        }else{
            $templateLogModel->del(['created_at'=>['<=',$date],'source'=>1]);
        }
        return true;
    }

    /**
     * @remark :清除用户日志
     * @name   :deleteUserLog
     * @author :lyh
     * @method :post
     * @time   :2024/11/13 16:19
     */
    public function deleteUserLog(){
        $date = date('Y-m-d H:i:s', strtotime('-90 days'));
        $userLogModel = new UserLog();
        return $userLogModel->del(['created_at'=>['<=',$date]]);
    }
}