Spaces:
Running
Running
Upload 2 files
Browse files- router_posts.py +15 -18
- router_tasks.py +12 -8
router_posts.py
CHANGED
|
@@ -24,10 +24,10 @@ async def get_posts(page: int = 1, limit: int = 20):
|
|
| 24 |
获取帖子列表(分页,按时间倒序)
|
| 25 |
"""
|
| 26 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 27 |
-
users_db = db.load_data("users.json", default_data=
|
| 28 |
|
| 29 |
-
#
|
| 30 |
-
user_map =
|
| 31 |
|
| 32 |
# 按创建时间倒序
|
| 33 |
sorted_posts = sorted(posts_db, key=lambda x: x.get("created_at", 0), reverse=True)
|
|
@@ -80,9 +80,10 @@ async def get_post_detail(post_id: str):
|
|
| 80 |
获取帖子详情
|
| 81 |
"""
|
| 82 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 83 |
-
users_db = db.load_data("users.json", default_data=
|
| 84 |
|
| 85 |
-
|
|
|
|
| 86 |
|
| 87 |
for post in posts_db:
|
| 88 |
if post["id"] == post_id:
|
|
@@ -245,7 +246,7 @@ async def tip_post(post_id: str, amount: int, is_anon: bool = False, current_use
|
|
| 245 |
raise HTTPException(status_code=400, detail="打赏金额必须大于0")
|
| 246 |
|
| 247 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 248 |
-
users_db = db.load_data("users.json", default_data=
|
| 249 |
|
| 250 |
# 查找帖子
|
| 251 |
target_post = None
|
|
@@ -261,12 +262,8 @@ async def tip_post(post_id: str, amount: int, is_anon: bool = False, current_use
|
|
| 261 |
if target_post.get("author") == current_user:
|
| 262 |
raise HTTPException(status_code=400, detail="不能打赏自己的帖子")
|
| 263 |
|
| 264 |
-
# 检查余额
|
| 265 |
-
tipper =
|
| 266 |
-
for u in users_db:
|
| 267 |
-
if u["account"] == current_user:
|
| 268 |
-
tipper = u
|
| 269 |
-
break
|
| 270 |
|
| 271 |
if not tipper or tipper.get("balance", 0) < amount:
|
| 272 |
raise HTTPException(status_code=400, detail="余额不足")
|
|
@@ -275,10 +272,9 @@ async def tip_post(post_id: str, amount: int, is_anon: bool = False, current_use
|
|
| 275 |
tipper["balance"] = tipper.get("balance", 0) - amount
|
| 276 |
|
| 277 |
# 给作者加钱
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
break
|
| 282 |
|
| 283 |
# 更新打赏榜单
|
| 284 |
tip_board = target_post.get("tip_board", [])
|
|
@@ -311,9 +307,10 @@ async def get_post_comments(post_id: str):
|
|
| 311 |
获取帖子评论
|
| 312 |
"""
|
| 313 |
comments_db = db.load_data("comments.json", default_data=[])
|
| 314 |
-
users_db = db.load_data("users.json", default_data=
|
| 315 |
|
| 316 |
-
|
|
|
|
| 317 |
|
| 318 |
# 过滤该帖子的评论
|
| 319 |
post_comments = [c for c in comments_db if c.get("target_id") == post_id and c.get("target_type") == "post"]
|
|
|
|
| 24 |
获取帖子列表(分页,按时间倒序)
|
| 25 |
"""
|
| 26 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 27 |
+
users_db = db.load_data("users.json", default_data={})
|
| 28 |
|
| 29 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 30 |
+
user_map = users_db
|
| 31 |
|
| 32 |
# 按创建时间倒序
|
| 33 |
sorted_posts = sorted(posts_db, key=lambda x: x.get("created_at", 0), reverse=True)
|
|
|
|
| 80 |
获取帖子详情
|
| 81 |
"""
|
| 82 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 83 |
+
users_db = db.load_data("users.json", default_data={})
|
| 84 |
|
| 85 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 86 |
+
user_map = users_db
|
| 87 |
|
| 88 |
for post in posts_db:
|
| 89 |
if post["id"] == post_id:
|
|
|
|
| 246 |
raise HTTPException(status_code=400, detail="打赏金额必须大于0")
|
| 247 |
|
| 248 |
posts_db = db.load_data("posts.json", default_data=[])
|
| 249 |
+
users_db = db.load_data("users.json", default_data={})
|
| 250 |
|
| 251 |
# 查找帖子
|
| 252 |
target_post = None
|
|
|
|
| 262 |
if target_post.get("author") == current_user:
|
| 263 |
raise HTTPException(status_code=400, detail="不能打赏自己的帖子")
|
| 264 |
|
| 265 |
+
# 检查余额(users_db 是字典格式)
|
| 266 |
+
tipper = users_db.get(current_user)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 267 |
|
| 268 |
if not tipper or tipper.get("balance", 0) < amount:
|
| 269 |
raise HTTPException(status_code=400, detail="余额不足")
|
|
|
|
| 272 |
tipper["balance"] = tipper.get("balance", 0) - amount
|
| 273 |
|
| 274 |
# 给作者加钱
|
| 275 |
+
author = users_db.get(target_post.get("author"))
|
| 276 |
+
if author:
|
| 277 |
+
author["balance"] = author.get("balance", 0) + amount
|
|
|
|
| 278 |
|
| 279 |
# 更新打赏榜单
|
| 280 |
tip_board = target_post.get("tip_board", [])
|
|
|
|
| 307 |
获取帖子评论
|
| 308 |
"""
|
| 309 |
comments_db = db.load_data("comments.json", default_data=[])
|
| 310 |
+
users_db = db.load_data("users.json", default_data={})
|
| 311 |
|
| 312 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 313 |
+
user_map = users_db
|
| 314 |
|
| 315 |
# 过滤该帖子的评论
|
| 316 |
post_comments = [c for c in comments_db if c.get("target_id") == post_id and c.get("target_type") == "post"]
|
router_tasks.py
CHANGED
|
@@ -173,13 +173,14 @@ async def get_tasks(
|
|
| 173 |
- sort: latest(最新)/price(价格高)/deadline(截止日期近)
|
| 174 |
"""
|
| 175 |
tasks_db = db.load_data("tasks.json", default_data=[])
|
| 176 |
-
users_db = db.load_data("users.json", default_data=
|
| 177 |
|
| 178 |
# 自动检查并更新过期任务(带自动退款)
|
| 179 |
if check_and_update_expired_tasks(tasks_db, db_session):
|
| 180 |
db.save_data("tasks.json", tasks_db)
|
| 181 |
|
| 182 |
-
|
|
|
|
| 183 |
|
| 184 |
# 状态筛选(默认排除已取消和过期的)
|
| 185 |
filtered = tasks_db
|
|
@@ -227,9 +228,10 @@ async def get_task_detail(task_id: str, current_user: str = None):
|
|
| 227 |
获取任务详情
|
| 228 |
"""
|
| 229 |
tasks_db = db.load_data("tasks.json", default_data=[])
|
| 230 |
-
users_db = db.load_data("users.json", default_data=
|
| 231 |
|
| 232 |
-
|
|
|
|
| 233 |
|
| 234 |
for task in tasks_db:
|
| 235 |
if task["id"] == task_id:
|
|
@@ -757,9 +759,10 @@ async def get_dispute_detail(dispute_id: str):
|
|
| 757 |
获取申诉详情
|
| 758 |
"""
|
| 759 |
disputes_db = db.load_data("disputes.json", default_data=[])
|
| 760 |
-
users_db = db.load_data("users.json", default_data=
|
| 761 |
|
| 762 |
-
|
|
|
|
| 763 |
|
| 764 |
for dispute in disputes_db:
|
| 765 |
if dispute["id"] == dispute_id:
|
|
@@ -828,9 +831,10 @@ async def get_admin_disputes(status: str = None, current_user: str = Depends(req
|
|
| 828 |
raise HTTPException(status_code=403, detail="需要管理员权限")
|
| 829 |
|
| 830 |
disputes_db = db.load_data("disputes.json", default_data=[])
|
| 831 |
-
users_db = db.load_data("users.json", default_data=
|
| 832 |
|
| 833 |
-
|
|
|
|
| 834 |
|
| 835 |
# 筛选
|
| 836 |
filtered = disputes_db
|
|
|
|
| 173 |
- sort: latest(最新)/price(价格高)/deadline(截止日期近)
|
| 174 |
"""
|
| 175 |
tasks_db = db.load_data("tasks.json", default_data=[])
|
| 176 |
+
users_db = db.load_data("users.json", default_data={})
|
| 177 |
|
| 178 |
# 自动检查并更新过期任务(带自动退款)
|
| 179 |
if check_and_update_expired_tasks(tasks_db, db_session):
|
| 180 |
db.save_data("tasks.json", tasks_db)
|
| 181 |
|
| 182 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 183 |
+
user_map = users_db
|
| 184 |
|
| 185 |
# 状态筛选(默认排除已取消和过期的)
|
| 186 |
filtered = tasks_db
|
|
|
|
| 228 |
获取任务详情
|
| 229 |
"""
|
| 230 |
tasks_db = db.load_data("tasks.json", default_data=[])
|
| 231 |
+
users_db = db.load_data("users.json", default_data={})
|
| 232 |
|
| 233 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 234 |
+
user_map = users_db
|
| 235 |
|
| 236 |
for task in tasks_db:
|
| 237 |
if task["id"] == task_id:
|
|
|
|
| 759 |
获取申诉详情
|
| 760 |
"""
|
| 761 |
disputes_db = db.load_data("disputes.json", default_data=[])
|
| 762 |
+
users_db = db.load_data("users.json", default_data={})
|
| 763 |
|
| 764 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 765 |
+
user_map = users_db
|
| 766 |
|
| 767 |
for dispute in disputes_db:
|
| 768 |
if dispute["id"] == dispute_id:
|
|
|
|
| 831 |
raise HTTPException(status_code=403, detail="需要管理员权限")
|
| 832 |
|
| 833 |
disputes_db = db.load_data("disputes.json", default_data=[])
|
| 834 |
+
users_db = db.load_data("users.json", default_data={})
|
| 835 |
|
| 836 |
+
# users_db 已经是 {account: user_info} 格式,直接使用
|
| 837 |
+
user_map = users_db
|
| 838 |
|
| 839 |
# 筛选
|
| 840 |
filtered = disputes_db
|