Commit 2c93a60f by NitefllWind

1.新增警告类型弹窗。2.修复结算时未传给服务器代金券。3.新增Coupon(代金券)结构体,代金券以此类型存储在map中。4.修改代金券展示列表,选中的代金券总额超过待付时弹出警告框。

parent ccbedfbc
...@@ -26,6 +26,9 @@ void FMMsgWnd::show(InfoType type, const QString &info) ...@@ -26,6 +26,9 @@ void FMMsgWnd::show(InfoType type, const QString &info)
case InfoType::T_Failure: case InfoType::T_Failure:
iconUrl = ":/tip_error.png"; iconUrl = ":/tip_error.png";
break; break;
case InfoType::T_Warning:
iconUrl = ":/tip_warning.png";
break;
default: default:
iconUrl = ""; iconUrl = "";
break; break;
...@@ -43,6 +46,17 @@ void FMMsgWnd::show(InfoType type, const QString &info) ...@@ -43,6 +46,17 @@ void FMMsgWnd::show(InfoType type, const QString &info)
QDialog::exec(); QDialog::exec();
} }
void FMMsgWnd::FailureWnd(const QString &info)
{
FMMsgWnd window;
window.show(FMMsgWnd::T_Failure, info);
}
void FMMsgWnd::WarningWnd(const QString &info)
{
FMMsgWnd window;
window.show(FMMsgWnd::T_Warning, info);
}
void FMMsgWnd::on_alertBtnOk_clicked() void FMMsgWnd::on_alertBtnOk_clicked()
{ {
this->close(); this->close();
......
...@@ -19,9 +19,13 @@ public: ...@@ -19,9 +19,13 @@ public:
{ {
T_Normal, T_Normal,
T_Success, T_Success,
T_Failure T_Failure,
T_Warning
}; };
void show(InfoType type = T_Normal, const QString &info = ""); void show(InfoType type = T_Normal, const QString &info = "");
static void FailureWnd(const QString &info);
static void WarningWnd(const QString &info);
private slots: private slots:
void on_alertBtnOk_clicked(); void on_alertBtnOk_clicked();
......
...@@ -189,8 +189,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj) ...@@ -189,8 +189,7 @@ void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
if(prompt == 0) if(prompt == 0)
{ {
QString msg = rspObj["msg"].toString(); QString msg = rspObj["msg"].toString();
FMMsgWnd msgWnd; FMMsgWnd::FailureWnd(msg);
msgWnd.show(FMMsgWnd::T_Failure, msg);
} }
requestSuccess = false; requestSuccess = false;
_vindow = 0; _vindow = 0;
......
...@@ -218,19 +218,22 @@ void FMVipForward::final(const QJsonObject &job, QJsonObject &fmjob) ...@@ -218,19 +218,22 @@ void FMVipForward::final(const QJsonObject &job, QJsonObject &fmjob)
QJsonArray pay_ids = posTransObj["pay_ids"].toArray(); QJsonArray pay_ids = posTransObj["pay_ids"].toArray();
fmjob["memberTransId"] = job["fm_id"]; fmjob["memberTransId"] = job["fm_id"];
transObj["coupons"] = posTransObj["coupons"]; QJsonArray coupons = posTransObj["coupons"].toArray();
int codeAmount=0, scoreAmount=0, cashAmount=0, thirdAmount=0; int codeAmount=0, scoreAmount=0, cashAmount=0, thirdAmount=0;
foreach (QJsonValue pay_v , pay_ids) foreach (QJsonValue pay_v , pay_ids)
{ {
QJsonObject pay_ob = pay_v.toObject(); QJsonObject pay_ob = pay_v.toObject();
if(pay_ob["pay_id"] == "24") { QString type = pay_ob["pay_id"].toString();
if(type == "24") {
codeAmount = pay_ob["paid_total_amount"].toInt(); codeAmount = pay_ob["paid_total_amount"].toInt();
} } else if(type == "25") {
if(pay_ob["pay_id"] == "25") {
scoreAmount = pay_ob["paid_total_amount"].toInt(); scoreAmount = pay_ob["paid_total_amount"].toInt();
} else if(type == "77") {
coupons.append(pay_ob["code"].toString());
} }
} }
transObj["coupons"] = coupons;
cashAmount = paidAmount - codeAmount -scoreAmount - thirdAmount; cashAmount = paidAmount - codeAmount -scoreAmount - thirdAmount;
transObj["amount"] = amount; transObj["amount"] = amount;
transObj["payAmount"] = paidAmount; transObj["payAmount"] = paidAmount;
...@@ -287,13 +290,10 @@ void FMVipForward::logined(const QJsonObject &serverJob, QJsonObject &posJob) ...@@ -287,13 +290,10 @@ void FMVipForward::logined(const QJsonObject &serverJob, QJsonObject &posJob)
{ {
QJsonObject co = value.toObject(); QJsonObject co = value.toObject();
QString codeStr = co["couponCode"].toString(); QString codeStr = co["couponCode"].toString();
double amountStr = co["disAmount"].toInt()/100.0; double amount = co["disAmount"].toInt()/100.0;
QString desc = co["desc"].toString(); QString desc = co["desc"].toString();
QString couponInfo = QString("券码:%1 金额:%2 备注:%3")
.arg(codeStr) _sessionCouponMap[co["couponCode"].toString()] = Coupon{codeStr, amount, desc};
.arg(amountStr)
.arg(desc);
_sessionCouponMap[co["couponCode"].toString()] = couponInfo;
} }
QString name = memberObj["name"].toString(); QString name = memberObj["name"].toString();
...@@ -443,11 +443,6 @@ void FMVipForward::addSessionData(const QString key, const QString value) ...@@ -443,11 +443,6 @@ void FMVipForward::addSessionData(const QString key, const QString value)
_sessionDataMap.insert(key, value); _sessionDataMap.insert(key, value);
} }
void FMVipForward::setSessionCouponMap(QMap<QString, QString> couponMap)
{
_sessionCouponMap = couponMap;
}
QString FMVipForward::sessionData(const QString key) const QString FMVipForward::sessionData(const QString key) const
{ {
QString value = ""; QString value = "";
...@@ -463,7 +458,12 @@ int FMVipForward::sessionDataInt(const QString key) const ...@@ -463,7 +458,12 @@ int FMVipForward::sessionDataInt(const QString key) const
return value.toInt(); return value.toInt();
} }
QMap<QString, QString> FMVipForward::sessionCouponMap() const void FMVipForward::setSessionCouponMap(QMap<QString, Coupon> couponMap)
{
_sessionCouponMap = couponMap;
}
QMap<QString, Coupon> FMVipForward::sessionCouponMap() const
{ {
return _sessionCouponMap; return _sessionCouponMap;
} }
...@@ -29,6 +29,13 @@ ...@@ -29,6 +29,13 @@
#define FM_VIP_COUPON 1006 #define FM_VIP_COUPON 1006
#define FM_VIP_FINAL 1007 #define FM_VIP_FINAL 1007
struct Coupon
{
QString code;
double disAmount;
QString desc;
};
class FMVipForward : public QObject class FMVipForward : public QObject
{ {
Q_OBJECT Q_OBJECT
...@@ -43,9 +50,9 @@ public: ...@@ -43,9 +50,9 @@ public:
void addSessionData(const QString key, const QString value); void addSessionData(const QString key, const QString value);
QString sessionData(const QString key) const; QString sessionData(const QString key) const;
int sessionDataInt(const QString key) const; int sessionDataInt(const QString key) const;
QMap<QString, QString> sessionCouponMap() const;
void clearSessionData(); void clearSessionData();
void setSessionCouponMap(QMap<QString, QString>); QMap<QString, Coupon> sessionCouponMap() const;
void setSessionCouponMap(QMap<QString, Coupon>);
QString getString(int num) { return QString::number(num);} QString getString(int num) { return QString::number(num);}
int getInt(QString num_str) {return num_str.toInt();} int getInt(QString num_str) {return num_str.toInt();}
...@@ -89,7 +96,7 @@ private: ...@@ -89,7 +96,7 @@ private:
QMap<QString, QString> _sessionDataMap; QMap<QString, QString> _sessionDataMap;
QStringList _sessionDataList; QStringList _sessionDataList;
QJsonObject _sessionForward; QJsonObject _sessionForward;
QMap<QString, QString> _sessionCouponMap; QMap<QString, Coupon> _sessionCouponMap;
signals: signals:
void serverResponsed(const QJsonObject& rspData); void serverResponsed(const QJsonObject& rspData);
private slots: private slots:
......
#include "fmviporder.h" #include "fmviporder.h"
#include "fmvipforward.h" #include "fmmsgwnd.h"
#include "ui_fmviporder.h" #include "ui_fmviporder.h"
#include <QApplication>
#include <QDebug> #include <QDebug>
FMVipOrder::FMVipOrder(QDialog *parent) : FMVipOrder::FMVipOrder(QDialog *parent) :
...@@ -30,11 +29,15 @@ FMVipOrder::FMVipOrder(QDialog *parent) : ...@@ -30,11 +29,15 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
ui->name_label->setText(name); ui->name_label->setText(name);
couponMap = FMVipForward::instance()->sessionCouponMap(); couponMap = FMVipForward::instance()->sessionCouponMap();
for(QString code : couponMap.keys()) for(Coupon coupon : couponMap.values())
{ {
QString desc = couponMap[code]; QString value = QString("券码:%1 金额:%2 备注:%3")
auto item = new QListWidgetItem(desc); .arg(coupon.code)
item->setData(1, code); .arg(coupon.disAmount)
.arg(coupon.desc);
auto item = new QListWidgetItem(value);
item->setData(Coupon_Code, coupon.code);
item->setData(Coupon_Amount, coupon.disAmount);
item->setCheckState(Qt::Unchecked); item->setCheckState(Qt::Unchecked);
ui->scrollAreaWidgetContents->addItem(item); ui->scrollAreaWidgetContents->addItem(item);
} }
...@@ -69,7 +72,7 @@ void FMVipOrder::on_pay_btn_clicked() ...@@ -69,7 +72,7 @@ void FMVipOrder::on_pay_btn_clicked()
{ {
auto item = ui->scrollAreaWidgetContents->item(i); auto item = ui->scrollAreaWidgetContents->item(i);
if(item->checkState() == Qt::Checked) { if(item->checkState() == Qt::Checked) {
checkedCode << item->data(1).toString(); checkedCode << item->data(Coupon_Code).toString();
} }
} }
for(QString key : couponMap.keys()) for(QString key : couponMap.keys())
...@@ -102,14 +105,21 @@ void FMVipOrder::on_item_clicked(QListWidgetItem *item) ...@@ -102,14 +105,21 @@ void FMVipOrder::on_item_clicked(QListWidgetItem *item)
if(item != NULL) if(item != NULL)
{ {
Qt::CheckState state = item->checkState(); Qt::CheckState state = item->checkState();
double amount = item->data(Coupon_Amount).toDouble();
bool isAddCoupon = false;
switch (state) { switch (state) {
case Qt::Checked: case Qt::Checked:
item->setCheckState(Qt::Unchecked); item->setCheckState(Qt::Unchecked);
break; break;
case Qt::Unchecked: case Qt::Unchecked:
item->setCheckState(Qt::Checked); item->setCheckState(Qt::Checked);
isAddCoupon = true;
default: default:
break; break;
} }
bool isOK = orderInfo->setCouponAmount(isAddCoupon, amount);
if(!isOK){
FMMsgWnd::WarningWnd("请注意代金券总额已超过待付金额!");
}
} }
} }
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#define FMVIPORDER_H #define FMVIPORDER_H
#include <QListWidgetItem> #include <QListWidgetItem>
#include "fmvipwnd.h" #include "fmvipwnd.h"
#include "fmvipforward.h"
#define MIN(a,b) ((a<b) ? a : b) #define MIN(a,b) ((a<b) ? a : b)
#define DOUBLE_STR(num) QString::number(num, 'f', 2) #define DOUBLE_STR(num) QString::number(num, 'f', 2)
...@@ -25,13 +26,19 @@ public slots: ...@@ -25,13 +26,19 @@ public slots:
void on_item_clicked(QListWidgetItem*); void on_item_clicked(QListWidgetItem*);
private: private:
enum DataIndex
{
Coupon_Code = Qt::UserRole,
Coupon_Amount
};
class OrderInfo class OrderInfo
{ {
public: public:
OrderInfo() OrderInfo()
{ {
_amountStr = _scoreStr = _needPayStr = ""; _amountStr = _scoreStr = _needPayStr = "";
_amount = _score = _needPay = 0.0; _amount = _score = _needPay = _couponAmount = 0.0;
} }
OrderInfo(QString amountStr, QString scoreStr, QString needPayStr) OrderInfo(QString amountStr, QString scoreStr, QString needPayStr)
{ {
...@@ -43,6 +50,7 @@ private: ...@@ -43,6 +50,7 @@ private:
_score = _scoreStr.toInt() / 100.0; _score = _scoreStr.toInt() / 100.0;
_needPay = _needPayStr.toInt() / 100.0; _needPay = _needPayStr.toInt() / 100.0;
_couponAmount = 0.0;
} }
QString getAmountStr() QString getAmountStr()
...@@ -66,16 +74,30 @@ private: ...@@ -66,16 +74,30 @@ private:
return QString::number(payAmount); return QString::number(payAmount);
} }
// 可以正常加时返回true,否则返回false
bool setCouponAmount(bool isAdd, double amount)
{
bool isOK = true;
if(isAdd) {
_couponAmount += amount;
isOK = (_couponAmount <= _needPay);
}else{
_couponAmount -= amount;
}
return isOK;
}
private: private:
QString _amountStr, _scoreStr, _needPayStr; QString _amountStr, _scoreStr, _needPayStr;
double _amount, _score, _needPay; double _amount, _score, _needPay;
double _couponAmount;
}; };
private: private:
Ui::FMVipOrder *ui; Ui::FMVipOrder *ui;
FMVipOrder::OrderInfo *orderInfo; FMVipOrder::OrderInfo *orderInfo;
QMap<QString, QString> couponMap; QMap<QString, Coupon> couponMap;
}; };
#endif // FMVIPORDER_H #endif // FMVIPORDER_H
...@@ -13,5 +13,6 @@ ...@@ -13,5 +13,6 @@
<file>data/user</file> <file>data/user</file>
<file>loading.gif</file> <file>loading.gif</file>
<file>alert_bg.png</file> <file>alert_bg.png</file>
<file>tip_warning.png</file>
</qresource> </qresource>
</RCC> </RCC>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment