Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
TangKuPos
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
王海
TangKuPos
Commits
a10dd4cc
Commit
a10dd4cc
authored
Dec 25, 2017
by
zhang_z
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优惠券;
支付渠道; BUG修改;
parent
07b4b57f
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
573 additions
and
67 deletions
+573
-67
.idea/dictionaries/Eurus.xml
.idea/dictionaries/Eurus.xml
+2
-0
app/src/main/java/com/xingdata/zzdpos/base/BaseSelectedAdapter.java
...in/java/com/xingdata/zzdpos/base/BaseSelectedAdapter.java
+7
-0
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
+8
-4
app/src/main/java/com/xingdata/zzdpos/model/Ticket.java
app/src/main/java/com/xingdata/zzdpos/model/Ticket.java
+5
-5
app/src/main/java/com/xingdata/zzdpos/ui/payment/view/CalculatorView.java
...a/com/xingdata/zzdpos/ui/payment/view/CalculatorView.java
+2
-5
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettleActivity.java
...in/java/com/xingdata/zzdpos/ui/settle/SettleActivity.java
+2
-6
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettleContract.java
...in/java/com/xingdata/zzdpos/ui/settle/SettleContract.java
+1
-8
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
...n/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
+75
-21
app/src/main/java/com/xingdata/zzdpos/ui/settle/adapter/TicketAdapter.java
.../com/xingdata/zzdpos/ui/settle/adapter/TicketAdapter.java
+33
-0
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
...om/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
+42
-3
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/TicketFragment.java
...om/xingdata/zzdpos/ui/settle/fragment/TicketFragment.java
+95
-1
app/src/main/res/layout/fragment_settle.xml
app/src/main/res/layout/fragment_settle.xml
+29
-14
app/src/main/res/layout/fragment_settle_ticket.xml
app/src/main/res/layout/fragment_settle_ticket.xml
+82
-0
app/src/main/res/layout/item_settle_ticket.xml
app/src/main/res/layout/item_settle_ticket.xml
+186
-0
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+4
-0
No files found.
.idea/dictionaries/Eurus.xml
View file @
a10dd4cc
...
...
@@ -16,6 +16,7 @@
<w>
liubei
</w>
<w>
lvzhi
</w>
<w>
mawu
</w>
<w>
nong
</w>
<w>
patt
</w>
<w>
shixiu
</w>
<w>
sunquan
</w>
...
...
@@ -25,6 +26,7 @@
<w>
yuji
</w>
<w>
zhangfei
</w>
<w>
zhouyu
</w>
<w>
zzdpos
</w>
</words>
</dictionary>
</component>
\ No newline at end of file
app/src/main/java/com/xingdata/zzdpos/base/BaseSelectedAdapter.java
View file @
a10dd4cc
...
...
@@ -49,6 +49,13 @@ public abstract class BaseSelectedAdapter<T, B extends ViewDataBinding> extends
this
.
mOnItemClickListener
=
listener
;
}
public
T
getSelectedItemObject
()
{
if
(
mSelectedPosition
>
0
)
{
return
getData
().
get
(
mSelectedPosition
);
}
else
{
return
null
;
}
}
public
int
getSelectedPosition
()
{
return
mSelectedPosition
;
...
...
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
View file @
a10dd4cc
...
...
@@ -45,7 +45,7 @@ public class Saleorder implements BaseModel, BaseBean, BaseOrderPrint {
if
(
param
.
offFlag
)
{
param
.
offBal
=
vipOffAmt
;
}
param
.
boundFlag
=
this
.
boundNum
>
0
;
param
.
boundFlag
=
isUseBound
;
if
(
param
.
boundFlag
)
{
param
.
boundBal
=
this
.
boundAmt
;
param
.
boundCount
=
this
.
boundNum
;
...
...
@@ -384,10 +384,10 @@ public class Saleorder implements BaseModel, BaseBean, BaseOrderPrint {
//积分
long
poIntegers
=
orderPayAmt
/
10
;
if
(
poIntegers
>
vipBound
)
poIntegers
=
vipBound
;
this
.
boundNum
=
isUseBound
?
poIntegers
:
0
;
this
.
boundAmt
=
isUseBound
?
poIntegers
:
0
;
this
.
boundNum
=
poIntegers
;
this
.
boundAmt
=
poIntegers
;
//积分优惠后金额
this
.
orderPayAmt
-=
this
.
boundAmt
;
this
.
orderPayAmt
-=
isUseBound
?
this
.
boundAmt
:
0
;
//抹零
//抹零后金额
...
...
@@ -1077,6 +1077,10 @@ public class Saleorder implements BaseModel, BaseBean, BaseOrderPrint {
this
.
payType
=
payType
;
}
public
long
getMsDisAmt
()
{
return
msDisAmt
;
}
/**
* 优惠项目实体类
*/
...
...
app/src/main/java/com/xingdata/zzdpos/model/Ticket.java
View file @
a10dd4cc
...
...
@@ -31,8 +31,8 @@ public class Ticket {
@Deprecated
public
Ticket
(
Long
l
)
{
this
.
ticketNo
=
l
;
this
.
ticketValAmt
=
300
0L
;
this
.
truleOrderAmt
=
500
0L
;
this
.
ticketValAmt
=
0L
;
this
.
truleOrderAmt
=
0L
;
this
.
mac
=
"MAC"
;
}
...
...
@@ -54,7 +54,7 @@ public class Ticket {
private
Long
vipId
;
private
Date
ticketExp
;
private
Long
ticketExp
;
private
Long
ticketValAmt
;
...
...
@@ -122,11 +122,11 @@ public class Ticket {
this
.
vipId
=
vipId
;
}
public
Date
getTicketExp
()
{
public
Long
getTicketExp
()
{
return
ticketExp
;
}
public
void
setTicketExp
(
Date
ticketExp
)
{
public
void
setTicketExp
(
Long
ticketExp
)
{
this
.
ticketExp
=
ticketExp
;
}
...
...
app/src/main/java/com/xingdata/zzdpos/ui/payment/view/CalculatorView.java
View file @
a10dd4cc
...
...
@@ -4,7 +4,6 @@ package com.xingdata.zzdpos.ui.payment.view;
import
android.view.View
;
import
android.widget.TextView
;
import
com.blankj.utilcode.util.LogUtils
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.base.BasePresenter
;
...
...
@@ -58,7 +57,6 @@ public class CalculatorView<P extends BasePresenter> extends BaseFragment<P, Vie
settle
();
break
;
default
:
LogUtils
.
e
(
"mExp : "
+
mExp
+
"\nmValue : "
+
mValue
+
"\nmLast"
+
mLast
);
if
(
view
instanceof
TextView
)
{
String
str
=
((
TextView
)
view
).
getText
().
toString
();
...
...
@@ -71,13 +69,12 @@ public class CalculatorView<P extends BasePresenter> extends BaseFragment<P, Vie
if
(
str
.
matches
(
"[0-9]+"
)
&&
mValue
.
split
(
"[.]"
).
length
>
1
&&
mValue
.
split
(
"[.]"
)[
1
].
length
()
==
2
)
return
;
//限制小数点
if
(
(
mExp
.
length
()
==
0
||
mValue
.
contains
(
"."
)
)
&&
str
.
matches
(
"[.]"
))
if
(
mValue
.
contains
(
"."
)
&&
str
.
matches
(
"[.]"
))
return
;
//限制符号
if
(
mLast
.
matches
(
"[+\\-×÷.]"
)
&&
str
.
matches
(
"[+\\-×÷.]"
))
if
(
(
mExp
.
length
()
==
0
||
mLast
.
matches
(
"[+\\-×÷.]"
)
)
&&
str
.
matches
(
"[+\\-×÷.]"
))
return
;
mLast
=
str
;
mExp
+=
str
;
}
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettleActivity.java
View file @
a10dd4cc
...
...
@@ -87,16 +87,12 @@ public class SettleActivity extends BaseActivity<SettlePresenter, ActivitySettle
@Override
public
void
showTicketFragment
()
{
this
.
start
(
mTicketFragment
);
}
@Override
public
void
loadTickets
(
List
<
Ticket
>
tickets
)
{
}
@Override
public
void
loadTicket
(
Ticket
ticket
)
{
mTicketFragment
.
loadTickets
(
tickets
);
}
@Override
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettleContract.java
View file @
a10dd4cc
...
...
@@ -56,13 +56,6 @@ interface SettleContract {
*/
void
loadTickets
(
List
<
Ticket
>
tickets
);
/**
* 加载优惠券信息
*
* @param ticket 优惠券信息
*/
void
loadTicket
(
Ticket
ticket
);
/**
* 加载可用优惠券数量
*
...
...
@@ -164,7 +157,7 @@ interface SettleContract {
/**
* 结算页面 - 查询优惠券
*/
public
abstract
void
searchTicket
(
Long
vipId
);
public
abstract
void
searchTicket
();
/**
* 优惠券页面 - 选择优惠券
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
View file @
a10dd4cc
...
...
@@ -4,6 +4,7 @@ package com.xingdata.zzdpos.ui.settle;
import
com.blankj.utilcode.util.StringUtils
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.api.ApiFactory
;
import
com.xingdata.zzdpos.db.DBFactory
;
import
com.xingdata.zzdpos.model.Ms
;
import
com.xingdata.zzdpos.model.Pay
;
import
com.xingdata.zzdpos.model.Saledetail
;
...
...
@@ -28,6 +29,11 @@ public class SettlePresenter extends SettleContract.Presenter {
*/
private
Vip
mVip
;
/**
* 当前会员的优惠券
*/
private
List
<
Ticket
>
mTickets
;
/**
* 当前的营销活动列表
*/
...
...
@@ -73,7 +79,7 @@ public class SettlePresenter extends SettleContract.Presenter {
private
void
getPaymentIntent
()
{
Long
payAmt
=
getIntent
().
getLongExtra
(
C
.
EXTRA_KEY
.
SETTLE_EXTRA
,
0
);
mSaledetails
.
add
(
0
,
Saledetail
.
create
(
"收款"
,
payAmt
,
mVip
));
mSaleorder
.
setSaledetails
(
mSaledetails
)
.
settle
()
;
mSaleorder
.
setSaledetails
(
mSaledetails
);
}
/**
...
...
@@ -86,13 +92,13 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override
public
void
initSettle
()
{
ApiFactory
.
Pay
.
query
().
subscribe
(
DBFactory
.
Settle
.
queryPays
().
subscribe
(
pays
->
mView
.
loadPays
(
pays
),
throwable
->
{
}
);
mView
.
loadSaleorder
(
mSaleorder
);
mView
.
setSettleFragmentBySettleMode
(
mSettleMode
);
this
.
reprice
();
}
@Override
...
...
@@ -100,6 +106,7 @@ public class SettlePresenter extends SettleContract.Presenter {
mView
.
showVipFragment
();
}
@Override
public
void
searchVip
(
String
keyword
)
{
ApiFactory
.
User
.
queryUserDetailByKeyword
(
keyword
).
subscribe
(
...
...
@@ -114,8 +121,19 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override
public
void
selectVip
(
Vip
vip
)
{
mVip
=
vip
;
mView
.
loadVip
(
mVip
);
// 设置会员
this
.
setVip
(
vip
);
// 计算价格
this
.
reprice
();
// 获取订单
ApiFactory
.
Ticket
.
query
(
mVip
.
getVipId
()).
subscribe
(
tickets
->
{
this
.
mTickets
=
tickets
;
this
.
searchAvlTicket
();
},
throwable
->
{
});
}
@Override
...
...
@@ -124,30 +142,27 @@ public class SettlePresenter extends SettleContract.Presenter {
}
@Override
public
void
searchTicket
(
Long
vipId
)
{
ApiFactory
.
Ticket
.
query
(
vipId
).
subscribe
(
tickets
->
{
mView
.
loadTickets
(
tickets
);
int
avlTicketNum
=
0
;
for
(
int
i
=
0
;
i
<
tickets
.
size
();
i
++)
{
if
(
tickets
.
get
(
i
).
getTruleOrderAmt
()
<=
mSaleorder
.
getOrderPayAmt
())
avlTicketNum
++;
}
mView
.
loadAvlTicketNum
(
avlTicketNum
);
},
throwable
->
{
});
public
void
searchTicket
()
{
List
<
Ticket
>
_tickets
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
mTickets
.
size
();
i
++)
{
if
(
mSaleorder
.
getOrderVipOffAmt
()
-
mSaleorder
.
getMsDisAmt
()
>=
mTickets
.
get
(
i
).
getTruleOrderAmt
())
{
mTickets
.
get
(
i
).
setSelected
(
mSaleorder
.
getTicketId
()
==
mTickets
.
get
(
i
).
getTicketNo
());
_tickets
.
add
(
mTickets
.
get
(
i
));
}
}
mView
.
loadTickets
(
_tickets
);
}
@Override
public
void
selectTicket
(
Ticket
ticket
)
{
mView
.
loadTicket
(
ticket
);
mSaleorder
.
setTicket
(
ticket
);
this
.
reprice
();
}
@Override
public
void
changePointState
(
boolean
isUsePoint
)
{
mSaleorder
.
setBound
(
isUsePoint
,
mVip
.
getBoundCbal
())
.
settle
()
;
mView
.
loadSaleorder
(
mSaleorder
);
mSaleorder
.
setBound
(
isUsePoint
,
mVip
.
getBoundCbal
());
this
.
reprice
(
);
}
@Override
...
...
@@ -245,4 +260,43 @@ public class SettlePresenter extends SettleContract.Presenter {
mView
.
showPayFailFragment
(
throwable
,
mSaleorder
);
}
/**
* 设置会员
*
* @param vip 会员信息
*/
private
void
setVip
(
Vip
vip
)
{
this
.
mVip
=
vip
;
for
(
int
i
=
0
;
i
<
mSaledetails
.
size
();
i
++)
mSaledetails
.
get
(
i
).
setVip
(
mVip
);
if
(
vip
.
getBoundCbal
()
!=
null
)
{
//清空优惠券和积分
mSaleorder
.
setBound
(
false
,
vip
.
getBoundCbal
()).
setTicket
(
Ticket
.
defualt
());
}
//加载会员信息
mView
.
loadVip
(
mVip
);
}
/**
* 查询可用的优惠券数量
*/
private
void
searchAvlTicket
()
{
int
avlTicketNum
=
0
;
for
(
int
i
=
0
;
i
<
mTickets
.
size
();
i
++)
{
if
(
mTickets
.
get
(
i
).
getTruleOrderAmt
()
<=
mSaleorder
.
getOrderPayAmt
())
avlTicketNum
++;
}
mView
.
loadAvlTicketNum
(
avlTicketNum
);
}
/**
* 统计订单信息
*/
private
void
reprice
()
{
mSaleorder
.
settle
();
mView
.
loadSaleorder
(
mSaleorder
);
}
}
app/src/main/java/com/xingdata/zzdpos/ui/settle/adapter/TicketAdapter.java
0 → 100644
View file @
a10dd4cc
package
com
.
xingdata
.
zzdpos
.
ui
.
settle
.
adapter
;
import
com.blankj.utilcode.util.TimeUtils
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseAdapter
;
import
com.xingdata.zzdpos.databinding.ItemSettleTicketBinding
;
import
com.xingdata.zzdpos.model.Ticket
;
import
com.xingdata.zzdpos.util.ConvertUtil
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Locale
;
public
class
TicketAdapter
extends
BaseAdapter
<
Ticket
,
ItemSettleTicketBinding
>
{
public
TicketAdapter
()
{
super
(
R
.
layout
.
item_settle_ticket
,
new
ArrayList
<>());
}
@Override
protected
void
convert
(
ItemSettleTicketBinding
mViewBinding
,
Ticket
item
)
{
mViewBinding
.
tvTicketMoney
.
setText
(
mContext
.
getResources
().
getString
(
R
.
string
.
tv_money
,
ConvertUtil
.
fenToYuanNoPoint
(
item
.
getTicketValAmt
())));
mViewBinding
.
tvTicketMoneys
.
setText
(
mContext
.
getResources
().
getString
(
R
.
string
.
money
,
ConvertUtil
.
fenToYuanNoPoint
(
item
.
getTicketValAmt
())));
mViewBinding
.
tvRule
.
setText
(
mContext
.
getResources
().
getString
(
R
.
string
.
tv_rule
,
ConvertUtil
.
fenToYuanNoPoint
(
item
.
getTruleOrderAmt
())));
mViewBinding
.
tvDate
.
setText
(
mContext
.
getResources
().
getString
(
R
.
string
.
tv_date
,
TimeUtils
.
millis2String
(
item
.
getTicketExp
(),
new
SimpleDateFormat
(
"yyy-mm-dd"
,
Locale
.
getDefault
()))));
mViewBinding
.
ivSelected
.
setImageResource
(
item
.
isSelected
()
?
R
.
mipmap
.
but_elect01
:
R
.
mipmap
.
but_elect02
);
}
}
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
View file @
a10dd4cc
...
...
@@ -3,6 +3,7 @@ package com.xingdata.zzdpos.ui.settle.fragment;
import
android.support.design.widget.BottomSheetBehavior
;
import
android.support.v7.widget.StaggeredGridLayoutManager
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.databinding.FragmentSettleBinding
;
...
...
@@ -14,11 +15,13 @@ import com.xingdata.zzdpos.ui.settle.adapter.PayAdapter;
import
com.xingdata.zzdpos.util.ConvertUtil
;
import
com.xingdata.zzdpos.util.RecyclerViewUtil
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
SettleFragment
extends
BaseFragment
<
SettlePresenter
,
FragmentSettleBinding
>
{
private
PayAdapter
mPayAdapter
;
private
List
<
Pay
>
mPays
;
@Override
public
int
getLayoutId
()
{
...
...
@@ -27,6 +30,7 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
@Override
public
void
initView
()
{
mPays
=
new
ArrayList
<>();
mViewBinding
.
setDefualtVip
(
true
);
// pay adapter
...
...
@@ -50,6 +54,14 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mPresenter
.
initSettle
();
}
@Override
public
boolean
onBackPressedSupport
()
{
if
(
BottomSheetBehavior
.
from
(
mViewBinding
.
llSheet
).
getState
()
==
BottomSheetBehavior
.
STATE_EXPANDED
)
{
BottomSheetBehavior
.
from
(
mViewBinding
.
llSheet
).
setState
(
BottomSheetBehavior
.
STATE_COLLAPSED
);
return
true
;
}
return
super
.
onBackPressedSupport
();
}
/**
* 设置界面
...
...
@@ -65,9 +77,24 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
* @param vip 会员信息
*/
public
void
loadVip
(
Vip
vip
)
{
if
(
vip
.
isDefaultVip
())
{
for
(
int
i
=
0
;
i
<
mPayAdapter
.
getData
().
size
();
i
++)
{
if
(
mPayAdapter
.
getData
().
get
(
i
).
isNeedVip
())
mPayAdapter
.
remove
(
i
);
}
}
else
{
for
(
int
i
=
0
;
i
<
mPays
.
size
();
i
++)
{
if
(
mPays
.
get
(
i
).
isNeedVip
()
&&
(
mPays
.
get
(
i
).
getPayType
()
!=
C
.
PAY_CHANNEL
.
CARD
||
vip
.
getAcctCbal
()
>
mViewBinding
.
getOrderPayAmt
()))
{
mPayAdapter
.
addData
(
mPays
.
get
(
i
));
}
}
}
mViewBinding
.
setDefualtVip
(
vip
.
isDefaultVip
());
mViewBinding
.
setName
(
vip
.
getVipName
());
mViewBinding
.
setPhone
(
ConvertUtil
.
longToString
(
vip
.
getVipMobile
()));
mViewBinding
.
setBalance
(
vip
.
getAcctCbal
());
mViewBinding
.
cbPoint
.
setChecked
(
false
);
if
(
vip
.
getVipDefDiscount
()
<
100
&&
vip
.
getVipDefDiscount
()
>
0
)
{
mViewBinding
.
setDisRate
(
String
.
valueOf
((
double
)
vip
.
getVipDefDiscount
()
/
10
));
}
...
...
@@ -94,21 +121,33 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding
.
setAvlTicketNum
(
avlNum
);
}
/**
* 加载订单信息
*
* @param saleorder 订单信息
*/
public
void
loadSaleorder
(
Saleorder
saleorder
)
{
mViewBinding
.
tvPayAmt
.
setText
(
ConvertUtil
.
fenToYuan
(
saleorder
.
getOrderPayAmt
()));
mViewBinding
.
tvAuthAmt
.
setText
(
ConvertUtil
.
fenToYuan
(
saleorder
.
getOrderAuthAmt
()));
mViewBinding
.
setOrderAuthAmt
(
saleorder
.
getOrderAuthAmt
());
mViewBinding
.
setOrderPayAmt
(
saleorder
.
getOrderPayAmt
());
mViewBinding
.
setTicketAmt
(
saleorder
.
getTicketAmt
());
mViewBinding
.
setAvlPoints
(
saleorder
.
getBoundNum
());
mViewBinding
.
setPointDisAmt
(
ConvertUtil
.
fenToYuan
(
saleorder
.
getBoundAmt
()));
}
/**
* 加载支付方式
*/
public
void
loadPays
(
List
<
Pay
>
pays
)
{
mPayAdapter
.
setNewData
(
pays
);
mPays
.
addAll
(
pays
);
List
<
Pay
>
_pays
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
pays
.
size
();
i
++)
{
pays
.
get
(
i
).
init
();
if
(!
pays
.
get
(
i
).
isNeedVip
())
_pays
.
add
(
pays
.
get
(
i
));
}
mPayAdapter
.
setNewData
(
_pays
);
}
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/TicketFragment.java
View file @
a10dd4cc
package
com
.
xingdata
.
zzdpos
.
ui
.
settle
.
fragment
;
public
class
TicketFragment
{
import
android.annotation.SuppressLint
;
import
android.support.v7.widget.LinearLayoutManager
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.databinding.FragmentSettleTicketBinding
;
import
com.xingdata.zzdpos.model.Ticket
;
import
com.xingdata.zzdpos.ui.settle.SettlePresenter
;
import
com.xingdata.zzdpos.ui.settle.adapter.TicketAdapter
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
TicketFragment
extends
BaseFragment
<
SettlePresenter
,
FragmentSettleTicketBinding
>
{
private
Ticket
mTicket
;
private
List
<
Ticket
>
mTicketList
;
private
TicketAdapter
mTicketAdapter
;
private
int
mPosition
=
-
1
;
@Override
public
int
getLayoutId
()
{
return
R
.
layout
.
fragment_settle_ticket
;
}
@Override
public
void
initView
()
{
mTicketList
=
new
ArrayList
<>();
mTicket
=
Ticket
.
defualt
();
mTicketAdapter
=
new
TicketAdapter
();
mViewBinding
.
rlTicket
.
setAdapter
(
mTicketAdapter
);
mViewBinding
.
rlTicket
.
setLayoutManager
(
new
LinearLayoutManager
(
mContext
));
mTicketAdapter
.
setOnItemClickListener
((
adapter
,
view
,
position
)
->
changeSelectedTicket
(
position
));
mViewBinding
.
tvConfirm
.
setOnClickListener
(
view
->
{
mPresenter
.
selectTicket
(
mTicket
);
this
.
pop
();
});
mPresenter
.
searchTicket
();
}
/**
* 加载优惠券信息
*
* @param tickets 优惠券列表
*/
public
void
loadTickets
(
List
<
Ticket
>
tickets
)
{
for
(
int
i
=
0
;
i
<
tickets
.
size
();
i
++)
{
if
(
tickets
.
get
(
i
).
isSelected
())
{
mTicket
=
tickets
.
get
(
i
);
mViewBinding
.
setSelectedNum
(
1
);
mPosition
=
i
;
break
;
}
}
mTicketAdapter
.
setNewData
(
tickets
);
}
/**
* 切换选中的优惠券
*
* @param position 被选中优惠券的position
*/
@SuppressLint
(
"SetTextI18n"
)
private
void
changeSelectedTicket
(
int
position
)
{
if
(
mPosition
!=
-
1
)
{
//取消选择
if
(
mPosition
==
position
&&
mTicketAdapter
.
getData
().
get
(
mPosition
).
isSelected
())
{
mTicketAdapter
.
getData
().
get
(
mPosition
).
setSelected
(
false
);
mTicketAdapter
.
notifyDataSetChanged
();
mTicket
=
Ticket
.
defualt
();
mViewBinding
.
setSelectedNum
(
0
);
return
;
}
if
(
mTicketAdapter
.
getData
().
size
()
>
mPosition
)
{
mTicketAdapter
.
getData
().
get
(
mPosition
).
setSelected
(
false
);
}
else
{
for
(
int
i
=
0
;
i
<
mTicketList
.
size
();
i
++)
{
mTicketList
.
get
(
i
).
setSelected
(
false
);
}
}
}
mPosition
=
position
;
mTicketAdapter
.
getData
().
get
(
position
).
setSelected
(
true
);
mTicket
=
mTicketAdapter
.
getData
().
get
(
position
);
mViewBinding
.
setSelectedNum
(
1
);
mTicketAdapter
.
notifyDataSetChanged
();
}
}
app/src/main/res/layout/fragment_settle.xml
View file @
a10dd4cc
...
...
@@ -7,6 +7,16 @@
<import
type=
"android.view.View"
/>
<import
type=
"com.xingdata.zzdpos.util.ConvertUtil"
/>
<variable
name=
"orderAuthAmt"
type=
"long"
/>
<variable
name=
"orderPayAmt"
type=
"long"
/>
<variable
name=
"defualtVip"
type=
"boolean"
/>
...
...
@@ -28,17 +38,20 @@
type=
"int"
/>
<variable
name=
"
usePoin
t"
type=
"
boolean
"
/>
name=
"
ticketAm
t"
type=
"
long
"
/>
<variable
name=
"
pointVip
"
type=
"
int
"
/>
name=
"
avlPoints
"
type=
"
long
"
/>
<variable
name=
"pointAmt"
name=
"point
Dis
Amt"
type=
"String"
/>
<variable
name=
"balance"
type=
"long"
/>
</data>
...
...
@@ -89,7 +102,7 @@
android:id=
"@+id/iv_level"
android:layout_width=
"@dimen/settle_vip_level"
android:layout_height=
"@dimen/settle_vip_level"
android:visibility=
"@{defualtVip?View.
GON
E:View.VISIBLE}"
android:visibility=
"@{defualtVip?View.
INVISIBL
E:View.VISIBLE}"
app:layout_constraintBottom_toBottomOf=
"@id/iv_head"
app:layout_constraintRight_toRightOf=
"@id/iv_head"
app:roundAsCircle=
"true"
/>
...
...
@@ -99,7 +112,7 @@
android:layout_height=
"wrap_content"
android:layout_marginStart=
"@dimen/all_margin"
android:orientation=
"vertical"
android:visibility=
"@{defualtVip?View.
GON
E:View.VISIBLE}"
android:visibility=
"@{defualtVip?View.
INVISIBL
E:View.VISIBLE}"
app:layout_constraintBottom_toTopOf=
"parent"
app:layout_constraintLeft_toRightOf=
"@id/iv_head"
app:layout_constraintTop_toBottomOf=
"parent"
>
...
...
@@ -126,7 +139,7 @@
android:text=
"@string/settle_select_vip"
android:textColor=
"@color/black_zhangfei"
android:textSize=
"@dimen/all_text_size"
android:visibility=
"@{defualtVip?View.VISIBLE:View.
GON
E}"
android:visibility=
"@{defualtVip?View.VISIBLE:View.
INVISIBL
E}"
app:layout_constraintBottom_toTopOf=
"parent"
app:layout_constraintLeft_toRightOf=
"@id/iv_head"
app:layout_constraintTop_toBottomOf=
"parent"
/>
...
...
@@ -138,7 +151,7 @@
android:text=
"@{@string/settle_vip_dis_rate_hint + disRate + @string/settle_vip_dis_rate}"
android:textColor=
"@color/black_zhangfei"
android:textSize=
"@dimen/all_caption_size"
android:visibility=
"@{defualtVip?View.
GON
E:View.VISIBLE}"
android:visibility=
"@{defualtVip?View.
INVISIBL
E:View.VISIBLE}"
app:layout_constraintBottom_toTopOf=
"parent"
app:layout_constraintRight_toLeftOf=
"@id/iv_arrow"
app:layout_constraintTop_toBottomOf=
"parent"
/>
...
...
@@ -195,11 +208,11 @@
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:id=
"@+id/tv_auth_amt"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"end"
android:text=
"@{ConvertUtil.fenToYuan(orderAuthAmt,true)}"
android:textColor=
"@color/red_guanyu"
android:textSize=
"@dimen/all_sub_title_size"
android:textStyle=
"bold"
/>
...
...
@@ -216,6 +229,7 @@
android:id=
"@+id/ll_ticket"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/title_height"
android:clickable=
"@{avlTicketNum>0}"
android:foreground=
"?android:attr/selectableItemBackground"
android:gravity=
"center"
android:paddingEnd=
"@dimen/all_margin"
...
...
@@ -240,7 +254,7 @@
android:paddingEnd=
"@dimen/all_padding"
android:paddingStart=
"@dimen/all_padding"
android:paddingTop=
"@dimen/all_shape_radius"
android:text=
"@{avlTicketNum + @string/settle_ticket_text}"
android:text=
"@{
ticketAmt>0 ?ConvertUtil.fenToYuanNoPoint(ticketAmt)+@string/settle_ticket_info :
avlTicketNum + @string/settle_ticket_text}"
android:textColor=
"@color/white"
android:textSize=
"@dimen/all_caption_size"
/>
...
...
@@ -263,6 +277,7 @@
android:id=
"@+id/ll_point"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/title_height"
android:clickable=
"@{!defualtVip}"
android:foreground=
"?android:attr/selectableItemBackground"
android:gravity=
"center"
android:paddingEnd=
"@dimen/all_margin"
...
...
@@ -281,7 +296,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"@dimen/all_spacing"
android:text=
"@{@string/settle_point_vip_text +
pointVip + @string/settle_point_amt_text + point
Amt}"
android:text=
"@{@string/settle_point_vip_text +
avlPoints + @string/settle_point_amt_text + pointDis
Amt}"
android:textColor=
"@color/black_likui"
/>
<CheckBox
...
...
@@ -315,11 +330,11 @@
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:id=
"@+id/tv_balance"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:gravity=
"end"
android:text=
"@{ConvertUtil.fenToYuan(balance,true)}"
android:textColor=
"@color/black_baozheng"
android:textSize=
"@dimen/all_sub_title_size"
android:textStyle=
"bold"
/>
...
...
@@ -375,10 +390,10 @@
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:id=
"@+id/tv_pay_amt"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
android:text=
"@{ConvertUtil.fenToYuan(orderPayAmt)}"
android:textColor=
"@color/red_guanyu"
android:textSize=
"@dimen/all_sub_title_size"
android:textStyle=
"bold"
/>
...
...
app/src/main/res/layout/fragment_settle_ticket.xml
0 → 100644
View file @
a10dd4cc
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
>
<data>
<variable
name=
"selectedNum"
type=
"int"
/>
</data>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/gray_zhouyu"
android:orientation=
"vertical"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rl_ticket"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
/>
<View
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/all_line_width"
android:background=
"@color/gray_huanggai"
/>
<LinearLayout
android:layout_width=
"match_parent"
android:layout_height=
"?attr/actionBarSize"
android:background=
"@color/white_caocao"
android:gravity=
"center_vertical"
android:paddingEnd=
"@dimen/all_margin"
android:paddingStart=
"@dimen/all_margin"
>
<LinearLayout
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/settle_ticket_selected"
android:textColor=
"@color/black_baozheng"
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"@dimen/all_spacing"
android:layout_marginStart=
"@dimen/all_spacing"
android:text=
'@{selectedNum+""}'
android:textColor=
"@color/red_guanyu"
android:textSize=
"@dimen/all_sub_title_size"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/settle_ticket_unit"
android:textColor=
"@color/black_baozheng"
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
<TextView
android:id=
"@+id/tv_confirm"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@drawable/shape_red_round_rectangle_more_round"
android:foreground=
"?android:attr/selectableItemBackgroundBorderless"
android:paddingBottom=
"@dimen/all_spacing"
android:paddingEnd=
"@dimen/all_margin_big"
android:paddingStart=
"@dimen/all_margin_big"
android:paddingTop=
"@dimen/all_spacing"
android:text=
"@string/all_confirm"
android:textColor=
"@color/white_caocao"
/>
</LinearLayout>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/item_settle_ticket.xml
0 → 100644
View file @
a10dd4cc
<?xml version="1.0" encoding="utf-8"?>
<layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
xmlns:tools=
"http://schemas.android.com/tools"
>
<data>
<variable
name=
"ticket"
type=
"com.xingdata.zzdpos.model.Ticket"
/>
</data>
<android.support.constraint.ConstraintLayout
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginEnd=
"@dimen/all_margin"
android:layout_marginStart=
"@dimen/all_margin"
android:foreground=
"?android:attr/selectableItemBackground"
>
<LinearLayout
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/all_margin"
android:baselineAligned=
"false"
android:orientation=
"horizontal"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
>
<android.support.constraint.ConstraintLayout
android:id=
"@+id/cl_item"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"2.3"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:background=
"@mipmap/return_ticket_one"
android:contentDescription=
"@null"
/>
<LinearLayout
android:id=
"@+id/ll_top"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:gravity=
"center"
android:orientation=
"horizontal"
android:padding=
"@dimen/all_padding"
app:layout_constraintBottom_toTopOf=
"@id/ll_bottom"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
app:layout_constraintVertical_weight=
"4"
>
<ImageView
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_gravity=
"end"
android:layout_weight=
"1.8"
android:contentDescription=
"@null"
android:src=
"@mipmap/bg_return_ticker_logo"
/>
<TextView
android:id=
"@+id/tv_ticket_money"
android:layout_width=
"0dp"
android:layout_height=
"match_parent"
android:layout_weight=
"5"
android:gravity=
"center"
android:text=
"@string/tv_money"
android:textColor=
"@color/white"
android:textSize=
"@dimen/text_secondary_title"
android:textStyle=
"bold"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_bottom"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:orientation=
"vertical"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@id/ll_top"
app:layout_constraintVertical_weight=
"2"
>
<TextView
android:id=
"@+id/tv_date"
android:layout_width=
"match_parent"
android:layout_height=
"0dp"
android:layout_weight=
"1"
android:gravity=
"center_vertical"
android:paddingEnd=
"@dimen/all_margin"
android:paddingStart=
"@dimen/all_margin"
android:text=
"@string/tv_date"
android:textColor=
"@color/white"
android:textSize=
"@dimen/et_textsize"
/>
</LinearLayout>
</android.support.constraint.ConstraintLayout>
<android.support.constraint.ConstraintLayout
android:id=
"@+id/cl_send"
android:layout_width=
"0dp"
android:layout_height=
"wrap_content"
android:layout_weight=
"1"
>
<ImageView
android:layout_width=
"wrap_content"
android:layout_height=
"match_parent"
android:background=
"@mipmap/return_ticket_two"
android:contentDescription=
"@null"
/>
<TextView
android:id=
"@+id/tv_ticket_moneys"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:gravity=
"center"
android:text=
"@string/money"
android:textColor=
"@color/white"
android:textSize=
"@dimen/text_primary_title_smile"
android:textStyle=
"bold"
app:layout_constraintBottom_toTopOf=
"@+id/vw_line"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<View
android:id=
"@+id/vw_line"
android:layout_width=
"0dp"
android:layout_height=
"@dimen/all_line_width"
android:layout_marginLeft=
"@dimen/all_padding"
android:layout_marginRight=
"@dimen/all_padding"
android:background=
"@color/gray1"
app:layout_constraintBottom_toTopOf=
"@id/tv_rule"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_ticket_moneys"
/>
<TextView
android:id=
"@+id/tv_rule"
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:gravity=
"center"
android:text=
"@string/tv_rule"
android:textColor=
"@color/white"
android:textSize=
"@dimen/et_textsize"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/vw_line"
/>
</android.support.constraint.ConstraintLayout>
</LinearLayout>
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width=
"0dp"
android:layout_height=
"0dp"
android:layout_gravity=
"center"
app:backgroundImage=
"@color/gray_zhouyu"
app:layout_constraintBottom_toBottomOf=
"@id/iv_selected"
app:layout_constraintLeft_toLeftOf=
"@id/iv_selected"
app:layout_constraintRight_toRightOf=
"@id/iv_selected"
app:layout_constraintTop_toTopOf=
"@id/iv_selected"
app:roundAsCircle=
"true"
/>
<ImageView
android:id=
"@+id/iv_selected"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:layout_marginEnd=
"@dimen/all_margin_big"
android:layout_marginTop=
"@dimen/all_spacing"
android:contentDescription=
"@null"
android:padding=
"@dimen/view_line_L1"
android:src=
"@mipmap/but_elect01"
app:layout_constraintRight_toRightOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
</android.support.constraint.ConstraintLayout>
</layout>
\ No newline at end of file
app/src/main/res/values/strings.xml
View file @
a10dd4cc
...
...
@@ -527,6 +527,10 @@
<string
name=
"settle_vip_search_empty"
>
请输入会员手机号进行搜索~
</string>
<string
name=
"settle_vip_none"
>
不需要会员
</string>
<!--支付里的优惠券-->
<string
name=
"settle_ticket_selected"
>
已选
</string>
<string
name=
"settle_ticket_unit"
>
张
</string>
<string
name=
"settle_ticket_info"
>
元优惠券
</string>
<!--帮助POS-->
<string
name=
"help_hint"
>
帮助
</string>
...
...
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