Commit c312f856 by NitefllWind

2016年9月13日修复bug

parent 5b724e4f
...@@ -6,6 +6,8 @@ ...@@ -6,6 +6,8 @@
QT += core gui network QT += core gui network
CONFIG += c++11
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = FMVip TARGET = FMVip
...@@ -39,7 +41,7 @@ RESOURCES += \ ...@@ -39,7 +41,7 @@ RESOURCES += \
INCLUDEPATH += ../FMVipDC/ INCLUDEPATH += ../FMVipDC/
LIBS += -L..\FMVip\libs -lFMVipDC LIBS += -L..\FMVipTest -lFMVipDC
win32 { win32 {
RC_FILE = res/FMVip.rc RC_FILE = res/FMVip.rc
...@@ -47,3 +49,5 @@ RC_FILE = res/FMVip.rc ...@@ -47,3 +49,5 @@ RC_FILE = res/FMVip.rc
SUBDIRS += \ SUBDIRS += \
../FMVipDC/FMVipDC.pro ../FMVipDC/FMVipDC.pro
DESTDIR += ../FMVipTest
...@@ -49,7 +49,7 @@ void FMVipDispatcher::onActiveSysTrayIcon(QSystemTrayIcon::ActivationReason reas ...@@ -49,7 +49,7 @@ void FMVipDispatcher::onActiveSysTrayIcon(QSystemTrayIcon::ActivationReason reas
INT FMVipDispatcher::_ParseRequest(LPSTR data) INT FMVipDispatcher::_ParseRequest(LPSTR data)
{ {
qDebug() << __FUNCTION__; qDebug() << __FUNCTION__ << "===>" << data;
QJsonParseError err; QJsonParseError err;
QJsonDocument json = QJsonDocument::fromJson(data, &err); QJsonDocument json = QJsonDocument::fromJson(data, &err);
if (err.error != QJsonParseError::NoError) { if (err.error != QJsonParseError::NoError) {
...@@ -151,6 +151,7 @@ void FMVipDispatcher::onFinished() ...@@ -151,6 +151,7 @@ void FMVipDispatcher::onFinished()
void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj) void FMVipDispatcher::onServerResponsed(const QJsonObject &rspObj)
{ {
qDebug() << __FUNCTION__ << "===>" << rspObj;
if(_vindow != 0) { if(_vindow != 0) {
_vindow->deleteLater(); _vindow->deleteLater();
} }
......
...@@ -68,14 +68,13 @@ void FMVipForward::parseRequest(const QJsonObject &jsonObj) ...@@ -68,14 +68,13 @@ void FMVipForward::parseRequest(const QJsonObject &jsonObj)
} }
} }
qDebug() << fm_jsonObj;
// 向服务器发送请求 // 向服务器发送请求
request(fm_jsonObj); request(fm_jsonObj);
} }
void FMVipForward::request(const QJsonObject &reqJob) void FMVipForward::request(const QJsonObject &reqJob)
{ {
qDebug() << __FUNCTION__; qDebug() << __FUNCTION__ << "===>" << reqJob;
// 设置URL // 设置URL
QString signStr = sign(reqJob); QString signStr = sign(reqJob);
...@@ -105,31 +104,42 @@ void FMVipForward::onServerFinished(QNetworkReply *reply) ...@@ -105,31 +104,42 @@ void FMVipForward::onServerFinished(QNetworkReply *reply)
QJsonParseError err; QJsonParseError err;
QJsonDocument jdoc = QJsonDocument::fromJson(data, &err); QJsonDocument jdoc = QJsonDocument::fromJson(data, &err);
qDebug() << "Server Return JSON ===>" << jdoc.object();
if(err.error != QJsonParseError::NoError || !jdoc.isObject()) { if(err.error != QJsonParseError::NoError || !jdoc.isObject()) {
posObj["statusCode"] = 1000; posObj["statusCode"] = 1000;
posObj["msg"] = "服务器返回数据异常"; posObj["msg"] = "服务器返回数据异常";
} else { } else {
QJsonObject serverObj = jdoc.object(); QJsonObject serverObj = jdoc.object();
posObj["statusCode"] = serverObj["statusCode"];
posObj["msg"] = serverObj["msg"]; // 服务器返回错误信息
switch (_reqType) { if(serverObj.contains("errcode") && serverObj.contains("errmsg")) {
case FM_VIP_LOGIN: posObj["statusCode"] = serverObj["errcode"];
logined(serverObj, posObj); posObj["msg"] = serverObj["errmsg"];
break; }
case FM_VIP_COUPON: // 服务器返回正常信息
couponed(serverObj, posObj); else {
break; posObj["statusCode"] = serverObj["statusCode"];
case FM_VIP_FUND: posObj["msg"] = serverObj["msg"];
funded(serverObj, posObj); switch (_reqType) {
break; case FM_VIP_LOGIN:
case FM_VIP_PAY: logined(serverObj, posObj);
payed(serverObj, posObj); break;
break; case FM_VIP_COUPON:
case FM_VIP_FINAL: couponed(serverObj, posObj);
finaled(serverObj, posObj); break;
break; case FM_VIP_FUND:
default: funded(serverObj, posObj);
break; break;
case FM_VIP_PAY:
payed(serverObj, posObj);
break;
case FM_VIP_FINAL:
finaled(serverObj, posObj);
break;
default:
break;
}
} }
} }
} }
...@@ -291,7 +301,7 @@ void FMVipForward::payed(const QJsonObject &serverJob, QJsonObject &posJob) ...@@ -291,7 +301,7 @@ void FMVipForward::payed(const QJsonObject &serverJob, QJsonObject &posJob)
pay_obj_2["paid_total_amount"] = serverJob["scoreAmount"]; pay_obj_2["paid_total_amount"] = serverJob["scoreAmount"];
pay_obj_3["pay_id"] = "77"; pay_obj_3["pay_id"] = "77";
pay_obj_3["pay_str"] = "优惠支付"; pay_obj_3["pay_str"] = "优惠支付";
pay_obj_3["pain_total_amount"] = 0; pay_obj_3["paid_total_amount"] = 0;
pay_obj_3["code"] = ""; pay_obj_3["code"] = "";
pay_ids.append(pay_obj_1); pay_ids.append(pay_obj_1);
pay_ids.append(pay_obj_2); pay_ids.append(pay_obj_2);
......
...@@ -14,23 +14,27 @@ FMVipOrder::FMVipOrder(QDialog *parent) : ...@@ -14,23 +14,27 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
QString business_date = FMVipForward::instance()->sessionData("business_date"); QString business_date = FMVipForward::instance()->sessionData("business_date");
QString fm_id = FMVipForward::instance()->sessionData("fm_open_id"); QString fm_id = FMVipForward::instance()->sessionData("fm_open_id");
QString amount_str = FMVipForward::instance()->sessionData("amount"); QString amount_str = FMVipForward::instance()->sessionData("amount");
QString score = FMVipForward::instance()->sessionData("score"); QString score_str = FMVipForward::instance()->sessionData("score");
QString needPay_str = FMVipForward::instance()->sessionData("needPay"); QString needPay_str = FMVipForward::instance()->sessionData("needPay");
orderInfo = new FMVipOrder::OrderInfo(amount_str, score, needPay_str); orderInfo = new FMVipOrder::OrderInfo(amount_str, score_str, needPay_str);
ui->operator_label->setText(operator_id); ui->operator_label->setText(operator_id);
ui->bd_label->setText(business_date); ui->bd_label->setText(business_date);
ui->id_label->setText(fm_id); ui->id_label->setText(fm_id);
ui->point_label->setText(score); ui->point_label->setText(score_str);
ui->balance_label->setText(orderInfo->amountStr()); ui->balance_label->setText(orderInfo->getAmountStr());
ui->price_label->setText(orderInfo->needPayStr()); ui->price_label->setText(orderInfo->getNeedPayStr());
ui->pay_edit->setText(orderInfo->defaultPayStr()); ui->pay_edit->setText(orderInfo->getPayAmountStr());
} }
FMVipOrder::~FMVipOrder() FMVipOrder::~FMVipOrder()
{ {
if(orderInfo != NULL){
delete orderInfo;
orderInfo = NULL;
}
delete ui; delete ui;
} }
...@@ -47,8 +51,8 @@ void FMVipOrder::on_coupon_next_btn_clicked() ...@@ -47,8 +51,8 @@ void FMVipOrder::on_coupon_next_btn_clicked()
void FMVipOrder::on_pay_btn_clicked() void FMVipOrder::on_pay_btn_clicked()
{ {
qDebug() << __FUNCTION__; qDebug() << __FUNCTION__;
int codeAmount = ui->pay_edit->text().toDouble() * 100; QString codeAmountStr = orderInfo->getTotalPayStr();
FMVipForward::instance()->addSessionData("codeAmount", QString::number(codeAmount)); FMVipForward::instance()->addSessionData("codeAmount", codeAmountStr);
ui->pay_btn->setEnabled(false); ui->pay_btn->setEnabled(false);
ui->pay_chk->setEnabled(false); ui->pay_chk->setEnabled(false);
...@@ -60,10 +64,17 @@ void FMVipOrder::on_pay_chk_clicked(bool checked) ...@@ -60,10 +64,17 @@ void FMVipOrder::on_pay_chk_clicked(bool checked)
{ {
qDebug() << __FUNCTION__ << checked; qDebug() << __FUNCTION__ << checked;
ui->pay_edit->setText(orderInfo->defaultPayStr(checked)); orderInfo->setIsUseScore(checked);
ui->pay_edit->setText(orderInfo->getPayAmountStr());
int is = checked ? 1 : 0; int is = checked ? 1 : 0;
FMVipForward::instance()->addSessionData("isUseScore", QString::number(is)); FMVipForward::instance()->addSessionData("isUseScore", QString::number(is));
} }
void FMVipOrder::on_pay_edit_textEdited(const QString &text)
{
orderInfo->setEditPayAmount(text);
// ui->pay_edit->setText(orderInfo->getPayAmountStr());
}
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
#include "fmvipwnd.h" #include "fmvipwnd.h"
#define MIN(a,b) ((a<b) ? a : b)
#define DOUBLE_STR(num) QString::number(num, 'f', 2)
namespace Ui { namespace Ui {
class FMVipOrder; class FMVipOrder;
} }
...@@ -21,6 +24,9 @@ public slots: ...@@ -21,6 +24,9 @@ public slots:
void on_pay_btn_clicked(); void on_pay_btn_clicked();
void on_pay_chk_clicked(bool checked); void on_pay_chk_clicked(bool checked);
private slots:
void on_pay_edit_textEdited(const QString &text);
private: private:
class OrderInfo class OrderInfo
{ {
...@@ -39,50 +45,82 @@ private: ...@@ -39,50 +45,82 @@ private:
_amount = _amountStr.toInt() / 100.0; _amount = _amountStr.toInt() / 100.0;
_score = _scoreStr.toInt() / 100.0; _score = _scoreStr.toInt() / 100.0;
_needPay = _needPayStr.toInt() / 100.0; _needPay = _needPayStr.toInt() / 100.0;
isUseScore = false;
editPayAmount = MIN(_amount, _needPay);
setPays();
} }
double amount() QString getAmountStr()
{ {
return _amount; return DOUBLE_STR(_amount);
} }
QString amountStr()
QString getNeedPayStr()
{ {
return QString::number(_amount, 'f', 2); return DOUBLE_STR(_needPay);
} }
double needPay() void setEditPayAmount(const QString amountText)
{ {
return _needPay; editPayAmount = amountText.toDouble();
setPays();
} }
QString needPayStr()
void setIsUseScore(bool isUse)
{ {
return QString::number(_needPay, 'f', 2); isUseScore = isUse;
setPays();
} }
// 如果账户余额充足则默认付全部待付,否则默认付全部余额 void setPays()
double defaultPay(bool isUseScore = false)
{ {
double need = needPay(); if(isUseScore)
if(isUseScore) { {
need -= _score; // 积分付只有两种情况 1.全部待付 2.全部积分
} if(_score > _needPay) {
pay_score = _needPay;
double pay; pay_amount = 0.0;
if(amount() > need) { }else{
pay = need; pay_score = _score;
double tempAmount = MIN((_needPay - pay_score), _amount);
pay_amount = MIN(tempAmount, editPayAmount);
}
}else{ }else{
pay = amount(); pay_score = 0.0;
double tempAmount = MIN(_needPay, _amount);
pay_amount = MIN(tempAmount, editPayAmount);
} }
return pay;
} }
QString defaultPayStr(bool isUseScore = false)
double getPayAmount()
{ {
return QString::number(defaultPay(isUseScore), 'f', 2); return pay_amount;
}
QString getPayAmountStr()
{
return DOUBLE_STR(pay_amount);
}
QString getTotalPayStr()
{
double totalPay = pay_amount + pay_score;
return QString::number((int)(totalPay*100));
} }
private: private:
QString _amountStr, _scoreStr, _needPayStr; QString _amountStr, _scoreStr, _needPayStr;
double _amount, _score, _needPay; double _amount, _score, _needPay;
// 三种支付方式支付金额
double pay_amount, pay_score, pay_discount;
double editPayAmount;
bool isUseScore;
}; };
private: private:
......
...@@ -50,6 +50,29 @@ void FMVipWnd::setIsBusy(const bool isBusy) ...@@ -50,6 +50,29 @@ void FMVipWnd::setIsBusy(const bool isBusy)
Q_UNUSED(isBusy); Q_UNUSED(isBusy);
} }
int FMVipWnd::exec()
{
show();
HWND hForeWnd = ::GetForegroundWindow();
DWORD dwForeID = ::GetWindowThreadProcessId(hForeWnd,NULL);
DWORD dwCurID = ::GetCurrentThreadId();
::AttachThreadInput(dwCurID,dwForeID,TRUE);
::SetWindowPos( (HWND)effectiveWinId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
::SetWindowPos( (HWND)effectiveWinId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
showNormal();
::SetForegroundWindow( (HWND)this->effectiveWinId());
::AttachThreadInput(dwCurID,dwForeID,FALSE);
this->setFocus();
return QDialog::exec();
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
//! Gui class member of platform //! Gui class member of platform
bool FMVipWnd::nativeEvent(const QByteArray &eventType, void *message, long *result) bool FMVipWnd::nativeEvent(const QByteArray &eventType, void *message, long *result)
......
...@@ -15,6 +15,8 @@ public: ...@@ -15,6 +15,8 @@ public:
//! Set current user profile (Json data) //! Set current user profile (Json data)
bool setProfile(const QByteArray&); bool setProfile(const QByteArray&);
void setIsBusy(const bool isBusy); void setIsBusy(const bool isBusy);
int exec();
signals: signals:
void doPost(); void doPost();
public slots: public slots:
......
...@@ -73,8 +73,8 @@ ...@@ -73,8 +73,8 @@
*/ */
#price { #price {
background: rgb(246,246,246); background: rgb(246,246,246);
min-height: 94px; min-height: 260px;
max-height: 94px; max-height: 260px;
border: 1 solid silver; border: 1 solid silver;
border-top: 0px solid silver; border-top: 0px solid silver;
} }
...@@ -95,59 +95,12 @@ ...@@ -95,59 +95,12 @@
border-bottom: 1 solid silver; border-bottom: 1 solid silver;
} }
/* /*
* 优惠券
*/
#coupon {
min-height: 250px;
max-height: 250px;
border: 1 solid silver;
border-top: 0 solid silver;
background: rgb(248,239,222);
}
#coupon_desc_label {
background: white;
max-width: 200px;min-width: 200px;
color: rgb(120,120,120);
border: 1 solid silver;
border-top: 0 solid silver;
}
#coupon_page QWidget{
background: rgb(248,239,222);
border: 1 solid white;
border-top: 1 solid silver;
border-right: 1 solid silver;
}
#coupon_label {
background: rgb(222,88,51);
min-height: 50px;
color: white;
font: 500 20px &quot;Microsoft YaHei&quot;;
}
#position_label {
font: 400 16px &quot;Microsoft YaHei&quot;;
min-height: 80px;
}
#coupon_prev_btn, #coupon_next_btn {
font: 400 16px &quot;Microsoft YaHei&quot;;
min-height: 40px; max-height: 40px;
min-width: 70px; max-width: 70px;
border: 1 solid rgb(228,228,228);
border-radius: 7px;
background: white;
}
#coupon_prev_btn:hover, #coupon_next_btn:hover {
background: rgb(154,200,50);
color: white;
}
/*
* 支付 * 支付
*/ */
#pay { #pay {
background: rgb(246,246,246); background: rgb(246,246,246);
min-height: 230px; min-height: 300px;
max-height: 230px; max-height: 300px;
border: 1 solid silver; border: 1 solid silver;
border-top: 0 solid silver; border-top: 0 solid silver;
} }
...@@ -445,143 +398,6 @@ ...@@ -445,143 +398,6 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QWidget" name="coupon" native="true">
<layout class="QHBoxLayout" name="couponLay">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="coupon_desc_label">
<property name="text">
<string>优 惠 券</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="coupon_page_lay">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="coupon_label">
<property name="text">
<string>代金券</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item>
<widget class="QScrollArea" name="coupon_page">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="lineWidth">
<number>1</number>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>764</width>
<height>117</height>
</rect>
</property>
</widget>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="pageCtrlLay">
<property name="leftMargin">
<number>40</number>
</property>
<property name="rightMargin">
<number>40</number>
</property>
<item>
<widget class="QPushButton" name="coupon_prev_btn">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>上页</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="position_label">
<property name="text">
<string>0/0</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="coupon_next_btn">
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="mouseTracking">
<bool>false</bool>
</property>
<property name="text">
<string>下页</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QWidget" name="pay" native="true"> <widget class="QWidget" name="pay" native="true">
<layout class="QHBoxLayout" name="payLay"> <layout class="QHBoxLayout" name="payLay">
<property name="spacing"> <property name="spacing">
......
...@@ -24,3 +24,5 @@ HEADERS += \ ...@@ -24,3 +24,5 @@ HEADERS += \
INCLUDEPATH += include INCLUDEPATH += include
LIBS += -lwinhttp -lws2_32 LIBS += -lwinhttp -lws2_32
DESTDIR += ../FMVipTest
...@@ -95,7 +95,14 @@ BOOL FMSockServer::_Listen() ...@@ -95,7 +95,14 @@ BOOL FMSockServer::_Listen()
while(TRUE) { while(TRUE) {
sockaddr_in addr_client = { 0 }; sockaddr_in addr_client = { 0 };
int addr_len = sizeof(addr_client); int addr_len = sizeof(addr_client);
SOCKET sclient = accept(_socket, (sockaddr*)&addr_client, &addr_len); SOCKET sclient = INVALID_SOCKET;
try {
sclient = accept(_socket, (sockaddr*)&addr_client, &addr_len);
}
catch (...) {
FMLOG("Accept exception");
}
if (INVALID_SOCKET != sclient) { if (INVALID_SOCKET != sclient) {
DWORD str_addr_len = 32; DWORD str_addr_len = 32;
TCHAR str_addr[32] = { 0 }; TCHAR str_addr[32] = { 0 };
......
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