from datetime import datetime from fastapi import APIRouter from pydantic import BaseModel from core import get_db, save_db, AuthReq router = APIRouter() class RankingRegisterReq(BaseModel): username: str source: str = "ranking" @router.post("/api/hub/ranking_register") async def ranking_register(req: RankingRegisterReq): try: users = get_db("users.json") target_name = req.username.strip() if not target_name or target_name != req.username: return {"status": "error", "message": "首尾不能包含空格且不能为空"} actual_user = next((u for u in users.keys() if u.lower() == target_name.lower()), None) if actual_user: user_info = users[actual_user] if user_info.get("source") == "ranking": return {"status": "success", "reg_date": user_info.get("reg_date", datetime.now().strftime("%Y-%m-%d"))} else: # 用户已独立注册,现在通过 Ranking 登录,将账号升级为 Ranking 绑定 user_info["password_hash"] = "__ranking_linked__" user_info["source"] = "ranking" user_info["last_update"] = datetime.now().strftime("%Y-%m-%d") save_db(users, "users.json") return {"status": "success", "reg_date": user_info.get("reg_date", datetime.now().strftime("%Y-%m-%d"))} reg_date = datetime.now().strftime("%Y-%m-%d") users[target_name] = { "password_hash": "__ranking_linked__", "reg_date": reg_date, "source": "ranking", "last_update": reg_date } save_db(users, "users.json") return {"status": "success", "reg_date": reg_date} except Exception as e: return {"status": "error", "message": str(e)} @router.post("/api/hub/login") async def login(req: AuthReq): try: users = get_db("users.json") actual_user = next((u for u in users.keys() if u.lower() == req.username.lower()), None) if not actual_user: return {"status": "error", "message": "用户不存在!"} user_info = users[actual_user] if user_info.get("source") == "ranking": return {"status": "success", "reg_date": user_info.get("reg_date", "2026-03-14")} return {"status": "error", "message": "非Ranking绑定账号无法登录"} except Exception as e: return {"status": "error", "message": str(e)} # 🌟 新增:统计社区总人数的接口 @router.get("/api/hub/stats") async def get_hub_stats(): try: users = get_db("users.json") return {"status": "success", "user_count": len(users)} except Exception as e: return {"status": "error", "message": str(e)}