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
e5ab6579
Commit
e5ab6579
authored
Dec 28, 2017
by
zhang_z
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
营销相关代码;
parent
d256b905
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
413 additions
and
69 deletions
+413
-69
app/src/main/java/com/xingdata/zzdpos/db/DBFactory.java
app/src/main/java/com/xingdata/zzdpos/db/DBFactory.java
+41
-3
app/src/main/java/com/xingdata/zzdpos/model/Ms.java
app/src/main/java/com/xingdata/zzdpos/model/Ms.java
+10
-0
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
+0
-2
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
...n/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
+54
-9
app/src/main/java/com/xingdata/zzdpos/ui/settle/adapter/DisAdapter.java
...ava/com/xingdata/zzdpos/ui/settle/adapter/DisAdapter.java
+15
-1
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
...om/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
+6
-3
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreActivity.java
...main/java/com/xingdata/zzdpos/ui/store/StoreActivity.java
+20
-2
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
...main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
+23
-1
app/src/main/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
...ain/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
+63
-4
app/src/main/java/com/xingdata/zzdpos/ui/store/dialog/MsDialog.java
...in/java/com/xingdata/zzdpos/ui/store/dialog/MsDialog.java
+6
-5
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
...com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
+85
-0
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
.../com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
+6
-7
app/src/main/res/drawable/shape_blue_oval.xml
app/src/main/res/drawable/shape_blue_oval.xml
+7
-0
app/src/main/res/drawable/shape_green_oval.xml
app/src/main/res/drawable/shape_green_oval.xml
+7
-0
app/src/main/res/drawable/shape_orange_oval.xml
app/src/main/res/drawable/shape_orange_oval.xml
+7
-0
app/src/main/res/drawable/shape_red_oval.xml
app/src/main/res/drawable/shape_red_oval.xml
+7
-0
app/src/main/res/layout/activity_payment.xml
app/src/main/res/layout/activity_payment.xml
+2
-2
app/src/main/res/layout/activity_settle.xml
app/src/main/res/layout/activity_settle.xml
+2
-2
app/src/main/res/layout/activity_store.xml
app/src/main/res/layout/activity_store.xml
+3
-1
app/src/main/res/layout/dialog_store_cart.xml
app/src/main/res/layout/dialog_store_cart.xml
+35
-0
app/src/main/res/layout/fragment_settle.xml
app/src/main/res/layout/fragment_settle.xml
+7
-5
app/src/main/res/layout/fragment_store_search.xml
app/src/main/res/layout/fragment_store_search.xml
+1
-4
app/src/main/res/layout/item_settle_dis.xml
app/src/main/res/layout/item_settle_dis.xml
+1
-18
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+5
-0
No files found.
app/src/main/java/com/xingdata/zzdpos/db/DBFactory.java
View file @
e5ab6579
...
...
@@ -2,6 +2,7 @@ package com.xingdata.zzdpos.db;
import
com.blankj.utilcode.util.StringUtils
;
import
com.blankj.utilcode.util.TimeUtils
;
import
com.xingdata.zzdpos.App
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.base.BaseModel
;
...
...
@@ -15,8 +16,10 @@ import com.xingdata.zzdpos.ui.settle.SettlePresenter;
import
com.xingdata.zzdpos.ui.store.StorePresenter
;
import
com.xingdata.zzdpos.util.StringUtil
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Locale
;
import
io.reactivex.Observable
;
import
io.realm.Realm
;
...
...
@@ -108,21 +111,44 @@ public class DBFactory {
}
/**
* 查询商品名称
*
* @param skuId 商品Id
* @return 商品名称
*/
public
static
String
querySpuNameBySkuId
(
Long
skuId
)
{
List
<
Sssku
>
ssskus
=
getList
(
DB
.
getInstance
().
get
(
StorePresenter
.
class
).
where
(
Sssku
.
class
).
equalTo
(
"skuId"
,
skuId
).
findAll
());
if
(
ssskus
.
size
()
>
0
)
return
ssskus
.
get
(
0
).
getSpuName
();
else
return
null
;
}
/**
* 查询营销活动
*
* @return 营销活动
*/
public
static
Observable
<
List
<
Ms
>>
queryMss
()
{
RealmQuery
<
Ms
>
query
=
DB
.
getInstance
().
get
(
Main
Presenter
.
class
).
where
(
Ms
.
class
);
RealmQuery
<
Ms
>
query
=
DB
.
getInstance
().
get
(
Store
Presenter
.
class
).
where
(
Ms
.
class
);
query
.
equalTo
(
"msStatus"
,
0
);
query
.
notEqualTo
(
"msTools"
,
C
.
MS_TYPE
.
GIFT
);
Long
dateNow
=
Long
.
valueOf
(
TimeUtils
.
getNowString
(
new
SimpleDateFormat
(
"yyyyMMdd"
,
Locale
.
getDefault
())));
query
.
beginGroup
().
lessThanOrEqualTo
(
"msDateBegin"
,
dateNow
).
greaterThanOrEqualTo
(
"msDateEnd"
,
dateNow
).
endGroup
();
String
weekNow
=
String
.
valueOf
(
TimeUtils
.
getWeekIndex
(
TimeUtils
.
getNowDate
()));
query
.
contains
(
"msWeekPlan"
,
weekNow
);
Long
timeNow
=
Long
.
valueOf
(
TimeUtils
.
getNowString
(
new
SimpleDateFormat
(
"HHmmss"
,
Locale
.
getDefault
())));
query
.
beginGroup
().
lessThanOrEqualTo
(
"msTimeBegin"
,
timeNow
).
greaterThanOrEqualTo
(
"msTimeEnd"
,
timeNow
).
endGroup
();
query
.
equalTo
(
"msCoustomTag"
,
0
);
return
Observable
.
just
(
query
.
findAllSorted
(
"msTouchTag2"
,
Sort
.
DESCENDING
))
.
flatMap
(
ms
->
Observable
.
just
(
getList
(
ms
)));
}
}
public
static
class
Settle
{
...
...
@@ -148,6 +174,18 @@ public class DBFactory {
RealmQuery
<
Ms
>
query
=
DB
.
getInstance
().
get
(
SettlePresenter
.
class
).
where
(
Ms
.
class
);
query
.
equalTo
(
"msStatus"
,
0
);
query
.
notEqualTo
(
"msTools"
,
C
.
MS_TYPE
.
GIFT
);
Long
dateNow
=
Long
.
valueOf
(
TimeUtils
.
getNowString
(
new
SimpleDateFormat
(
"yyyyMMdd"
,
Locale
.
getDefault
())));
query
.
beginGroup
().
lessThanOrEqualTo
(
"msDateBegin"
,
dateNow
).
greaterThanOrEqualTo
(
"msDateEnd"
,
dateNow
).
endGroup
();
String
weekNow
=
String
.
valueOf
(
TimeUtils
.
getWeekIndex
(
TimeUtils
.
getNowDate
()));
query
.
contains
(
"msWeekPlan"
,
weekNow
);
Long
timeNow
=
Long
.
valueOf
(
TimeUtils
.
getNowString
(
new
SimpleDateFormat
(
"HHmmss"
,
Locale
.
getDefault
())));
query
.
beginGroup
().
lessThanOrEqualTo
(
"msTimeBegin"
,
timeNow
).
greaterThanOrEqualTo
(
"msTimeEnd"
,
timeNow
).
endGroup
();
return
Observable
.
just
(
query
.
findAllSorted
(
"msTouchTag2"
,
Sort
.
DESCENDING
))
.
flatMap
(
ms
->
Observable
.
just
(
getList
(
ms
)));
}
...
...
app/src/main/java/com/xingdata/zzdpos/model/Ms.java
View file @
e5ab6579
...
...
@@ -289,6 +289,8 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
private
Long
skuPrice1
;
private
String
cateName
;
public
Long
getId
()
{
return
id
;
}
...
...
@@ -724,6 +726,14 @@ public class Ms extends RealmObject implements BaseModel, BaseBean {
this
.
skuPrice1
=
skuPrice1
;
}
public
String
getCateName
()
{
return
cateName
;
}
public
void
setCateName
(
String
cateName
)
{
this
.
cateName
=
cateName
;
}
public
List
<
Saledetail
>
getSaledetailList
()
{
return
saledetailList
;
}
...
...
app/src/main/java/com/xingdata/zzdpos/model/Saleorder.java
View file @
e5ab6579
...
...
@@ -1096,8 +1096,6 @@ public class Saleorder extends SectionEntity<MediaStore.Video> implements BaseMo
Dis
moneyOff
=
new
Dis
(
C
.
DIS_TYPE
.
MONEY_OFF
);
Dis
promotion
=
new
Dis
(
C
.
DIS_TYPE
.
PROMOTION
);
if
(
this
.
vipOffAmt
>
0
)
dis
.
setDisAmt
(
dis
.
getDisAmt
()
+
this
.
vipOffAmt
);
for
(
Map
.
Entry
<
Long
,
Ms
>
entry
:
msMap
.
entrySet
())
{
if
(
entry
.
getValue
().
getDisAmt
()
>
0
)
{
switch
(
entry
.
getValue
().
getMsTools
())
{
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/SettlePresenter.java
View file @
e5ab6579
...
...
@@ -6,7 +6,6 @@ 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
;
import
com.xingdata.zzdpos.model.Saleorder
;
import
com.xingdata.zzdpos.model.Ticket
;
...
...
@@ -38,11 +37,7 @@ public class SettlePresenter extends SettleContract.Presenter {
* 当前的营销活动列表
*/
private
List
<
Ms
>
mMss
;
/**
* 当前设备的支付渠道信息
*/
private
List
<
Pay
>
mPays
;
private
Ms
.
OnApplyListener
mOnApplyListener
;
/**
* 当前购物车的商品明细
...
...
@@ -71,6 +66,24 @@ public class SettlePresenter extends SettleContract.Presenter {
this
.
getStoreIntent
();
break
;
}
mOnApplyListener
=
new
Ms
.
OnApplyListener
()
{
@Override
public
void
setDis
(
Ms
ms
)
{
mSaleorder
.
addMsDis
(
ms
);
}
@Override
public
void
addGift
(
Long
msId
,
Long
skuId
,
long
addAmt
)
{
//这一版不做处理
}
@Override
public
void
removeGift
(
Long
msId
)
{
//这一版不作处理
}
};
}
/**
...
...
@@ -79,7 +92,6 @@ 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
);
}
/**
...
...
@@ -87,7 +99,6 @@ public class SettlePresenter extends SettleContract.Presenter {
*/
private
void
getStoreIntent
()
{
mSaledetails
.
addAll
((
ArrayList
)
getIntent
().
getSerializableExtra
(
C
.
EXTRA_KEY
.
SETTLE_EXTRA
));
mSaleorder
.
setSaledetails
(
mSaledetails
);
}
...
...
@@ -105,8 +116,19 @@ public class SettlePresenter extends SettleContract.Presenter {
@Override
public
void
initStoreInfo
()
{
mView
.
loadSaledetails
(
mSaledetails
);
//设置订单详情
mSaleorder
.
setSaledetails
(
mSaledetails
);
reprice
();
DBFactory
.
Settle
.
queryMss
().
subscribe
(
ms
->
{
mMss
=
ms
;
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
setOnApplyListener
(
mOnApplyListener
);
}
//处理营销活动
this
.
processMs
();
//计算价格
this
.
reprice
();
});
}
@Override
...
...
@@ -133,6 +155,8 @@ public class SettlePresenter extends SettleContract.Presenter {
this
.
setVip
(
vip
);
// 重新设置购物车
mSaleorder
.
setSaledetails
(
mSaledetails
);
//处理营销活动
this
.
processMs
();
// 加载购物车
mView
.
loadSaledetails
(
mSaledetails
);
// 计算价格
...
...
@@ -302,6 +326,27 @@ public class SettlePresenter extends SettleContract.Presenter {
mView
.
loadAvlTicketNum
(
avlTicketNum
);
}
/**
* 处理营销活动
*/
private
void
processMs
()
{
//重置商品
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
setSaledetailList
(
new
ArrayList
<>());
}
//添加商品
for
(
int
i
=
0
;
i
<
mSaledetails
.
size
();
i
++)
{
for
(
int
j
=
0
;
j
<
mMss
.
size
();
j
++)
{
if
(!
mMss
.
get
(
j
).
isAvailable
(
mVip
))
continue
;
if
(
mMss
.
get
(
j
).
addSaledetail
(
mSaledetails
.
get
(
i
)))
break
;
}
}
//判断
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
execute
();
}
}
/**
* 统计订单信息
...
...
app/src/main/java/com/xingdata/zzdpos/ui/settle/adapter/DisAdapter.java
View file @
e5ab6579
package
com
.
xingdata
.
zzdpos
.
ui
.
settle
.
adapter
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseAdapter
;
import
com.xingdata.zzdpos.databinding.ItemSettleDisBinding
;
...
...
@@ -16,6 +17,19 @@ public class DisAdapter extends BaseAdapter<Saleorder.Dis, ItemSettleDisBinding>
@Override
protected
void
convert
(
ItemSettleDisBinding
mViewBinding
,
Saleorder
.
Dis
item
)
{
mViewBinding
.
setAmt
(
item
.
getDisAmt
());
mViewBinding
.
setType
(
item
.
getDisType
());
switch
(
item
.
getDisType
())
{
case
C
.
DIS_TYPE
.
DIS
:
mViewBinding
.
tvType
.
setText
(
R
.
string
.
ms_type_dis_abbr
);
mViewBinding
.
tvType
.
setBackgroundResource
(
R
.
drawable
.
shape_red_oval
);
break
;
case
C
.
DIS_TYPE
.
PROMOTION
:
mViewBinding
.
tvType
.
setText
(
R
.
string
.
ms_type_promotion_abbr
);
mViewBinding
.
tvType
.
setBackgroundResource
(
R
.
drawable
.
shape_orange_oval
);
break
;
case
C
.
DIS_TYPE
.
MONEY_OFF
:
mViewBinding
.
tvType
.
setText
(
R
.
string
.
ms_type_money_off_abbr
);
mViewBinding
.
tvType
.
setBackgroundResource
(
R
.
drawable
.
shape_green_oval
);
break
;
}
}
}
app/src/main/java/com/xingdata/zzdpos/ui/settle/fragment/SettleFragment.java
View file @
e5ab6579
...
...
@@ -104,8 +104,7 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
//init d
mDisAdapter
=
new
DisAdapter
();
mViewBinding
.
rlDis
.
setAdapter
(
mDisAdapter
);
mViewBinding
.
rlDis
.
setLayoutManager
(
new
GridLayoutManager
(
mContext
,
4
));
mViewBinding
.
rlDis
.
addItemDecoration
(
new
RecyclerViewUtil
.
GridSpacingItemDecoration
(
4
,
getResources
().
getDimensionPixelOffset
(
R
.
dimen
.
all_margin
),
false
));
mViewBinding
.
rlDis
.
setLayoutManager
(
new
GridLayoutManager
(
mContext
,
3
));
//set other listener
mViewBinding
.
llSaledetailHint
.
setOnClickListener
(
view
->
mViewBinding
.
cbSaledetail
.
setChecked
(!
mViewBinding
.
cbSaledetail
.
isChecked
()));
...
...
@@ -180,7 +179,11 @@ public class SettleFragment extends BaseFragment<SettlePresenter, FragmentSettle
mViewBinding
.
setAvlPoints
(
saleorder
.
getBoundNum
());
mViewBinding
.
setPointDisAmt
(
ConvertUtil
.
fenToYuan
(
saleorder
.
getBoundAmt
()));
if
(
mDisAdapter
!=
null
)
mDisAdapter
.
setNewData
(
saleorder
.
getDisList
());
if
(
mDisAdapter
!=
null
)
{
mDisAdapter
.
setNewData
(
saleorder
.
getDisList
());
mViewBinding
.
tvVipOffAmt
.
setText
(
ConvertUtil
.
fenToYuan
(
saleorder
.
getOrderVipOffAmt
(),
true
));
mViewBinding
.
tvOrderCnt
.
setText
(
String
.
valueOf
(
saleorder
.
getOrderCnt
()));
}
}
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreActivity.java
View file @
e5ab6579
...
...
@@ -6,6 +6,7 @@ import android.view.inputmethod.EditorInfo;
import
com.blankj.utilcode.util.ActivityUtils
;
import
com.blankj.utilcode.util.KeyboardUtils
;
import
com.blankj.utilcode.util.StringUtils
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseActivity
;
...
...
@@ -50,13 +51,17 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
mViewBinding
.
ivCart
.
setOnClickListener
(
view
->
mPresenter
.
clickCartLogo
());
mViewBinding
.
tvSettle
.
setOnClickListener
(
view
->
mPresenter
.
clickSettle
());
mViewBinding
.
btnBack
.
setOnClickListener
(
view
->
getTopFragment
().
onBackPressedSupport
());
mViewBinding
.
etSearch
.
setOnEditorActionListener
((
textView
,
i
,
keyEvent
)
->
{
if
(
i
==
EditorInfo
.
IME_ACTION_SEARCH
)
{
if
(
i
==
EditorInfo
.
IME_ACTION_SEARCH
&&
!
StringUtils
.
isEmpty
(
textView
.
getText
())
)
{
KeyboardUtils
.
hideSoftInput
(
textView
);
mPresenter
.
searchSku
(
textView
.
getText
().
toString
());
}
return
false
;
});
mViewBinding
.
etSearch
.
setOnFocusChangeListener
((
view
,
b
)
->
{
mPresenter
.
searchBarFocusChanged
(
b
);
});
}
...
...
@@ -82,7 +87,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public
<
Sku
extends
BaseSku
>
void
loadSearchResult
(
List
<
Sku
>
skus
,
boolean
isRefresh
)
{
mSearchFragment
.
loadSkus
(
skus
,
isRefresh
);
}
@Override
...
...
@@ -97,6 +102,7 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
@Override
public
void
loadSaledetails
(
List
<
Saledetail
>
saledetails
,
boolean
isRefresh
)
{
mStoreFragment
.
loadSaledetails
(
saledetails
,
isRefresh
);
mSearchFragment
.
loadSaledetails
(
saledetails
,
isRefresh
);
}
...
...
@@ -130,4 +136,16 @@ public class StoreActivity extends BaseActivity<StorePresenter, ActivityStoreBin
ActivityUtils
.
startActivity
(
intent
);
}
@Override
public
void
showSearchFragment
()
{
if
(!
mSearchFragment
.
isAdded
())
this
.
start
(
mSearchFragment
);
}
@Override
public
void
resetSearchBar
()
{
mViewBinding
.
etSearch
.
setText
(
""
);
mViewBinding
.
clTitle
.
requestFocus
();
mViewBinding
.
clTitle
.
requestFocusFromTouch
();
}
}
app/src/main/java/com/xingdata/zzdpos/ui/store/StoreContract.java
View file @
e5ab6579
...
...
@@ -77,7 +77,6 @@ interface StoreContract {
*/
void
dismissLoadingDialog
();
/**
* 显示购物车
*
...
...
@@ -97,6 +96,16 @@ interface StoreContract {
* @param saledetails 购物车详情列表
*/
void
showSettle
(
List
<
Saledetail
>
saledetails
);
/**
* 显示搜索页面
*/
void
showSearchFragment
();
/**
* 重置搜索栏
*/
void
resetSearchBar
();
}
abstract
class
Presenter
extends
BasePresenter
<
View
>
{
...
...
@@ -174,10 +183,23 @@ interface StoreContract {
*/
public
abstract
void
onCartDialogCancel
();
/**
* 搜索界面 - 关闭
*/
public
abstract
void
onSearchFragmentCancel
();
/**
* 购物车界面 - 清空购物车
*/
public
abstract
void
clearCart
();
/**
* 主页面 - 搜索框焦点改变
*
* @param b 获取焦点
*/
public
abstract
void
searchBarFocusChanged
(
boolean
b
);
}
}
app/src/main/java/com/xingdata/zzdpos/ui/store/StorePresenter.java
View file @
e5ab6579
...
...
@@ -31,6 +31,7 @@ public class StorePresenter extends StoreContract.Presenter {
* 当前营销计划
*/
private
List
<
Ms
>
mMss
;
private
Ms
.
OnApplyListener
mOnApplyListener
;
private
int
mStorePageNum
;
private
Long
mSkuGrpId
;
...
...
@@ -45,6 +46,24 @@ public class StorePresenter extends StoreContract.Presenter {
mVip
=
Vip
.
createDefault
();
mSaledetails
=
new
ArrayList
<>();
mSaleorder
=
new
Saleorder
();
mOnApplyListener
=
new
Ms
.
OnApplyListener
()
{
@Override
public
void
setDis
(
Ms
ms
)
{
mSaleorder
.
addMsDis
(
ms
);
}
@Override
public
void
addGift
(
Long
msId
,
Long
skuId
,
long
addAmt
)
{
//这一版不做处理
}
@Override
public
void
removeGift
(
Long
msId
)
{
//这一版不作处理
}
};
}
@Override
...
...
@@ -125,6 +144,8 @@ public class StorePresenter extends StoreContract.Presenter {
public
void
cartChanged
()
{
//设置订单信息
mSaleorder
.
setSaledetails
(
mSaledetails
);
//处理营销活动
this
.
processMs
();
//统计订单信息
this
.
reprice
();
}
...
...
@@ -135,14 +156,27 @@ public class StorePresenter extends StoreContract.Presenter {
mView
.
loadSaledetails
(
mSaledetails
,
true
);
}
@Override
public
void
onSearchFragmentCancel
()
{
//发送购物车信息并刷新页面
mView
.
loadSaledetails
(
mSaledetails
,
true
);
//充值搜索栏
mView
.
resetSearchBar
();
}
@Override
public
void
clearCart
()
{
//清空购物车
this
.
mSaledetails
=
new
ArrayList
<>();
//设置订单信息
mSaleorder
.
setSaledetails
(
mSaledetails
);
//统计订单信息
this
.
reprice
();
//购物车发生变
this
.
cartChanged
();
}
@Override
public
void
searchBarFocusChanged
(
boolean
b
)
{
if
(
b
)
mView
.
showSearchFragment
();
}
...
...
@@ -177,6 +211,9 @@ public class StorePresenter extends StoreContract.Presenter {
mCompositeDisposable
.
add
(
DBFactory
.
Store
.
queryMss
().
subscribe
(
ms
->
{
mMss
=
ms
;
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
setOnApplyListener
(
mOnApplyListener
);
}
mView
.
loadMss
(
mMss
);
},
throwable
->
{
})
...
...
@@ -234,6 +271,28 @@ public class StorePresenter extends StoreContract.Presenter {
}
}
/**
* 处理营销活动
*/
private
void
processMs
()
{
//重置商品
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
setSaledetailList
(
new
ArrayList
<>());
}
//添加商品
for
(
int
i
=
0
;
i
<
mSaledetails
.
size
();
i
++)
{
for
(
int
j
=
0
;
j
<
mMss
.
size
();
j
++)
{
if
(!
mMss
.
get
(
j
).
isAvailable
(
mVip
))
continue
;
if
(
mMss
.
get
(
j
).
addSaledetail
(
mSaledetails
.
get
(
i
)))
break
;
}
}
//判断
for
(
int
i
=
0
;
i
<
mMss
.
size
();
i
++)
{
mMss
.
get
(
i
).
execute
();
}
}
/**
* 统计订单信息
*/
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/dialog/MsDialog.java
View file @
e5ab6579
package
com
.
xingdata
.
zzdpos
.
ui
.
store
.
dialog
;
import
com.blankj.utilcode.util.StringUtils
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseSheetDialog
;
import
com.xingdata.zzdpos.databinding.DialogStoreMsBinding
;
import
com.xingdata.zzdpos.db.DBFactory
;
import
com.xingdata.zzdpos.model.Ms
;
import
com.xingdata.zzdpos.ui.store.StorePresenter
;
import
com.xingdata.zzdpos.util.ConvertUtil
;
...
...
@@ -77,12 +79,11 @@ public class MsDialog extends BaseSheetDialog<StorePresenter, DialogStoreMsBindi
strGroup
=
getString
(
R
.
string
.
ms_group_all_info
);
break
;
case
C
.
MS_GROUP
.
CATE
:
//TODO 获取分组名
strGroup
=
getString
(
R
.
string
.
ms_group_cate_info
,
ms
.
getSpuCateId
()
+
""
);
strGroup
=
getString
(
R
.
string
.
ms_group_cate_info
,
ms
.
getCateName
());
break
;
case
C
.
MS_GROUP
.
SKU
:
//TODO 获取商品名
strGroup
=
getString
(
R
.
string
.
ms_group_sku_info
,
ms
.
getSkuId
()
+
""
);
String
spuName
=
DBFactory
.
Store
.
querySpuNameBySkuId
(
ms
.
getSkuId
());
strGroup
=
getString
(
R
.
string
.
ms_group_sku_info
,
!
StringUtils
.
isEmpty
(
spuName
)
?
spuName
:
ms
.
getSkuId
()
);
break
;
}
switch
(
ms
.
getMsTools
())
{
...
...
@@ -90,7 +91,7 @@ public class MsDialog extends BaseSheetDialog<StorePresenter, DialogStoreMsBindi
strType
=
getString
(
R
.
string
.
ms_type_dis_info
,
String
.
valueOf
(
Double
.
valueOf
(
ms
.
getPriceDiscount
())
/
10
));
break
;
case
C
.
MS_TYPE
.
PROMOTION
:
strType
=
getString
(
R
.
string
.
ms_type_promotion
);
strType
=
getString
(
R
.
string
.
ms_type_promotion
_info
);
break
;
case
C
.
MS_TYPE
.
SECOND
:
strType
=
getString
(
R
.
string
.
ms_type_second_info
,
String
.
valueOf
(
Double
.
valueOf
(
ms
.
getPriceDiscount
())
/
10
));
...
...
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/SearchFragment.java
View file @
e5ab6579
package
com
.
xingdata
.
zzdpos
.
ui
.
store
.
fragment
;
import
android.annotation.SuppressLint
;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.view.View
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.base.BaseSku
;
import
com.xingdata.zzdpos.databinding.FragmentStoreSearchBinding
;
import
com.xingdata.zzdpos.model.Saledetail
;
import
com.xingdata.zzdpos.ui.store.StorePresenter
;
import
com.xingdata.zzdpos.ui.store.adapter.SkuAdapter
;
import
java.util.List
;
public
class
SearchFragment
extends
BaseFragment
<
StorePresenter
,
FragmentStoreSearchBinding
>
{
private
SkuAdapter
mSkuAdapter
;
private
List
<
Saledetail
>
mSaledetails
;
@Override
public
int
getLayoutId
()
{
return
R
.
layout
.
fragment_store_search
;
...
...
@@ -14,5 +28,76 @@ public class SearchFragment extends BaseFragment<StorePresenter, FragmentStoreSe
@Override
public
void
initView
()
{
// init sku
mSkuAdapter
=
new
SkuAdapter
<>();
mSkuAdapter
.
setSaledetails
(
mSaledetails
);
mViewBinding
.
rlSku
.
setAdapter
(
mSkuAdapter
);
mViewBinding
.
rlSku
.
setLayoutManager
(
new
LinearLayoutManager
(
mContext
));
// set sku listener
mSkuAdapter
.
setOnLoadMoreListener
(
this
::
loadMoreSku
,
mViewBinding
.
rlSku
);
mSkuAdapter
.
setOnCountChangeListener
((
sku
,
value
)
->
{
if
(
value
>
0
)
mPresenter
.
clickAddSku
(
sku
);
else
mPresenter
.
clickRemoveSku
(
sku
);
});
// set empty
@SuppressLint
(
"InflateParams"
)
View
view
=
getLayoutInflater
().
inflate
(
R
.
layout
.
view_empty
,
null
);
mSkuAdapter
.
setEmptyView
(
view
);
mSkuAdapter
.
isUseEmpty
(
false
);
}
@Override
public
boolean
onBackPressedSupport
()
{
mPresenter
.
onSearchFragmentCancel
();
return
super
.
onBackPressedSupport
();
}
/**
* 加载更多商品
*/
private
void
loadMoreSku
()
{
mPresenter
.
loadMoreSearchResult
();
}
/**
* 加载商品
*
* @param skus 商品
* @param isRefresh 是否刷新
* @param <Sku> 商品类型
*/
public
<
Sku
extends
BaseSku
>
void
loadSkus
(
List
<
Sku
>
skus
,
boolean
isRefresh
)
{
if
(
isRefresh
)
{
mSkuAdapter
.
isUseEmpty
(
true
);
mSkuAdapter
.
setEnableLoadMore
(
true
);
mSkuAdapter
.
setNewData
(
skus
);
}
else
if
(
skus
.
size
()
>
0
)
mSkuAdapter
.
addData
(
skus
);
if
(
skus
.
size
()
<
C
.
PRODUCT
.
PAGE_SIZE
)
mSkuAdapter
.
loadMoreEnd
(
isRefresh
);
else
mSkuAdapter
.
loadMoreComplete
();
}
/**
* 加载购物车信息
*
* @param saledetails 购物车信息
*/
public
void
loadSaledetails
(
List
<
Saledetail
>
saledetails
,
boolean
isRefresh
)
{
this
.
setSaledetails
(
saledetails
);
if
(!
isAdded
())
return
;
mSkuAdapter
.
setSaledetails
(
saledetails
);
if
(
isRefresh
)
mSkuAdapter
.
notifyDataSetChanged
();
}
/**
* 设置购物车信息
*
* @param saledetails 购物车信息
*/
public
void
setSaledetails
(
List
<
Saledetail
>
saledetails
)
{
this
.
mSaledetails
=
saledetails
;
}
}
app/src/main/java/com/xingdata/zzdpos/ui/store/fragment/StoreFragment.java
View file @
e5ab6579
...
...
@@ -4,11 +4,13 @@ import android.annotation.SuppressLint;
import
android.support.v7.widget.LinearLayoutManager
;
import
android.view.View
;
import
com.blankj.utilcode.util.StringUtils
;
import
com.xingdata.zzdpos.C
;
import
com.xingdata.zzdpos.R
;
import
com.xingdata.zzdpos.base.BaseFragment
;
import
com.xingdata.zzdpos.base.BaseSku
;
import
com.xingdata.zzdpos.databinding.FragmentStoreBinding
;
import
com.xingdata.zzdpos.db.DBFactory
;
import
com.xingdata.zzdpos.model.Ms
;
import
com.xingdata.zzdpos.model.Saledetail
;
import
com.xingdata.zzdpos.model.Sskugrp
;
...
...
@@ -129,7 +131,6 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
}
}
/**
* 获取营销计划的文字描述
*
...
...
@@ -146,12 +147,11 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
strGroup
=
getString
(
R
.
string
.
ms_group_all_info
);
break
;
case
C
.
MS_GROUP
.
CATE
:
//TODO 获取分组名
strGroup
=
getString
(
R
.
string
.
ms_group_cate_info
,
ms
.
getSpuCateId
()
+
""
);
strGroup
=
getString
(
R
.
string
.
ms_group_cate_info
,
ms
.
getCateName
());
break
;
case
C
.
MS_GROUP
.
SKU
:
//TODO 获取商品名
strGroup
=
getString
(
R
.
string
.
ms_group_sku_info
,
ms
.
getSkuId
()
+
""
);
String
spuName
=
DBFactory
.
Store
.
querySpuNameBySkuId
(
ms
.
getSkuId
());
strGroup
=
getString
(
R
.
string
.
ms_group_sku_info
,
!
StringUtils
.
isEmpty
(
spuName
)
?
spuName
:
ms
.
getSkuId
()
);
break
;
}
switch
(
ms
.
getMsTools
())
{
...
...
@@ -159,7 +159,7 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
strType
=
getString
(
R
.
string
.
ms_type_dis_info
,
String
.
valueOf
(
Double
.
valueOf
(
ms
.
getPriceDiscount
())
/
10
));
break
;
case
C
.
MS_TYPE
.
PROMOTION
:
strType
=
getString
(
R
.
string
.
ms_type_promotion
);
strType
=
getString
(
R
.
string
.
ms_type_promotion
_info
);
break
;
case
C
.
MS_TYPE
.
SECOND
:
strType
=
getString
(
R
.
string
.
ms_type_second_info
,
String
.
valueOf
(
Double
.
valueOf
(
ms
.
getPriceDiscount
())
/
10
));
...
...
@@ -175,7 +175,6 @@ public class StoreFragment extends BaseFragment<StorePresenter, FragmentStoreBin
return
strGroup
+
strType
;
}
/**
* 加载商品
*
...
...
app/src/main/res/drawable/shape_blue_oval.xml
0 → 100644
View file @
e5ab6579
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"@color/blue_mawu"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/shape_green_oval.xml
0 → 100644
View file @
e5ab6579
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"@color/green_chengyaojin"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/shape_orange_oval.xml
0 → 100644
View file @
e5ab6579
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"@color/orange_shixiu"
/>
</shape>
\ No newline at end of file
app/src/main/res/drawable/shape_red_oval.xml
0 → 100644
View file @
e5ab6579
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:shape=
"oval"
>
<solid
android:color=
"@color/red_guanyu"
/>
</shape>
\ No newline at end of file
app/src/main/res/layout/activity_payment.xml
View file @
e5ab6579
...
...
@@ -13,9 +13,9 @@
<ImageButton
android:id=
"@+id/btn_back"
android:layout_width=
"
@dimen/title_height
"
android:layout_width=
"
?attr/actionBarSize
"
android:layout_height=
"match_parent"
android:background=
"?attr/
selectable
ItemBackground"
android:background=
"?attr/
actionBar
ItemBackground"
android:contentDescription=
"@string/all_go_back"
android:gravity=
"center"
android:padding=
"@dimen/all_margin"
...
...
app/src/main/res/layout/activity_settle.xml
View file @
e5ab6579
...
...
@@ -22,9 +22,9 @@
<ImageButton
android:id=
"@+id/btn_back"
android:layout_width=
"
@dimen/title_height
"
android:layout_width=
"
?attr/actionBarSize
"
android:layout_height=
"match_parent"
android:background=
"?attr/
selectable
ItemBackground"
android:background=
"?attr/
actionBar
ItemBackground"
android:contentDescription=
"@string/all_go_back"
android:gravity=
"center"
android:padding=
"@dimen/all_margin"
...
...
app/src/main/res/layout/activity_store.xml
View file @
e5ab6579
...
...
@@ -36,12 +36,14 @@
android:layout_height=
"?attr/actionBarSize"
android:animateLayoutChanges=
"true"
android:background=
"@color/white_caocao"
android:focusable=
"true"
android:focusableInTouchMode=
"true"
app:layout_constraintBottom_toTopOf=
"@id/f_store"
app:layout_constraintTop_toTopOf=
"parent"
>
<ImageButton
android:id=
"@+id/btn_back"
android:layout_width=
"
@dimen/title_height
"
android:layout_width=
"
?attr/actionBarSize
"
android:layout_height=
"match_parent"
android:background=
"?attr/actionBarItemBackground"
android:contentDescription=
"@string/all_go_back"
...
...
app/src/main/res/layout/dialog_store_cart.xml
View file @
e5ab6579
...
...
@@ -29,6 +29,41 @@
android:gravity=
"center"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/fl_ms"
android:layout_width=
"0dp"
android:layout_height=
"@dimen/all_margin_big"
android:layout_marginBottom=
"@dimen/all_line_width"
android:alpha=
"0.87"
android:background=
"@color/cyan_sunquan"
android:gravity=
"center"
android:orientation=
"horizontal"
android:visibility=
"@{msDisAmt>0?View.VISIBLE:View.GONE}"
app:layout_constraintBottom_toTopOf=
"@id/ll_title"
app:layout_constraintLeft_toLeftOf=
"parent"
app:layout_constraintRight_toRightOf=
"parent"
>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/store_ms_dis"
android:textColor=
"@color/black_zhangfei"
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@{ConvertUtil.fenToYuan(msDisAmt)}"
android:textColor=
"@color/red_guanyu"
android:textSize=
"@dimen/all_text_size"
/>
<TextView
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:text=
"@string/unit_rmb_yuan"
android:textColor=
"@color/black_zhangfei"
android:textSize=
"@dimen/all_text_size"
/>
</LinearLayout>
<LinearLayout
android:id=
"@+id/ll_title"
...
...
app/src/main/res/layout/fragment_settle.xml
View file @
e5ab6579
...
...
@@ -212,6 +212,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:button=
"@mipmap/but_unfurled"
android:checked=
"true"
android:foreground=
"?android:attr/actionBarItemBackground"
/>
</LinearLayout>
...
...
@@ -220,7 +221,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:visibility=
"
gon
e"
>
android:visibility=
"
visibl
e"
>
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rl_saledetail"
...
...
@@ -306,6 +307,7 @@
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:button=
"@mipmap/but_unfurled"
android:checked=
"true"
android:foreground=
"?android:attr/actionBarItemBackground"
/>
</LinearLayout>
...
...
@@ -314,7 +316,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:orientation=
"vertical"
android:visibility=
"
gon
e"
>
android:visibility=
"
visibl
e"
>
<View
android:layout_width=
"match_parent"
...
...
@@ -327,9 +329,9 @@
android:id=
"@+id/rl_dis"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:
layout_marginEnd=
"@dimen/all_margin
"
android:
layout_marginStart
=
"@dimen/all_margin"
android:
background=
"@color/white_caocao
"
/>
android:
background=
"@color/white_caocao
"
android:
paddingEnd
=
"@dimen/all_margin"
android:
paddingStart=
"@dimen/all_margin
"
/>
</LinearLayout>
<View
...
...
app/src/main/res/layout/fragment_store_search.xml
View file @
e5ab6579
...
...
@@ -22,9 +22,6 @@
<android.support.v7.widget.RecyclerView
android:id=
"@+id/rl_sku"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
android:background=
"@color/blue_mawu"
/>
android:layout_height=
"match_parent"
/>
</LinearLayout>
</layout>
\ No newline at end of file
app/src/main/res/layout/item_settle_dis.xml
View file @
e5ab6579
...
...
@@ -6,12 +6,6 @@
<import
type=
"com.xingdata.zzdpos.util.ConvertUtil"
/>
<import
type=
"com.xingdata.zzdpos.C.DIS_TYPE"
/>
<variable
name=
"type"
type=
"int"
/>
<variable
name=
"amt"
type=
"long"
/>
...
...
@@ -23,23 +17,12 @@
android:layout_height=
"?attr/actionBarSize"
android:background=
"@color/white_caocao"
>
<com.facebook.drawee.view.SimpleDraweeView
android:layout_width=
"0dp"
android:layout_height=
"0dp"
app:backgroundImage=
"@color/green_chengyaojin"
app:layout_constraintBottom_toBottomOf=
"@id/tv_type"
app:layout_constraintLeft_toLeftOf=
"@id/tv_type"
app:layout_constraintRight_toRightOf=
"@id/tv_type"
app:layout_constraintTop_toTopOf=
"@id/tv_type"
app:roundAsCircle=
"true"
/>
<TextView
android:id=
"@+id/tv_type"
android:layout_width=
"@dimen/all_margin_big"
android:layout_height=
"@dimen/all_margin_big"
android:background=
"@drawable/shape_red_oval"
android:gravity=
"center"
android:text=
"满"
android:textColor=
"@color/white_caocao"
android:textSize=
"@dimen/all_text_size"
app:layout_constraintBottom_toTopOf=
"parent"
...
...
app/src/main/res/values/strings.xml
View file @
e5ab6579
...
...
@@ -558,14 +558,19 @@
<string
name=
"ms_group_sku_info"
>
买%s
</string>
<string
name=
"ms_type_dis"
>
打折
</string>
<string
name=
"ms_type_dis_info"
>
享受%s折优惠
</string>
<string
name=
"ms_type_dis_abbr"
>
折
</string>
<string
name=
"ms_type_promotion"
>
促销
</string>
<string
name=
"ms_type_promotion_info"
>
享受促销价
</string>
<string
name=
"ms_type_promotion_abbr"
>
促
</string>
<string
name=
"ms_type_money_off"
>
满减
</string>
<string
name=
"ms_type_money_off_info"
>
满%s元减%s元
</string>
<string
name=
"ms_type_money_off_abbr"
>
满
</string>
<string
name=
"ms_type_second"
>
打折
</string>
<string
name=
"ms_type_second_info"
>
第二件享受%s折优惠
</string>
<string
name=
"ms_type_second_abbr"
>
折
</string>
<string
name=
"ms_type_gift"
>
换购
</string>
<string
name=
"ms_type_gift_info"
>
满%s元加%s元换购%s一件
</string>
<string
name=
"ms_type_gift_abbr"
>
换
</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