120 lines
3.6 KiB
Python
120 lines
3.6 KiB
Python
from flask import Blueprint, render_template, session, redirect, url_for, flash, jsonify
|
|
import requests
|
|
from frontend.config import Config
|
|
from flask import request
|
|
|
|
orders_bp = Blueprint('orders', __name__, url_prefix='/orders')
|
|
|
|
@orders_bp.route('/')
|
|
def index():
|
|
if not session.get('token'):
|
|
flash("请先登录", "warning")
|
|
return redirect(url_for('auth.login'))
|
|
return render_template('orders.html', page=1)
|
|
|
|
@orders_bp.route('/list')
|
|
def list_orders():
|
|
if not session.get('token'):
|
|
flash("请先登录", "warning")
|
|
return redirect(url_for('auth.login'))
|
|
|
|
status = request.args.get('status', 'in_progress')
|
|
per_page = 20
|
|
page = int(request.args.get('page', 1))
|
|
|
|
# 调用后端API
|
|
payload = {
|
|
"token": session['token'],
|
|
"order_status": status,
|
|
"start": (page - 1) * per_page + 1,
|
|
"end": page * per_page
|
|
}
|
|
|
|
response = requests.post(
|
|
f"{Config.BASE_API_URL}/admin/orders/query",
|
|
json=payload
|
|
)
|
|
|
|
if response.status_code == 200:
|
|
# 修正数据解析方式
|
|
response_data = response.json()
|
|
orders = response_data.get("orders", []) # 获取订单列表
|
|
total_orders = response_data.get("total", 0) # 获取总数
|
|
|
|
# 修正分页计算逻辑
|
|
import math
|
|
total_pages = math.ceil(total_orders / per_page) if total_orders > 0 else 1
|
|
|
|
return render_template('_order_table.html',
|
|
orders=orders,
|
|
page=page,
|
|
total_pages=total_pages,
|
|
status=status)
|
|
|
|
flash("获取订单失败", "danger")
|
|
return redirect(url_for('orders.list_orders'))
|
|
|
|
@orders_bp.route('/complete/<int:order_id>', methods=['PUT'])
|
|
def complete_order(order_id):
|
|
"""处理订单完成请求"""
|
|
if not session.get('token'):
|
|
return jsonify({"error": "未授权"}), 401
|
|
|
|
# 获取前端参数
|
|
data = request.get_json()
|
|
payload = {
|
|
"token": session['token'],
|
|
"order_id": order_id,
|
|
"end_datetime": data.get('end_datetime').replace(" ", "T")
|
|
}
|
|
|
|
# 调用后端API
|
|
backend_response = requests.put(
|
|
f"{Config.BASE_API_URL}/admin/orders/{order_id}/complete",
|
|
json=payload
|
|
)
|
|
|
|
return jsonify(backend_response.json()), backend_response.status_code
|
|
|
|
@orders_bp.route('/settle/<int:order_id>', methods=['PUT'])
|
|
def settle_order(order_id):
|
|
"""处理订单结算请求"""
|
|
if not session.get('token'):
|
|
return jsonify({"error": "未授权"}), 401
|
|
|
|
data = request.get_json()
|
|
payload = {
|
|
"token": session['token'],
|
|
"order_id": order_id,
|
|
"used_points": data.get('used_points', 0),
|
|
"coupon_id": data.get('coupon_id')
|
|
}
|
|
|
|
backend_response = requests.put(
|
|
f"{Config.BASE_API_URL}/admin/orders/{order_id}/settle",
|
|
json=payload
|
|
)
|
|
|
|
return jsonify(backend_response.json()), backend_response.status_code
|
|
|
|
|
|
@orders_bp.route('/details/<int:order_id>', methods=['GET'])
|
|
def get_order_details(order_id):
|
|
"""获取订单详情"""
|
|
if not session.get('token'):
|
|
return jsonify({"error": "未授权"}), 401
|
|
|
|
try:
|
|
payload = {
|
|
"token": session['token'],
|
|
"order_id": order_id
|
|
}
|
|
# 调用后端API
|
|
backend_response = requests.post(
|
|
f"{Config.BASE_API_URL}/admin/orders/details",
|
|
json=payload
|
|
|
|
)
|
|
return jsonify(backend_response.json()), backend_response.status_code
|
|
except Exception as e:
|
|
return jsonify({"error": str(e)}), 500 |