50 lines
3.6 KiB
SQL
50 lines
3.6 KiB
SQL
-- ============================================================
|
|
-- Migration: 크레딧 충전 요청 / 거래 이력 테이블 추가
|
|
-- Date: 2026-04-29
|
|
-- Description: 백오피스 크레딧 워크플로우 도입
|
|
-- 선행 조건: migration_2026_04_29_add_admin_table.sql 먼저 실행
|
|
-- ============================================================
|
|
|
|
CREATE TABLE IF NOT EXISTS credit_charge_request (
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '고유 식별자',
|
|
user_uuid VARCHAR(36) NOT NULL COMMENT '사용자 UUID (user.user_uuid 참조)',
|
|
requested_amount INT NOT NULL COMMENT '요청 크레딧 수량 (양수)',
|
|
message VARCHAR(500) NULL COMMENT '사용자 요청 메시지',
|
|
status VARCHAR(20) NOT NULL DEFAULT 'pending' COMMENT '처리 상태 (pending/approved/rejected/cancelled)',
|
|
admin_id BIGINT NULL COMMENT '처리한 백오피스 관리자 ID',
|
|
admin_note VARCHAR(1000) NULL COMMENT '관리자 메모',
|
|
processed_at DATETIME NULL COMMENT '처리 일시',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '요청 일시',
|
|
updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '수정 일시',
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT fk_charge_request_user FOREIGN KEY (user_uuid) REFERENCES `user`(user_uuid) ON DELETE CASCADE,
|
|
CONSTRAINT fk_charge_request_admin FOREIGN KEY (admin_id) REFERENCES `admin`(id) ON DELETE SET NULL,
|
|
INDEX idx_credit_request_user_uuid (user_uuid),
|
|
INDEX idx_credit_request_status (status),
|
|
INDEX idx_credit_request_created_at (created_at),
|
|
INDEX idx_credit_request_status_created (status, created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|
COMMENT='사용자 크레딧 충전 요청';
|
|
|
|
|
|
CREATE TABLE IF NOT EXISTS credit_transaction (
|
|
id BIGINT NOT NULL AUTO_INCREMENT COMMENT '고유 식별자',
|
|
user_uuid VARCHAR(36) NOT NULL COMMENT '사용자 UUID',
|
|
amount INT NOT NULL COMMENT '변경 크레딧 수량 (충전 양수, 차감 음수)',
|
|
balance_after INT NOT NULL COMMENT '변경 후 잔액',
|
|
type VARCHAR(20) NOT NULL COMMENT '변경 유형 (charge/consume/refund/admin_adjust)',
|
|
reason VARCHAR(255) NULL COMMENT '변경 사유',
|
|
admin_id BIGINT NULL COMMENT '처리 관리자 ID',
|
|
related_request_id BIGINT NULL COMMENT '연관 충전 요청 ID',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '변경 일시',
|
|
PRIMARY KEY (id),
|
|
CONSTRAINT fk_credit_tx_user FOREIGN KEY (user_uuid) REFERENCES `user`(user_uuid) ON DELETE CASCADE,
|
|
CONSTRAINT fk_credit_tx_admin FOREIGN KEY (admin_id) REFERENCES `admin`(id) ON DELETE SET NULL,
|
|
CONSTRAINT fk_credit_tx_request FOREIGN KEY (related_request_id) REFERENCES credit_charge_request(id) ON DELETE SET NULL,
|
|
INDEX idx_credit_tx_user_uuid (user_uuid),
|
|
INDEX idx_credit_tx_user_uuid_created (user_uuid, created_at),
|
|
INDEX idx_credit_tx_type (type),
|
|
INDEX idx_credit_tx_related_request (related_request_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
|
|
COMMENT='크레딧 변경 이력';
|