正在显示
5 个修改的文件
包含
141 行增加
和
4 行删除
app/Console/Commands/SyncProject.php
0 → 100644
| 1 | +<?php | ||
| 2 | + | ||
| 3 | +namespace App\Console\Commands; | ||
| 4 | + | ||
| 5 | +use App\Helper\OaGlobalsoApi; | ||
| 6 | +use App\Http\Logic\Aside\Project\ProjectLogic; | ||
| 7 | +use App\Models\NoticeLog; | ||
| 8 | +use App\Models\Project\Project; | ||
| 9 | +use App\Utils\LogUtils; | ||
| 10 | +use Illuminate\Console\Command; | ||
| 11 | +use Illuminate\Support\Facades\Cache; | ||
| 12 | + | ||
| 13 | +/** | ||
| 14 | + * 同步项目信息 | ||
| 15 | + * Class ChannelInfo | ||
| 16 | + * @package App\Console\Commands | ||
| 17 | + * @author zbj | ||
| 18 | + * @date 2023/6/27 | ||
| 19 | + */ | ||
| 20 | +class SyncProject extends Command | ||
| 21 | +{ | ||
| 22 | + /** | ||
| 23 | + * The name and signature of the console command. | ||
| 24 | + * | ||
| 25 | + * @var string | ||
| 26 | + */ | ||
| 27 | + protected $signature = 'sync_project'; | ||
| 28 | + | ||
| 29 | + /** | ||
| 30 | + * The console command description. | ||
| 31 | + * | ||
| 32 | + * @var string | ||
| 33 | + */ | ||
| 34 | + protected $description = '同步项目信息'; | ||
| 35 | + | ||
| 36 | + /** | ||
| 37 | + * Create a new command instance. | ||
| 38 | + * | ||
| 39 | + * @return void | ||
| 40 | + */ | ||
| 41 | + public function __construct() | ||
| 42 | + { | ||
| 43 | + parent::__construct(); | ||
| 44 | + } | ||
| 45 | + | ||
| 46 | + /** | ||
| 47 | + * @return bool | ||
| 48 | + */ | ||
| 49 | + public function handle() | ||
| 50 | + { | ||
| 51 | + $list = NoticeLog::where('type', NoticeLog::TYPE_PROJECT)->where('status', NoticeLog::STATUS_PENDING)->get(); | ||
| 52 | + foreach ($list as $item){ | ||
| 53 | + try { | ||
| 54 | + $api = new OaGlobalsoApi(); | ||
| 55 | + $data = $api->order_info($item['data']['order_id']); | ||
| 56 | + if(!$data || empty($data['data'])){ | ||
| 57 | + LogUtils::error('OaGlobalsoApi order_info error', $data); | ||
| 58 | + $this->retry($item); | ||
| 59 | + } | ||
| 60 | + if($data['data']['order_type'] == '首次'){ | ||
| 61 | + $data['data']['type'] = 1; //建站进程中 | ||
| 62 | + } | ||
| 63 | + if($data['data']['order_type'] == '续费'){ | ||
| 64 | + $data['data']['type'] = 4; //续费记录单 | ||
| 65 | + } | ||
| 66 | + ProjectLogic::instance()->sync($data['data']); | ||
| 67 | + | ||
| 68 | + $item->status = NoticeLog::STATUS_SUCCESS; | ||
| 69 | + $item->save(); | ||
| 70 | + }catch (\Exception $e){ | ||
| 71 | + errorLog('项目同步失败', $item, $e); | ||
| 72 | + $this->retry($item); | ||
| 73 | + } | ||
| 74 | + } | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + /** | ||
| 78 | + * @param NoticeLog $log | ||
| 79 | + */ | ||
| 80 | + public function retry($log){ | ||
| 81 | + if($log->retry >= 3){ | ||
| 82 | + $log->status = NoticeLog::STATUS_FAIL; | ||
| 83 | + }else{ | ||
| 84 | + $log->retry = $log->retry + 1; | ||
| 85 | + } | ||
| 86 | + $log->save(); | ||
| 87 | + } | ||
| 88 | + | ||
| 89 | + | ||
| 90 | +} |
| @@ -28,6 +28,7 @@ class Kernel extends ConsoleKernel | @@ -28,6 +28,7 @@ class Kernel extends ConsoleKernel | ||
| 28 | $schedule->command('web_traffic 2')->cron('*/18 * * * *'); // 引流 4-8个月的项目,18分钟一次 | 28 | $schedule->command('web_traffic 2')->cron('*/18 * * * *'); // 引流 4-8个月的项目,18分钟一次 |
| 29 | $schedule->command('web_traffic 3')->cron('*/12 * * * *'); // 引流 大于9个月的项目,12分钟一次 | 29 | $schedule->command('web_traffic 3')->cron('*/12 * * * *'); // 引流 大于9个月的项目,12分钟一次 |
| 30 | $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每周执行一次 | 30 | $schedule->command('sync_channel')->dailyAt('06:00')->withoutOverlapping(1); // 渠道信息,每周执行一次 |
| 31 | + $schedule->command('sync_project')->everyMinute()->withoutOverlapping(1); //同步项目 | ||
| 31 | // // 更新域名|证书结束时间,每天凌晨1点执行一次 | 32 | // // 更新域名|证书结束时间,每天凌晨1点执行一次 |
| 32 | // $schedule->command('domain_time')->dailyAt('01:00')->withoutOverlapping(1); | 33 | // $schedule->command('domain_time')->dailyAt('01:00')->withoutOverlapping(1); |
| 33 | // // B站 - 网站数据统计 | 34 | // // B站 - 网站数据统计 |
| @@ -3,6 +3,7 @@ | @@ -3,6 +3,7 @@ | ||
| 3 | namespace App\Http\Controllers\Aside; | 3 | namespace App\Http\Controllers\Aside; |
| 4 | 4 | ||
| 5 | use App\Http\Logic\Aside\Project\ProjectLogic; | 5 | use App\Http\Logic\Aside\Project\ProjectLogic; |
| 6 | +use App\Models\NoticeLog; | ||
| 6 | use App\Utils\LogUtils; | 7 | use App\Utils\LogUtils; |
| 7 | 8 | ||
| 8 | /** | 9 | /** |
| @@ -25,9 +26,7 @@ class NoticeController extends BaseController | @@ -25,9 +26,7 @@ class NoticeController extends BaseController | ||
| 25 | { | 26 | { |
| 26 | //首次 续费 | 27 | //首次 续费 |
| 27 | LogUtils::info('notice project', $this->param); | 28 | LogUtils::info('notice project', $this->param); |
| 28 | - if($this->param['order_type'] == '首次'){ | ||
| 29 | - $logic->sync($this->param); | ||
| 30 | - } | 29 | + NoticeLog::createLog(NoticeLog::TYPE_PROJECT, $this->param); |
| 31 | return $this->success(); | 30 | return $this->success(); |
| 32 | } | 31 | } |
| 33 | 32 |
| @@ -16,6 +16,7 @@ use App\Models\Project\DeployBuild; | @@ -16,6 +16,7 @@ use App\Models\Project\DeployBuild; | ||
| 16 | use App\Models\Project\DeployOptimize; | 16 | use App\Models\Project\DeployOptimize; |
| 17 | use App\Models\Project\Payment; | 17 | use App\Models\Project\Payment; |
| 18 | use App\Models\Project\Project; | 18 | use App\Models\Project\Project; |
| 19 | +use Illuminate\Support\Facades\Cache; | ||
| 19 | use Illuminate\Support\Facades\DB; | 20 | use Illuminate\Support\Facades\DB; |
| 20 | 21 | ||
| 21 | /** | 22 | /** |
| @@ -209,8 +210,13 @@ class ProjectLogic extends BaseLogic | @@ -209,8 +210,13 @@ class ProjectLogic extends BaseLogic | ||
| 209 | 210 | ||
| 210 | 211 | ||
| 211 | public function sync($param){ | 212 | public function sync($param){ |
| 213 | + $num = Cache::get('project_' . date('Ymd'), 1); | ||
| 214 | + $title = date('Ymd') . '-' . $num . '-' . $param['company_name']; | ||
| 215 | + if($param['type'] == 4){ | ||
| 216 | + $title .= '【推广续费】'; | ||
| 217 | + } | ||
| 212 | $data = [ | 218 | $data = [ |
| 213 | - 'title' => $param['company_name'], | 219 | + 'title' => $title, |
| 214 | 'company' => $param['company_name'], | 220 | 'company' => $param['company_name'], |
| 215 | 'lead_name' => $param['principal_name'], | 221 | 'lead_name' => $param['principal_name'], |
| 216 | 'mobile' => $param['principal_mobile'], | 222 | 'mobile' => $param['principal_mobile'], |
| @@ -241,6 +247,8 @@ class ProjectLogic extends BaseLogic | @@ -241,6 +247,8 @@ class ProjectLogic extends BaseLogic | ||
| 241 | $this->saveDeployOptimize($data); | 247 | $this->saveDeployOptimize($data); |
| 242 | 248 | ||
| 243 | DB::commit(); | 249 | DB::commit(); |
| 250 | + | ||
| 251 | + Cache::put('project_' . date('Ymd'), $num + 1, 24 * 60 * 60); | ||
| 244 | }catch (\Exception $e){ | 252 | }catch (\Exception $e){ |
| 245 | DB::rollBack(); | 253 | DB::rollBack(); |
| 246 | errorLog('项目同步失败', $data, $e); | 254 | errorLog('项目同步失败', $data, $e); |
app/Models/NoticeLog.php
0 → 100644
| 1 | +<?php | ||
| 2 | +namespace App\Models; | ||
| 3 | + | ||
| 4 | +use App\Helper\Arr; | ||
| 5 | +use Illuminate\Database\Eloquent\Model; | ||
| 6 | + | ||
| 7 | +class NoticeLog extends Model | ||
| 8 | +{ | ||
| 9 | + //设置关联表名 | ||
| 10 | + protected $table = 'gl_notice_log'; | ||
| 11 | + | ||
| 12 | + const TYPE_PROJECT = 'project'; | ||
| 13 | + | ||
| 14 | + const STATUS_PENDING = 0; | ||
| 15 | + const STATUS_SUCCESS = 1; | ||
| 16 | + const STATUS_FAIL = 2; | ||
| 17 | + | ||
| 18 | + /** | ||
| 19 | + * 创建日志 | ||
| 20 | + * @param $type | ||
| 21 | + * @param $data | ||
| 22 | + * @return mixed | ||
| 23 | + */ | ||
| 24 | + public static function createLog($type, $data) | ||
| 25 | + { | ||
| 26 | + $log = new self(); | ||
| 27 | + $log->type = $type; | ||
| 28 | + $log->data = $data; | ||
| 29 | + return $log->save(); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public function setDataAttribute($value){ | ||
| 33 | + $this->attributes['data'] = Arr::a2s($value); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + public function getDataAttribute($value){ | ||
| 37 | + return Arr::s2a($value); | ||
| 38 | + } | ||
| 39 | +} |
-
请 注册 或 登录 后发表评论