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
0d349395
Commit
0d349395
authored
Jan 26, 2018
by
xiaoqing.gu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fastpay功能:1、会员支付界面添加扫一扫功能 2、对接华润通会员验证和单张券查询接口
parent
86b307be
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
351 additions
and
31 deletions
+351
-31
fmp_vip/fmp_vip.pro
+1
-1
fmp_vip/fmp_vip_p.cpp
+10
-1
fmp_vip/fmp_vip_p.h
+2
-0
fmvip/fmp_vip_server.cpp
+6
-0
fmvip/fmp_vip_server.h
+2
-0
fmvip/global.h
+59
-0
fmvip/task/coupon.h
+5
-0
fmvip/task/fmtask.cpp
+32
-2
fmvip/task/fmtasknownd.cpp
+3
-0
fmvip/task/taskfactory.cpp
+8
-8
fmvip/task/tasklogin.cpp
+24
-0
fmvip/task/taskothers.cpp
+49
-0
fmvip/task/taskpay.cpp
+40
-10
fmvip/task/taskpay.h
+4
-0
fmvip/windows/couponmodel.cpp
+7
-1
fmvip/windows/couponmodel.h
+3
-1
fmvip/windows/fmviporder.cpp
+58
-3
fmvip/windows/fmviporder.h
+21
-1
fmvip/windows/forms/fmviporder.ui
+16
-2
version.h
+1
-1
No files found.
fmp_vip/fmp_vip.pro
View file @
0d349395
...
@@ -13,7 +13,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
...
@@ -13,7 +13,7 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG
+=
c
++
11
CONFIG
+=
c
++
11
DEFINES
+=
FM_DEBUG
DEFINES
+=
FM_DEBUG
FASTPAY
SOURCES
+=
\
SOURCES
+=
\
fmp_vip
.
cpp
\
fmp_vip
.
cpp
\
...
...
fmp_vip/fmp_vip_p.cpp
View file @
0d349395
...
@@ -21,7 +21,7 @@ int FMPVipPrivate::Init()
...
@@ -21,7 +21,7 @@ int FMPVipPrivate::Init()
Q_Q
(
FMPVip
);
Q_Q
(
FMPVip
);
FMPHomeInterface
*
home
=
q
->
GetService
<
FMPHomeInterface
>
(
q
->
_ctx
);
FMPHomeInterface
*
home
=
q
->
GetService
<
FMPHomeInterface
>
(
q
->
_ctx
);
if
(
q
->
_inited
)
{
if
(
q
->
_inited
)
{
home
->
notification
(
QString
::
fromLocal8Bit
(
"[非码会员]已在运行!"
));
//
home->notification(QString::fromLocal8Bit("[非码会员]已在运行!"));
}
else
{
}
else
{
_settings
=
q
->
GetService
<
FMPSettingsInterface
>
(
q
->
_ctx
);
_settings
=
q
->
GetService
<
FMPSettingsInterface
>
(
q
->
_ctx
);
FMPVipSettings
::
instance
()
->
init
(
_settings
);
FMPVipSettings
::
instance
()
->
init
(
_settings
);
...
@@ -37,6 +37,8 @@ int FMPVipPrivate::Init()
...
@@ -37,6 +37,8 @@ int FMPVipPrivate::Init()
FMP_INFO
()
<<
"Vip start"
;
FMP_INFO
()
<<
"Vip start"
;
}
}
fastPay
();
return
FMP_SUCCESS
;
return
FMP_SUCCESS
;
}
}
...
@@ -48,3 +50,10 @@ int FMPVipPrivate::Uninit()
...
@@ -48,3 +50,10 @@ int FMPVipPrivate::Uninit()
q
->
_inited
=
false
;
q
->
_inited
=
false
;
return
FMP_SUCCESS
;
return
FMP_SUCCESS
;
}
}
void
FMPVipPrivate
::
fastPay
()
{
QByteArray
rspData
;
FMPVipServer
::
instance
()
->
callVipPay
(
"{
\"
fm_cmd
\"
:1003}"
,
rspData
);
}
fmp_vip/fmp_vip_p.h
View file @
0d349395
...
@@ -20,6 +20,8 @@ public:
...
@@ -20,6 +20,8 @@ public:
FMPVip
*
q_ptr
;
FMPVip
*
q_ptr
;
private
:
private
:
FMPSettingsInterface
*
_settings
;
FMPSettingsInterface
*
_settings
;
void
fastPay
();
};
};
#endif // FMP_VIP_P_H
#endif // FMP_VIP_P_H
fmvip/fmp_vip_server.cpp
View file @
0d349395
...
@@ -123,3 +123,9 @@ void FMPVipServer::onReadyRead()
...
@@ -123,3 +123,9 @@ void FMPVipServer::onReadyRead()
socket
->
close
();
socket
->
close
();
}
}
}
}
void
FMPVipServer
::
callVipPay
(
const
QByteArray
&
reqData
,
QByteArray
&
rspData
)
{
dispatcher
->
doTask
(
reqData
,
rspData
);
}
fmvip/fmp_vip_server.h
View file @
0d349395
...
@@ -26,6 +26,8 @@ public:
...
@@ -26,6 +26,8 @@ public:
void
SetPluginContext
(
ctkPluginContext
*
ctx
);
void
SetPluginContext
(
ctkPluginContext
*
ctx
);
void
callVipPay
(
const
QByteArray
&
reqData
,
QByteArray
&
rspData
);
signals
:
signals
:
void
SocketDisconnected
();
void
SocketDisconnected
();
...
...
fmvip/global.h
View file @
0d349395
...
@@ -22,6 +22,19 @@
...
@@ -22,6 +22,19 @@
#define PARTNER_ID "c3e82ff2-6285-4823-8e3f-7ec880ae7119"
#define PARTNER_ID "c3e82ff2-6285-4823-8e3f-7ec880ae7119"
//! 华润通
#define H_PARTNER_ID "Z1017000"
#define API_VERSION "2.0.0"
#define APP_SUB_ID "Z101700101RU"
#define FORMAT "json"
#define GETCOUPONDETAIL_API_ID "crt.cp.public.getCouponDetail"
#define APP_TOKEN "1f8f8fbd063f4fe4980d747b03eff5a8"
#define APP_PUB_ID "T000000803LL"
#define SIGN_METHOD "rsa"
#define SIGN "m6V7kNYkUcSREMLtm61aZgP69Ym85K/Jid9e0n2M0a2H4PKLFamk1wkRBjr8M+Y8czn9h3LQv3yZeJJBpaH9aeY5sNkCeI5IZ1lmNVMnb+7LsfQRA3S4soq0kbPcGaSsXnx9kQ854xDUSTDupLMHegAQl54RSrU9hcMMz7GhLc5P1JylADfjZS6WCdjJZU5Jc5y3YYdDdVjOypiNfcPtsq4ob4lAjnEHvIngROBNU1Yh4u5/v/Pw9OFfYTjG347tyG77a7RJEiziT8Eyt3S9YSob4Rdq5ufSm/VQPp/2ZPgPOLf4NMgodTLicT47aCg5Cl+/AB1OZ2NoSTNIB2mrtA=="
#define SYS_ID "Z1017001"
// 请求类型的枚举值
// 请求类型的枚举值
enum
FM_TYPE
{
enum
FM_TYPE
{
FM_Set_Store_Info
=
1000
,
FM_Set_Store_Info
=
1000
,
...
@@ -153,6 +166,26 @@ struct PP{
...
@@ -153,6 +166,26 @@ struct PP{
MandatoryField
=
"MandatoryField"
;
MandatoryField
=
"MandatoryField"
;
OptionalField
=
"OptionalField"
;
OptionalField
=
"OptionalField"
;
#ifdef FASTPAY
MerchantCode
=
"merchantCode"
;
RequestData
=
"REQUEST_DATA"
;
HrtAttrs
=
"HRT_ATTRS"
;
_PartnerId
=
"Partner_ID"
;
ApiVersion
=
"Api_Version"
;
AppSubID
=
"App_Sub_ID"
;
Format
=
"Format"
;
TimeStamp
=
"Time_Stamp"
;
ApiID
=
"Api_ID"
;
AppToken
=
"App_Token"
;
AppPubID
=
"App_Pub_ID"
;
SignMethod
=
"Sign_Method"
;
_Sign
=
"Sign"
;
SysID
=
"Sys_ID"
;
TransactionUnid
=
"transactionUuid"
;
MemberVerifyCode
=
"memberVerifyCode"
;
#endif
}
}
QString
AppId
;
QString
AppId
;
...
@@ -241,6 +274,27 @@ struct PP{
...
@@ -241,6 +274,27 @@ struct PP{
QString
MandatoryField
;
QString
MandatoryField
;
QString
OptionalField
;
QString
OptionalField
;
#ifdef FASTPAY
QString
MerchantCode
;
QString
RequestData
;
QString
HrtAttrs
;
QString
_PartnerId
;
QString
ApiVersion
;
QString
AppSubID
;
QString
Format
;
QString
TimeStamp
;
QString
ApiID
;
QString
AppToken
;
QString
AppPubID
;
QString
SignMethod
;
QString
_Sign
;
QString
SysID
;
QString
TransactionUnid
;
QString
MemberVerifyCode
;
#endif
};
};
const
static
PP
PosProps
;
const
static
PP
PosProps
;
...
@@ -252,6 +306,10 @@ const static PP PosProps;
...
@@ -252,6 +306,10 @@ const static PP PosProps;
typedef
std
::
map
<
QString
,
QString
>
PropsMap
;
typedef
std
::
map
<
QString
,
QString
>
PropsMap
;
const
PropsMap
::
value_type
PropsMapPairs
[]
=
const
PropsMap
::
value_type
PropsMapPairs
[]
=
{
{
#ifdef FASTPAY
PropsMap
::
value_type
(
PosProps
.
Coupon_code
,
"couponId"
),
PropsMap
::
value_type
(
PosProps
.
Fm_open_id
,
"openid"
),
#else
PropsMap
::
value_type
(
PosProps
.
StatusCode
,
"statusCode"
),
PropsMap
::
value_type
(
PosProps
.
StatusCode
,
"statusCode"
),
PropsMap
::
value_type
(
PosProps
.
Fm_cmd
,
"reqType"
),
PropsMap
::
value_type
(
PosProps
.
Fm_cmd
,
"reqType"
),
PropsMap
::
value_type
(
PosProps
.
Member_sign
,
"code"
),
PropsMap
::
value_type
(
PosProps
.
Member_sign
,
"code"
),
...
@@ -280,6 +338,7 @@ const PropsMap::value_type PropsMapPairs[] =
...
@@ -280,6 +338,7 @@ const PropsMap::value_type PropsMapPairs[] =
PropsMap
::
value_type
(
PosProps
.
Price
,
"price"
),
PropsMap
::
value_type
(
PosProps
.
Price
,
"price"
),
PropsMap
::
value_type
(
PosProps
.
ChargeAmount
,
"payAmount"
),
PropsMap
::
value_type
(
PosProps
.
ChargeAmount
,
"payAmount"
),
PropsMap
::
value_type
(
PosProps
.
PartnerId
,
"partnerId"
),
PropsMap
::
value_type
(
PosProps
.
PartnerId
,
"partnerId"
),
#endif
};
};
static
PropsMap
PosToServerProps
(
PropsMapPairs
,
PropsMapPairs
+
(
sizeof
(
PropsMapPairs
)
/
sizeof
(
PropsMapPairs
[
0
])));
static
PropsMap
PosToServerProps
(
PropsMapPairs
,
PropsMapPairs
+
(
sizeof
(
PropsMapPairs
)
/
sizeof
(
PropsMapPairs
[
0
])));
...
...
fmvip/task/coupon.h
View file @
0d349395
...
@@ -12,6 +12,11 @@ class Coupon
...
@@ -12,6 +12,11 @@ class Coupon
public
:
public
:
explicit
Coupon
(
QString
name
=
""
,
QString
code
=
""
,
QString
type
=
""
,
double
disAmount
=
0
,
double
limitAmount
=
0
,
QString
limitTime
=
""
,
bool
isCompatible
=
true
);
explicit
Coupon
(
QString
name
=
""
,
QString
code
=
""
,
QString
type
=
""
,
double
disAmount
=
0
,
double
limitAmount
=
0
,
QString
limitTime
=
""
,
bool
isCompatible
=
true
);
bool
operator
==
(
const
Coupon
&
rhs
)
{
return
(
this
->
code
().
compare
(
rhs
.
code
())
==
0
);
}
void
paint
(
QPainter
*
painter
,
const
QRect
&
rect
,
void
paint
(
QPainter
*
painter
,
const
QRect
&
rect
,
const
QPalette
&
palette
)
const
;
const
QPalette
&
palette
)
const
;
QSize
sizeHint
()
const
;
QSize
sizeHint
()
const
;
...
...
fmvip/task/fmtask.cpp
View file @
0d349395
...
@@ -44,7 +44,11 @@ QByteArray FMTask::doTask()
...
@@ -44,7 +44,11 @@ QByteArray FMTask::doTask()
#endif
#endif
RunFunction
(
packagePOSReq
);
RunFunction
(
packagePOSReq
);
#ifdef FASTPAY
#else
RunFunction
(
copyPros
);
RunFunction
(
copyPros
);
#endif
RunFunction
(
setWindow
);
RunFunction
(
setWindow
);
RunFunction
(
showWindow
);
RunFunction
(
showWindow
);
RunFunction
(
packagePOSRsp
);
RunFunction
(
packagePOSRsp
);
...
@@ -104,7 +108,31 @@ void FMTask::showWindow()
...
@@ -104,7 +108,31 @@ void FMTask::showWindow()
bool
FMTask
::
sendToServer
(
bool
isShowMsg
)
bool
FMTask
::
sendToServer
(
bool
isShowMsg
)
{
{
FMP_DEBUG
()
<<
__FUNCTION__
;
FMP_DEBUG
()
<<
__FUNCTION__
;
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
();
// 固定部分
// 固定部分
#ifdef FASTPAY
QJsonObject
hrtAttrs
;
hrtAttrs
[
ServerProps
(
PosProps
.
_PartnerId
)]
=
H_PARTNER_ID
;
hrtAttrs
[
ServerProps
(
PosProps
.
ApiVersion
)]
=
API_VERSION
;
hrtAttrs
[
ServerProps
(
PosProps
.
AppSubID
)]
=
APP_SUB_ID
;
hrtAttrs
[
ServerProps
(
PosProps
.
Format
)]
=
FORMAT
;
hrtAttrs
[
ServerProps
(
PosProps
.
TimeStamp
)]
=
QDateTime
::
currentDateTime
().
toString
(
"yyyy-MM-dd hh:mm:ss:zzz"
);
hrtAttrs
[
ServerProps
(
PosProps
.
AppToken
)]
=
APP_TOKEN
;
hrtAttrs
[
ServerProps
(
PosProps
.
SignMethod
)]
=
SIGN_METHOD
;
hrtAttrs
[
ServerProps
(
PosProps
.
_Sign
)]
=
SIGN
;
hrtAttrs
[
ServerProps
(
PosProps
.
SysID
)]
=
SYS_ID
;
QJsonObject
request
;
request
[
ServerProps
(
PosProps
.
HrtAttrs
)]
=
hrtAttrs
;
serverReqJsonObj
[
"REQUEST"
]
=
request
;
packageServerReq
();
qDebug
()
<<
serverReqJsonObj
;
#else
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
PosProps
.
AppId
]
=
APP_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
PartnerId
)]
=
PARTNER_ID
;
serverReqJsonObj
[
ServerProps
(
PosProps
.
PartnerId
)]
=
PARTNER_ID
;
serverReqJsonObj
[
PosProps
.
T
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
serverReqJsonObj
[
PosProps
.
T
]
=
QString
::
number
(
QDateTime
::
currentMSecsSinceEpoch
());
...
@@ -114,10 +142,12 @@ bool FMTask::sendToServer(bool isShowMsg)
...
@@ -114,10 +142,12 @@ bool FMTask::sendToServer(bool isShowMsg)
packageServerReq
();
packageServerReq
();
serverReqJsonObj
[
PosProps
.
Sign
]
=
sign
();
serverReqJsonObj
[
PosProps
.
Sign
]
=
sign
();
url
=
url
+
"/"
+
ReqUrl
.
at
(
FM_Type
());
#endif
QJsonDocument
json
(
serverReqJsonObj
);
QJsonDocument
json
(
serverReqJsonObj
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
QByteArray
data
=
json
.
toJson
(
QJsonDocument
::
Compact
);
url
=
FMPVipSettings
::
instance
()
->
getServerUrl
()
+
"/"
+
ReqUrl
.
at
(
FM_Type
());
QByteArray
rspData
;
QByteArray
rspData
;
FMNetwork
net
;
FMNetwork
net
;
...
...
fmvip/task/fmtasknownd.cpp
View file @
0d349395
...
@@ -16,7 +16,10 @@ QByteArray FMTaskNoWnd::doTask()
...
@@ -16,7 +16,10 @@ QByteArray FMTaskNoWnd::doTask()
}
}
#endif
#endif
RunFunction
(
packagePOSReq
);
RunFunction
(
packagePOSReq
);
#ifdef FASTPAY
#else
RunFunction
(
copyPros
);
RunFunction
(
copyPros
);
#endif
bool
isOk
=
sendToServer
();
bool
isOk
=
sendToServer
();
if
(
!
isOk
)
{
if
(
!
isOk
)
{
FMP_WARN
()
<<
QString
(
"Task error %1: %2"
).
arg
(
error
()).
arg
(
errorString
());
FMP_WARN
()
<<
QString
(
"Task error %1: %2"
).
arg
(
error
()).
arg
(
errorString
());
...
...
fmvip/task/taskfactory.cpp
View file @
0d349395
...
@@ -17,7 +17,13 @@
...
@@ -17,7 +17,13 @@
//FMTask* TaskFactory::Task(QByteArray data)
//FMTask* TaskFactory::Task(QByteArray data)
//{
//{
// QJsonParseError error;
// QJsonParseError error;askRefundOrder(jsonObj);
// break;
// }
// case FM_Order_Revoke: {
// task = new TaskRefundPay(jsonObj);
// break;
// }
// QJsonDocument doc = QJsonDocument::fromJson(data, &error);
// QJsonDocument doc = QJsonDocument::fromJson(data, &error);
// QJsonObject jsonObj = doc.object();
// QJsonObject jsonObj = doc.object();
...
@@ -46,13 +52,7 @@
...
@@ -46,13 +52,7 @@
// break;
// break;
// }
// }
// case FM_Order_Refund: {
// case FM_Order_Refund: {
// task = new TaskRefundOrder(jsonObj);
// task = new T
// break;
// }
// case FM_Order_Revoke: {
// task = new TaskRefundPay(jsonObj);
// break;
// }
// case FM_Charge_Refund: {
// case FM_Charge_Refund: {
// task = new TaskRefundOrder(jsonObj);
// task = new TaskRefundOrder(jsonObj);
// break;
// break;
...
...
fmvip/task/tasklogin.cpp
View file @
0d349395
...
@@ -28,13 +28,36 @@ void TaskLogin::setWindow()
...
@@ -28,13 +28,36 @@ void TaskLogin::setWindow()
void
TaskLogin
::
packageServerReq
()
void
TaskLogin
::
packageServerReq
()
{
{
#ifdef FASTPAY
QJsonObject
requestData
;
requestData
[
ServerProps
(
PosProps
.
TransactionUnid
)]
=
session
()
->
data
(
PosProps
.
TransactionUnid
).
toString
();
requestData
[
ServerProps
(
PosProps
.
MemberVerifyCode
)]
=
session
()
->
data
(
PosProps
.
Member_sign
).
toString
();
requestData
[
ServerProps
(
PosProps
.
MerchantCode
)]
=
getPosJsonValue
(
PosProps
.
MerchantCode
);
QJsonObject
request
=
serverReqJsonObj
[
"REQUEST"
].
toObject
();
request
[
ServerProps
(
PosProps
.
RequestData
)]
=
requestData
;
QJsonObject
hrtObj
=
request
[
ServerProps
(
PosProps
.
HrtAttrs
)].
toObject
();
hrtObj
[
ServerProps
(
PosProps
.
ApiID
)]
=
"crt.mb.public.VerifyMemberInfoForOut"
;
hrtObj
[
ServerProps
(
PosProps
.
AppPubID
)]
=
"T000000305EH"
;
serverReqJsonObj
[
"REQUEST"
]
=
request
;
#else
QJsonObject
code
;
QJsonObject
code
;
code
[
ServerProps
(
PosProps
.
Member_sign
)]
=
session
()
->
data
(
PosProps
.
Member_sign
).
toString
();
code
[
ServerProps
(
PosProps
.
Member_sign
)]
=
session
()
->
data
(
PosProps
.
Member_sign
).
toString
();
serverReqJsonObj
[
"data"
]
=
code
;
serverReqJsonObj
[
"data"
]
=
code
;
#endif
}
}
void
TaskLogin
::
packagePOSRsp
()
void
TaskLogin
::
packagePOSRsp
()
{
{
/*会员验证完服务器返回的信息收集*/
#ifdef FASTPAY
QJsonValue
rspJson
=
getServerJsonValue
(
"RETURN_CODE"
);
QJsonValue
rsp
=
getServerJsonValue
(
"RETURN_DATA"
);
QJsonObject
rspData
=
rsp
.
toObject
();
QString
code
=
rspData
[
"openid"
].
toString
();
double
points
=
rspData
[
"points"
].
toDouble
();
#else
std
::
vector
<
QString
>
p
;
std
::
vector
<
QString
>
p
;
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
StatusCode
);
p
.
push_back
(
PosProps
.
Msg
);
p
.
push_back
(
PosProps
.
Msg
);
...
@@ -49,6 +72,7 @@ void TaskLogin::packagePOSRsp()
...
@@ -49,6 +72,7 @@ void TaskLogin::packagePOSRsp()
foreach
(
QString
prop
,
p
)
{
foreach
(
QString
prop
,
p
)
{
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
prop
);
posRspJsonObj
[
prop
]
=
getServerJsonValue
(
prop
);
}
}
#endif
}
}
void
TaskLogin
::
onLogin
()
void
TaskLogin
::
onLogin
()
...
...
fmvip/task/taskothers.cpp
View file @
0d349395
...
@@ -8,6 +8,22 @@ TaskCoupon::TaskCoupon(QJsonObject &jsonObj, Session *session, QObject *parent)
...
@@ -8,6 +8,22 @@ TaskCoupon::TaskCoupon(QJsonObject &jsonObj, Session *session, QObject *parent)
void
TaskCoupon
::
packageServerReq
()
void
TaskCoupon
::
packageServerReq
()
{
{
#ifdef FASTPAY
QJsonObject
requestData
;
requestData
[
ServerProps
(
PosProps
.
Fm_open_id
)]
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
requestData
[
ServerProps
(
PosProps
.
Coupon_code
)]
=
getPosJsonValue
(
PosProps
.
Coupon_code
);
requestData
[
ServerProps
(
PosProps
.
MerchantCode
)]
=
getPosJsonValue
(
PosProps
.
MerchantCode
);
QJsonObject
request
=
serverReqJsonObj
[
"REQUEST"
].
toObject
();
request
[
ServerProps
(
PosProps
.
RequestData
)]
=
requestData
;
QJsonObject
hrtObj
=
request
[
ServerProps
(
PosProps
.
HrtAttrs
)].
toObject
();
hrtObj
[
ServerProps
(
PosProps
.
ApiID
)]
=
"crt.cp.public.syncCoupon"
;
hrtObj
[
ServerProps
(
PosProps
.
AppPubID
)]
=
APP_PUB_ID
;
request
[
ServerProps
(
PosProps
.
HrtAttrs
)]
=
hrtObj
;
serverReqJsonObj
[
"REQUEST"
]
=
request
;
#else
QJsonObject
data
;
QJsonObject
data
;
data
[
ServerProps
(
PosProps
.
Fm_open_id
)]
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
data
[
ServerProps
(
PosProps
.
Fm_open_id
)]
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
// data[ServerProps(PosProps.Fm_open_id)] = "6524402960";
// data[ServerProps(PosProps.Fm_open_id)] = "6524402960";
...
@@ -25,10 +41,42 @@ void TaskCoupon::packageServerReq()
...
@@ -25,10 +41,42 @@ void TaskCoupon::packageServerReq()
}
}
data
[
ServerProps
(
PosProps
.
Products
)]
=
propducts
;
data
[
ServerProps
(
PosProps
.
Products
)]
=
propducts
;
serverReqJsonObj
[
"data"
]
=
data
;
serverReqJsonObj
[
"data"
]
=
data
;
#endif
}
}
void
TaskCoupon
::
packagePOSRsp
()
void
TaskCoupon
::
packagePOSRsp
()
{
{
/*单张券查询服务器返回的信息*/
#ifdef FASTPAY
QJsonValue
rspJson
=
getServerJsonValue
(
"RETURN_CODE"
);
qDebug
()
<<
"*******************"
<<
rspJson
.
toString
();
QJsonValue
rsp
=
getServerJsonValue
(
"RETURN_DATA"
);
QJsonObject
rspData
=
rsp
.
toObject
();
QString
code
=
rspData
[
"couponId"
].
toString
();
QString
desc
=
rspData
[
"couponName"
].
toString
();
QString
type
=
rspData
[
"couponType"
].
toString
();
QString
amount
=
rspData
[
"cpValue"
].
toString
();
double
_amount
=
amount
.
toDouble
();
QString
ableUsed
=
rspData
[
"ableUsed"
].
toString
();
QString
beginDate
=
rspData
[
"beginDate"
].
toString
();
QString
couponStatus
=
rspData
[
"couponStatus"
].
toString
();
QString
endDate
=
rspData
[
"endDate"
].
toString
();
QString
ownerShopName
=
rspData
[
"ownerShopName"
].
toString
();
QString
useCondition
=
rspData
[
"useCondition"
].
toString
();
double
_useCondition
=
useCondition
.
toDouble
();
QString
openid
=
rspData
[
"openid"
].
toString
();
code
=
getPosJsonValue
(
PosProps
.
Coupon_code
).
toString
();
desc
=
code
;
qDebug
()
<<
code
;
Coupon
c
(
desc
,
code
,
type
,
_amount
,
_useCondition
,
endDate
);
QVariant
v
;
v
.
setValue
(
c
);
QMap
<
QString
,
QVariant
>
couponMap
;
couponMap
[
code
]
=
v
;
session
()
->
addData
(
PosProps
.
CouponMap
,
couponMap
);
#else
QMap
<
QString
,
QVariant
>
couponMap
;
QMap
<
QString
,
QVariant
>
couponMap
;
foreach
(
auto
value
,
getServerJsonValue
(
PosProps
.
CouponList
).
toArray
())
foreach
(
auto
value
,
getServerJsonValue
(
PosProps
.
CouponList
).
toArray
())
{
{
...
@@ -45,6 +93,7 @@ void TaskCoupon::packagePOSRsp()
...
@@ -45,6 +93,7 @@ void TaskCoupon::packagePOSRsp()
couponMap
[
code
]
=
v
;
couponMap
[
code
]
=
v
;
}
}
session
()
->
addData
(
PosProps
.
CouponMap
,
couponMap
);
session
()
->
addData
(
PosProps
.
CouponMap
,
couponMap
);
#endif
}
}
TaskRefundPay
::
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
TaskRefundPay
::
TaskRefundPay
(
QJsonObject
&
jsonObj
,
QObject
*
parent
)
...
...
fmvip/task/taskpay.cpp
View file @
0d349395
...
@@ -18,6 +18,7 @@ TaskPay::TaskPay(QJsonObject &jsonObj, Session *session, QObject *parent)
...
@@ -18,6 +18,7 @@ TaskPay::TaskPay(QJsonObject &jsonObj, Session *session, QObject *parent)
:
FMTask
(
jsonObj
,
FM_Pay
,
session
,
parent
)
:
FMTask
(
jsonObj
,
FM_Pay
,
session
,
parent
)
,
_order
(
new
Order
(
this
))
,
_order
(
new
Order
(
this
))
{
{
}
}
TaskPay
::~
TaskPay
()
TaskPay
::~
TaskPay
()
...
@@ -49,15 +50,15 @@ void TaskPay::packagePOSReq()
...
@@ -49,15 +50,15 @@ void TaskPay::packagePOSReq()
QString
fm_open_id_pos
=
getPosJsonValue
(
PosProps
.
Fm_open_id
).
toString
();
QString
fm_open_id_pos
=
getPosJsonValue
(
PosProps
.
Fm_open_id
).
toString
();
QString
fm_open_id_session
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
QString
fm_open_id_session
=
session
()
->
data
(
PosProps
.
Fm_open_id
).
toString
();
if
(
fm_open_id_session
==
""
||
fm_open_id_pos
!=
fm_open_id_session
||
session
()
->
data
(
PosProps
.
CanPay
).
toBool
()
==
false
)
{
//
if(fm_open_id_session == "" || fm_open_id_pos!=fm_open_id_session || session()->data(PosProps.CanPay).toBool() == false) {
preTask
=
new
TaskLogin
(
posReqJsonObj
,
_session
,
this
);
//
preTask = new TaskLogin(posReqJsonObj, _session, this);
preTask
->
session
()
->
addData
(
PosProps
.
FM_Type
,
FM_Pay
);
//
preTask->session()->addData(PosProps.FM_Type, FM_Pay);
preTask
->
doTask
();
//
preTask->doTask();
if
(
preTask
->
error
()
!=
FM_API_SUCCESS
)
{
//
if(preTask->error() != FM_API_SUCCESS) {
this
->
setError
(
preTask
->
error
(),
preTask
->
errorString
());
//
this->setError(preTask->error(), preTask->errorString());
}
//
}
this
->
_session
=
preTask
->
session
();
//
this->_session = preTask->session();
}
//
}
session
()
->
addData
(
PosProps
.
OrderAmount
,
getPosJsonValue
(
PosProps
.
OrderAmount
).
toInt
());
session
()
->
addData
(
PosProps
.
OrderAmount
,
getPosJsonValue
(
PosProps
.
OrderAmount
).
toInt
());
session
()
->
addData
(
PosProps
.
TransAmount
,
getPosJsonValue
(
PosProps
.
TransAmount
).
toInt
());
session
()
->
addData
(
PosProps
.
TransAmount
,
getPosJsonValue
(
PosProps
.
TransAmount
).
toInt
());
...
@@ -81,11 +82,35 @@ void TaskPay::onGetCoupons(Session* session)
...
@@ -81,11 +82,35 @@ void TaskPay::onGetCoupons(Session* session)
}
}
}
}
#ifdef FASTPAY
void
TaskPay
::
onCouponReq
(
const
QString
&
code
)
{
posReqJsonObj
[
PosProps
.
Coupon_code
]
=
code
;
TaskCoupon
couponTask
(
posReqJsonObj
,
this
->
session
());
qDebug
()
<<
couponTask
.
doTask
();
_session
->
addData
(
PosProps
.
CouponMap
,
this
->
session
()
->
getCouponMap
(
PosProps
.
CouponMap
));
if
(
_window
!=
nullptr
)
{
qobject_cast
<
FMVipOrder
*>
(
_window
)
->
initCouponItems
();
_window
->
setIsBusy
(
false
);
_window
->
setEnabled
(
true
);
}
// qDebug() << couponTask->getServerJsonValue("");
}
#endif
void
TaskPay
::
setWindow
()
void
TaskPay
::
setWindow
()
{
{
_window
=
new
FMVipOrder
;
_window
=
new
FMVipOrder
;
connect
(
qobject_cast
<
FMVipOrder
*>
(
_window
),
SIGNAL
(
pay
()),
this
,
SLOT
(
onPay
()));
connect
(
qobject_cast
<
FMVipOrder
*>
(
_window
),
SIGNAL
(
pay
()),
this
,
SLOT
(
onPay
()));
#ifdef FASTPAY
connect
(
qobject_cast
<
FMVipOrder
*>
(
_window
),
SIGNAL
(
couponReq
(
const
QString
&
)),
this
,
SLOT
(
onCouponReq
(
const
QString
&
)));
#endif
}
}
void
TaskPay
::
packageServerReq
()
void
TaskPay
::
packageServerReq
()
...
@@ -135,6 +160,7 @@ void TaskPay::packageServerReq()
...
@@ -135,6 +160,7 @@ void TaskPay::packageServerReq()
//代金券/商品券支付详情
//代金券/商品券支付详情
QMap
<
QString
,
QVariant
>
coupons
=
session
()
->
data
(
"payCouponMap"
).
toMap
();
QMap
<
QString
,
QVariant
>
coupons
=
session
()
->
data
(
"payCouponMap"
).
toMap
();
// 将代金券按金额从小到大排序
// 将代金券按金额从小到大排序
QList
<
Coupon
>
couponList
;
QList
<
Coupon
>
couponList
;
for
(
QMap
<
QString
,
QVariant
>::
const_iterator
it
=
coupons
.
constBegin
();
it
!=
coupons
.
constEnd
();
it
++
)
for
(
QMap
<
QString
,
QVariant
>::
const_iterator
it
=
coupons
.
constBegin
();
it
!=
coupons
.
constEnd
();
it
++
)
...
@@ -151,10 +177,13 @@ void TaskPay::packageServerReq()
...
@@ -151,10 +177,13 @@ void TaskPay::packageServerReq()
int
couponAmount
=
0
;
int
couponAmount
=
0
;
foreach
(
Coupon
c
,
couponList
)
foreach
(
Coupon
c
,
couponList
)
{
{
QJsonObject
coupon
;
#ifdef FASTPAY
int
couponDisAmount
=
c
.
disAmount
()
*
100
;
#else
if
(
needCouponAmount
<=
0
)
{
if
(
needCouponAmount
<=
0
)
{
break
;
break
;
}
}
QJsonObject
coupon
;
int
couponDisAmount
=
c
.
disAmount
()
*
100
;
int
couponDisAmount
=
c
.
disAmount
()
*
100
;
if
(
couponDisAmount
<=
needCouponAmount
)
{
if
(
couponDisAmount
<=
needCouponAmount
)
{
couponDisAmount
=
couponDisAmount
;
couponDisAmount
=
couponDisAmount
;
...
@@ -164,6 +193,7 @@ void TaskPay::packageServerReq()
...
@@ -164,6 +193,7 @@ void TaskPay::packageServerReq()
needCouponAmount
=
0
;
needCouponAmount
=
0
;
}
}
couponAmount
+=
couponDisAmount
;
couponAmount
+=
couponDisAmount
;
#endif
coupon
[
"amount"
]
=
couponDisAmount
;
coupon
[
"amount"
]
=
couponDisAmount
;
coupon
[
"transId"
]
=
getPosJsonValue
(
PosProps
.
TransId
);
coupon
[
"transId"
]
=
getPosJsonValue
(
PosProps
.
TransId
);
...
...
fmvip/task/taskpay.h
View file @
0d349395
...
@@ -26,6 +26,10 @@ private slots:
...
@@ -26,6 +26,10 @@ private slots:
void
onPay
();
void
onPay
();
void
onGetCoupons
(
Session
*
session
);
void
onGetCoupons
(
Session
*
session
);
#ifdef FASTPAY
void
onCouponReq
(
const
QString
&
code
);
#endif // ifdef FASTPAY
private
:
private
:
TaskCouponThread
*
couponThread
;
TaskCouponThread
*
couponThread
;
FMItem
::
Order
*
_order
;
FMItem
::
Order
*
_order
;
...
...
fmvip/windows/couponmodel.cpp
View file @
0d349395
...
@@ -37,11 +37,17 @@ Coupon CouponModel::coupon(const QModelIndex &index)
...
@@ -37,11 +37,17 @@ Coupon CouponModel::coupon(const QModelIndex &index)
return
couponList
.
at
(
index
.
row
());
return
couponList
.
at
(
index
.
row
());
}
}
void
CouponModel
::
push_back
(
Coupon
coupon
)
QModelIndex
CouponModel
::
push_back
(
Coupon
coupon
)
{
{
int
rowNum
=
rowCount
();
int
rowNum
=
rowCount
();
QModelIndex
beginIndex
=
index
(
rowNum
);
QModelIndex
beginIndex
=
index
(
rowNum
);
beginInsertRows
(
beginIndex
,
rowNum
,
rowNum
);
beginInsertRows
(
beginIndex
,
rowNum
,
rowNum
);
couponList
.
append
(
coupon
);
couponList
.
append
(
coupon
);
endInsertRows
();
endInsertRows
();
return
this
->
index
(
rowNum
);
}
bool
CouponModel
::
contains
(
const
Coupon
&
coupon
)
{
return
couponList
.
contains
(
coupon
);
}
}
fmvip/windows/couponmodel.h
View file @
0d349395
...
@@ -16,7 +16,9 @@ public:
...
@@ -16,7 +16,9 @@ public:
QVariant
data
(
const
QModelIndex
&
index
,
int
role
=
Qt
::
DisplayRole
)
const
override
;
QVariant
data
(
const
QModelIndex
&
index
,
int
role
=
Qt
::
DisplayRole
)
const
override
;
Coupon
coupon
(
const
QModelIndex
&
index
);
Coupon
coupon
(
const
QModelIndex
&
index
);
void
push_back
(
Coupon
coupon
);
QModelIndex
push_back
(
Coupon
coupon
);
bool
contains
(
const
Coupon
&
coupon
);
private
:
private
:
QList
<
Coupon
>
couponList
;
QList
<
Coupon
>
couponList
;
...
...
fmvip/windows/fmviporder.cpp
View file @
0d349395
...
@@ -6,6 +6,7 @@
...
@@ -6,6 +6,7 @@
#include "fmnumpad.h"
#include "fmnumpad.h"
#include <QScrollBar>
#include <QScrollBar>
#include <QItemSelectionModel>
#include <QItemSelectionModel>
#include <QLabel>
FMVipOrder
::
FMVipOrder
(
QDialog
*
parent
)
:
FMVipOrder
::
FMVipOrder
(
QDialog
*
parent
)
:
FMVipWnd
(
parent
),
FMVipWnd
(
parent
),
...
@@ -21,6 +22,36 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
...
@@ -21,6 +22,36 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
connect
(
this
,
&
FMVipOrder
::
accepted
,
[
=
](){
connect
(
this
,
&
FMVipOrder
::
accepted
,
[
=
](){
_numpad
->
close
();
_numpad
->
close
();
});
});
/*条件为1时,表示使用快速支付功能,将原界面price窗口中的控件全部关闭,
* 然后添加label和lineEdit控件,用于扫描优惠券*/
#ifdef FASTPAY
ui
->
price_desc_label
->
close
();
ui
->
price_label
->
close
();
ui
->
undis_desc_label
->
close
();
ui
->
undis_label
->
close
();
scanfLabel
=
new
QLabel
(
ui
->
price
);
scanfLabel
->
setText
(
QString
::
fromLocal8Bit
(
"券码扫一扫:"
));
scanfLabel
->
adjustSize
();
scanfLabel
->
move
(
100
,
20
);
scanfLabel
->
show
();
scanfLe
=
new
QLineEdit
(
ui
->
price
);
scanfLe
->
setMinimumSize
(
350
,
30
);
scanfLe
->
move
(
230
,
21
);
scanfLe
->
show
();
ui
->
pay_edit
->
setFocus
();
connect
(
scanfLe
,
SIGNAL
(
returnPressed
()),
this
,
SLOT
(
on_scanfLe_returnPressed
()));
#endif
}
}
FMVipOrder
::~
FMVipOrder
()
FMVipOrder
::~
FMVipOrder
()
...
@@ -28,6 +59,11 @@ FMVipOrder::~FMVipOrder()
...
@@ -28,6 +59,11 @@ FMVipOrder::~FMVipOrder()
del_p
(
orderInfo
);
del_p
(
orderInfo
);
delete
ui
;
delete
ui
;
delete
_numpad
;
delete
_numpad
;
#ifdef FASTPAY
delete
scanfLabel
;
delete
scanfLe
;
#endif
}
}
bool
FMVipOrder
::
initWnd
(
Session
*
session
)
bool
FMVipOrder
::
initWnd
(
Session
*
session
)
...
@@ -145,11 +181,18 @@ void FMVipOrder::initCouponItems()
...
@@ -145,11 +181,18 @@ void FMVipOrder::initCouponItems()
foreach
(
Coupon
coupon
,
orderInfo
->
couponMap
().
values
())
foreach
(
Coupon
coupon
,
orderInfo
->
couponMap
().
values
())
{
{
couponModel
->
push_back
(
coupon
);
if
(
!
couponModel
->
contains
(
coupon
))
{
QModelIndex
inserIndex
=
couponModel
->
push_back
(
coupon
);
qDebug
()
<<
inserIndex
;
#ifdef FASTPAY
selectionModel
->
select
(
inserIndex
,
QItemSelectionModel
::
Select
);
qDebug
()
<<
selectionModel
->
currentIndex
()
<<
selectionModel
->
selectedRows
();
#endif
}
}
}
ui
->
pay_edit
->
setFocus
();
//
ui->pay_edit->setFocus();
ui
->
pay_edit
->
selectAll
();
//
ui->pay_edit->selectAll();
}
}
void
FMVipOrder
::
onSelectionChanged
(
const
QItemSelection
&
selected
,
const
QItemSelection
&
deselected
)
void
FMVipOrder
::
onSelectionChanged
(
const
QItemSelection
&
selected
,
const
QItemSelection
&
deselected
)
...
@@ -191,6 +234,8 @@ void FMVipOrder::on_coupon_next_btn_clicked()
...
@@ -191,6 +234,8 @@ void FMVipOrder::on_coupon_next_btn_clicked()
void
FMVipOrder
::
on_pay_edit_textChanged
(
const
QString
&
text
)
void
FMVipOrder
::
on_pay_edit_textChanged
(
const
QString
&
text
)
{
{
#ifdef FASTPAY
#else
double
num
=
text
.
toDouble
();
double
num
=
text
.
toDouble
();
double
maxPay
=
orderInfo
->
getMaxWillPay
();
double
maxPay
=
orderInfo
->
getMaxWillPay
();
...
@@ -206,6 +251,7 @@ void FMVipOrder::on_pay_edit_textChanged(const QString &text)
...
@@ -206,6 +251,7 @@ void FMVipOrder::on_pay_edit_textChanged(const QString &text)
ui
->
pay_max
->
setText
(
""
);
ui
->
pay_max
->
setText
(
""
);
ui
->
pay_edit
->
setText
(
text
);
ui
->
pay_edit
->
setText
(
text
);
}
}
#endif
}
}
void
FMVipOrder
::
on_score_edit_textChanged
(
const
QString
&
scoreStr
)
void
FMVipOrder
::
on_score_edit_textChanged
(
const
QString
&
scoreStr
)
...
@@ -237,3 +283,12 @@ void FMVipOrder::on_pay_key_clicked()
...
@@ -237,3 +283,12 @@ void FMVipOrder::on_pay_key_clicked()
_numpad
->
exec
();
_numpad
->
exec
();
}
}
}
}
#ifdef FASTPAY
void
FMVipOrder
::
on_scanfLe_returnPressed
()
{
emit
couponReq
(
scanfLe
->
text
());
scanfLe
->
clear
();
}
#endif
fmvip/windows/fmviporder.h
View file @
0d349395
...
@@ -2,6 +2,7 @@
...
@@ -2,6 +2,7 @@
#define FMVIPORDER_H
#define FMVIPORDER_H
#include <QListWidgetItem>
#include <QListWidgetItem>
#include <QModelIndex>
#include <QModelIndex>
#include <QLabel>
#include "fmvipwnd.h"
#include "fmvipwnd.h"
#include "global.h"
#include "global.h"
...
@@ -32,6 +33,10 @@ public:
...
@@ -32,6 +33,10 @@ public:
signals
:
signals
:
void
pay
();
void
pay
();
#ifdef FASTPAY
void
couponReq
(
const
QString
&
code
);
#endif
public
slots
:
public
slots
:
void
on_pay_btn_clicked
();
void
on_pay_btn_clicked
();
...
@@ -49,6 +54,12 @@ private slots:
...
@@ -49,6 +54,12 @@ private slots:
void
on_pay_key_clicked
();
void
on_pay_key_clicked
();
#ifdef FASTPAY
void
on_scanfLe_returnPressed
();
#endif
private
:
private
:
class
OrderInfo
class
OrderInfo
{
{
...
@@ -193,9 +204,18 @@ private:
...
@@ -193,9 +204,18 @@ private:
QItemSelectionModel
*
selectionModel
;
QItemSelectionModel
*
selectionModel
;
CouponModel
*
couponModel
;
CouponModel
*
couponModel
;
QModelIndex
selectedIndex
;
FMNumPad
*
_numpad
;
FMNumPad
*
_numpad
;
QLineEdit
*
le
;
QWidget
*
w
;
#ifdef FASTPAY
QLabel
*
scanfLabel
;
QLineEdit
*
scanfLe
;
QJsonObject
*
_json
;
#endif
};
};
#endif // FMVIPORDER_H
#endif // FMVIPORDER_H
fmvip/windows/forms/fmviporder.ui
View file @
0d349395
...
@@ -7,7 +7,7 @@
...
@@ -7,7 +7,7 @@
<x>
0
</x>
<x>
0
</x>
<y>
0
</y>
<y>
0
</y>
<width>
786
</width>
<width>
786
</width>
<height>
62
4
</height>
<height>
62
6
</height>
</rect>
</rect>
</property>
</property>
<property
name=
"maximumSize"
>
<property
name=
"maximumSize"
>
...
@@ -748,7 +748,7 @@
...
@@ -748,7 +748,7 @@
<item>
<item>
<widget
class=
"QLabel"
name=
"pay_max"
>
<widget
class=
"QLabel"
name=
"pay_max"
>
<property
name=
"text"
>
<property
name=
"text"
>
<string
>
余额最多支付 0.00 元
</string
>
<string
/
>
</property>
</property>
<property
name=
"alignment"
>
<property
name=
"alignment"
>
<set>
Qt::AlignBottom|Qt::AlignHCenter
</set>
<set>
Qt::AlignBottom|Qt::AlignHCenter
</set>
...
@@ -920,6 +920,9 @@ font: 13px "微软雅黑";
...
@@ -920,6 +920,9 @@ font: 13px "微软雅黑";
<property
name=
"cursor"
>
<property
name=
"cursor"
>
<cursorShape>
PointingHandCursor
</cursorShape>
<cursorShape>
PointingHandCursor
</cursorShape>
</property>
</property>
<property
name=
"focusPolicy"
>
<enum>
Qt::NoFocus
</enum>
</property>
<property
name=
"text"
>
<property
name=
"text"
>
<string>
支 付
</string>
<string>
支 付
</string>
</property>
</property>
...
@@ -1073,6 +1076,17 @@ font: 13px "微软雅黑";
...
@@ -1073,6 +1076,17 @@ font: 13px "微软雅黑";
</layout>
</layout>
</widget>
</widget>
<layoutdefault
spacing=
"6"
margin=
"11"
/>
<layoutdefault
spacing=
"6"
margin=
"11"
/>
<tabstops>
<tabstop>
pay_edit
</tabstop>
<tabstop>
pay_btn
</tabstop>
<tabstop>
coupon_page
</tabstop>
<tabstop>
coupon_prev_btn
</tabstop>
<tabstop>
coupon_next_btn
</tabstop>
<tabstop>
close_btn
</tabstop>
<tabstop>
pay_key
</tabstop>
<tabstop>
score_edit
</tabstop>
<tabstop>
score_key
</tabstop>
</tabstops>
<resources/>
<resources/>
<connections/>
<connections/>
</ui>
</ui>
version.h
View file @
0d349395
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
#define VER_MINOR 1
#define VER_MINOR 1
#define VER_REVISION 0
#define VER_REVISION 0
#define VER_BUILD 3
6
#define VER_BUILD 3
7
//! Convert version numbers to string
//! Convert version numbers to string
#define _STR(S) #S
#define _STR(S) #S
...
...
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