fix(timezone): 调整订单时间显示为北京时间
- 在订单创建时间和支付时间上统一加上8小时的时差偏移 - 修改get_orders和api_payment_history中时间的格式化逻辑,确保时间正确转换 - buy.html和recharge_history.html模板中调整paid_at时间显示,增加时差处理 - auth.py中buy_page接口支持支付成功提示和订单信息传递 - payment.py中同步支付回调改为重定向至充值页并传递成功参数
This commit is contained in:
parent
72bacacf4f
commit
925da47118
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -194,6 +194,7 @@ def delete_notification():
|
||||
@permission_required('manage_system') # 仅限超级管理员
|
||||
def get_orders():
|
||||
orders = Order.query.order_by(Order.created_at.desc()).all()
|
||||
from datetime import timedelta
|
||||
return jsonify({
|
||||
"orders": [{
|
||||
"id": o.id,
|
||||
@ -203,7 +204,7 @@ def get_orders():
|
||||
"points": o.points,
|
||||
"status": o.status,
|
||||
"trade_no": o.trade_no,
|
||||
"created_at": o.created_at.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
"paid_at": o.paid_at.strftime('%Y-%m-%d %H:%M:%S') if o.paid_at else None
|
||||
"created_at": (o.created_at + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'),
|
||||
"paid_at": (o.paid_at + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') if o.paid_at else None
|
||||
} for o in orders]
|
||||
})
|
||||
@ -63,7 +63,21 @@ def buy_page():
|
||||
if is_admin:
|
||||
admin_orders = Order.query.order_by(Order.created_at.desc()).limit(10).all()
|
||||
|
||||
return render_template('buy.html', personal_orders=personal_orders, admin_orders=admin_orders, is_admin=is_admin)
|
||||
# 处理支付成功提示
|
||||
success = request.args.get('success') == 'true'
|
||||
out_trade_no = request.args.get('out_trade_no')
|
||||
order = None
|
||||
if out_trade_no:
|
||||
order = Order.query.filter_by(out_trade_no=out_trade_no).first()
|
||||
|
||||
import datetime
|
||||
return render_template('buy.html',
|
||||
personal_orders=personal_orders,
|
||||
admin_orders=admin_orders,
|
||||
is_admin=is_admin,
|
||||
modules={'datetime': datetime},
|
||||
success=success,
|
||||
order=order)
|
||||
|
||||
@auth_bp.route('/api/auth/send_code', methods=['POST'])
|
||||
def send_code():
|
||||
|
||||
@ -82,8 +82,8 @@ def payment_return():
|
||||
|
||||
if success:
|
||||
logger.info(f"同步回调验证成功,订单号: {out_trade_no}")
|
||||
# 同步通知仅用于页面展示,实际业务逻辑在异步通知 notify 中处理
|
||||
return render_template('buy.html', success=True, order=order)
|
||||
# 重定向到充值页面,并带上成功参数
|
||||
return redirect(url_for('auth.buy_page', success='true', out_trade_no=out_trade_no))
|
||||
else:
|
||||
logger.error(f"同步回调验证失败,订单号: {out_trade_no}")
|
||||
return "支付验证失败", 400
|
||||
@ -101,7 +101,8 @@ def payment_history():
|
||||
user_id = session['user_id']
|
||||
orders = Order.query.filter_by(user_id=user_id).order_by(Order.created_at.desc()).all()
|
||||
|
||||
return render_template('recharge_history.html', orders=orders)
|
||||
import datetime
|
||||
return render_template('recharge_history.html', orders=orders, modules={'datetime': datetime})
|
||||
|
||||
@payment_bp.route('/api/history', methods=['GET'])
|
||||
def api_payment_history():
|
||||
@ -112,6 +113,7 @@ def api_payment_history():
|
||||
user_id = session['user_id']
|
||||
orders = Order.query.filter_by(user_id=user_id).order_by(Order.created_at.desc()).all()
|
||||
|
||||
from datetime import timedelta
|
||||
return jsonify({
|
||||
"orders": [{
|
||||
"id": o.id,
|
||||
@ -120,8 +122,8 @@ def api_payment_history():
|
||||
"points": o.points,
|
||||
"status": o.status,
|
||||
"trade_no": o.trade_no,
|
||||
"created_at": o.created_at.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
"paid_at": o.paid_at.strftime('%Y-%m-%d %H:%M:%S') if o.paid_at else None
|
||||
"created_at": (o.created_at + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S'),
|
||||
"paid_at": (o.paid_at + timedelta(hours=8)).strftime('%Y-%m-%d %H:%M:%S') if o.paid_at else None
|
||||
} for o in orders]
|
||||
})
|
||||
@payment_bp.route('/notify', methods=['POST'])
|
||||
|
||||
@ -178,7 +178,13 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="px-8 py-5">
|
||||
<span class="text-[10px] font-bold text-slate-400">{{ order.paid_at.strftime('%m-%d %H:%M') if order.paid_at else '-' }}</span>
|
||||
<span class="text-[10px] font-bold text-slate-400">
|
||||
{% if order.paid_at %}
|
||||
{{ (order.paid_at + modules.datetime.timedelta(hours=8)).strftime('%m-%d %H:%M') }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
@ -64,7 +64,13 @@
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="px-8 py-5">
|
||||
<span class="text-xs font-bold text-slate-400">{{ order.paid_at.strftime('%Y-%m-%d %H:%M') if order.paid_at else '-' }}</span>
|
||||
<span class="text-xs font-bold text-slate-400">
|
||||
{% if order.paid_at %}
|
||||
{{ (order.paid_at + modules.datetime.timedelta(hours=8)).strftime('%Y-%m-%d %H:%M') }}
|
||||
{% else %}
|
||||
-
|
||||
{% endif %}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user