Spaces:
Sleeping
Sleeping
File size: 2,779 Bytes
db73228 8cb3769 e84a3a9 db73228 8cb3769 c922cd9 8cb3769 34a9b56 8cb3769 db73228 a8e8490 db73228 a8e8490 e84a3a9 8cb3769 e84a3a9 db73228 864bec9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | 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)} |