Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fmp_vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
xiaojing.zhang
fmp_vip
Commits
8f5c2cc3
Commit
8f5c2cc3
authored
Jul 13, 2017
by
gujin.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.修复部分中文乱码问题. 2.修改会员支付时,总支付金额的计算方式。 3.修复会员支付时,在支付界面输入的小数有时会发生精度损失的问题。
parent
21fd80c3
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
98 additions
and
79 deletions
+98
-79
fmnetwork.cpp
+3
-0
fmp_vip_server.cpp
+8
-5
global.h
+2
-2
task/fmtask.h
+24
-1
task/taskfinal.cpp
+26
-50
task/tasklogin.cpp
+16
-3
task/taskpay.cpp
+15
-10
windows/fmviporder.cpp
+2
-3
windows/fmviporder.h
+2
-5
No files found.
fmnetwork.cpp
View file @
8f5c2cc3
...
@@ -58,6 +58,9 @@ int FMNetwork::send(const QString &url, const QByteArray &reqData, QByteArray &r
...
@@ -58,6 +58,9 @@ int FMNetwork::send(const QString &url, const QByteArray &reqData, QByteArray &r
errorMsg
=
netErrInfo
(
err
);
errorMsg
=
netErrInfo
(
err
);
}
}
}
else
{
}
else
{
disconnect
(
reply
,
&
QNetworkReply
::
finished
,
&
loop
,
&
QEventLoop
::
quit
);
reply
->
abort
();
reply
->
deleteLater
();
error
=
FM_API_TIMEOUT
;
error
=
FM_API_TIMEOUT
;
}
}
return
error
;
return
error
;
...
...
fmp_vip_server.cpp
View file @
8f5c2cc3
...
@@ -28,8 +28,8 @@ void FMPVipServer::Listen(quint16 port)
...
@@ -28,8 +28,8 @@ void FMPVipServer::Listen(quint16 port)
void
FMPVipServer
::
Write
(
const
QByteArray
&
data
)
void
FMPVipServer
::
Write
(
const
QByteArray
&
data
)
{
{
if
(
socket
->
write
(
data
)
==
-
1
)
{
if
(
!
socket
||
socket
->
write
(
data
)
==
-
1
)
{
FMP_ERROR
()
<<
"Write error: "
<<
socket
->
error
()
<<
socket
->
errorString
(
);
FMP_ERROR
()
<<
"Write error: "
<<
(
socket
?
socket
->
errorString
()
:
"connection closed."
);
}
}
}
}
...
@@ -44,7 +44,7 @@ void FMPVipServer::onNewConnection()
...
@@ -44,7 +44,7 @@ void FMPVipServer::onNewConnection()
void
FMPVipServer
::
onDisconnected
()
void
FMPVipServer
::
onDisconnected
()
{
{
FMP_DEBUG
()
<<
"Socket disconnected."
;
FMP_DEBUG
()
<<
"Socket disconnected."
;
socket
->
deleteLater
();
socket
->
close
();
}
}
void
FMPVipServer
::
onReadyRead
()
void
FMPVipServer
::
onReadyRead
()
...
@@ -58,9 +58,12 @@ void FMPVipServer::onReadyRead()
...
@@ -58,9 +58,12 @@ void FMPVipServer::onReadyRead()
}
}
QByteArray
rspData
;
QByteArray
rspData
;
// qDebug() << recvData.mid(sizeof(FMSOCKEHEADER));
qDebug
()
<<
QString
(
recvData
.
mid
(
sizeof
(
FMSOCKEHEADER
))).
toUtf8
();
dispatcher
->
doTask
(
recvData
.
mid
(
sizeof
(
FMSOCKEHEADER
)),
rspData
);
dispatcher
->
doTask
(
recvData
.
mid
(
sizeof
(
FMSOCKEHEADER
)),
rspData
);
Write
(
rspData
);
Write
(
rspData
);
socket
->
waitForBytesWritten
();
socket
->
close
();
socket
->
deleteLater
();
socket
=
nullptr
;
}
}
global.h
View file @
8f5c2cc3
...
@@ -260,7 +260,7 @@ enum {
...
@@ -260,7 +260,7 @@ enum {
// 返回错误信息的json
// 返回错误信息的json
#define ErrorMsgJson "{\"statusCode\":%1,\"msg\":\"%2\",\"prompt\":0}"
#define ErrorMsgJson "{\"statusCode\":%1,\"msg\":\"%2\",\"prompt\":0}"
#define ErrorNeedPayCode "fmv:请使用支付码付款"
#define ErrorNeedPayCode "fmv:请使用支付码付款"
typedef
std
::
map
<
const
int
,
const
char
*
>
FMErrorMap
;
typedef
std
::
map
<
const
int
,
const
QString
>
FMErrorMap
;
const
FMErrorMap
::
value_type
fm_error_pairs
[]
=
const
FMErrorMap
::
value_type
fm_error_pairs
[]
=
{
{
...
@@ -273,7 +273,7 @@ const FMErrorMap::value_type fm_error_pairs[] =
...
@@ -273,7 +273,7 @@ const FMErrorMap::value_type fm_error_pairs[] =
FMErrorMap
::
value_type
(
FM_API_WINDOWCLOSE
,
"窗口关闭"
)
FMErrorMap
::
value_type
(
FM_API_WINDOWCLOSE
,
"窗口关闭"
)
};
};
const
FMErrorMap
fm_error
(
fm_error_pairs
,
fm_error_pairs
+
(
sizeof
fm_error_pairs
/
sizeof
fm_error_pairs
[
0
]
));
const
FMErrorMap
fm_error
(
fm_error_pairs
,
fm_error_pairs
+
(
sizeof
(
fm_error_pairs
)
/
sizeof
(
fm_error_pairs
[
0
])
));
#endif
#endif
...
...
task/fmtask.h
View file @
8f5c2cc3
...
@@ -12,7 +12,30 @@
...
@@ -12,7 +12,30 @@
function##(); \
function##(); \
if(error() != FM_API_SUCCESS) { \
if(error() != FM_API_SUCCESS) { \
FMP_WARN() << QString("Task error %1: %2").arg(error()).arg(errorString()); \
FMP_WARN() << QString("Task error %1: %2").arg(error()).arg(errorString()); \
return QString(ErrorMsgJson).arg(error()).arg(errorString()).toLatin1(); \
QString msg = ErrorMsgJson;\
msg = msg.arg(error());\
switch(error())\
{\
case FM_API_ERROR: \
msg = msg.arg(QStringLiteral("失败"));\
break;\
case FM_API_TIMEOUT:\
msg = msg.arg(QStringLiteral("网络超时"));\
break;\
case FM_API_BADJSON:\
msg = msg.arg(QStringLiteral("无效的JSON数据"));\
break;\
case FM_API_NETWORERROR:\
msg = msg.arg(QStringLiteral("网络错误"));\
break;\
case FM_API_SERVERERROR:\
msg = msg.arg(QStringLiteral("服务器错误"));\
break;\
case FM_API_WINDOWCLOSE:\
msg = msg.arg(QStringLiteral("窗口关闭"));\
break;\
}\
return msg.toUtf8(); \
} \
} \
} while(0);
} while(0);
...
...
task/taskfinal.cpp
View file @
8f5c2cc3
...
@@ -60,10 +60,10 @@ void TaskFinal::packageServerReq()
...
@@ -60,10 +60,10 @@ void TaskFinal::packageServerReq()
foreach
(
auto
p
,
getPosJsonValue
(
PosProps
.
Pay_ids
).
toArray
())
foreach
(
auto
p
,
getPosJsonValue
(
PosProps
.
Pay_ids
).
toArray
())
{
{
QJsonObject
pay
;
QJsonObject
pay
;
pay
[
"amount"
]
=
p
.
toObject
()[
"pay_amount"
];
pay
[
"amount"
]
=
p
.
toObject
()[
"pay_amount"
]
.
toInt
()
;
pay
[
"thirdPayTransId"
]
=
""
;
pay
[
"thirdPayTransId"
]
=
p
.
toObject
()[
"thirdPayTransId"
].
toString
()
;
pay
[
"code"
]
=
p
.
toObject
()[
"code"
].
toString
();
pay
[
"code"
]
=
p
.
toObject
()[
"code"
].
toString
();
pay
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
pay
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
)
.
toString
()
;
pay
[
"payTransId"
]
=
p
.
toObject
()[
"pay_transId"
].
toString
();
pay
[
"payTransId"
]
=
p
.
toObject
()[
"pay_transId"
].
toString
();
QString
typeModeFlag
=
p
.
toObject
()[
"pay_id"
].
toString
();
QString
typeModeFlag
=
p
.
toObject
()[
"pay_id"
].
toString
();
...
@@ -86,62 +86,37 @@ void TaskFinal::packageServerReq()
...
@@ -86,62 +86,37 @@ void TaskFinal::packageServerReq()
pay
[
"typeModeFlag"
]
=
20003
;
pay
[
"typeModeFlag"
]
=
20003
;
}
}
}
}
else
if
(
typeModeFlag
==
"7"
)
{
//支付宝钱包
pay
[
"typeModeFlag"
]
=
10001
;
}
else
if
(
typeModeFlag
==
"9"
)
{
//微信钱包
pay
[
"typeModeFlag"
]
=
10004
;
//
}
else
if
(
typeModeFlag
==
"2"
)
{
//银行卡
pay
[
"typeModeFlag"
]
=
10011
;
}
else
if
(
typeModeFlag
==
"8"
)
{
//翼支付
pay
[
"typeModeFlag"
]
=
10010
;
}
else
else
{
{
pay
[
"typeModeFlag"
]
=
typeModeFlag
.
toInt
();
pay
[
"typeModeFlag"
]
=
typeModeFlag
.
toInt
();
FMP_ERROR
()
<<
"未知的支付类型: "
<<
typeModeFlag
;
FMP_ERROR
()
<<
QStringLiteral
(
"未知的支付类型: "
)
<<
typeModeFlag
;
}
}
// if(typeModeFlag == "0")
// if(typeModeFlag == "20002")
// {
// //现金支付
// pay["typeModeFlag"] = 20005;
// }
// else if(typeModeFlag == "2")
// {
// //银行卡
// pay["typeModeFlag"] = 10011;
// }
// else if(typeModeFlag == "7")
// {
// //支付宝钱包
// pay["typeModeFlag"] = 10001;
// }
// else if(typeModeFlag == "77")
// {
// //商品券
// pay["typeModeFlag"] = 20004;
// }
// else if(typeModeFlag == "8")
// {
// //翼支付
// pay["typeModeFlag"] = 10010;
// }
// else if(typeModeFlag == "76")
// {
// //代金券
// pay["typeModeFlag"] = 20003;
// }
// else if(typeModeFlag == "9")
// {
// //微信钱包
// pay["typeModeFlag"] = 10004; //???
// }
// else if(typeModeFlag == "20001")
// {
// //会员储值金支付
// pay["typeModeFlag"] = 20001;
// }
// else if(typeModeFlag == "20002")
// {
// {
// //积分支付
// //积分支付
// pay["typeModeFlag"] = 20002;
// pay["typeModeFlag"] = 20002;
// }
// }
// else
// {
// pay["typeModeFlag"] = typeModeFlag.toInt();
// FMP_ERROR() << "未知的支付类型: " << typeModeFlag;
// }
payList
.
append
(
pay
);
payList
.
append
(
pay
);
}
}
...
@@ -182,6 +157,7 @@ bool TaskFinal::sendToServer(bool isShowMsg)
...
@@ -182,6 +157,7 @@ bool TaskFinal::sendToServer(bool isShowMsg)
}
else
{
}
else
{
QJsonParseError
jsonErr
;
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
qDebug
()
<<
rspJson
;
// Json错误
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
...
...
task/tasklogin.cpp
View file @
8f5c2cc3
...
@@ -30,8 +30,18 @@ TaskLogin::TaskLogin(QJsonObject &jsonObj, Session *session, QObject *parent)
...
@@ -30,8 +30,18 @@ TaskLogin::TaskLogin(QJsonObject &jsonObj, Session *session, QObject *parent)
QByteArray
TaskLogin
::
doTask
()
QByteArray
TaskLogin
::
doTask
()
{
{
FMP_DEBUG
()
<<
__FUNCTION__
;
FMP_DEBUG
()
<<
__FUNCTION__
;
RunFunction
(
setWindow
);
//根据请求中是否有member_sign字段,判断是否是退货时发起的认证
RunFunction
(
showWindow
);
if
(
posReqJsonObj
.
contains
(
"member_sign"
))
{
//直接保存member_sign到_session中
session
()
->
addData
(
"code"
,
posReqJsonObj
[
"member_sign"
].
toString
());
onLogin
();
}
else
{
RunFunction
(
setWindow
);
RunFunction
(
showWindow
);
}
RunFunction
(
packagePOSRsp
);
RunFunction
(
packagePOSRsp
);
QJsonDocument
json
(
posRspJsonObj
);
QJsonDocument
json
(
posRspJsonObj
);
...
@@ -252,7 +262,10 @@ void TaskLogin::onLogin()
...
@@ -252,7 +262,10 @@ void TaskLogin::onLogin()
// if(_window!=nullptr) {
// if(_window!=nullptr) {
// _window->resetWnd();
// _window->resetWnd();
// }
// }
_window
->
close
();
if
(
_window
!=
nullptr
)
{
_window
->
close
();
}
}
}
//QString TaskLogin::sign() const
//QString TaskLogin::sign() const
...
...
task/taskpay.cpp
View file @
8f5c2cc3
...
@@ -162,9 +162,10 @@ void TaskPay::packageServerReq()
...
@@ -162,9 +162,10 @@ void TaskPay::packageServerReq()
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
QJsonObject
transaction
;
QJsonObject
transaction
;
int
payAmount
=
0
;
//该次会员支付的总金额
transaction
[
"memberTransId"
]
=
""
;
transaction
[
"memberTransId"
]
=
""
;
transaction
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transaction
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
transaction
[
"payAmount"
]
=
getPosJsonValue
(
"need_amount"
);
//
transaction["payAmount"] = getPosJsonValue("need_amount");
transaction
[
"isUseScore"
]
=
session
()
->
data
(
"isUseScore"
).
toInt
();
transaction
[
"isUseScore"
]
=
session
()
->
data
(
"isUseScore"
).
toInt
();
QJsonArray
products
;
QJsonArray
products
;
...
@@ -187,6 +188,7 @@ void TaskPay::packageServerReq()
...
@@ -187,6 +188,7 @@ void TaskPay::packageServerReq()
balance
[
"typeModeFlag"
]
=
20001
;
balance
[
"typeModeFlag"
]
=
20001
;
balance
[
"code"
]
=
""
;
balance
[
"code"
]
=
""
;
payList
.
push_back
(
balance
);
payList
.
push_back
(
balance
);
payAmount
+=
session
()
->
data
(
"codeAmount"
).
toInt
();
//积分支付详情(天福目前没有积分支付)
//积分支付详情(天福目前没有积分支付)
if
(
transaction
[
"isUseScore"
].
toInt
())
if
(
transaction
[
"isUseScore"
].
toInt
())
...
@@ -197,6 +199,7 @@ void TaskPay::packageServerReq()
...
@@ -197,6 +199,7 @@ void TaskPay::packageServerReq()
score
[
"typeModeFlag"
]
=
20002
;
score
[
"typeModeFlag"
]
=
20002
;
score
[
"code"
]
=
""
;
score
[
"code"
]
=
""
;
payList
.
push_back
(
score
);
payList
.
push_back
(
score
);
payAmount
+=
session
()
->
data
(
"score"
).
toInt
();
}
}
//代金券/商品券支付详情
//代金券/商品券支付详情
...
@@ -209,10 +212,12 @@ void TaskPay::packageServerReq()
...
@@ -209,10 +212,12 @@ void TaskPay::packageServerReq()
coupon
[
"typeModeFlag"
]
=
it
.
value
().
value
<
Coupon
>
().
typeModeFlag
;
coupon
[
"typeModeFlag"
]
=
it
.
value
().
value
<
Coupon
>
().
typeModeFlag
;
coupon
[
"code"
]
=
it
.
value
().
value
<
Coupon
>
().
code
;
coupon
[
"code"
]
=
it
.
value
().
value
<
Coupon
>
().
code
;
payList
.
push_back
(
coupon
);
payList
.
push_back
(
coupon
);
payAmount
+=
it
.
value
().
value
<
Coupon
>
().
disAmount
;
}
}
transaction
[
"products"
]
=
products
;
transaction
[
"products"
]
=
products
;
transaction
[
"payList"
]
=
payList
;
transaction
[
"payList"
]
=
payList
;
transaction
[
"payAmount"
]
=
payAmount
;
serverReqJsonObj
[
PosProps
.
Transaction
]
=
transaction
;
serverReqJsonObj
[
PosProps
.
Transaction
]
=
transaction
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
...
@@ -286,15 +291,15 @@ void TaskPay::packagePOSRsp()
...
@@ -286,15 +291,15 @@ void TaskPay::packagePOSRsp()
typeModeFlags
[
20002
]
=
"20002"
;
//会员积分支付
typeModeFlags
[
20002
]
=
"20002"
;
//会员积分支付
//支付方式描述
//支付方式描述
QMap
<
int
,
QString
>
description
;
QMap
<
int
,
QString
>
description
;
description
[
20001
]
=
"会员储值金支付"
;
description
[
20001
]
=
QStringLiteral
(
"会员储值金支付"
)
;
description
[
20002
]
=
"会员积分支付"
;
description
[
20002
]
=
QStringLiteral
(
"会员积分支付"
)
;
description
[
20003
]
=
"代金券支付"
;
description
[
20003
]
=
QStringLiteral
(
"代金券支付"
)
;
description
[
20004
]
=
"商品券支付"
;
description
[
20004
]
=
QStringLiteral
(
"商品券支付"
)
;
description
[
20005
]
=
"现金支付"
;
description
[
20005
]
=
QStringLiteral
(
"现金支付"
)
;
description
[
10011
]
=
"银行卡支付"
;
description
[
10011
]
=
QStringLiteral
(
"银行卡支付"
)
;
description
[
10001
]
=
"支付宝支付"
;
description
[
10001
]
=
QStringLiteral
(
"支付宝支付"
)
;
description
[
10010
]
=
"翼支付"
;
description
[
10010
]
=
QStringLiteral
(
"翼支付"
)
;
description
[
10004
]
=
"微信支付"
;
description
[
10004
]
=
QStringLiteral
(
"微信支付"
)
;
//计算总支付额
//计算总支付额
int
totalPaid
=
0
;
int
totalPaid
=
0
;
...
...
windows/fmviporder.cpp
View file @
8f5c2cc3
...
@@ -66,8 +66,7 @@ void FMVipOrder::initWnd(Session *se)
...
@@ -66,8 +66,7 @@ void FMVipOrder::initWnd(Session *se)
void
FMVipOrder
::
on_pay_btn_clicked
()
void
FMVipOrder
::
on_pay_btn_clicked
()
{
{
session
()
->
addData
(
"payCouponMap"
,
orderInfo
->
selectCouponMap
);
session
()
->
addData
(
"payCouponMap"
,
orderInfo
->
selectCouponMap
);
//int codeAmount = orderInfo->getPayAmount(ui->pay_edit->text());
int
codeAmount
=
orderInfo
->
getPayAmount
(
ui
->
pay_edit
->
text
());
double
codeAmount
=
orderInfo
->
getMaxWillPay
()
*
100
;
session
()
->
addData
(
"codeAmount"
,
codeAmount
);
session
()
->
addData
(
"codeAmount"
,
codeAmount
);
session
()
->
addData
(
"isUseScore"
,
orderInfo
->
isUseScore
());
session
()
->
addData
(
"isUseScore"
,
orderInfo
->
isUseScore
());
...
@@ -108,7 +107,6 @@ void FMVipOrder::onItemClicked(QListWidgetItem *item)
...
@@ -108,7 +107,6 @@ void FMVipOrder::onItemClicked(QListWidgetItem *item)
FMMsgWnd
::
WarningWnd
(
QString
::
fromLocal8Bit
(
"请注意代金券总额已超过待付金额!"
),
this
);
FMMsgWnd
::
WarningWnd
(
QString
::
fromLocal8Bit
(
"请注意代金券总额已超过待付金额!"
),
this
);
}
}
}
}
setWillPayText
();
}
}
else
if
(
orderInfo
->
couponMap
()[
code
].
typeModeFlag
==
20004
)
//商品券
else
if
(
orderInfo
->
couponMap
()[
code
].
typeModeFlag
==
20004
)
//商品券
{
{
...
@@ -133,6 +131,7 @@ void FMVipOrder::onItemClicked(QListWidgetItem *item)
...
@@ -133,6 +131,7 @@ void FMVipOrder::onItemClicked(QListWidgetItem *item)
}
}
}
}
}
}
setWillPayText
();
}
}
void
FMVipOrder
::
initCouponItems
()
void
FMVipOrder
::
initCouponItems
()
...
...
windows/fmviporder.h
View file @
8f5c2cc3
...
@@ -78,11 +78,8 @@ private:
...
@@ -78,11 +78,8 @@ private:
int
getPayAmount
(
QString
amountStr
)
int
getPayAmount
(
QString
amountStr
)
{
{
qDebug
()
<<
amountStr
.
toDouble
();
double
payAmount
=
MIN
(
_needPay
,
(
amountStr
.
toDouble
()
+
_couponAmount
+
_useScore
))
*
100
;
qDebug
()
<<
_couponAmount
;
return
QString
::
number
(
payAmount
).
toInt
();
qDebug
()
<<
_useScore
;
int
payAmount
=
MIN
(
_needPay
,
(
amountStr
.
toDouble
()
+
_couponAmount
+
_useScore
))
*
100
;
return
payAmount
;
}
}
// 代金券总额超过待付时返回true
// 代金券总额超过待付时返回true
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment