1
This commit is contained in:
@@ -31,6 +31,7 @@ from app.api.v1.contact import router as contact_router
|
||||
from app.api.v1.team import router as team_router
|
||||
from app.api.v1.home_materials import router as home_materials_router
|
||||
from app.api.admin import router as admin_module_router
|
||||
from app.api.v1.material_admin import router as material_admin_router
|
||||
|
||||
api_router = APIRouter()
|
||||
api_router.include_router(auth_router)
|
||||
@@ -64,3 +65,4 @@ api_router.include_router(contact_router)
|
||||
api_router.include_router(team_router)
|
||||
api_router.include_router(home_materials_router)
|
||||
api_router.include_router(admin_module_router)
|
||||
api_router.include_router(material_admin_router)
|
||||
@@ -0,0 +1,168 @@
|
||||
from typing import Any, Optional, List
|
||||
from datetime import datetime, timedelta, timezone
|
||||
|
||||
from fastapi import APIRouter, Query, Depends, Body
|
||||
from sqlalchemy import select, func
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.models.user import User
|
||||
from app.models.resources_material import ResourcesMaterial
|
||||
from app.models.material_cost import MaterialCost
|
||||
from app.models.user_oauth import UserOAuth
|
||||
from app.models.user_oauth_account import UserOAuthAccount
|
||||
from app.models.pre_test_template import PreTestTemplate
|
||||
from app.models.upload_task import UploadTask
|
||||
from app.dependencies import get_current_user, get_db, get_admin_user
|
||||
from app.services.material_consumption_queue import sync_all_advertisers_consumption, _fetch_and_save_consumption
|
||||
from app.services.material_consumption_service import get_consumption_list, format_consumption_response
|
||||
from app.services.material_admin_service import get_oauth_list, get_material_list, get_pre_test_template_list, get_upload_task_list
|
||||
|
||||
router = APIRouter(prefix="/material-admin", tags=["material-admin"])
|
||||
|
||||
@router.get("/oauth-list", summary="管理员查看所有授权列表")
|
||||
async def admin_get_oauth_list(
|
||||
id: Optional[str] = Query(None, description="主键id"),
|
||||
phone: Optional[str] = Query(None, description="用户登录手机号"),
|
||||
account_id: Optional[str] = Query(None, description="授权账户id"),
|
||||
account_userid: Optional[str] = Query(None, description="授权登录账号id"),
|
||||
created_at: Optional[List[datetime]] = Query(None, description="授权时间"),
|
||||
appid: Optional[str] = Query(None, description="应用id"),
|
||||
open_type: Optional[int] = Query(None, description="开户方式"),
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(10, ge=1, le=3000, description="每页数量"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
admin_user: User = Depends(get_admin_user),
|
||||
) -> Any | dict:
|
||||
try:
|
||||
oauth_list, total = await get_oauth_list(
|
||||
id=id,
|
||||
db=db,
|
||||
phone=phone,
|
||||
account_id=account_id,
|
||||
account_userid=account_userid,
|
||||
created_at=created_at,
|
||||
appid=appid,
|
||||
open_type=open_type,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
return {
|
||||
"code": 0,
|
||||
"data": oauth_list,
|
||||
"pagination": {
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"total": total,
|
||||
},
|
||||
}
|
||||
except Exception as e:
|
||||
return {
|
||||
"code": 1,
|
||||
"msg": str(e),
|
||||
"data": None,
|
||||
}
|
||||
|
||||
@router.get("/material-list", summary="管理员查看所有素材资源列表")
|
||||
async def admin_get_material_list(
|
||||
phone: Optional[str] = Query(None, description="用户登录手机号"),
|
||||
id: Optional[str] = Query(None, description="主键id"),
|
||||
resource_type: Optional[str] = Query(None, description="素材资源类型"),
|
||||
advertiser_id: Optional[str] = Query(None, description="广告主id"),
|
||||
material_id: Optional[str] = Query(None, description="素材id"),
|
||||
upload_id: Optional[str] = Query(None, description="平台id【视频id/图片id】"),
|
||||
created_at: Optional[List[datetime]] = Query(None, description="创建时间"),
|
||||
status: Optional[str] = Query(None, description="前测状态"),
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(10, ge=1, le=3000, description="每页数量"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
admin_user: User = Depends(get_admin_user),
|
||||
) -> Any | dict:
|
||||
materials, total = await get_material_list(
|
||||
db=db,
|
||||
phone=phone,
|
||||
id=id,
|
||||
resource_type=resource_type,
|
||||
advertiser_id=advertiser_id,
|
||||
material_id=material_id,
|
||||
upload_id=upload_id,
|
||||
created_at=created_at,
|
||||
status=status,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
return {
|
||||
"code": 0,
|
||||
"data": materials,
|
||||
"pagination": {
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"total": total,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@router.get("/pre-test-template-list", summary="管理员查看所有前测模板列表")
|
||||
async def admin_get_pre_test_template_list(
|
||||
phone: Optional[str] = Query(None, description="用户登录手机号"),
|
||||
id: Optional[str] = Query(None, description="主键id"),
|
||||
created_at: Optional[datetime] = Query(None, description="创建时间"),
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(10, ge=1, le=3000, description="每页数量"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
admin_user: User = Depends(get_admin_user),
|
||||
) -> Any | dict:
|
||||
templates, total = await get_pre_test_template_list(
|
||||
db=db,
|
||||
phone=phone,
|
||||
id=id,
|
||||
created_at=created_at,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
return {
|
||||
"code": 0,
|
||||
"data": templates,
|
||||
"pagination": {
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"total": total,
|
||||
},
|
||||
}
|
||||
|
||||
@router.get("/upload-task-list", summary="管理员查看推送任务列表")
|
||||
async def admin_get_upload_task_list(
|
||||
phone: Optional[str] = Query(None, description="用户登录手机号"),
|
||||
id: Optional[str] = Query(None, description="主键id"),
|
||||
created_at: Optional[List[str]] = Query(None, description="创建时间范围,示例: ['2023-01-01', '2023-03-01']"),
|
||||
advertiser_id: Optional[str] = Query(None, description="广告主id"),
|
||||
status: Optional[int] = Query(None, description="前测状态"),
|
||||
resource_id: Optional[str] = Query(None, description="资源id"),
|
||||
page: int = Query(1, ge=1, description="页码"),
|
||||
page_size: int = Query(10, ge=1, le=3000, description="每页数量"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
admin_user: User = Depends(get_admin_user),
|
||||
) -> Any | dict:
|
||||
tasks, total = await get_upload_task_list(
|
||||
db=db,
|
||||
phone=phone,
|
||||
id=id,
|
||||
created_at=created_at,
|
||||
advertiser_id=advertiser_id,
|
||||
status=status,
|
||||
resource_id=resource_id,
|
||||
page=page,
|
||||
page_size=page_size,
|
||||
)
|
||||
|
||||
return {
|
||||
"code": 0,
|
||||
"data": tasks,
|
||||
"pagination": {
|
||||
"page": page,
|
||||
"page_size": page_size,
|
||||
"total": total,
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user