Spaces:
Running
Running
| 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" | |
| 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)} | |
| 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)} | |
| # 🌟 新增:统计社区总人数的接口 | |
| 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)} |