From 1aa3cb4151f7922b953d3fe9c3d60687ef336d50 Mon Sep 17 00:00:00 2001 From: 24024 <240241002@qq.com> Date: Sun, 18 Jan 2026 20:45:28 +0800 Subject: [PATCH] feat: Introduce a new page for purchasing points and viewing recharge history, supported by model updates and a new logging service. --- models.py | 17 ++++++++++++++--- services/logger.py | 6 +++--- templates/buy.html | 5 ++--- templates/recharge_history.html | 5 ++--- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/models.py b/models.py index de73123..8305a02 100644 --- a/models.py +++ b/models.py @@ -1,12 +1,23 @@ from extensions import db -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone from werkzeug.security import generate_password_hash, check_password_hash +# 定义时区常量 +UTC_TZ = timezone.utc +BEIJING_TZ = timezone(timedelta(hours=8)) + def to_bj_time(dt): - """将 UTC 时间转换为北京时间 (UTC+8)""" + """将 UTC 时间转换为北京时间 (UTC+8) + + 无论系统时区设置如何,都能正确转换为北京时间 + """ if not dt: return None - return dt + timedelta(hours=8) + # 如果 dt 没有时区信息,假设它是 UTC 时间 + if dt.tzinfo is None: + dt = dt.replace(tzinfo=UTC_TZ) + # 转换为北京时间 + return dt.astimezone(BEIJING_TZ).replace(tzinfo=None) # 角色与权限的多对多关联表 diff --git a/services/logger.py b/services/logger.py index f7754df..bb06e42 100644 --- a/services/logger.py +++ b/services/logger.py @@ -58,8 +58,8 @@ class SystemLogger: def _push_to_redis(self, level, message, extra=None): """推送到 Redis 并保留 30 天数据""" try: - now = datetime.utcnow() - bj_now = now + timedelta(hours=8) + now = datetime.now(timezone.utc) + bj_now = now.astimezone(BEIJING_TZ) user_id = None if has_request_context(): user_id = g.get('user_id') or (getattr(g, 'user', None).id if hasattr(g, 'user') and g.user else None) @@ -92,7 +92,7 @@ class SystemLogger: 'module': module, 'user_id': extra.get('user_id') if extra else None, 'extra': json.dumps(extra, ensure_ascii=False) if extra else None, - 'created_at': datetime.utcnow() + 'created_at': datetime.now(timezone.utc).replace(tzinfo=None) # 存储 UTC 时间(无时区信息) } # 捕获请求上下文信息 diff --git a/templates/buy.html b/templates/buy.html index e1b0191..b3899d5 100644 --- a/templates/buy.html +++ b/templates/buy.html @@ -200,9 +200,8 @@ - {% if order.paid_at %} - {{ (order.paid_at + modules.datetime.timedelta(hours=8)).strftime('%m-%d %H:%M') - }} + {% if order.paid_at_bj %} + {{ order.paid_at_bj.strftime('%m-%d %H:%M') }} {% else %} - {% endif %} diff --git a/templates/recharge_history.html b/templates/recharge_history.html index 78bf699..5b196f3 100644 --- a/templates/recharge_history.html +++ b/templates/recharge_history.html @@ -77,9 +77,8 @@ - {% if order.paid_at %} - {{ (order.paid_at + modules.datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M') - }} + {% if order.paid_at_bj %} + {{ order.paid_at_bj.strftime('%Y-%m-%d %H:%M') }} {% else %} - {% endif %}