87 lines
2.5 KiB
Python
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())
|