diff --git a/am.py b/am.py index 186613d..7d6be69 100644 --- a/am.py +++ b/am.py @@ -1456,13 +1456,61 @@ def uploaded_file(name): def index(): return render_template("index.html") +@app.route("/api/my_orders") +def my_orders(): + phone = request.args.get("phone", "").strip() + if not phone: + return jsonify({"orders": []}) + conn = sqlite3.connect(DB) + rows = conn.execute("SELECT track_no, status, created FROM orders WHERE phone=? ORDER BY id DESC", (phone,)).fetchall() + conn.close() + return jsonify({"orders": [{"track_no": r[0], "status": r[1], "created": r[2]} for r in rows]}) + +@app.route("/api/ticket", methods=["POST"]) +def add_ticket(): + data = request.get_json() or {} + conn = sqlite3.connect(DB) + conn.execute("INSERT INTO tickets(content, phone, ctime, status) VALUES(?,?,?,?)", + (data.get("content",""), data.get("phone",""), datetime.now().strftime("%Y-%m-%d %H:%M:%S"), "pending")) + conn.commit(); conn.close() + return jsonify({"ok": True}) + +@app.route("/api/tickets") +def list_tickets(): + conn = sqlite3.connect(DB) + rows = conn.execute("SELECT id, content, phone, ctime FROM tickets WHERE status='pending' ORDER BY id DESC").fetchall() + conn.close() + return jsonify([{"id":r[0],"content":r[1],"phone":r[2],"ctime":r[3]} for r in rows]) + @app.route("/admin/login", methods=["POST"]) def admin_login(): - pwd = request.json.get("password", "") - if pwd == "123": - return jsonify({"ok": True}) + data = request.json or {} + u = data.get("username", "") + p = data.get("password", "") + conn = sqlite3.connect(DB) + row = conn.execute("SELECT name FROM agents WHERE username=? AND password=?", (u, p)).fetchone() + conn.close() + if row: + return jsonify({"ok": True, "name": row[0]}) return jsonify({"ok": False}), 401 +@app.route("/api/export_chat") +def export_chat(): + conn = sqlite3.connect(DB) + rows = conn.execute("SELECT h.title, m.role, m.content, m.ctime FROM messages m JOIN chat_history h ON m.conv_id=h.id ORDER BY m.id").fetchall() + conn.close() + lines = ["标题,角色,内容,时间"] + for r in rows: + safe = (r[2] or "").replace(",", ",").replace("\n", " ") + lines.append(f"{r[0]},{r[1]},{safe},{r[3]}") + import csv, io + buf = io.StringIO() + w = csv.writer(buf) + w.writerow(["标题","角色","内容","时间"]) + for r in rows: + w.writerow([r[0], r[1], (r[2] or ""), r[3]]) + return Response(buf.getvalue(), mimetype="text/csv", headers={"Content-Disposition":"attachment;filename=chat_export.csv"}) + @app.route("/admin") def admin(): return render_template("admin_login.html") diff --git a/templates/admin.html b/templates/admin.html index 80567ca..69245b4 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -65,7 +65,7 @@ body{font-family:-apple-system,"Microsoft YaHei",sans-serif;background:#f0f2f5;h 👍 - 👎 - -