| @@ -0,0 +1,79 @@ | |||||
| <?php | |||||
| namespace App\Console\Commands\QRCode; | |||||
| use App\Console\Commands\BaseCommand; | |||||
| use App\Logics\QRService\QRCryptoLogic; | |||||
| use Str; | |||||
| class サービス券復号化 extends BaseCommand | |||||
| { | |||||
| const COMMAND = "qrcode:decrypto {input}"; | |||||
| /** | |||||
| * The name and signature of the console command. | |||||
| * | |||||
| * @var string | |||||
| */ | |||||
| protected $signature = self::COMMAND; | |||||
| /** | |||||
| * The console command description. | |||||
| * | |||||
| * @var string | |||||
| */ | |||||
| protected $description = 'QRサービス券(取得)を復号化する。'; | |||||
| static public function getCommand() | |||||
| { | |||||
| return self::COMMAND; | |||||
| } | |||||
| /** | |||||
| * Create a new command instance. | |||||
| * | |||||
| * @return void | |||||
| */ | |||||
| public function __construct() | |||||
| { | |||||
| parent::__construct(); | |||||
| } | |||||
| /** | |||||
| * Execute the console command. | |||||
| * | |||||
| * @return int | |||||
| */ | |||||
| public function service(): int | |||||
| { | |||||
| $input = $this->argument("input"); | |||||
| if (!$input) { | |||||
| $this->outputError("入力エラー"); | |||||
| return self::RESULTCODE_FAILED; | |||||
| } | |||||
| $origin = Str::substr($input, 5); | |||||
| $result = QRCryptoLogic::decrypt($origin); | |||||
| $this->outputInfo(sprintf("復号化:[%s]->[%s]", $origin, $result)); | |||||
| $this->qrParse($result); | |||||
| return self::RESULTCODE_SUCCESS; | |||||
| } | |||||
| private function qrParse(string $input) | |||||
| { | |||||
| $発行端末 = Str::substr($input, 0, 2); | |||||
| $発行日 = Str::substr($input, 2, 8); | |||||
| $発行連番 = Str::substr($input, 10, 6); | |||||
| $店舗番号 = Str::substr($input, 16, 2); | |||||
| $券コード = Str::substr($input, 18, 2); | |||||
| $this->outputInfo(sprintf("発行端末[%s] 発行日[%s] 発行連番[%s] 店舗番号[%s] 券コード[%s]", $発行端末, $発行日, $発行連番, $店舗番号, $券コード)); | |||||
| } | |||||
| } | |||||