Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
FMVip_Today
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
FMVip_Today
Commits
c312f856
Commit
c312f856
authored
Sep 13, 2016
by
NitefllWind
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2016年9月13日修复bug
parent
5b724e4f
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
159 additions
and
245 deletions
+159
-245
FMVip/FMVip.pro
+5
-1
FMVip/fmvipdispatcher.cpp
+2
-1
FMVip/fmvipforward.cpp
+33
-23
FMVip/fmviporder.cpp
+20
-9
FMVip/fmviporder.h
+60
-22
FMVip/fmvipwnd.cpp
+23
-0
FMVip/fmvipwnd.h
+2
-0
FMVip/forms/fmviporder.ui
+4
-188
FMVipDC/FMVipDC.pro
+2
-0
FMVipDC/fmsockserver.cpp
+8
-1
No files found.
FMVip/FMVip.pro
View file @
c312f856
...
...
@@ -6,6 +6,8 @@
QT
+=
core
gui
network
CONFIG
+=
c
++
11
greaterThan
(
QT_MAJOR_VERSION
,
4
)
:
QT
+=
widgets
TARGET
=
FMVip
...
...
@@ -39,7 +41,7 @@ RESOURCES += \
INCLUDEPATH
+=
..
/
FMVipDC
/
LIBS
+=
-
L
..
\
FMVip
\
libs
-
lFMVipDC
LIBS
+=
-
L
..
\
FMVip
Test
-
lFMVipDC
win32
{
RC_FILE
=
res
/
FMVip
.
rc
...
...
@@ -47,3 +49,5 @@ RC_FILE = res/FMVip.rc
SUBDIRS
+=
\
..
/
FMVipDC
/
FMVipDC
.
pro
DESTDIR
+=
..
/
FMVipTest
FMVip/fmvipdispatcher.cpp
View file @
c312f856
...
...
@@ -49,7 +49,7 @@ void FMVipDispatcher::onActiveSysTrayIcon(QSystemTrayIcon::ActivationReason reas
INT
FMVipDispatcher
::
_ParseRequest
(
LPSTR
data
)
{
qDebug
()
<<
__FUNCTION__
;
qDebug
()
<<
__FUNCTION__
<<
"===>"
<<
data
;
QJsonParseError
err
;
QJsonDocument
json
=
QJsonDocument
::
fromJson
(
data
,
&
err
);
if
(
err
.
error
!=
QJsonParseError
::
NoError
)
{
...
...
@@ -151,6 +151,7 @@ void FMVipDispatcher::onFinished()
void
FMVipDispatcher
::
onServerResponsed
(
const
QJsonObject
&
rspObj
)
{
qDebug
()
<<
__FUNCTION__
<<
"===>"
<<
rspObj
;
if
(
_vindow
!=
0
)
{
_vindow
->
deleteLater
();
}
...
...
FMVip/fmvipforward.cpp
View file @
c312f856
...
...
@@ -68,14 +68,13 @@ void FMVipForward::parseRequest(const QJsonObject &jsonObj)
}
}
qDebug
()
<<
fm_jsonObj
;
// 向服务器发送请求
request
(
fm_jsonObj
);
}
void
FMVipForward
::
request
(
const
QJsonObject
&
reqJob
)
{
qDebug
()
<<
__FUNCTION__
;
qDebug
()
<<
__FUNCTION__
<<
"===>"
<<
reqJob
;
// 设置URL
QString
signStr
=
sign
(
reqJob
);
...
...
@@ -105,31 +104,42 @@ void FMVipForward::onServerFinished(QNetworkReply *reply)
QJsonParseError
err
;
QJsonDocument
jdoc
=
QJsonDocument
::
fromJson
(
data
,
&
err
);
qDebug
()
<<
"Server Return JSON ===>"
<<
jdoc
.
object
();
if
(
err
.
error
!=
QJsonParseError
::
NoError
||
!
jdoc
.
isObject
())
{
posObj
[
"statusCode"
]
=
1000
;
posObj
[
"msg"
]
=
"服务器返回数据异常"
;
}
else
{
QJsonObject
serverObj
=
jdoc
.
object
();
posObj
[
"statusCode"
]
=
serverObj
[
"statusCode"
];
posObj
[
"msg"
]
=
serverObj
[
"msg"
];
switch
(
_reqType
)
{
case
FM_VIP_LOGIN
:
logined
(
serverObj
,
posObj
);
break
;
case
FM_VIP_COUPON
:
couponed
(
serverObj
,
posObj
);
break
;
case
FM_VIP_FUND
:
funded
(
serverObj
,
posObj
);
break
;
case
FM_VIP_PAY
:
payed
(
serverObj
,
posObj
);
break
;
case
FM_VIP_FINAL
:
finaled
(
serverObj
,
posObj
);
break
;
default
:
break
;
// 服务器返回错误信息
if
(
serverObj
.
contains
(
"errcode"
)
&&
serverObj
.
contains
(
"errmsg"
))
{
posObj
[
"statusCode"
]
=
serverObj
[
"errcode"
];
posObj
[
"msg"
]
=
serverObj
[
"errmsg"
];
}
// 服务器返回正常信息
else
{
posObj
[
"statusCode"
]
=
serverObj
[
"statusCode"
];
posObj
[
"msg"
]
=
serverObj
[
"msg"
];
switch
(
_reqType
)
{
case
FM_VIP_LOGIN
:
logined
(
serverObj
,
posObj
);
break
;
case
FM_VIP_COUPON
:
couponed
(
serverObj
,
posObj
);
break
;
case
FM_VIP_FUND
:
funded
(
serverObj
,
posObj
);
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)
pay_obj_2
[
"paid_total_amount"
]
=
serverJob
[
"scoreAmount"
];
pay_obj_3
[
"pay_id"
]
=
"77"
;
pay_obj_3
[
"pay_str"
]
=
"优惠支付"
;
pay_obj_3
[
"pai
n
_total_amount"
]
=
0
;
pay_obj_3
[
"pai
d
_total_amount"
]
=
0
;
pay_obj_3
[
"code"
]
=
""
;
pay_ids
.
append
(
pay_obj_1
);
pay_ids
.
append
(
pay_obj_2
);
...
...
FMVip/fmviporder.cpp
View file @
c312f856
...
...
@@ -14,23 +14,27 @@ FMVipOrder::FMVipOrder(QDialog *parent) :
QString
business_date
=
FMVipForward
::
instance
()
->
sessionData
(
"business_date"
);
QString
fm_id
=
FMVipForward
::
instance
()
->
sessionData
(
"fm_open_id"
);
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"
);
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
->
bd_label
->
setText
(
business_date
);
ui
->
id_label
->
setText
(
fm_id
);
ui
->
point_label
->
setText
(
score
);
ui
->
balance_label
->
setText
(
orderInfo
->
a
mountStr
());
ui
->
price_label
->
setText
(
orderInfo
->
n
eedPayStr
());
ui
->
point_label
->
setText
(
score
_str
);
ui
->
balance_label
->
setText
(
orderInfo
->
getA
mountStr
());
ui
->
price_label
->
setText
(
orderInfo
->
getN
eedPayStr
());
ui
->
pay_edit
->
setText
(
orderInfo
->
defaultPay
Str
());
ui
->
pay_edit
->
setText
(
orderInfo
->
getPayAmount
Str
());
}
FMVipOrder
::~
FMVipOrder
()
{
if
(
orderInfo
!=
NULL
){
delete
orderInfo
;
orderInfo
=
NULL
;
}
delete
ui
;
}
...
...
@@ -47,8 +51,8 @@ void FMVipOrder::on_coupon_next_btn_clicked()
void
FMVipOrder
::
on_pay_btn_clicked
()
{
qDebug
()
<<
__FUNCTION__
;
int
codeAmount
=
ui
->
pay_edit
->
text
().
toDouble
()
*
100
;
FMVipForward
::
instance
()
->
addSessionData
(
"codeAmount"
,
QString
::
number
(
codeAmount
)
);
QString
codeAmountStr
=
orderInfo
->
getTotalPayStr
()
;
FMVipForward
::
instance
()
->
addSessionData
(
"codeAmount"
,
codeAmountStr
);
ui
->
pay_btn
->
setEnabled
(
false
);
ui
->
pay_chk
->
setEnabled
(
false
);
...
...
@@ -60,10 +64,17 @@ void FMVipOrder::on_pay_chk_clicked(bool 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
;
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());
}
FMVip/fmviporder.h
View file @
c312f856
...
...
@@ -3,6 +3,9 @@
#include "fmvipwnd.h"
#define MIN(a,b) ((a<b) ? a : b)
#define DOUBLE_STR(num) QString::number(num, 'f', 2)
namespace
Ui
{
class
FMVipOrder
;
}
...
...
@@ -21,6 +24,9 @@ public slots:
void
on_pay_btn_clicked
();
void
on_pay_chk_clicked
(
bool
checked
);
private
slots
:
void
on_pay_edit_textEdited
(
const
QString
&
text
);
private
:
class
OrderInfo
{
...
...
@@ -39,50 +45,82 @@ private:
_amount
=
_amountStr
.
toInt
()
/
100
.
0
;
_score
=
_scoreStr
.
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
();
}
// 如果账户余额充足则默认付全部待付,否则默认付全部余额
double
defaultPay
(
bool
isUseScore
=
false
)
void
setPays
()
{
double
need
=
needPay
();
if
(
isUseScore
)
{
need
-=
_score
;
}
double
pay
;
if
(
amount
()
>
need
)
{
pay
=
need
;
if
(
isUseScore
)
{
// 积分付只有两种情况 1.全部待付 2.全部积分
if
(
_score
>
_needPay
)
{
pay_score
=
_needPay
;
pay_amount
=
0
.
0
;
}
else
{
pay_score
=
_score
;
double
tempAmount
=
MIN
((
_needPay
-
pay_score
),
_amount
);
pay_amount
=
MIN
(
tempAmount
,
editPayAmount
);
}
}
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
:
QString
_amountStr
,
_scoreStr
,
_needPayStr
;
double
_amount
,
_score
,
_needPay
;
// 三种支付方式支付金额
double
pay_amount
,
pay_score
,
pay_discount
;
double
editPayAmount
;
bool
isUseScore
;
};
private
:
...
...
FMVip/fmvipwnd.cpp
View file @
c312f856
...
...
@@ -50,6 +50,29 @@ void FMVipWnd::setIsBusy(const bool 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
//! Gui class member of platform
bool
FMVipWnd
::
nativeEvent
(
const
QByteArray
&
eventType
,
void
*
message
,
long
*
result
)
...
...
FMVip/fmvipwnd.h
View file @
c312f856
...
...
@@ -15,6 +15,8 @@ public:
//! Set current user profile (Json data)
bool
setProfile
(
const
QByteArray
&
);
void
setIsBusy
(
const
bool
isBusy
);
int
exec
();
signals
:
void
doPost
();
public
slots
:
...
...
FMVip/forms/fmviporder.ui
View file @
c312f856
...
...
@@ -73,8 +73,8 @@
*/
#price {
background: rgb(246,246,246);
min-height:
94
px;
max-height:
94
px;
min-height:
260
px;
max-height:
260
px;
border: 1 solid silver;
border-top: 0px solid silver;
}
...
...
@@ -95,59 +95,12 @@
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
"
Microsoft YaHei
"
;
}
#position_label {
font: 400 16px
"
Microsoft YaHei
"
;
min-height: 80px;
}
#coupon_prev_btn, #coupon_next_btn {
font: 400 16px
"
Microsoft YaHei
"
;
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 {
background: rgb(246,246,246);
min-height:
23
0px;
max-height:
23
0px;
min-height:
30
0px;
max-height:
30
0px;
border: 1 solid silver;
border-top: 0 solid silver;
}
...
...
@@ -445,143 +398,6 @@
</widget>
</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"
>
<layout
class=
"QHBoxLayout"
name=
"payLay"
>
<property
name=
"spacing"
>
...
...
FMVipDC/FMVipDC.pro
View file @
c312f856
...
...
@@ -24,3 +24,5 @@ HEADERS += \
INCLUDEPATH
+=
include
LIBS
+=
-
lwinhttp
-
lws2_32
DESTDIR
+=
..
/
FMVipTest
FMVipDC/fmsockserver.cpp
View file @
c312f856
...
...
@@ -95,7 +95,14 @@ BOOL FMSockServer::_Listen()
while
(
TRUE
)
{
sockaddr_in
addr_client
=
{
0
};
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
)
{
DWORD
str_addr_len
=
32
;
TCHAR
str_addr
[
32
]
=
{
0
};
...
...
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