作者 刘锟

合并分支 'akun' 到 'master'

Akun



查看合并请求 !82
  1 +<?php
  2 +
  3 +namespace App\Console\Commands\Update;
  4 +
  5 +use App\Models\Blog\Blog;
  6 +use App\Models\Com\UpdateLog;
  7 +use App\Models\News\News;
  8 +use App\Services\ProjectServer;
  9 +use Illuminate\Console\Command;
  10 +use Illuminate\Support\Facades\DB;
  11 +
  12 +/**
  13 + * 4.0,5.0升级到6.0,内容同步
  14 + * Class ProjectImport
  15 + * @package App\Console\Commands
  16 + * @author Akun
  17 + * @date 2023/10/9 15:04
  18 + */
  19 +class Temp extends Command
  20 +{
  21 + /**
  22 + * The name and signature of the console command.
  23 + *
  24 + * @var string
  25 + */
  26 + protected $signature = 'project_update_temp';
  27 +
  28 + /**
  29 + * The console command description.
  30 + *
  31 + * @var string
  32 + */
  33 + protected $description = '执行项目升级任务';
  34 +
  35 +
  36 + public function handle()
  37 + {
  38 + $this->start_update();
  39 + }
  40 +
  41 + protected function start_update()
  42 + {
  43 + $list = UpdateLog::where('project_id', 437)->where('api_type', 'news')->get();
  44 +
  45 + foreach ($list as $task) {
  46 + $project_id = $task->project_id;
  47 + $api_type = $task->api_type;
  48 + $api_url_arr = explode('?', $task->api_url);
  49 + $api_url = $api_url_arr[0];
  50 +
  51 + $page_size = 20;
  52 +
  53 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', task_type: ' . $api_type . ', update start' . PHP_EOL;
  54 +
  55 +
  56 + //设置数据库
  57 + $project = ProjectServer::useProject($project_id);
  58 + if ($project) {
  59 + //新闻或博客
  60 + $url = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => 1, 'pagesize' => 0]);
  61 + $data = curl_c($url);
  62 + if (isset($data['code']) && $data['code'] == 200) {
  63 + $count = $data['data']['count'] ?? 0;
  64 +
  65 + $total_page = ceil($count / $page_size);
  66 + for ($page = 1; $page <= $total_page; $page++) {
  67 + $url_page = $api_url . '?' . http_build_query(['w' => $api_type, 'page' => $page, 'pagesize' => $page_size]);
  68 + $data_page = curl_c($url_page);
  69 + if (isset($data_page['code']) && $data_page['code'] == 200) {
  70 + $items = $data_page['data']['data'] ?? [];
  71 +
  72 + if ($api_type == 'news') {
  73 + $model = new News();
  74 + } else {
  75 + $model = new Blog();
  76 + }
  77 +
  78 + foreach ($items as $item) {
  79 +
  80 + if ($item['ttile'] ?? '') {
  81 + $news = $model->read(['name' => $item['ttile']], 'id');
  82 + if ($news) {
  83 + try {
  84 + if (is_array($item['images'])) {
  85 + $image = $item['images'][0] ?? '';
  86 + } else {
  87 + $image = $item['images'] ?? '';
  88 + }
  89 + $model->edit(['image' => $image], ['id' => $news['id']]);
  90 + } catch (\Exception $e) {
  91 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', error: ' . $e->getMessage() . PHP_EOL;
  92 + continue;
  93 + }
  94 + }
  95 + }
  96 + }
  97 + }
  98 + }
  99 + } else {
  100 + continue;
  101 + }
  102 + }
  103 + //关闭数据库
  104 + DB::disconnect('custom_mysql');
  105 +
  106 + echo 'date:' . date('Y-m-d H:i:s') . ', task_id: ' . $task->id . ', task_type: ' . $api_type . ', update end ' . PHP_EOL;
  107 + }
  108 + }
  109 +}