1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- namespace App\Console\Commands\Callback;
- use App\Modules\Advertiser\Models\AdvertiserPromotionConfigTime;
- use App\Modules\Advertiser\Models\TiktokAdvertiser;
- use App\Modules\Advertiser\Services\AdvertiserService;
- use App\Modules\Advertiser\Services\TimeConfigService;
- use Illuminate\Console\Command;
- use Illuminate\Support\Facades\DB;
- class JuliangAccountRateConfigRefresh extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'Callback:JuliangAccountRateConfigRefresh';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '巨量账户级回传比例自动刷新';
- /**
- * Execute the console command.
- */
- public function handle(): void
- {
- $this->start();
- }
- public function start(){
- $list = DB::table('juliang_account_promotion_config_time')
- ->where('is_enable',1)->orderBy('id')->get();
- foreach ($list as $item) {
- $is_exec = $this->timeThan($item->config_time);
- if (!$is_exec || $item->next_exec_time != date("Y-m-d")) {
- continue;
- }
- $this->setReportType($item);
- }
- }
- /**
- * 判断任务时间点和 当前的时间点比对
- * @param [type] $str [description]
- * @return [type] [description]
- */
- private function timeThan($str)
- {
- $config_time = strtotime(date('Y-m-d').' '.$str);
- if (time() >= $config_time) {
- return true;
- }
- return false;
- }
- public function setReportType($item){
- $now = date('Y-m-d H:i:s');
- $res = DB::table('juliang_account_promotion_config_time')->where('id',$item->id)
- ->update(['latest_exec_time'=> date('Y-m-d H:i:s',time()),
- 'next_exec_time'=>date("Y-m-d",strtotime('+1 day')),
- 'updated_at' => $now]);
- if ($res) {
- DB::table('juliang_account_rate_config_log')
- ->where(['company_uid' => $item->company_uid, 'account_id' => $item->account_id, 'is_enabled' => 1])
- ->update(['is_enabled' => 0, 'updated_at' => $now]);
- DB::table('juliang_account_promotion_protect_record')
- ->where('optimizer_uid', $item->company_uid)
- ->where('advertiser_id', $item->account_id)
- ->where('is_enabled', 1)
- ->update(['is_enabled' => 0, 'updated_at' => $now]);
- DB::table('juliang_account_rate_config_log')
- ->insert([
- 'company_uid' => $item->company_uid,
- 'account_id' => $item->account_id,
- 'config_per' => $item->config_per,
- 'created_at' => $now,
- 'updated_at' => $now,
- ]);
- }
- }
- }
|