1、修改联系我们后台接口程序和界面

2、修改提示词优化使用模型规则,改为按照后台设置排序倒序使用对应模型,如果失败使用下一个
This commit is contained in:
2026-07-20 10:28:17 +08:00
parent 46b59ff76c
commit 53e01f6f74
7 changed files with 104 additions and 135 deletions
+2
View File
@@ -9,6 +9,7 @@ from app.api.admin.private_portrait import router as private_portrait_router
from app.api.admin.recharge_package import router as recharge_package_router
from app.api.admin.menu_config import router as menu_config_router
from app.api.admin.upload import router as admin_upload_router
from app.api.admin.contact import router as admin_contact_router
router = APIRouter()
router.include_router(video_prompt_schema_config_router)
@@ -20,3 +21,4 @@ router.include_router(private_portrait_router)
router.include_router(recharge_package_router)
router.include_router(menu_config_router)
router.include_router(admin_upload_router)
router.include_router(admin_contact_router)
+75
View File
@@ -0,0 +1,75 @@
from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy import func, select
from sqlalchemy.ext.asyncio import AsyncSession
from app.dependencies import get_admin_user, get_db
from app.models.contact_request import ContactRequest
from app.models.user import User
from app.schemas.contact import ContactRequestListOut, ContactRequestOut
router = APIRouter(prefix="/admin/contact-requests", tags=["admin-contact-requests"])
@router.get("", response_model=ContactRequestListOut)
async def list_contact_requests(
page: int = Query(1, ge=1),
page_size: int = Query(20, ge=1, le=200),
is_handled: bool | None = Query(None),
admin: User = Depends(get_admin_user),
db: AsyncSession = Depends(get_db),
):
query = select(ContactRequest)
count_query = select(func.count(ContactRequest.id))
if is_handled is not None:
query = query.where(ContactRequest.is_handled == is_handled)
count_query = count_query.where(ContactRequest.is_handled == is_handled)
query = query.order_by(ContactRequest.created_at.desc())
offset = (page - 1) * page_size
result = await db.execute(query.offset(offset).limit(page_size))
items = result.scalars().all()
total = (await db.execute(count_query)).scalar_one()
return {"items": items, "total": total}
@router.get("/{request_id}", response_model=ContactRequestOut)
async def get_contact_request(
request_id: str,
admin: User = Depends(get_admin_user),
db: AsyncSession = Depends(get_db),
):
result = await db.execute(select(ContactRequest).where(ContactRequest.id == request_id))
item = result.scalar_one_or_none()
if not item:
raise HTTPException(status_code=404, detail="记录不存在")
return item
@router.put("/{request_id}/handle")
async def mark_contact_handled(
request_id: str,
admin: User = Depends(get_admin_user),
db: AsyncSession = Depends(get_db),
):
result = await db.execute(select(ContactRequest).where(ContactRequest.id == request_id))
item = result.scalar_one_or_none()
if not item:
raise HTTPException(status_code=404, detail="记录不存在")
item.is_handled = True
await db.commit()
await db.refresh(item)
return {"message": "已标记为处理"}
@router.delete("/{request_id}")
async def delete_contact_request(
request_id: str,
admin: User = Depends(get_admin_user),
db: AsyncSession = Depends(get_db),
):
result = await db.execute(select(ContactRequest).where(ContactRequest.id == request_id))
item = result.scalar_one_or_none()
if not item:
raise HTTPException(status_code=404, detail="记录不存在")
await db.delete(item)
await db.commit()
return {"message": "删除成功"}