feat:바로빌 카카오톡(알림톡/친구톡) 서비스 구현

- BarobillService에 KAKAOTALK SOAP 클라이언트 추가
  - 채널/템플릿 관리, 알림톡/친구톡 발송, 전송조회/예약취소 API
- BarobillKakaotalkController (API) 생성: 15개 엔드포인트
- KakaotalkController (페이지) 생성: 5개 페이지
- 라우트 등록 (web.php, api.php)
- Blade 뷰 5개 생성: 대시보드, 채널관리, 템플릿관리, 발송, 전송내역

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
김보곤
2026-02-14 14:11:15 +09:00
parent 70bfccf5fb
commit d69f4ef5d3
10 changed files with 2088 additions and 0 deletions

View File

@@ -204,6 +204,33 @@
Route::put('/pricing-policies/{id}', [\App\Http\Controllers\Api\Admin\Barobill\BarobillBillingController::class, 'updatePricingPolicy'])->name('pricing-policies.update');
});
// 바로빌 카카오톡 API
Route::prefix('barobill/kakaotalk')->name('barobill.kakaotalk.')->group(function () {
// 채널 관리
Route::get('/channels', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getChannels'])->name('channels');
Route::get('/channels/management-url', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getChannelManagementUrl'])->name('channels.management-url');
// 템플릿 관리
Route::get('/templates', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getTemplates'])->name('templates');
Route::get('/templates/management-url', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getTemplateManagementUrl'])->name('templates.management-url');
// 알림톡 발송
Route::post('/send/alimtalk', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'sendAlimtalk'])->name('send.alimtalk');
Route::post('/send/alimtalk-bulk', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'sendAlimtalkBulk'])->name('send.alimtalk-bulk');
// 친구톡 발송
Route::post('/send/friendtalk', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'sendFriendtalk'])->name('send.friendtalk');
Route::post('/send/friendtalk-image', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'sendFriendtalkImage'])->name('send.friendtalk-image');
Route::post('/send/friendtalk-wide', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'sendFriendtalkWide'])->name('send.friendtalk-wide');
// 전송 결과 조회
Route::get('/send/{sendKey}', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getSendResult'])->name('send.result');
Route::post('/send/results', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'getSendResults'])->name('send.results');
// 예약 취소
Route::delete('/send/{sendKey}/cancel', [\App\Http\Controllers\Api\Admin\Barobill\BarobillKakaotalkController::class, 'cancelReserved'])->name('send.cancel');
});
// 테넌트 관리 API
Route::prefix('tenants')->name('tenants.')->group(function () {
// 고정 경로는 먼저 정의