Files

87 lines
2.5 KiB
Python

from fastapi import APIRouter, Depends, Response
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 get_current_admin, require_admin_permission
from app.modules.admins.schema import AdminLoginRequest, ManualAdjustRequest
from app.modules.admins.service import AdminsService
auth_router = APIRouter(prefix="/api/v1/admin/auth", tags=["admin-auth"])
router = APIRouter(prefix="/api/v1/admin", tags=["admin"])
@auth_router.post("/login")
def admin_login(
payload: AdminLoginRequest,
response: Response,
db: Session = Depends(get_db),
):
return {"code": 0, "message": "ok", "data": AdminsService(db).login(payload, response)}
@auth_router.post("/logout")
def admin_logout(response: Response, db: Session = Depends(get_db)):
AdminsService(db).logout(response)
return {"code": 0, "message": "ok", "data": {"success": True}}
@auth_router.get("/me")
def admin_me(admin=Depends(get_current_admin)):
return success_response(AdminsService.serialize_admin(admin))
@router.get("/dashboard")
def dashboard(
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(AdminsService(db).dashboard())
@router.get("/users")
def list_users(
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(AdminsService(db).list_users())
@router.get("/users/{user_id}")
def get_user_detail(
user_id: int,
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(AdminsService(db).get_user_detail(user_id))
@router.post("/users/{user_id}/wallet-adjust")
def manual_adjust_wallet(
user_id: int,
payload: ManualAdjustRequest,
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(
AdminsService(db).manual_adjust_wallet(user_id, payload.amount_points, payload.reason)
)
@router.get("/users/{user_id}/invite-relations")
def user_invite_relations(
user_id: int,
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(AdminsService(db).user_invite_relations(user_id))
@router.get("/invite-relations")
def list_invite_relations(
_=Depends(require_admin_permission()),
db: Session = Depends(get_db),
):
return success_response(AdminsService(db).list_invite_relations())