2024-12-31 22:27:04 +08:00
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
|
|
from typing import Dict, Any
|
2025-01-09 07:00:06 +08:00
|
|
|
from mooc.utils.wechat_client import WeChatAPI
|
2024-12-31 22:27:04 +08:00
|
|
|
|
|
|
|
router = APIRouter()
|
2025-01-09 07:00:06 +08:00
|
|
|
wechat_client = WeChatAPI()
|
2024-12-31 22:27:04 +08:00
|
|
|
|
|
|
|
@router.get("/access_token")
|
|
|
|
async def get_access_token() -> Dict[str, Any]:
|
|
|
|
"""获取微信access token"""
|
|
|
|
try:
|
|
|
|
access_token = await wechat_client.get_access_token()
|
|
|
|
return {"access_token": access_token}
|
|
|
|
except Exception as e:
|
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
|
|
@router.post("/code2session")
|
|
|
|
async def code_to_session(code: str) -> Dict[str, Any]:
|
|
|
|
"""小程序登录"""
|
|
|
|
try:
|
|
|
|
result = await wechat_client.code2session(code)
|
|
|
|
return result
|
|
|
|
except Exception as e:
|
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
|
|
@router.post("/qrcode")
|
|
|
|
async def generate_qrcode(scene: str) -> bytes:
|
|
|
|
"""生成小程序码"""
|
|
|
|
try:
|
|
|
|
qr_code = await wechat_client.get_unlimited_qrcode(scene)
|
|
|
|
return qr_code
|
|
|
|
except Exception as e:
|
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|
|
|
|
|
|
|
|
@router.post("/send_template")
|
|
|
|
async def send_template_message(data: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
|
"""发送订阅消息"""
|
|
|
|
try:
|
|
|
|
result = await wechat_client.send_template_message(data)
|
|
|
|
return result
|
|
|
|
except Exception as e:
|
|
|
|
raise HTTPException(status_code=400, detail=str(e))
|