feat: 구독/결제 API 확장 (Plan, Subscription, Payment)
- Plan/Subscription/Payment 모델에 상태 상수, 스코프, 헬퍼 메서드 추가 - PlanService, SubscriptionService, PaymentService 생성 - PlanController, SubscriptionController, PaymentController 생성 - FormRequest 9개 생성 (Plan 3개, Subscription 3개, Payment 3개) - Swagger 문서 3개 생성 (PlanApi, SubscriptionApi, PaymentApi) - API 라우트 22개 등록 (Plan 7개, Subscription 8개, Payment 7개) - Pint 코드 스타일 정리
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
use App\Http\Controllers\Api\V1\ApprovalLineController;
|
||||
use App\Http\Controllers\Api\V1\AttendanceController;
|
||||
use App\Http\Controllers\Api\V1\BankAccountController;
|
||||
use App\Http\Controllers\Api\V1\BarobillSettingController;
|
||||
use App\Http\Controllers\Api\V1\BoardController;
|
||||
use App\Http\Controllers\Api\V1\CardController;
|
||||
use App\Http\Controllers\Api\V1\CategoryController;
|
||||
@@ -38,8 +39,8 @@
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\ItemFieldController;
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\ItemMasterController;
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\ItemPageController;
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\ItemSectionController;
|
||||
// use App\Http\Controllers\Api\V1\MaterialController; // REMOVED: materials 테이블 삭제됨
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\ItemSectionController;
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\SectionTemplateController;
|
||||
use App\Http\Controllers\Api\V1\ItemMaster\UnitOptionController;
|
||||
use App\Http\Controllers\Api\V1\ItemsBomController;
|
||||
@@ -49,10 +50,12 @@
|
||||
use App\Http\Controllers\Api\V1\LoanController;
|
||||
use App\Http\Controllers\Api\V1\MenuController;
|
||||
use App\Http\Controllers\Api\V1\ModelSetController;
|
||||
use App\Http\Controllers\Api\V1\PaymentController;
|
||||
use App\Http\Controllers\Api\V1\PayrollController;
|
||||
// use App\Http\Controllers\Api\V1\ProductBomItemController; // REMOVED: products 테이블 삭제됨
|
||||
// use App\Http\Controllers\Api\V1\ProductController; // REMOVED: products 테이블 삭제됨
|
||||
use App\Http\Controllers\Api\V1\PayrollController;
|
||||
use App\Http\Controllers\Api\V1\PermissionController;
|
||||
use App\Http\Controllers\Api\V1\PlanController;
|
||||
use App\Http\Controllers\Api\V1\PostController;
|
||||
use App\Http\Controllers\Api\V1\PricingController;
|
||||
use App\Http\Controllers\Api\V1\PurchaseController;
|
||||
@@ -65,8 +68,8 @@
|
||||
use App\Http\Controllers\Api\V1\RolePermissionController;
|
||||
use App\Http\Controllers\Api\V1\SaleController;
|
||||
use App\Http\Controllers\Api\V1\SiteController;
|
||||
use App\Http\Controllers\Api\V1\SubscriptionController;
|
||||
use App\Http\Controllers\Api\V1\TaxInvoiceController;
|
||||
use App\Http\Controllers\Api\V1\BarobillSettingController;
|
||||
// 설계 전용 (디자인 네임스페이스)
|
||||
use App\Http\Controllers\Api\V1\TenantController;
|
||||
use App\Http\Controllers\Api\V1\TenantFieldSettingController;
|
||||
@@ -407,6 +410,40 @@
|
||||
Route::post('/{id}/settle', [LoanController::class, 'settle'])->whereNumber('id')->name('v1.loans.settle');
|
||||
});
|
||||
|
||||
// Plan API (요금제 관리)
|
||||
Route::prefix('plans')->group(function () {
|
||||
Route::get('', [PlanController::class, 'index'])->name('v1.plans.index');
|
||||
Route::post('', [PlanController::class, 'store'])->name('v1.plans.store');
|
||||
Route::get('/active', [PlanController::class, 'active'])->name('v1.plans.active');
|
||||
Route::get('/{id}', [PlanController::class, 'show'])->whereNumber('id')->name('v1.plans.show');
|
||||
Route::put('/{id}', [PlanController::class, 'update'])->whereNumber('id')->name('v1.plans.update');
|
||||
Route::delete('/{id}', [PlanController::class, 'destroy'])->whereNumber('id')->name('v1.plans.destroy');
|
||||
Route::patch('/{id}/toggle', [PlanController::class, 'toggle'])->whereNumber('id')->name('v1.plans.toggle');
|
||||
});
|
||||
|
||||
// Subscription API (구독 관리)
|
||||
Route::prefix('subscriptions')->group(function () {
|
||||
Route::get('', [SubscriptionController::class, 'index'])->name('v1.subscriptions.index');
|
||||
Route::post('', [SubscriptionController::class, 'store'])->name('v1.subscriptions.store');
|
||||
Route::get('/current', [SubscriptionController::class, 'current'])->name('v1.subscriptions.current');
|
||||
Route::get('/{id}', [SubscriptionController::class, 'show'])->whereNumber('id')->name('v1.subscriptions.show');
|
||||
Route::post('/{id}/cancel', [SubscriptionController::class, 'cancel'])->whereNumber('id')->name('v1.subscriptions.cancel');
|
||||
Route::post('/{id}/renew', [SubscriptionController::class, 'renew'])->whereNumber('id')->name('v1.subscriptions.renew');
|
||||
Route::post('/{id}/suspend', [SubscriptionController::class, 'suspend'])->whereNumber('id')->name('v1.subscriptions.suspend');
|
||||
Route::post('/{id}/resume', [SubscriptionController::class, 'resume'])->whereNumber('id')->name('v1.subscriptions.resume');
|
||||
});
|
||||
|
||||
// Payment API (결제 관리)
|
||||
Route::prefix('payments')->group(function () {
|
||||
Route::get('', [PaymentController::class, 'index'])->name('v1.payments.index');
|
||||
Route::post('', [PaymentController::class, 'store'])->name('v1.payments.store');
|
||||
Route::get('/summary', [PaymentController::class, 'summary'])->name('v1.payments.summary');
|
||||
Route::get('/{id}', [PaymentController::class, 'show'])->whereNumber('id')->name('v1.payments.show');
|
||||
Route::post('/{id}/complete', [PaymentController::class, 'complete'])->whereNumber('id')->name('v1.payments.complete');
|
||||
Route::post('/{id}/cancel', [PaymentController::class, 'cancel'])->whereNumber('id')->name('v1.payments.cancel');
|
||||
Route::post('/{id}/refund', [PaymentController::class, 'refund'])->whereNumber('id')->name('v1.payments.refund');
|
||||
});
|
||||
|
||||
// Sale API (매출 관리)
|
||||
Route::prefix('sales')->group(function () {
|
||||
Route::get('', [SaleController::class, 'index'])->name('v1.sales.index');
|
||||
|
||||
Reference in New Issue
Block a user