-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpaymentwindow.cpp
More file actions
100 lines (85 loc) · 2.97 KB
/
paymentwindow.cpp
File metadata and controls
100 lines (85 loc) · 2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#include "paymentwindow.h"
#include "ui_paymentwindow.h"
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QSqlRecord>
paymentwindow::paymentwindow(int id, QSqlQuery *s, QWidget *parent)
: QWidget(parent)
, ui(new Ui::paymentwindow)
{
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose);
this->setWindowTitle("付款");
sqlQuery=s;
iduser=id;
// 连接付款按钮的点击事件
connect(ui->payButton, &QPushButton::clicked, this, &paymentwindow::onPayButtonClicked);
// 加载未付款订单
loadUnpaidOrders();
}
paymentwindow::~paymentwindow()
{
delete ui;
}
// 加载未付款订单
void paymentwindow::loadUnpaidOrders()
{
// 清空订单列表
ui->orderList->clear();
// 查询未付款订单
QString sql = "SELECT o.idorder, r.restname "
"FROM `order` o "
"JOIN rests r ON o.idrest = r.idrest "
"WHERE o.iduser = :iduser AND o.status = 0"; // 状态为 0 表示未付款
sqlQuery->prepare(sql);
sqlQuery->bindValue(":iduser", iduser);
if (!sqlQuery->exec())
{
qDebug() << "加载未付款订单失败:" << sqlQuery->lastError();
ui->statusLabel->setText("加载订单失败,请稍后重试。");
return;
}
// 遍历查询结果,添加到订单列表
while (sqlQuery->next())
{
int idorder = sqlQuery->value("idorder").toInt();
QString restName = sqlQuery->value("restname").toString();
// 将订单信息添加到 QListWidget
QString itemText = QString("订单号: %1, 餐厅: %2").arg(idorder).arg(restName);
QListWidgetItem *item = new QListWidgetItem(itemText, ui->orderList);
item->setData(Qt::UserRole, idorder); // 将订单 ID 存储为 UserRole
}
// 如果没有未付款订单
if (ui->orderList->count() == 0)
{
ui->statusLabel->setText("您没有未付款的订单。");
}
}
// 付款按钮点击事件
void paymentwindow::onPayButtonClicked()
{
// 获取当前选中的订单
QListWidgetItem *selectedItem = ui->orderList->currentItem();
if (!selectedItem)
{
ui->statusLabel->setText("请先选择一个订单。");
return;
}
// 获取订单 ID
int orderId = selectedItem->data(Qt::UserRole).toInt();
// 更新订单状态为已付款
QSqlQuery query;
QString sql = "UPDATE `order` SET status = 1 WHERE idorder = :idorder";
sqlQuery->prepare(sql);
sqlQuery->bindValue(":idorder", orderId);
if (!sqlQuery->exec())
{
qDebug() << "更新订单状态失败:" << sqlQuery->lastError();
ui->statusLabel->setText("付款失败,请稍后重试。");
return;
}
// 更新界面状态
ui->statusLabel->setText("付款成功!订单号: " + QString::number(orderId));
loadUnpaidOrders(); // 重新加载未付款订单
}