from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from app.common.db.session import get_db from app.common.responses.api_response import success_response from app.common.security.deps import require_admin_permission from app.modules.system.schema import RedeemBatchCreatePayload, SystemConfigItemPayload from app.modules.system.service import SystemService router = APIRouter(prefix="/api/v1/admin", tags=["admin-system"]) @router.get("/system-config") def list_system_configs( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).list_configs()) @router.put("/system-config") def upsert_system_config( payload: SystemConfigItemPayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).upsert_config(payload)) @router.get("/redeem-codes") def list_redeem_codes( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).list_redeem_codes()) @router.post("/redeem-codes/batch-create") def batch_create_redeem_codes( payload: RedeemBatchCreatePayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).batch_create_redeem_codes(payload)) @router.post("/redeem-codes/import") def import_redeem_codes( payload: RedeemBatchCreatePayload, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).batch_create_redeem_codes(payload)) @router.put("/redeem-codes/{redeem_id}/disable") def disable_redeem_code( redeem_id: int, _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).disable_redeem_code(redeem_id)) @router.get("/callback-logs") def list_callback_logs( _=Depends(require_admin_permission()), db: Session = Depends(get_db), ): return success_response(SystemService(db).list_callback_logs())