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
zhenfei.zhang
fmp_vip
Commits
8c7406ea
Commit
8c7406ea
authored
Jul 18, 2017
by
NitefullWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1. 调整绿篮子对接代码。
parent
6c341fa9
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
72 additions
and
627 deletions
+72
-627
fmvipdispatcher.cpp
+10
-4
global.h
+27
-5
task/fmtask.cpp
+3
-2
task/fmtasknownd.cpp
+0
-38
task/fmtasknownd.h
+0
-2
task/taskfinal.cpp
+13
-141
task/taskfinal.h
+2
-47
task/tasklogin.cpp
+11
-167
task/tasklogin.h
+2
-51
task/taskothers.cpp
+3
-119
task/taskothers.h
+0
-3
task/taskpay.cpp
+0
-0
task/taskpay.h
+1
-48
No files found.
fmvipdispatcher.cpp
View file @
8c7406ea
...
@@ -64,16 +64,22 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
...
@@ -64,16 +64,22 @@ void FMVipDispatcher::doTask(const QByteArray &reqData, QByteArray &rspData)
}
}
break
;
break
;
}
}
case
FM_Order_Refund
:
{
case
FM_Refund
:
{
QString
fm_id
=
jsonObj
[
PosProps
.
Transaction
].
toObject
()[
PosProps
.
Fm_id
].
toString
();
if
(
fm_id
!=
""
)
{
TaskRefundOrder
taskRefundOrder
(
jsonObj
);
TaskRefundOrder
taskRefundOrder
(
jsonObj
);
rspData
=
taskRefundOrder
.
doTask
();
rspData
=
taskRefundOrder
.
doTask
();
break
;
}
else
{
}
case
FM_Order_Revoke
:
{
TaskRefundPay
taskRefundPay
(
jsonObj
);
TaskRefundPay
taskRefundPay
(
jsonObj
);
rspData
=
taskRefundPay
.
doTask
();
rspData
=
taskRefundPay
.
doTask
();
}
break
;
break
;
}
}
// case FM_Order_Revoke: {
// TaskRefundPay taskRefundPay(jsonObj);
// rspData = taskRefundPay.doTask();
// break;
// }
case
FM_QR_Refund
:
{
case
FM_QR_Refund
:
{
if
(
_ctx
)
{
if
(
_ctx
)
{
ctkServiceReference
ref
=
_ctx
->
getServiceReference
<
FMPePayInterface
>
();
ctkServiceReference
ref
=
_ctx
->
getServiceReference
<
FMPePayInterface
>
();
...
...
global.h
View file @
8c7406ea
...
@@ -21,15 +21,30 @@
...
@@ -21,15 +21,30 @@
enum
FM_TYPE
{
enum
FM_TYPE
{
FM_Login
=
1001
,
FM_Login
=
1001
,
FM_Pay
=
1003
,
FM_Pay
=
1003
,
FM_Order_Refund
,
FM_Refund
=
1004
,
FM_Charge_Refund
,
FM_Final
=
1007
,
FM_Final
=
1007
,
FM_Coupon
=
1009
,
FM_Coupon
=
1009
,
FM_Fund
,
FM_Fund
,
FM_Order_Revoke
,
FM_Order_Revoke
,
FM_QR_Pay
=
10031
,
FM_QR_Pay
=
10031
,
FM_QR_Refund
=
10041
FM_QR_Refund
=
10041
,
FM_Refund_Pay
,
FM_Refund_Order
};
};
// 会员服务端请求URL
#ifndef FMREQURLMAP
#define FMREQURLMAP
typedef
std
::
map
<
int
,
QString
>
FMReqUrlMap
;
const
FMReqUrlMap
::
value_type
FMReqUrlMapPairs
[]
=
{
FMReqUrlMap
::
value_type
(
FM_Login
,
"auth"
),
FMReqUrlMap
::
value_type
(
FM_Pay
,
"pay"
),
FMReqUrlMap
::
value_type
(
FM_Final
,
"order"
),
FMReqUrlMap
::
value_type
(
FM_Refund_Pay
,
"refund"
),
FMReqUrlMap
::
value_type
(
FM_Refund_Order
,
"correct"
)
};
const
FMReqUrlMap
ReqUrl
(
FMReqUrlMapPairs
,
FMReqUrlMapPairs
+
(
sizeof
FMReqUrlMapPairs
/
sizeof
FMReqUrlMapPairs
[
0
]));
#endif
// JSON数据各字段名称
// JSON数据各字段名称
#ifndef POSPROPS
#ifndef POSPROPS
...
@@ -40,6 +55,7 @@ struct PP{
...
@@ -40,6 +55,7 @@ struct PP{
AppId
=
"appId"
;
AppId
=
"appId"
;
PartnerId
=
"partnerId"
;
PartnerId
=
"partnerId"
;
T
=
"t"
;
T
=
"t"
;
Sign
=
"sign"
;
StoreId
=
"store_id"
;
StoreId
=
"store_id"
;
PosId
=
"pos_id"
;
PosId
=
"pos_id"
;
OperatorId
=
"operator_id"
;
OperatorId
=
"operator_id"
;
...
@@ -74,7 +90,7 @@ struct PP{
...
@@ -74,7 +90,7 @@ struct PP{
ScoreAmount
=
"scoreAmount"
;
ScoreAmount
=
"scoreAmount"
;
IsUseScore
=
"isUseScore"
;
IsUseScore
=
"isUseScore"
;
Coupons
=
"coupons"
;
Coupons
=
"coupons"
;
Transaction
=
"transaction"
;
Transaction
=
"transaction
s
"
;
OrderAmount
=
"order_amount"
;
OrderAmount
=
"order_amount"
;
PaidAmount
=
"paid_amount"
;
PaidAmount
=
"paid_amount"
;
NeedAmount
=
"need_amount"
;
NeedAmount
=
"need_amount"
;
...
@@ -113,6 +129,7 @@ struct PP{
...
@@ -113,6 +129,7 @@ struct PP{
QString
AppId
;
QString
AppId
;
QString
PartnerId
;
QString
PartnerId
;
QString
T
;
QString
T
;
QString
Sign
;
QString
StoreId
;
QString
StoreId
;
QString
PosId
;
QString
PosId
;
QString
OperatorId
;
QString
OperatorId
;
...
@@ -205,9 +222,14 @@ const PropsMap::value_type PropsMapPairs[] =
...
@@ -205,9 +222,14 @@ const PropsMap::value_type PropsMapPairs[] =
PropsMap
::
value_type
(
PosProps
.
TransId
,
"transId"
),
PropsMap
::
value_type
(
PosProps
.
TransId
,
"transId"
),
PropsMap
::
value_type
(
PosProps
.
Coupon
,
"couponCode"
),
PropsMap
::
value_type
(
PosProps
.
Coupon
,
"couponCode"
),
PropsMap
::
value_type
(
PosProps
.
BussinessDate
,
"businessDate"
),
PropsMap
::
value_type
(
PosProps
.
BussinessDate
,
"businessDate"
),
PropsMap
::
value_type
(
PosProps
.
Fm_id
,
"memberTransId"
),
PropsMap
::
value_type
(
PosProps
.
Fm_open_id
,
"account"
),
PropsMap
::
value_type
(
PosProps
.
Fm_open_id
,
"account"
),
PropsMap
::
value_type
(
PosProps
.
Account
,
"memberNo"
),
PropsMap
::
value_type
(
PosProps
.
Account
,
"memberNo"
),
PropsMap
::
value_type
(
PosProps
.
CouponList
,
"coupon_list"
)
PropsMap
::
value_type
(
PosProps
.
CouponList
,
"coupon_list"
),
PropsMap
::
value_type
(
PosProps
.
PaidAmount
,
"payAmount"
),
PropsMap
::
value_type
(
PosProps
.
OrderAmount
,
"totalAmount"
),
PropsMap
::
value_type
(
PosProps
.
Pay_id
,
"typeModeFlag"
),
PropsMap
::
value_type
(
PosProps
.
Pay_amount
,
"amount"
),
};
};
static
PropsMap
PosToServerProps
(
PropsMapPairs
,
PropsMapPairs
+
(
sizeof
(
PropsMapPairs
)
/
sizeof
(
PropsMapPairs
[
0
])));
static
PropsMap
PosToServerProps
(
PropsMapPairs
,
PropsMapPairs
+
(
sizeof
(
PropsMapPairs
)
/
sizeof
(
PropsMapPairs
[
0
])));
...
...
task/fmtask.cpp
View file @
8c7406ea
...
@@ -107,13 +107,14 @@ bool FMTask::sendToServer(bool isShowMsg)
...
@@ -107,13 +107,14 @@ bool FMTask::sendToServer(bool isShowMsg)
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
PosProps
.
T
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
PosProps
.
T
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
FM_Type
();
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
QString
::
number
(
FM_Type
());
serverReqJsonObj
[
PosProps
.
Sign
]
=
sign
();
packageServerReq
();
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
QString
(
"%1?sign=%2"
).
arg
(
FMPVipSettings
::
instance
()
->
getServerUrl
()).
arg
(
sign
());
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/"
+
ReqUrl
.
at
(
FM_Type
());
QByteArray
rspData
;
QByteArray
rspData
;
FMNetwork
net
;
FMNetwork
net
;
...
...
task/fmtasknownd.cpp
View file @
8c7406ea
...
@@ -23,41 +23,3 @@ QByteArray FMTaskNoWnd::doTask()
...
@@ -23,41 +23,3 @@ QByteArray FMTaskNoWnd::doTask()
QJsonDocument
json
(
posRspJsonObj
);
QJsonDocument
json
(
posRspJsonObj
);
return
json
.
toJson
(
QJsonDocument
::
Compact
);
return
json
.
toJson
(
QJsonDocument
::
Compact
);
}
}
QString
FMTaskNoWnd
::
sign
()
const
{
FMP_DEBUG
()
<<
__FUNCTION__
;
// 解析JSON插入MAP中按字典排序
QMap
<
QString
,
QString
>
mapData
;
for
(
int
i
=
0
;
i
<
sizeof
(
SignProps
)
/
sizeof
(
SignProps
[
0
]);
++
i
)
{
QString
word
=
SignProps
[
i
];
if
(
serverReqJsonObj
[
word
].
isDouble
())
{
mapData
[
word
]
=
QString
::
number
(
serverReqJsonObj
[
word
].
toDouble
());
}
else
{
mapData
[
word
]
=
serverReqJsonObj
[
word
].
toString
();
}
}
if
(
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)].
toInt
()
==
FM_Fund
)
{
mapData
[
ServerProps
(
PosProps
.
TransId
)]
=
serverReqJsonObj
[
ServerProps
(
PosProps
.
TransId
)].
toString
();
}
// 使用URL键值对的格式拼接
QString
sb
=
""
;
foreach
(
QString
key
,
mapData
.
keys
())
{
sb
+=
(
key
+
"="
+
mapData
.
value
(
key
)
+
"&"
);
}
sb
.
remove
(
sb
.
length
()
-
1
,
1
);
// 去掉最后一个&
sb
.
append
(
KEY_CODE
);
QByteArray
bt
;
bt
.
append
(
sb
);
FMP_INFO
()
<<
"Sign String: "
<<
bt
;
QByteArray
md5Bt
=
QCryptographicHash
::
hash
(
bt
,
QCryptographicHash
::
Md5
);
return
md5Bt
.
toHex
();
}
task/fmtasknownd.h
View file @
8c7406ea
...
@@ -13,8 +13,6 @@ public:
...
@@ -13,8 +13,6 @@ public:
protected
:
protected
:
virtual
void
packageServerReq
()
=
0
;
virtual
void
packageServerReq
()
=
0
;
virtual
void
packagePOSRsp
()
=
0
;
virtual
void
packagePOSRsp
()
=
0
;
QString
sign
()
const
;
};
};
#endif // FMTASKNOWND_H
#endif // FMTASKNOWND_H
task/taskfinal.cpp
View file @
8c7406ea
...
@@ -10,39 +10,23 @@
...
@@ -10,39 +10,23 @@
#include <QCryptographicHash>
#include <QCryptographicHash>
TaskFinal
::
TaskFinal
(
QJsonObject
&
jsonObj
,
Session
*
session
,
QObject
*
parent
)
TaskFinal
::
TaskFinal
(
QJsonObject
&
jsonObj
,
Session
*
session
,
QObject
*
parent
)
:
QObject
(
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_Final
,
session
,
parent
)
{
{
posReqJsonObj
=
jsonObj
;
_session
=
session
;
_error
=
FM_API_SUCCESS
;
}
QByteArray
TaskFinal
::
doTask
()
{
bool
isOk
=
sendToServer
();
if
(
!
isOk
)
{
FMP_WARN
()
<<
QString
(
"Task error %1: %2"
).
arg
(
error
()).
arg
(
errorString
());
return
QString
(
ErrorMsgJson
).
arg
(
error
()).
arg
(
errorString
()).
toLatin1
();
}
packagePOSRsp
();
return
QJsonDocument
(
posRspJsonObj
).
toJson
(
QJsonDocument
::
Compact
);
}
}
void
TaskFinal
::
packageServerReq
()
void
TaskFinal
::
packageServerReq
()
{
{
serverReqJsonObj
[
"appId"
]
=
APP_ID
;
serverReqJsonObj
[
"stationId"
]
=
getPosJsonValue
(
"pos_id"
);
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
QJsonObject
transData
;
QJsonObject
transData
;
transData
[
"businessDate"
]
=
getPosJsonValue
(
"business_date"
);
std
::
vector
<
QString
>
p
;
transData
[
"transId"
]
=
getPosJsonValue
(
"trans_id"
);
p
.
push_back
(
PosProps
.
BussinessDate
);
transData
[
"memberTransId"
]
=
getPosJsonValue
(
"fm_id"
);
p
.
push_back
(
PosProps
.
TransId
);
transData
[
"account"
]
=
getPosJsonValue
(
"fm_open_id"
);
p
.
push_back
(
PosProps
.
Fm_id
);
transData
[
"totalAmount"
]
=
getPosJsonValue
(
"order_amount"
);
p
.
push_back
(
PosProps
.
Fm_open_id
);
transData
[
"payAmount"
]
=
getPosJsonValue
(
"paid_amount"
);
p
.
push_back
(
PosProps
.
OrderAmount
);
p
.
push_back
(
PosProps
.
PaidAmount
);
foreach
(
auto
prop
,
p
)
{
transData
[
ServerProps
(
prop
)]
=
getPosJsonValue
(
prop
);
}
// 产品列表
// 产品列表
QJsonArray
products
;
QJsonArray
products
;
...
@@ -91,57 +75,12 @@ void TaskFinal::packageServerReq()
...
@@ -91,57 +75,12 @@ void TaskFinal::packageServerReq()
}
}
transData
[
"payList"
]
=
payList
;
transData
[
"payList"
]
=
payList
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"data"
]
=
transData
;
int
finalType
=
getPosJsonValue
(
"settlement_type"
).
toInt
();
if
(
finalType
==
0
)
//支付结算
{
serverReqJsonObj
[
"reqType"
]
=
FM_Final
;
}
else
if
(
finalType
==
1
)
//退款结算
{
serverReqJsonObj
[
"reqType"
]
=
1010
;
}
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
}
bool
TaskFinal
::
sendToServer
(
bool
isShowMsg
)
bool
TaskFinal
::
sendToServer
(
bool
isShowMsg
)
{
{
FMP_DEBUG
()
<<
__FUNCTION__
;
Q_UNUSED
(
isShowMsg
);
packageServerReq
();
FMTask
::
sendToServer
(
false
);
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/order"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
// 备份
// 备份
if
(
error
()
==
FM_API_NETWORERROR
)
{
if
(
error
()
==
FM_API_NETWORERROR
)
{
...
@@ -191,70 +130,3 @@ QString TaskFinal::backup()
...
@@ -191,70 +130,3 @@ QString TaskFinal::backup()
}
}
return
""
;
return
""
;
}
}
QJsonValue
TaskFinal
::
searchJsonValue
(
QJsonObject
&
searchJson
,
QString
searchKey
)
{
if
(
searchJson
.
contains
(
searchKey
))
{
return
searchJson
[
searchKey
];
}
else
{
qDebug
()
<<
searchJson
.
keys
();
foreach
(
QString
key
,
searchJson
.
keys
())
{
if
(
searchJson
[
key
].
isObject
())
{
QJsonObject
ob
=
searchJson
[
key
].
toObject
();
QJsonValue
value
=
searchJsonValue
(
ob
,
searchKey
);
if
(
!
value
.
isNull
()){
return
value
;
}
}
}
}
return
QJsonValue
();
}
QJsonValue
TaskFinal
::
getServerJsonValue
(
const
QString
prop
)
{
return
searchJsonValue
(
serverRspJsonObj
,
prop
);
}
QJsonValue
TaskFinal
::
getPosJsonValue
(
const
QString
prop
)
{
return
searchJsonValue
(
posReqJsonObj
,
prop
);
}
QString
TaskFinal
::
sign
()
const
{
FMP_DEBUG
()
<<
__FUNCTION__
;
// 解析JSON插入MAP中按字典排序
QMap
<
QString
,
QString
>
mapData
;
for
(
int
i
=
0
;
i
<
sizeof
(
SignProps
)
/
sizeof
(
SignProps
[
0
]);
++
i
)
{
QString
word
=
SignProps
[
i
];
if
(
serverReqJsonObj
[
word
].
isDouble
())
{
mapData
[
word
]
=
QString
::
number
(
serverReqJsonObj
[
word
].
toDouble
());
}
else
{
mapData
[
word
]
=
serverReqJsonObj
[
word
].
toString
();
}
}
if
(
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)].
toInt
()
==
FM_Fund
)
{
mapData
[
ServerProps
(
PosProps
.
TransId
)]
=
serverReqJsonObj
[
ServerProps
(
PosProps
.
TransId
)].
toString
();
}
// 使用URL键值对的格式拼接
QString
sb
=
""
;
foreach
(
QString
key
,
mapData
.
keys
())
{
sb
+=
(
key
+
"="
+
mapData
.
value
(
key
)
+
"&"
);
}
sb
.
remove
(
sb
.
length
()
-
1
,
1
);
// 去掉最后一个&
sb
.
append
(
KEY_CODE
);
QByteArray
bt
;
bt
.
append
(
sb
);
FMP_INFO
()
<<
"Sign String: "
<<
bt
;
QByteArray
md5Bt
=
QCryptographicHash
::
hash
(
bt
,
QCryptographicHash
::
Md5
);
return
md5Bt
.
toHex
();
}
task/taskfinal.h
View file @
8c7406ea
#ifndef TASKFINAL_H
#ifndef TASKFINAL_H
#define TASKFINAL_H
#define TASKFINAL_H
#include <QObject>
#include "fmtasknownd.h"
#include <QJsonObject>
#include "session.h"
class
TaskFinal
:
public
QObject
class
TaskFinal
:
public
FMTaskNoWnd
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
explicit
TaskFinal
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
explicit
TaskFinal
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
QByteArray
doTask
();
void
setFM_Type
(
const
FM_TYPE
fmType
)
{
_FM_Type
=
fmType
;}
FM_TYPE
FM_Type
()
const
{
return
_FM_Type
;}
Session
*
session
()
const
{
return
_session
;}
void
packageServerReq
();
void
packageServerReq
();
bool
sendToServer
(
bool
isShowMsg
=
true
);
bool
sendToServer
(
bool
isShowMsg
=
true
);
void
packagePOSRsp
();
void
packagePOSRsp
();
QJsonValue
searchJsonValue
(
QJsonObject
&
searchJson
,
QString
searchKey
);
QJsonValue
getServerJsonValue
(
const
QString
prop
);
QJsonValue
getPosJsonValue
(
const
QString
prop
);
private
:
private
:
QString
backup
();
QString
backup
();
QString
sign
()
const
;
QJsonObject
posReqJsonObj
;
QJsonObject
posRspJsonObj
;
QJsonObject
serverReqJsonObj
;
QJsonObject
serverRspJsonObj
;
Session
*
_session
;
FM_TYPE
_FM_Type
;
QString
url
;
/**
* @brief FMError
* define error.
*/
typedef
int
FMError
;
public
:
FMError
error
()
const
{
return
_error
;}
void
setError
(
const
FMError
error
)
{
_error
=
error
;
_errorMsg
=
""
;}
void
setError
(
const
FMError
error
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
errorMsg
;}
void
setError
(
const
FMError
error
,
const
int
errorCode
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
QString
(
"[%1]%2"
).
arg
(
errorCode
).
arg
(
errorMsg
);}
QString
errorString
()
{
if
(
fm_error
.
find
(
_error
)
==
fm_error
.
end
())
{
return
"Undefine Error"
;
}
else
{
if
(
_errorMsg
!=
""
)
return
_errorMsg
;
return
fm_error
.
at
(
_error
);
}
}
private
:
FMError
_error
;
QString
_errorMsg
;
};
};
#endif // TASKFINAL_H
#endif // TASKFINAL_H
task/tasklogin.cpp
View file @
8c7406ea
...
@@ -3,23 +3,10 @@
...
@@ -3,23 +3,10 @@
#include "fmp_vip_settings.h"
#include "fmp_vip_settings.h"
#include "fmnetwork.h"
#include "fmnetwork.h"
#include <QJsonDocument>
#include <QJsonDocument>
#include <QCryptographicHash>
#define RunFunction(function) do { \
function##(); \
if(error() != FM_API_SUCCESS) { \
FMP_WARN() << QString("Task error %1: %2").arg(error()).arg(errorString()); \
return QString(ErrorMsgJson).arg(error()).arg(errorString()).toLatin1(); \
} \
} while(0);
TaskLogin
::
TaskLogin
(
QJsonObject
&
jsonObj
,
Session
*
session
,
QObject
*
parent
)
TaskLogin
::
TaskLogin
(
QJsonObject
&
jsonObj
,
Session
*
session
,
QObject
*
parent
)
:
QObject
(
parent
)
:
FMTask
(
jsonObj
,
FM_Login
,
session
,
parent
)
{
{
posReqJsonObj
=
jsonObj
;
_window
=
NULL
;
_session
=
session
;
_error
=
FM_API_SUCCESS
;
}
}
TaskLogin
::~
TaskLogin
()
TaskLogin
::~
TaskLogin
()
...
@@ -27,17 +14,6 @@ TaskLogin::~TaskLogin()
...
@@ -27,17 +14,6 @@ TaskLogin::~TaskLogin()
del_p
(
_window
);
del_p
(
_window
);
}
}
QByteArray
TaskLogin
::
doTask
()
{
FMP_DEBUG
()
<<
__FUNCTION__
;
RunFunction
(
setWindow
);
RunFunction
(
showWindow
);
RunFunction
(
packagePOSRsp
);
QJsonDocument
json
(
posRspJsonObj
);
return
json
.
toJson
(
QJsonDocument
::
Compact
);
}
void
TaskLogin
::
setWindow
()
void
TaskLogin
::
setWindow
()
{
{
_window
=
new
FMVipLogin
;
_window
=
new
FMVipLogin
;
...
@@ -49,112 +25,11 @@ void TaskLogin::setWindow()
...
@@ -49,112 +25,11 @@ void TaskLogin::setWindow()
session
()
->
addData
(
"business_date"
,
getPosJsonValue
(
"business_date"
));
session
()
->
addData
(
"business_date"
,
getPosJsonValue
(
"business_date"
));
}
}
void
TaskLogin
::
showWindow
()
{
FMP_DEBUG
()
<<
__FUNCTION__
;
if
(
_window
!=
nullptr
)
{
_window
->
initWnd
(
session
());
int
ret
=
_window
->
exec
();
if
(
ret
==
-
1
)
{
setError
(
FM_API_WINDOWCLOSE
);
}
}
}
QJsonValue
TaskLogin
::
searchJsonValue
(
QJsonObject
&
searchJson
,
QString
searchKey
)
{
if
(
searchJson
.
contains
(
searchKey
))
{
return
searchJson
[
searchKey
];
}
else
{
qDebug
()
<<
searchJson
.
keys
();
foreach
(
QString
key
,
searchJson
.
keys
())
{
if
(
searchJson
[
key
].
isObject
())
{
QJsonObject
ob
=
searchJson
[
key
].
toObject
();
QJsonValue
value
=
searchJsonValue
(
ob
,
searchKey
);
if
(
!
value
.
isNull
()){
return
value
;
}
}
}
}
return
QJsonValue
();
}
QJsonValue
TaskLogin
::
getServerJsonValue
(
const
QString
prop
)
{
return
searchJsonValue
(
serverRspJsonObj
,
prop
);
}
QJsonValue
TaskLogin
::
getPosJsonValue
(
const
QString
prop
)
{
return
searchJsonValue
(
posReqJsonObj
,
prop
);
}
void
TaskLogin
::
packageServerReq
()
void
TaskLogin
::
packageServerReq
()
{
{
serverReqJsonObj
[
"appId"
]
=
APP_ID
;
serverReqJsonObj
[
"reqType"
]
=
FM_Login
;
serverReqJsonObj
[
"stationId"
]
=
getPosJsonValue
(
"pos_id"
);
serverReqJsonObj
[
"storeId"
]
=
getPosJsonValue
(
"store_id"
);
serverReqJsonObj
[
"operatorId"
]
=
getPosJsonValue
(
"operator_id"
);
serverReqJsonObj
[
"partnerId"
]
=
PARTNER_ID
;
QJsonObject
code
;
QJsonObject
code
;
code
[
"code"
]
=
session
()
->
data
(
"code"
).
toString
();
code
[
"code"
]
=
session
()
->
data
(
"code"
).
toString
();
serverReqJsonObj
[
"data"
]
=
code
;
serverReqJsonObj
[
"data"
]
=
code
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
bool
TaskLogin
::
sendToServer
(
bool
isShowMsg
)
{
FMP_DEBUG
()
<<
__FUNCTION__
;
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/auth"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
bool
isOk
=
(
error
()
==
FM_API_SUCCESS
);
if
(
!
isOk
&&
isShowMsg
)
{
FMMsgWnd
::
FailureWnd
(
errorString
(),
_window
);
}
return
isOk
;
}
}
void
TaskLogin
::
packagePOSRsp
()
void
TaskLogin
::
packagePOSRsp
()
...
@@ -194,51 +69,20 @@ void TaskLogin::onLogin()
...
@@ -194,51 +69,20 @@ void TaskLogin::onLogin()
}
}
// 认证成功
// 认证成功
else
{
else
{
QString
account
=
getServerJsonValue
(
"account"
).
toString
();
QString
account
=
getServerJsonValue
(
PosProps
.
Fm_open_id
).
toString
();
QString
birthday
=
getServerJsonValue
(
"birthday"
).
toString
();
QString
birthday
=
getServerJsonValue
(
PosProps
.
Birthday
).
toString
();
QString
name
=
getServerJsonValue
(
"name"
).
toString
();
QString
name
=
getServerJsonValue
(
PosProps
.
Name
).
toString
();
FMMsgWnd
::
LoginSuccess
(
account
,
name
,
birthday
,
_window
);
FMMsgWnd
::
LoginSuccess
(
account
,
name
,
birthday
,
_window
);
session
()
->
addData
(
PosProps
.
Name
,
name
);
session
()
->
addData
(
PosProps
.
Amount
,
getServerJsonValue
(
PosProps
.
Amount
).
toInt
());
session
()
->
addData
(
PosProps
.
Birthday
,
birthday
);
session
()
->
addData
(
PosProps
.
Fm_open_id
,
account
);
session
()
->
addData
(
PosProps
.
Score
,
getServerJsonValue
(
PosProps
.
Score
).
toInt
());
_window
->
close
();
_window
->
close
();
}
}
if
(
_window
!=
nullptr
)
{
if
(
_window
!=
nullptr
)
{
_window
->
resetWnd
();
_window
->
resetWnd
();
}
}
}
}
QString
TaskLogin
::
sign
()
const
{
FMP_DEBUG
()
<<
__FUNCTION__
;
// 解析JSON插入MAP中按字典排序
QMap
<
QString
,
QString
>
mapData
;
for
(
int
i
=
0
;
i
<
sizeof
(
SignProps
)
/
sizeof
(
SignProps
[
0
]);
++
i
)
{
QString
word
=
SignProps
[
i
];
if
(
serverReqJsonObj
[
word
].
isDouble
())
{
mapData
[
word
]
=
QString
::
number
(
serverReqJsonObj
[
word
].
toDouble
());
}
else
{
mapData
[
word
]
=
serverReqJsonObj
[
word
].
toString
();
}
}
if
(
serverRspJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)].
toInt
()
==
FM_Fund
)
{
mapData
[
ServerProps
(
PosProps
.
TransId
)]
=
serverReqJsonObj
[
ServerProps
(
PosProps
.
TransId
)].
toString
();
}
// 使用URL键值对的格式拼接
QString
sb
=
""
;
foreach
(
QString
key
,
mapData
.
keys
())
{
sb
+=
(
key
+
"="
+
mapData
.
value
(
key
)
+
"&"
);
}
sb
.
remove
(
sb
.
length
()
-
1
,
1
);
// 去掉最后一个&
sb
.
append
(
KEY_CODE
);
QByteArray
bt
;
bt
.
append
(
sb
);
FMP_INFO
()
<<
"Sign String: "
<<
bt
;
QByteArray
md5Bt
=
QCryptographicHash
::
hash
(
bt
,
QCryptographicHash
::
Md5
);
return
md5Bt
.
toHex
();
}
task/tasklogin.h
View file @
8c7406ea
#ifndef TASKLOGIN_H
#ifndef TASKLOGIN_H
#define TASKLOGIN_H
#define TASKLOGIN_H
#include "fmtask.h"
#include "fmtask.h"
#include <QObject>
#include <QJsonObject>
class
TaskLogin
:
public
QObject
class
TaskLogin
:
public
FMTask
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
explicit
TaskLogin
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
explicit
TaskLogin
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
~
TaskLogin
();
~
TaskLogin
();
QByteArray
doTask
();
Session
*
session
()
const
{
return
_session
;}
QJsonValue
searchJsonValue
(
QJsonObject
&
searchJson
,
QString
searchKey
);
QJsonValue
getServerJsonValue
(
const
QString
prop
);
QJsonValue
getPosJsonValue
(
const
QString
prop
);
private
:
private
:
void
setWindow
();
void
setWindow
()
override
;
void
showWindow
();
void
packageServerReq
();
void
packageServerReq
();
bool
sendToServer
(
bool
isShowMsg
=
true
);
void
packagePOSRsp
();
void
packagePOSRsp
();
public
slots
:
public
slots
:
void
onLogin
();
void
onLogin
();
private
:
QString
sign
()
const
;
private
:
QJsonObject
posReqJsonObj
;
//pos发来的请求数据
QJsonObject
posRspJsonObj
;
//返回给pos的数据
QJsonObject
serverReqJsonObj
;
//发送给server端的请求数据
QJsonObject
serverRspJsonObj
;
//server返回的数据
FMVipWnd
*
_window
;
Session
*
_session
;
QString
url
;
//server url
/**
* @brief FMError
* define error.
*/
typedef
int
FMError
;
public
:
FMError
error
()
const
{
return
_error
;}
void
setError
(
const
FMError
error
)
{
_error
=
error
;
_errorMsg
=
""
;}
void
setError
(
const
FMError
error
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
errorMsg
;}
void
setError
(
const
FMError
error
,
const
int
errorCode
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
QString
(
"[%1]%2"
).
arg
(
errorCode
).
arg
(
errorMsg
);}
QString
errorString
()
{
if
(
fm_error
.
find
(
_error
)
==
fm_error
.
end
())
{
return
"Undefine Error"
;
}
else
{
if
(
_errorMsg
!=
""
)
return
_errorMsg
;
return
fm_error
.
at
(
_error
);
}
}
private
:
FMError
_error
;
QString
_errorMsg
;
};
};
#endif // TASKLOGIN_H
#endif // TASKLOGIN_H
task/taskothers.cpp
View file @
8c7406ea
...
@@ -6,27 +6,19 @@
...
@@ -6,27 +6,19 @@
#include <fmp_logger_i.h>
#include <fmp_logger_i.h>
TaskRefundPay
::
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
TaskRefundPay
::
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_
Order_Revoke
,
0
,
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_
Refund_Pay
,
0
,
parent
)
{
{
}
}
void
TaskRefundPay
::
packageServerReq
()
void
TaskRefundPay
::
packageServerReq
()
{
{
// 固定部分
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
FM_Type
();
QJsonArray
transIds
;
QJsonArray
transIds
;
transIds
.
append
(
getPosJsonValue
(
PosProps
.
TransId
));
transIds
.
append
(
getPosJsonValue
(
PosProps
.
TransId
));
QJsonObject
transData
;
QJsonObject
transData
;
transData
[
"transIds"
]
=
transIds
;
transData
[
"transIds"
]
=
transIds
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
}
void
TaskRefundPay
::
packagePOSRsp
()
void
TaskRefundPay
::
packagePOSRsp
()
...
@@ -40,74 +32,17 @@ void TaskRefundPay::packagePOSRsp()
...
@@ -40,74 +32,17 @@ void TaskRefundPay::packagePOSRsp()
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
}
}
bool
TaskRefundPay
::
sendToServer
(
bool
isShowMsg
)
{
FMP_DEBUG
()
<<
__FUNCTION__
;
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/refund"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
bool
isOk
=
(
error
()
==
FM_API_SUCCESS
);
if
(
!
isOk
&&
isShowMsg
)
{
FMMsgWnd
::
FailureWnd
(
errorString
(),
_window
);
}
return
isOk
;
}
TaskRefundOrder
::
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
TaskRefundOrder
::
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_
Order_Refund
,
0
,
parent
)
:
FMTaskNoWnd
(
jsonObj
,
FM_
Refund_Order
,
0
,
parent
)
{
{
}
}
void
TaskRefundOrder
::
packageServerReq
()
void
TaskRefundOrder
::
packageServerReq
()
{
{
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
PosProps
.
PartnerId
]
=
PARTNER_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
Fm_cmd
)]
=
FM_Type
();
QJsonObject
transData
;
QJsonObject
transData
;
transData
[
"memberTransId"
]
=
getPosJsonValue
(
PosProps
.
Fm_id
);
transData
[
ServerProps
(
PosProps
.
Fm_id
)
]
=
getPosJsonValue
(
PosProps
.
Fm_id
);
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"data"
]
=
transData
;
serverReqJsonObj
[
"t"
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
"sign"
]
=
sign
();
}
}
void
TaskRefundOrder
::
packagePOSRsp
()
void
TaskRefundOrder
::
packagePOSRsp
()
...
@@ -120,54 +55,3 @@ void TaskRefundOrder::packagePOSRsp()
...
@@ -120,54 +55,3 @@ void TaskRefundOrder::packagePOSRsp()
}
}
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
posRspJsonObj
[
PosProps
.
Prompt
]
=
1
;
}
}
bool
TaskRefundOrder
::
sendToServer
(
bool
isShowMsg
)
{
FMP_DEBUG
()
<<
__FUNCTION__
;
packageServerReq
();
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/correct"
;
QByteArray
rspData
;
FMNetwork
net
;
net
.
send
(
url
,
data
,
rspData
);
QJsonParseError
jsonErr
;
QJsonDocument
rspJson
=
QJsonDocument
::
fromJson
(
rspData
,
&
jsonErr
);
// 网络错误
if
(
net
.
error
!=
FM_API_SUCCESS
)
{
setError
(
net
.
error
,
net
.
errorMsg
);
serverRspJsonObj
=
rspJson
.
object
();
}
else
{
// Json错误
if
(
jsonErr
.
error
!=
QJsonParseError
::
NoError
)
{
setError
(
FM_API_BADJSON
);
FMP_ERROR
()
<<
"Unknown data: "
<<
rspData
;
}
else
{
serverRspJsonObj
=
rspJson
.
object
();
// 服务器返回的错误
if
(
serverRspJsonObj
.
contains
(
"errcode"
))
{
setError
(
FM_API_SERVERERROR
,
serverRspJsonObj
[
"errcode"
].
toInt
(),
serverRspJsonObj
[
"errmsg"
].
toString
());
}
}
}
FMP_INFO
()
<<
"Server rsponse: "
<<
serverRspJsonObj
;
if
(
_window
!=
nullptr
)
{
_window
->
setIsBusy
(
false
);
}
bool
isOk
=
(
error
()
==
FM_API_SUCCESS
);
if
(
!
isOk
&&
isShowMsg
)
{
FMMsgWnd
::
FailureWnd
(
errorString
(),
_window
);
}
return
isOk
;
}
task/taskothers.h
View file @
8c7406ea
...
@@ -11,7 +11,6 @@ public:
...
@@ -11,7 +11,6 @@ public:
explicit
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
explicit
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
void
packageServerReq
();
void
packageServerReq
();
void
packagePOSRsp
();
void
packagePOSRsp
();
bool
sendToServer
(
bool
isShowMsg
);
};
};
// 整单退款
// 整单退款
...
@@ -22,7 +21,5 @@ public:
...
@@ -22,7 +21,5 @@ public:
explicit
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
explicit
TaskRefundOrder
(
QJsonObject
&
jsonObj
,
QObject
*
parent
=
0
);
void
packageServerReq
();
void
packageServerReq
();
void
packagePOSRsp
();
void
packagePOSRsp
();
bool
sendToServer
(
bool
isShowMsg
);
};
};
#endif // TASKOTHERS_H
#endif // TASKOTHERS_H
task/taskpay.cpp
View file @
8c7406ea
This diff is collapsed.
Click to expand it.
task/taskpay.h
View file @
8c7406ea
...
@@ -3,67 +3,20 @@
...
@@ -3,67 +3,20 @@
#include "fmtask.h"
#include "fmtask.h"
#include "taskcoupon.h"
#include "taskcoupon.h"
class
TaskPay
:
public
QObject
class
TaskPay
:
public
FMTask
{
{
Q_OBJECT
Q_OBJECT
public
:
public
:
explicit
TaskPay
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
explicit
TaskPay
(
QJsonObject
&
jsonObj
,
Session
*
session
=
0
,
QObject
*
parent
=
0
);
~
TaskPay
();
~
TaskPay
();
QByteArray
doTask
();
QByteArray
doTask
();
QByteArray
queryMemberInfo
();
void
setWindow
();
void
setWindow
();
void
showWindow
();
void
packageServerReq
();
void
packageServerReq
();
bool
sendToServer
(
bool
isShowMsg
=
true
);
void
packagePOSRsp
();
void
packagePOSRsp
();
Session
*
session
()
const
{
return
_session
;}
QJsonValue
searchJsonValue
(
QJsonObject
&
searchJson
,
QString
searchKey
);
QJsonValue
getServerJsonValue
(
const
QString
prop
);
QJsonValue
getPosJsonValue
(
const
QString
prop
);
private
slots
:
private
slots
:
void
onPay
();
void
onPay
();
private
:
QJsonObject
posReqJsonObj
;
QJsonObject
posRspJsonObj
;
QJsonObject
serverReqJsonObj
;
QJsonObject
serverRspJsonObj
;
FMVipWnd
*
_window
;
Session
*
_session
;
QString
url
;
private
:
QString
sign
()
const
;
/**
* @brief FMError
* define error.
*/
typedef
int
FMError
;
public
:
FMError
error
()
const
{
return
_error
;}
void
setError
(
const
FMError
error
)
{
_error
=
error
;
_errorMsg
=
""
;}
void
setError
(
const
FMError
error
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
errorMsg
;}
void
setError
(
const
FMError
error
,
const
int
errorCode
,
const
QString
errorMsg
)
{
_error
=
error
;
_errorMsg
=
QString
(
"[%1]%2"
).
arg
(
errorCode
).
arg
(
errorMsg
);}
QString
errorString
()
{
if
(
fm_error
.
find
(
_error
)
==
fm_error
.
end
())
{
return
"Undefine Error"
;
}
else
{
if
(
_errorMsg
!=
""
)
return
_errorMsg
;
return
fm_error
.
at
(
_error
);
}
}
private
:
FMError
_error
;
QString
_errorMsg
;
};
};
#endif // TASKPAY_H
#endif // TASKPAY_H
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