feat: sts reschedule

v2.0.0
ricky rx 2 years ago
parent 158106c758
commit 2c1a415979

@ -0,0 +1,86 @@
<?php
namespace App\Console\Commands;
use App\Helper\Sts\Indokargo;
use App\Models\StsLog;
use Carbon\Carbon;
use Illuminate\Console\Command;
use Illuminate\Http\Request;
class StsReschedule extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'sts:reschedule';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Resschedule failed sts to sts data';
/**
* Execute the console command.
*/
public function handle(): void {
$sleep = 30; // 30 second
while(true) {
$this->info('---------------------------');
$this->info('reschedule sts:' . Carbon::now()->toDateTimeString());
$this->info('---------------------------');
// get reschedu;e sts logs
$success = 0;
$failed = 0;
$rescheduleStsLogs = StsLog::where(['is_retry' => true])->get();
foreach($rescheduleStsLogs as $rescheduleStsLog) {
try {
$partner = $rescheduleStsLog->partner;
$module = $rescheduleStsLog->module;
$serviceName = $rescheduleStsLog->service_name;
$request = new Request((array) $rescheduleStsLog->request_data ?? []);
$localId = $rescheduleStsLog->local_id;
$partnerId = $rescheduleStsLog->partner_id;
$lastSeq = $rescheduleStsLog->seq;
if($partner == StsLog::PARTNER_INDOKARGO) {
if($module == StsLog::MODULE_TV) {
if($serviceName == StsLog::SERVICE_CREATE_TV_ADDRESS) {
Indokargo::createTVAddress($request, $localId, $lastSeq);
} else if($serviceName == StsLog::SERVICE_UPDATE_TV_ADDRESS) {
Indokargo::updateTVAddress($request, $localId, $partnerId, $lastSeq);
} else if($serviceName == StsLog::SERVICE_CHANGE_STATUS_TV_ADDRESS) {
Indokargo::changeStatusAddress($request, $localId, $partnerId, $lastSeq);
} else {
throw new \Exception("Service name '$partner' > '$module' > '$serviceName' not found service");
}
} else {
throw new \Exception("Module name '$partner' > '$module' not found service");
}
} else {
throw new \Exception("Partner name '$partner' not found service");
}
$success++;
} catch(\Throwable $th) {
$failed++;
$this->info("stsLog id: ". $rescheduleStsLog->id . " => " . $th->getMessage());
}
}
// save all retry request is retry false
$rescheduleStsLogIds = $rescheduleStsLogs->pluck('id')->toArray();
StsLog::whereIn('id', $rescheduleStsLogIds)->update(['is_retry' => false]);
$this->info('---------------------------');
$this->info("result: $success success, $failed failed" );
$this->info("Sleep in $sleep seconds" );
$this->info('---------------------------');
sleep($sleep);
}
}
}

@ -69,7 +69,7 @@ class Indokargo {
*/ */
$stsLog = new StsLog(); $stsLog = new StsLog();
$stsLog->partner = StsLog::PARTNER_INDOKARGO; $stsLog->partner = StsLog::PARTNER_INDOKARGO;
$stsLog->is_outgoing = false; $stsLog->is_outgoing = true;
$stsLog->module = StsLog::MODULE_TV; $stsLog->module = StsLog::MODULE_TV;
$stsLog->service_name = StsLog::SERVICE_CREATE_TV_ADDRESS; $stsLog->service_name = StsLog::SERVICE_CREATE_TV_ADDRESS;
$stsLog->local_id = $tvFk; $stsLog->local_id = $tvFk;
@ -119,7 +119,7 @@ class Indokargo {
$request->merge(['ik_address_id' => $ikAddressId]); $request->merge(['ik_address_id' => $ikAddressId]);
$stsLog = new StsLog(); $stsLog = new StsLog();
$stsLog->partner = StsLog::PARTNER_INDOKARGO; $stsLog->partner = StsLog::PARTNER_INDOKARGO;
$stsLog->is_outgoing = false; $stsLog->is_outgoing = true;
$stsLog->module = StsLog::MODULE_TV; $stsLog->module = StsLog::MODULE_TV;
$stsLog->service_name = StsLog::SERVICE_UPDATE_TV_ADDRESS; $stsLog->service_name = StsLog::SERVICE_UPDATE_TV_ADDRESS;
$stsLog->local_id = $tvFk; $stsLog->local_id = $tvFk;
@ -150,7 +150,7 @@ class Indokargo {
$request->merge(['ik_address_id' => $ikAddressId]); $request->merge(['ik_address_id' => $ikAddressId]);
$stsLog = new StsLog(); $stsLog = new StsLog();
$stsLog->partner = StsLog::PARTNER_INDOKARGO; $stsLog->partner = StsLog::PARTNER_INDOKARGO;
$stsLog->is_outgoing = false; $stsLog->is_outgoing = true;
$stsLog->module = StsLog::MODULE_TV; $stsLog->module = StsLog::MODULE_TV;
$stsLog->service_name = StsLog::SERVICE_CHANGE_STATUS_TV_ADDRESS; $stsLog->service_name = StsLog::SERVICE_CHANGE_STATUS_TV_ADDRESS;
$stsLog->local_id = $tvFk; $stsLog->local_id = $tvFk;

Loading…
Cancel
Save