from flask import Blueprint, render_template, session, redirect, url_for, flash, request import requests from frontend.config import Config coupons_bp = Blueprint('coupons', __name__, url_prefix='/admin/coupons') @coupons_bp.route('/') def list_coupons(): if not session.get('token'): return redirect(url_for('auth.login')) try: response = requests.get( f"{Config.BASE_API_URL}/admin/coupons", params={"token": session['token']} ) if response.status_code == 200: return render_template('coupons/list.html', coupons=response.json()) flash("获取优惠券列表失败", "danger") return render_template('coupons/list.html', coupons=[]) except requests.exceptions.ConnectionError: flash("后端服务不可用", "danger") return render_template('coupons/list.html', coupons=[]) @coupons_bp.route('/create', methods=['POST']) def create_coupon(): if not session.get('token'): return redirect(url_for('auth.login')) form_data = { "token": session['token'], "coupon_code": request.form['coupon_code'], "discount_type": request.form['discount_type'], "discount_amount": request.form['discount_amount'], "min_order_amount": request.form.get('min_order_amount'), "valid_from": request.form['valid_from'], "valid_to": request.form['valid_to'], "quantity": request.form['quantity'] } try: response = requests.post( f"{Config.BASE_API_URL}/admin/coupons/create", json=form_data ) if response.status_code == 200: flash("优惠券创建成功", "success") else: flash(response.json().get('detail', '创建失败'), "danger") except requests.exceptions.ConnectionError: flash("后端服务不可用", "danger") return redirect(url_for('coupons.list_coupons')) @coupons_bp.route('/delete/', methods=['POST']) def delete_coupon(coupon_id): if not session.get('token'): return redirect(url_for('auth.login')) try: response = requests.delete( f"{Config.BASE_API_URL}/admin/coupons/{coupon_id}", params={"token": session['token']} ) if response.status_code == 200: flash("优惠券删除成功", "success") else: flash(response.json().get('detail', '删除失败'), "danger") except requests.exceptions.ConnectionError: flash("后端服务不可用", "danger") return redirect(url_for('coupons.list_coupons'))