66 lines
2.4 KiB
Python
66 lines
2.4 KiB
Python
"""共享接口:meetup 申请、create_user 等"""
|
||
import logging
|
||
import time
|
||
|
||
from fastapi import APIRouter, HTTPException
|
||
from pydantic import BaseModel
|
||
|
||
from ..services import get_pb_client
|
||
from ..sdk.memos import MemosSDK
|
||
from ..config import MEMOS_API, MEMOS_TOKEN
|
||
|
||
router = APIRouter(tags=["common"])
|
||
|
||
|
||
@router.post("/submit_meetup_application")
|
||
async def submit_meetup_application(item: dict):
|
||
"""数字游民社区报名表单"""
|
||
logging.info("submit_meetup_application item: %s", item)
|
||
user_id = item.get("user_id")
|
||
if not user_id:
|
||
raise HTTPException(status_code=400, detail="missing user_id")
|
||
try:
|
||
pb_client = get_pb_client()
|
||
solan = pb_client.collection("solan")
|
||
pb_data = {
|
||
"user_id": user_id,
|
||
"nickname": item.get("nickname", ""),
|
||
"occupation": item.get("occupation", ""),
|
||
"reason": item.get("reason", ""),
|
||
"wechatId": item.get("wechatId", ""),
|
||
"gender": item.get("gender", ""),
|
||
"education": item.get("education", ""),
|
||
"gradYear": item.get("gradYear", ""),
|
||
"phone": item.get("phone", ""),
|
||
"calculated_age": item.get("calculated_age", 0),
|
||
"type": "",
|
||
"order_id": "",
|
||
"amount": 0,
|
||
}
|
||
record = solan.create(pb_data)
|
||
logging.info(f"meetup 申请表单提交成功(待支付) - user_id: {user_id}, record_id: {record.id}")
|
||
return {"status": "ok", "record_id": record.id}
|
||
except Exception as e:
|
||
logging.error("meetup 申请提交失败: %s", e)
|
||
logging.error(f"meetup 申请提交失败 - user_id: {user_id}, error: {e}")
|
||
raise HTTPException(status_code=500, detail="submit failed")
|
||
|
||
|
||
class CreateUserRequest(BaseModel):
|
||
username: str | None = None
|
||
password: str | None = None
|
||
|
||
|
||
@router.post("/create_user")
|
||
async def create_user(item: CreateUserRequest):
|
||
"""创建 Memos 用户(基于 MemosSDK)"""
|
||
sdk = MemosSDK(api_url=MEMOS_API, token=MEMOS_TOKEN, enabled=bool(MEMOS_API and MEMOS_TOKEN))
|
||
if not sdk.enabled:
|
||
return {"error": "Memos 未配置"}
|
||
timenew = str(int(time.time()))
|
||
username = item.username or f"user{timenew}"
|
||
password = item.password or "12345678"
|
||
result = sdk.create_user_by_username(username=username, password=password)
|
||
logging.info("memos_result- %s", result)
|
||
return result
|