feat: [barobill] SOAP 동기화 서비스 신규 구축
- BarobillSoapService: PHP SoapClient 기반 SOAP 래퍼 (회원/계좌/카드/인증서) - BarobillBankSyncService: 은행 거래내역 SOAP 조회 → DB 캐시 동기화 - BarobillCardSyncService: 카드 거래내역 SOAP 조회 → DB 캐시 동기화 - HometaxSyncService: 홈택스 세금계산서 upsert 동기화 - BarobillSyncController: 동기화/회원/인증서/잔액 API 11개 엔드포인트 - SyncBarobillDataJob: 매일 06:00/06:30 자동 동기화 스케줄러 - BarobillController.status() 보강: 실제 계좌/카드 수 표시
This commit is contained in:
@@ -4,13 +4,18 @@
|
||||
|
||||
use App\Helpers\ApiResponse;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Barobill\BarobillBankTransaction;
|
||||
use App\Models\Barobill\BarobillCardTransaction;
|
||||
use App\Models\Barobill\BarobillMember;
|
||||
use App\Services\Barobill\BarobillSoapService;
|
||||
use App\Services\BarobillService;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class BarobillController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private BarobillService $barobillService
|
||||
private BarobillService $barobillService,
|
||||
private BarobillSoapService $soapService,
|
||||
) {}
|
||||
|
||||
/**
|
||||
@@ -19,17 +24,43 @@ public function __construct(
|
||||
public function status()
|
||||
{
|
||||
return ApiResponse::handle(function () {
|
||||
$tenantId = app('tenant_id');
|
||||
$setting = $this->barobillService->getSetting();
|
||||
$member = BarobillMember::withoutGlobalScopes()
|
||||
->where('tenant_id', $tenantId)
|
||||
->first();
|
||||
|
||||
$accountCount = 0;
|
||||
$cardCount = 0;
|
||||
|
||||
if ($member) {
|
||||
$accountCount = BarobillBankTransaction::withoutGlobalScopes()
|
||||
->where('tenant_id', $tenantId)
|
||||
->distinct('bank_account_num')
|
||||
->count('bank_account_num');
|
||||
|
||||
$cardCount = BarobillCardTransaction::withoutGlobalScopes()
|
||||
->where('tenant_id', $tenantId)
|
||||
->distinct('card_num')
|
||||
->count('card_num');
|
||||
}
|
||||
|
||||
return [
|
||||
'bank_service_count' => 0,
|
||||
'account_link_count' => 0,
|
||||
'member' => $setting ? [
|
||||
'bank_service_count' => $accountCount,
|
||||
'account_link_count' => $accountCount,
|
||||
'card_count' => $cardCount,
|
||||
'member' => $member ? [
|
||||
'barobill_id' => $member->barobill_id,
|
||||
'biz_no' => $member->formatted_biz_no,
|
||||
'corp_name' => $member->corp_name,
|
||||
'status' => $member->status,
|
||||
'server_mode' => $member->server_mode ?? 'test',
|
||||
] : ($setting ? [
|
||||
'barobill_id' => $setting->barobill_id,
|
||||
'biz_no' => $setting->corp_num,
|
||||
'status' => $setting->isVerified() ? 'active' : 'inactive',
|
||||
'server_mode' => $this->barobillService->isTestMode() ? 'test' : 'production',
|
||||
] : null,
|
||||
] : null),
|
||||
];
|
||||
}, __('message.fetched'));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user