Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
supplier
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
王宇航
supplier
Commits
9f67a4da
Commit
9f67a4da
authored
Jul 28, 2020
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、结账支付二种支付方式
parent
9d9f4fd6
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
698 additions
and
296 deletions
+698
-296
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/BaseResult2.java
+16
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/MemberInfo.java
+313
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/OrderPayRequest.java
+36
-0
base-module/src/main/java/com/gingersoft/gsa/cloud/database/greendao/DaoMaster.java
+5
-5
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/OrderPayView.java
+21
-17
table-module/build.gradle
+3
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/BaseOrderContract.java
+4
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/MealStandContract.java
+7
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/MealStandModel.java
+6
-3
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
+3
-2
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderPayModel.java
+5
-2
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/OrderDetailItem.java
+21
-185
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/MemberService.java
+4
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/OrderPayService.java
+4
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
+8
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
+39
-25
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderPayPresenter.java
+39
-8
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
+5
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
+72
-24
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
+4
-3
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderDetailActivity.java
+1
-1
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/MemberInfoAdapter.java
+25
-0
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/UseMemberDialog.java
+42
-11
table-module/src/main/res/layout/meal_dialog_use_member.xml
+0
-3
table-module/src/main/res/layout/meal_item_member_info.xml
+13
-0
table-module/src/main/res/layout/table_activity_table.xml
+2
-3
No files found.
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/BaseResult2.java
0 → 100644
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
base
.
common
.
bean
;
import
lombok.Data
;
/**
* Created by Wyh on 2020/1/15.
*/
@Data
public
class
BaseResult2
{
private
String
code
;
private
String
errorMsg
;
private
Object
data
;
}
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/MemberInfo.java
0 → 100644
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
base
.
common
.
bean
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-25
* 修订历史:2020-07-25
* 描述:
*/
@Data
public
class
MemberInfo
{
/**
* ablediscount : 0
* birthdaybonusratio : 1
* birthdayperiod : 5
* brCouponNum : 0
* brCouponTypeId : 0
* brPoints : 5
* brandId : 0
* brandName : Gingersoft
* couponTypeId : 0
* createBy : H5
* createTime : {"date":28,"day":4,"hours":17,"minutes":53,"month":4,"seconds":37,"time":1590659617000,"timezoneOffset":-480,"year":120}
* createTimes : 0
* creditPoints : 0
* discount : 0
* expireAfterDayClearPoints : 0
* extendExpireAmount : 1
* extendExpirePeriod : 365
* extendValidDays : 0
* foodDesc1 : GS白金會員
* foodDesc2 : GS白金會員
* foodDesc3 : GS白金會員
* foodPrice : 500
* groupId : 7
* id : 421439
* isDisplay : 0
* isVisible : 1
* isdefault : 1
* language : 0
* level : 0
* levelDesc : 60日內消費滿3000, 可升級為白金會員享有更多折扣會員享有更多折扣
* levelName :
* levelName1 : GS基本用戶
* levelName2 : 基本用戶
* levelName3 : 基本用戶
* levelUpAmount : 1
* levelUpPeriod : 365
* negativePoints : 0
* newCouponNum : 0
* nextDownLevel : 35
* nextUpLevel : 0
* optTime : {"date":25,"day":6,"hours":9,"minutes":48,"month":6,"seconds":50,"time":1595641730781,"timezoneOffset":-480,"year":120}
* optTimes : 0
* pointRedeemCash : 20
* pointRule : 2
* pointUnit : 1
* pointenddate :
* pointoveryear : 0
* points : 0
* pointsVariable : 50
* restaurantId : 2
* scCharge : 0
* seq1 : 3
* sid :
* updateBy : H5
* updateTime : {"date":23,"day":4,"hours":17,"minutes":33,"month":6,"seconds":14,"time":1595496794000,"timezoneOffset":-480,"year":120}
* updateTimes : 0
* vaildDays : 0
* adverHeight : 0
* advertCol : 1
* birthday :
* birthdays :
* brandImgUrl : http://m.ricepon.com/1/20160816/20160816133220847.png
* brandMemberInfoIcon : http://m.ricepon.com/ricepon-asset/images/1546398451087.png
* consumeAmount : 0
* consumePoints : 3
* countryId : 0
* districtId : 0
* districtName :
* email :
* emailActive : 0
* headImg :
* imgPath :
* isPush : 0
* levelImgUrl : http://m.ricepon.com/ricepon-asset/201912/member/member-1575525134386.jpg
* levelTime :
* memberDiscount : 20
* memberExpireDate : {"date":25,"day":6,"hours":9,"minutes":48,"month":6,"seconds":50,"time":1595641730781,"timezoneOffset":-480,"year":120}
* memberId : 0
* memberName :
* memberNo : 2005149175337
* memberNote :
* memberPoint : 3
* memberTypeId : 32
* openId :
* password :
* phone : 18218743523
* postcardNo :
* postcardType : 1
* proId : 0
* proName :
* secretKey :
* serviceOpenId :
* sex : 0
* shopCanUse :
* shopId :
* shopNote :
* source : 0
* status : 0
* type : 0
* vaildTime : {"date":25,"day":6,"hours":9,"minutes":48,"month":6,"seconds":50,"time":1595641730781,"timezoneOffset":-480,"year":120}
* MemberPoint : 3
*/
private
CreateTimeBean
createTime
;
private
UpdateTimeBean
updateTime
;
private
MemberExpireDateBean
memberExpireDate
;
private
VaildTimeBean
vaildTime
;
private
int
MemberPoint
;
private
int
birthdaybonusratio
;
private
int
creditPoints
;
private
int
birthdayperiod
;
private
int
extendExpirePeriod
;
private
int
brCouponTypeId
;
private
int
levelUpPeriod
;
private
int
groupId
;
private
int
seq1
;
private
int
nextDownLevel
;
private
int
discount
;
private
int
language
;
private
int
points
;
private
int
negativePoints
;
private
int
couponTypeId
;
private
int
id
;
private
int
isdefault
;
private
int
pointsVariable
;
private
String
brandName
;
private
int
level
;
private
int
newCouponNum
;
private
int
isVisible
;
private
int
isDisplay
;
private
int
vaildDays
;
private
int
brandId
;
private
int
pointRedeemCash
;
private
int
ablediscount
;
private
String
levelName3
;
private
String
levelName2
;
private
String
levelName1
;
private
int
expireAfterDayClearPoints
;
private
int
extendExpireAmount
;
private
String
foodDesc3
;
private
int
scCharge
;
private
int
extendValidDays
;
private
int
levelUpAmount
;
private
int
optTimes
;
private
int
updateTimes
;
private
String
foodDesc1
;
private
String
foodDesc2
;
private
String
sid
;
private
String
pointenddate
;
private
String
updateBy
;
private
int
brPoints
;
private
String
optTime
;
private
int
createTimes
;
private
int
brCouponNum
;
private
String
levelName
;
private
int
pointRule
;
private
int
foodPrice
;
private
String
createBy
;
private
int
pointoveryear
;
private
String
levelDesc
;
private
int
pointUnit
;
private
int
nextUpLevel
;
private
int
restaurantId
=
2
;
@Data
public
static
class
CreateTimeBean
{
/**
* date : 28
* day : 4
* hours : 17
* minutes : 53
* month : 4
* seconds : 37
* time : 1590659617000
* timezoneOffset : -480
* year : 120
*/
private
int
date
;
private
int
day
;
private
int
hours
;
private
int
minutes
;
private
int
month
;
private
int
seconds
;
private
long
time
;
private
int
timezoneOffset
;
private
int
year
;
}
@Data
public
static
class
OptTimeBean
{
/**
* date : 25
* day : 6
* hours : 9
* minutes : 48
* month : 6
* seconds : 50
* time : 1595641730781
* timezoneOffset : -480
* year : 120
*/
private
int
date
;
private
int
day
;
private
int
hours
;
private
int
minutes
;
private
int
month
;
private
int
seconds
;
private
long
time
;
private
int
timezoneOffset
;
private
int
year
;
}
@Data
public
static
class
UpdateTimeBean
{
/**
* date : 23
* day : 4
* hours : 17
* minutes : 33
* month : 6
* seconds : 14
* time : 1595496794000
* timezoneOffset : -480
* year : 120
*/
private
int
date
;
private
int
day
;
private
int
hours
;
private
int
minutes
;
private
int
month
;
private
int
seconds
;
private
long
time
;
private
int
timezoneOffset
;
private
int
year
;
}
@Data
public
static
class
MemberExpireDateBean
{
/**
* date : 25
* day : 6
* hours : 9
* minutes : 48
* month : 6
* seconds : 50
* time : 1595641730781
* timezoneOffset : -480
* year : 120
*/
private
int
date
;
private
int
day
;
private
int
hours
;
private
int
minutes
;
private
int
month
;
private
int
seconds
;
private
long
time
;
private
int
timezoneOffset
;
private
int
year
;
}
@Data
public
static
class
VaildTimeBean
{
/**
* date : 25
* day : 6
* hours : 9
* minutes : 48
* month : 6
* seconds : 50
* time : 1595641730781
* timezoneOffset : -480
* year : 120
*/
private
int
date
;
private
int
day
;
private
int
hours
;
private
int
minutes
;
private
int
month
;
private
int
seconds
;
private
long
time
;
private
int
timezoneOffset
;
private
int
year
;
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/base/common/bean/OrderPayRequest.java
0 → 100644
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
base
.
common
.
bean
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
org.greenrobot.greendao.annotation.Entity
;
import
org.greenrobot.greendao.annotation.Generated
;
import
java.util.ArrayList
;
import
java.util.List
;
import
lombok.Data
;
/**
* 作者:ELEGANT_BIN
* 版本:1.6.0
* 创建日期:2020-07-25
* 修订历史:2020-07-25
* 描述:
*/
@Data
public
class
OrderPayRequest
{
private
long
orderId
;
private
int
linePayType
;
private
int
orderPayType
;
private
List
<
orderPay
>
orderPays
=
new
ArrayList
<>();
@Data
public
static
class
orderPay
{
private
int
payType
;
private
double
amount
;
private
double
tipsPrice
;
}
}
base-module/src/main/java/com/gingersoft/gsa/cloud/database/greendao/DaoMaster.java
View file @
9f67a4da
...
...
@@ -28,11 +28,11 @@ public class DaoMaster extends AbstractDaoMaster {
FoodComboDao
.
createTable
(
db
,
ifNotExists
);
FoodModifierDao
.
createTable
(
db
,
ifNotExists
);
FunctionDao
.
createTable
(
db
,
ifNotExists
);
LanguageDao
.
createTable
(
db
,
ifNotExists
);
ModifierDao
.
createTable
(
db
,
ifNotExists
);
PrintCurrencyBeanDao
.
createTable
(
db
,
ifNotExists
);
PrinterDeviceBeanDao
.
createTable
(
db
,
ifNotExists
);
PrintModelBeanDao
.
createTable
(
db
,
ifNotExists
);
LanguageDao
.
createTable
(
db
,
ifNotExists
);
PrintCurrencyBeanDao
.
createTable
(
db
,
ifNotExists
);
}
/** Drops underlying database table using DAOs. */
...
...
@@ -44,11 +44,11 @@ public class DaoMaster extends AbstractDaoMaster {
FoodComboDao
.
dropTable
(
db
,
ifExists
);
FoodModifierDao
.
dropTable
(
db
,
ifExists
);
FunctionDao
.
dropTable
(
db
,
ifExists
);
LanguageDao
.
dropTable
(
db
,
ifExists
);
ModifierDao
.
dropTable
(
db
,
ifExists
);
PrintCurrencyBeanDao
.
dropTable
(
db
,
ifExists
);
PrinterDeviceBeanDao
.
dropTable
(
db
,
ifExists
);
PrintModelBeanDao
.
dropTable
(
db
,
ifExists
);
LanguageDao
.
dropTable
(
db
,
ifExists
);
PrintCurrencyBeanDao
.
dropTable
(
db
,
ifExists
);
}
/**
...
...
@@ -74,10 +74,10 @@ public class DaoMaster extends AbstractDaoMaster {
registerDaoClass
(
FoodComboDao
.
class
);
registerDaoClass
(
FoodModifierDao
.
class
);
registerDaoClass
(
FunctionDao
.
class
);
registerDaoClass
(
LanguageDao
.
class
);
registerDaoClass
(
ModifierDao
.
class
);
registerDaoClass
(
PrinterDeviceBeanDao
.
class
);
registerDaoClass
(
PrintModelBeanDao
.
class
);
registerDaoClass
(
LanguageDao
.
class
);
registerDaoClass
(
PrintCurrencyBeanDao
.
class
);
}
...
...
base-module/src/main/java/com/gingersoft/gsa/cloud/ui/view/OrderPayView.java
View file @
9f67a4da
...
...
@@ -102,21 +102,27 @@ public class OrderPayView extends LinearLayout {
// mBillMoneyAdapter.notifyDataSetChanged();
// }
// }
mBillMoneyList
.
clear
();
// if (!mBillMoneyList.contains(method)) {
double
differenceMoney
=
getDifferenceMoney
();
if
(
differenceMoney
>
-
1
&&
method
!=
null
)
{
//補足差額
method
.
setPayMoney
(
differenceMoney
);
// mBillMoneyList.clear();
if
(!
mBillMoneyList
.
contains
(
method
))
{
if
(
mBillMoneyList
.
size
()
==
2
)
{
//替换掉第一个
mBillMoneyList
.
remove
(
0
);
}
else
if
(
mBillMoneyList
.
size
()
==
1
)
{
//差一种支付方式 直接补足余额
double
differenceMoney
=
getDifferenceMoney
();
if
(
differenceMoney
>
-
1
)
{
//補足差額
method
.
setPayMoney
(
differenceMoney
);
}
}
//添加選中支付方式
mBillMoneyList
.
add
(
method
);
mBillMoneyAdapter
.
setSelect_position
(
mBillMoneyList
.
size
()
-
1
);
mBillMoneyAdapter
.
notifyDataSetChanged
();
rv_bill_money
.
scrollToPosition
(
mBillMoneyList
.
size
()
-
1
);
//設置差額狀態
setDifferenceText
(
context
);
}
//添加選中支付方式
mBillMoneyList
.
add
(
method
);
mBillMoneyAdapter
.
setSelect_position
(
mBillMoneyList
.
size
()
-
1
);
mBillMoneyAdapter
.
notifyDataSetChanged
();
rv_bill_money
.
scrollToPosition
(
mBillMoneyList
.
size
()
-
1
);
//設置差額狀態
setDifferenceText
(
context
);
// }
});
mBillMoneyAdapter
.
setOnItemClickListener
(
new
BillMoneyAdapter
.
OnItemClickListener
()
{
...
...
@@ -270,9 +276,7 @@ public class OrderPayView extends LinearLayout {
public
double
getBillMoney
()
{
double
totalMoney
=
0.0
;
for
(
PayMethod
method
:
mBillMoneyList
)
{
if
(
method
!=
null
)
{
totalMoney
=
MoneyUtil
.
sum
(
totalMoney
,
method
.
getPayMoney
());
}
totalMoney
=
MoneyUtil
.
sum
(
totalMoney
,
method
.
getPayMoney
());
}
return
totalMoney
;
}
...
...
table-module/build.gradle
View file @
9f67a4da
...
...
@@ -66,4 +66,7 @@ dependencies {
// test
testImplementation
rootProject
.
ext
.
dependencies
[
"junit"
]
implementation
rootProject
.
ext
.
dependencies
[
"BaseRecyclerViewAdapter"
]
implementation
'org.projectlombok:lombok:1.18.8'
annotationProcessor
'org.projectlombok:lombok:1.18.8'
}
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/BaseOrderContract.java
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
contract
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose
;
import
com.jess.arms.base.DefaultAdapter
;
import
com.jess.arms.mvp.IModel
;
import
com.jess.arms.mvp.IView
;
import
java.util.List
;
import
io.reactivex.Observable
;
import
okhttp3.RequestBody
;
...
...
@@ -40,7 +43,7 @@ public interface BaseOrderContract {
Observable
<
BaseResult
>
addFood
(
RequestBody
requestBody
);
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
form
Body
);
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
request
Body
);
Observable
<
BaseResult
>
updateOrder
(
RequestBody
formBody
);
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/contract/MealStandContract.java
View file @
9f67a4da
...
...
@@ -4,6 +4,8 @@ import android.app.Activity;
import
android.widget.BaseAdapter
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult2
;
import
com.gingersoft.gsa.cloud.base.common.bean.MemberInfo
;
import
com.gingersoft.gsa.cloud.database.bean.ComboItem
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
...
...
@@ -46,6 +48,8 @@ public interface MealStandContract {
void
initFineItemTabBarViewPage
();
void
updateMemberInfo
(
MemberInfo
memberInfo
);
void
setCurrentFinePage
();
void
setPluMode
();
...
...
@@ -105,6 +109,8 @@ public interface MealStandContract {
Activity
getActivity
();
void
setModifierTop
(
int
Margins
);
}
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
...
...
@@ -121,7 +127,7 @@ public interface MealStandContract {
Observable
<
FoodReason
>
getRestaurantFoodReason
(
int
brandId
,
int
restaurantId
,
int
type
);
Observable
<
BaseResult
>
queryMember
(
int
type
,
String
sign
,
String
shopName
);
Observable
<
BaseResult
2
>
queryMember
(
int
type
,
String
parm
,
String
shopName
);
List
<
Food
>
queryDB_AllFoodList
();
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/MealStandModel.java
View file @
9f67a4da
...
...
@@ -3,6 +3,8 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult2
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
com.gingersoft.gsa.cloud.database.bean.ComboItem
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
...
...
@@ -27,6 +29,7 @@ import com.jess.arms.integration.IRepositoryManager;
import
com.jess.arms.mvp.BaseModel
;
import
java.util.List
;
import
java.util.Map
;
import
javax.inject.Inject
;
...
...
@@ -177,15 +180,15 @@ public class MealStandModel extends BaseModel implements MealStandContract.Model
}
@Override
public
Observable
<
BaseResult
>
queryMember
(
int
type
,
String
parm
,
String
shopName
)
{
public
Observable
<
BaseResult
2
>
queryMember
(
int
type
,
String
parm
,
String
shopName
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
MemberService
.
class
)
.
queryMember
(
type
,
parm
,
shopName
);
}
@Override
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
form
Body
)
{
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
request
Body
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
OrderPayService
.
class
)
.
toOrderPay
(
form
Body
);
.
toOrderPay
(
request
Body
);
}
@Override
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderContentModel.java
View file @
9f67a4da
...
...
@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
com.gingersoft.gsa.cloud.base.common.bean.TableBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
com.gingersoft.gsa.cloud.database.bean.Discount
;
...
...
@@ -117,9 +118,9 @@ public class OrderContentModel extends BaseModel implements OrderContentContract
}
@Override
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
form
Body
)
{
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
request
Body
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
OrderPayService
.
class
)
.
toOrderPay
(
form
Body
);
.
toOrderPay
(
request
Body
);
}
@Override
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/OrderPayModel.java
View file @
9f67a4da
...
...
@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.table.mvp.model;
import
android.app.Application
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
com.gingersoft.gsa.cloud.table.mvp.contract.OrderPayContract
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose
;
import
com.gingersoft.gsa.cloud.table.mvp.model.service.MealService
;
...
...
@@ -12,6 +13,8 @@ import com.jess.arms.di.scope.ActivityScope;
import
com.jess.arms.integration.IRepositoryManager
;
import
com.jess.arms.mvp.BaseModel
;
import
java.util.List
;
import
javax.inject.Inject
;
import
io.reactivex.Observable
;
...
...
@@ -96,9 +99,9 @@ public class OrderPayModel extends BaseModel implements OrderPayContract.Model {
}
@Override
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
form
Body
)
{
public
Observable
<
BaseResult
>
toOrderPay
(
RequestBody
request
Body
)
{
return
mRepositoryManager
.
obtainRetrofitService
(
OrderPayService
.
class
)
.
toOrderPay
(
form
Body
);
.
toOrderPay
(
request
Body
);
}
@Override
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/OrderDetailItem.java
View file @
9f67a4da
...
...
@@ -2,11 +2,11 @@ package com.gingersoft.gsa.cloud.table.mvp.model.bean;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderDetail
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
static
com
.
gingersoft
.
gsa
.
cloud
.
base
.
common
.
bean
.
OrderDetail
.
FOOD_TYPE
;
import
static
com
.
gingersoft
.
gsa
.
cloud
.
base
.
common
.
bean
.
OrderDetail
.
getItemType
;
...
...
@@ -17,6 +17,7 @@ import static com.gingersoft.gsa.cloud.base.common.bean.OrderDetail.getItemType;
* 修订历史:2020-03-14
* 描述:已結賬訂單
*/
@Data
public
class
OrderDetailItem
implements
Serializable
{
/**
...
...
@@ -53,15 +54,15 @@ public class OrderDetailItem implements Serializable {
private
double
totalAmount
;
private
int
totalPoints
;
/**支付金額*/
private
double
amount
;
//
private double amount;
/**賬單小數*/
private
Double
rounding
;
/**服務費*/
private
Double
serviceAmount
;
private
String
payName
;
private
String
orderPayType
;
private
double
tipsPrice
;
private
byte
linePayType
;
//
private String payName;
//
private String orderPayType;
//
private double tipsPrice;
//
private byte linePayType;
/**折扣ID*/
private
Long
discountId
;
/**折扣金額*/
...
...
@@ -78,6 +79,7 @@ public class OrderDetailItem implements Serializable {
private
String
endTime
;
private
List
<
OrderBean
.
OrderDetailsBean
>
orderDetails
;
private
List
<
orderPayBean
>
orderPays
;
/**
* 訂單狀態:0:未支付;1:待確認(已支付, 待餐廳確認);2:制作中(餐厅确认);3:派送中;4:确认收货(完成);5:是否评论;6:取消;
...
...
@@ -90,190 +92,24 @@ public class OrderDetailItem implements Serializable {
public
static
final
byte
STATUS_COMMENT
=
5
;
public
static
final
byte
STATUS_CANCEL
=
6
;
public
long
getId
()
{
return
id
;
}
public
void
setId
(
long
id
)
{
this
.
id
=
id
;
}
public
String
getTableName
()
{
return
tableName
;
}
public
void
setTableName
(
String
tableName
)
{
this
.
tableName
=
tableName
;
}
public
int
getTableId
()
{
return
tableId
;
}
public
void
setTableId
(
int
tableId
)
{
this
.
tableId
=
tableId
;
}
public
String
getOrderNo
()
{
return
orderNo
;
}
public
void
setOrderNo
(
String
orderNo
)
{
this
.
orderNo
=
orderNo
;
}
public
String
getOrderPayType
()
{
return
orderPayType
;
}
public
void
setOrderPayType
(
String
orderPayType
)
{
this
.
orderPayType
=
orderPayType
;
}
public
Double
getRounding
()
{
return
rounding
;
}
public
void
setRounding
(
Double
rounding
)
{
this
.
rounding
=
rounding
;
}
public
Double
getServiceAmount
()
{
return
serviceAmount
;
}
public
void
setServiceAmount
(
Double
serviceAmount
)
{
this
.
serviceAmount
=
serviceAmount
;
}
public
double
getTipsPrice
()
{
return
tipsPrice
;
}
public
void
setTipsPrice
(
double
tipsPrice
)
{
this
.
tipsPrice
=
tipsPrice
;
}
public
byte
getLinePayType
()
{
return
linePayType
;
}
public
void
setLinePayType
(
byte
linePayType
)
{
this
.
linePayType
=
linePayType
;
}
public
String
getPayName
()
{
return
payName
;
}
public
void
setPayName
(
String
payName
)
{
this
.
payName
=
payName
;
}
public
int
getStatus
()
{
return
status
;
}
public
void
setStatus
(
int
status
)
{
this
.
status
=
status
;
}
public
double
getTotalAmount
()
{
return
totalAmount
;
}
public
void
setTotalAmount
(
double
totalAmount
)
{
this
.
totalAmount
=
totalAmount
;
}
public
int
getTotalPoints
()
{
return
totalPoints
;
}
public
void
setTotalPoints
(
int
totalPoints
)
{
this
.
totalPoints
=
totalPoints
;
}
public
double
getAmount
()
{
return
amount
;
}
public
void
setAmount
(
double
amount
)
{
this
.
amount
=
amount
;
}
public
double
getDiscountAmount
()
{
return
discountAmount
;
}
public
void
setDiscountAmount
(
double
discountAmount
)
{
this
.
discountAmount
=
discountAmount
;
}
public
double
getDiscountValue
()
{
return
discountValue
;
}
public
void
setDiscountValue
(
double
discountValue
)
{
this
.
discountValue
=
discountValue
;
}
public
int
getType
()
{
return
type
;
}
public
void
setType
(
int
type
)
{
this
.
type
=
type
;
}
public
String
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
String
createTime
)
{
this
.
createTime
=
createTime
;
}
public
String
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
String
endTime
)
{
this
.
endTime
=
endTime
;
}
public
int
getPerson
()
{
return
person
;
}
public
void
setPerson
(
int
person
)
{
this
.
person
=
person
;
}
public
Long
getDiscountId
()
{
return
discountId
;
}
@Data
public
static
class
orderPayBean
{
private
long
id
;
private
long
lineOrderId
;
private
int
payType
;
private
Date
payTime
;
private
double
amount
;
private
double
tipsPrice
;
private
int
status
;
private
int
linePayType
;
private
double
paySales
;
private
String
payName
;
public
void
setDiscountId
(
Long
discountId
)
{
this
.
discountId
=
discountId
;
}
public
String
getRemark
()
{
return
remark
;
}
public
void
setRemark
(
String
remark
)
{
this
.
remark
=
remark
;
}
public
List
<
OrderBean
.
OrderDetailsBean
>
getOrderDetails
()
{
return
orderDetails
;
}
public
void
setOrderDetails
(
List
<
OrderBean
.
OrderDetailsBean
>
orderDetails
)
{
this
.
orderDetails
=
orderDetails
;
}
// public static List<OrderDetail> orderTransOrderDetails(List<OrderBean.OrderDetailsBean> orderDetails) {
// List<OrderDetail> orderDetailList = new ArrayList<>();
// OrderDetail parentOrderDetail = null;
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/MemberService.java
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
model
.
service
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult2
;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.BaseRespose
;
import
java.util.Map
;
import
io.reactivex.Observable
;
import
me.jessyan.retrofiturlmanager.RetrofitUrlManager
;
import
retrofit2.http.Field
;
...
...
@@ -20,6 +23,6 @@ public interface MemberService {
@Headers
({
"Domain-Name: update_version"
})
@GET
(
"member/getMemberInfo?"
+
RetrofitUrlManager
.
IDENTIFICATION_PATH_SIZE
+
2
)
Observable
<
BaseResult
>
queryMember
(
@Query
(
"type"
)
int
type
,
@Query
(
"parm"
)
String
parm
,
@Query
(
"gsposShopId"
)
String
shopName
);
Observable
<
BaseResult
2
>
queryMember
(
@Query
(
"type"
)
int
type
,
@Query
(
"parm"
)
String
parm
,
@Query
(
"gsposShopId"
)
String
shopName
);
}
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/service/OrderPayService.java
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
model
.
service
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
java.util.List
;
import
io.reactivex.Observable
;
import
me.jessyan.retrofiturlmanager.RetrofitUrlManager
;
import
okhttp3.RequestBody
;
import
retrofit2.http.Body
;
import
retrofit2.http.Field
;
import
retrofit2.http.FormUrlEncoded
;
import
retrofit2.http.GET
;
import
retrofit2.http.POST
;
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
View file @
9f67a4da
...
...
@@ -322,6 +322,14 @@ public class BaseOrderPresenter<M extends BaseOrderContract.Model, V extends Bas
}
/**
* 添加會員項
*/
private
void
addOrderMember
(){
}
/**
* 添加餐檯服務費
*/
private
void
addTableServiceAmount
()
{
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/MealStandPresenter.java
View file @
9f67a4da
...
...
@@ -10,6 +10,8 @@ import com.billy.cc.core.component.CC;
import
com.gingersoft.gsa.cloud.aspectj.XClickUtil
;
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult2
;
import
com.gingersoft.gsa.cloud.base.common.bean.MemberInfo
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderDetail
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
...
...
@@ -163,7 +165,7 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
@Override
public
void
onRequestPermissionSuccess
()
{
Intent
intent
=
new
Intent
(
IActivity
,
CaptureActivity
.
class
);
IActivity
.
startActivityForResult
(
intent
,
MealStandActivity
.
SCAN_REQUEST_CODE
);
IActivity
.
startActivityForResult
(
intent
,
MealStandActivity
.
SCAN_REQUEST_CODE
);
}
@Override
...
...
@@ -884,18 +886,28 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
});
}
public
void
queryMember
(
int
type
,
String
sign
,
String
shopName
)
{
mModel
.
queryMember
(
type
,
sign
,
shopName
)
public
void
queryMember
(
int
type
,
String
parm
,
String
shopName
)
{
mModel
.
queryMember
(
type
,
parm
,
shopName
)
.
subscribeOn
(
Schedulers
.
io
())
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mRootView
))
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseResult
>(
mErrorHandler
)
{
.
subscribe
(
new
ErrorHandleSubscriber
<
BaseResult2
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
@NonNull
BaseResult
info
)
{
public
void
onNext
(
@NonNull
BaseResult2
info
)
{
if
(
info
!=
null
&&
info
.
getCode
().
equals
(
"1"
))
{
if
(
info
.
getData
()
!=
null
)
{
MemberInfo
memberInfo
=
JsonUtils
.
parseObject
(
info
.
getData
(),
MemberInfo
.
class
);
if
(
memberInfo
!=
null
)
{
mRootView
.
updateMemberInfo
(
memberInfo
);
}
}
else
{
mRootView
.
showMessage
(
"獲取會員信息失敗!"
);
}
}
else
{
mRootView
.
showMessage
(
info
.
getErrorMsg
());
}
}
});
}
...
...
@@ -1127,9 +1139,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
*/
public
void
updateFoodSoldoutCtrData
()
{
// if (mSoldoutCtrList.size() > 0) {
clearFoodSoldoutCtrData
();
addFoodSoldoutCtrItem
(
mSoldoutCtrList
);
setFoodSoldoutCtrData
(
mSoldoutCtrList
);
clearFoodSoldoutCtrData
();
addFoodSoldoutCtrItem
(
mSoldoutCtrList
);
setFoodSoldoutCtrData
(
mSoldoutCtrList
);
// }
}
...
...
@@ -1138,8 +1150,8 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
*/
public
void
updateComboItemSoldoutCtrData
()
{
// if (mSoldoutCtrList.size() > 0) {
updateFoodSoldoutCtrData
();
mComboAdapter
.
notifyDataSetChanged
();
updateFoodSoldoutCtrData
();
mComboAdapter
.
notifyDataSetChanged
();
// }
}
...
...
@@ -1148,10 +1160,10 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
*/
public
void
updateModifierSoldoutCtrData
()
{
// if (mSoldoutCtrList.size() > 0) {
clearModifierSoldoutCtrData
();
addModifierCtrItem
(
mSoldoutCtrList
);
setModifierSoldoutCtrData
(
mModifierList
,
mSoldoutCtrList
);
mModifierAdapter
.
notifyDataSetChanged
();
clearModifierSoldoutCtrData
();
addModifierCtrItem
(
mSoldoutCtrList
);
setModifierSoldoutCtrData
(
mModifierList
,
mSoldoutCtrList
);
mModifierAdapter
.
notifyDataSetChanged
();
// }
}
...
...
@@ -1754,11 +1766,13 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
if
(
item
.
getSelected
()
!=
0
)
{
if
(
item
.
getItemType
()
==
1
)
{
int
j
=
i
;
int
insertPosition
=
getEndInsertPosition
(
newOrderList
,
item
,
i
);
int
insertPosition
=
getEndInsertPosition
(
newOrderList
,
item
,
i
);
if
(
insertPosition
!=
-
1
)
{
j
=
insertPosition
+
1
;
}
else
{
j
++;
if
(
insertPosition
<
newOrderList
.
size
())
{
j
=
insertPosition
+
1
;
}
else
{
j
=
insertPosition
;
}
}
long
id
=
item
.
isNew
()
?
item
.
getProductId
()
:
item
.
getId
();
OrderDetail
modifierTransOrderDetail
=
OrderDetail
.
modifierTransOrderDetail
(
modifierItem
,
id
,
item
.
getProductId
(),
1
);
...
...
@@ -1775,9 +1789,9 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
return
addPosition
;
}
private
int
getEndInsertPosition
(
List
<
OrderDetail
>
newOrderList
,
OrderDetail
orderDetail
,
int
currentI
)
{
for
(
int
i
=
currentI
;
i
<
mOrderFood
List
.
size
();
i
++)
{
OrderDetail
item
=
mOrderFood
List
.
get
(
i
);
private
int
getEndInsertPosition
(
List
<
OrderDetail
>
newOrderList
,
OrderDetail
orderDetail
,
int
currentI
)
{
for
(
int
i
=
currentI
;
i
<
newOrder
List
.
size
();
i
++)
{
OrderDetail
item
=
newOrder
List
.
get
(
i
);
//往下找
int
nextIndex
=
i
+
1
;
// if (mOrderFoodList.size() == (nextIndex - 1) && mOrderFoodList.get(nextIndex).getItemType() == 3) {
...
...
@@ -1789,11 +1803,11 @@ public class MealStandPresenter extends BaseOrderPresenter<MealStandContract.Mod
// return i;
// }
boolean
samePackage
=
item
.
getParentProductId
()
==
orderDetail
.
getProductId
()
||
item
.
getProductId
()
==
orderDetail
.
getProductId
();
if
(
mOrderFood
List
.
size
()
==
nextIndex
&&
samePackage
)
{
if
(
newOrder
List
.
size
()
==
nextIndex
&&
samePackage
)
{
//最後一個
return
nextIndex
;
}
if
(
mOrderFood
List
.
get
(
nextIndex
).
getItemType
()
!=
3
&&
samePackage
)
{
if
(
newOrder
List
.
get
(
nextIndex
).
getItemType
()
!=
3
&&
samePackage
)
{
//添加到主食品細項最後面
return
i
;
}
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderPayPresenter.java
View file @
9f67a4da
...
...
@@ -8,6 +8,7 @@ import com.chad.library.adapter.base.BaseQuickAdapter;
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.common.bean.BaseResult
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderDetail
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderPayRequest
;
import
com.gingersoft.gsa.cloud.base.common.bean.PayMethod
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
com.gingersoft.gsa.cloud.base.utils.JsonUtils
;
...
...
@@ -212,14 +213,18 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
OrderPayView
orderPayView
=
IActivity
.
getGsaPayView
();
if
(
orderPayView
.
getBillMoneyList
()
==
null
||
orderPayView
.
getBillMoneyList
().
size
()
==
0
)
return
;
RequestBody
requestBody
=
new
FormBody
.
Builder
()
.
add
(
"orderPayType"
,
String
.
valueOf
(
orderPayType
))
.
add
(
"payType"
,
String
.
valueOf
(
orderPayView
.
getBillMoneyList
().
get
(
0
).
getId
()))
.
add
(
"orderId"
,
String
.
valueOf
(
MyOrderManage
.
getInstance
().
getOrderId
()))
.
add
(
"amount"
,
String
.
valueOf
(
orderPayView
.
getBillMoney
()))
.
add
(
"linePayType"
,
String
.
valueOf
(
orderPayView
.
getLinePayType
()))
.
add
(
"tipsPrice"
,
String
.
valueOf
(
orderPayView
.
getTipsPrice
()))
.
build
();
// RequestBody requestBody = new FormBody.Builder()
// .add("orderPayType", String.valueOf(orderPayType))
// .add("payType", String.valueOf(orderPayView.getBillMoneyList().get(0).getId()))
// .add("orderId", String.valueOf(MyOrderManage.getInstance().getOrderId()))
// .add("amount", String.valueOf(orderPayView.getBillMoney()))
// .add("linePayType", String.valueOf(orderPayView.getLinePayType()))
// .add("tipsPrice", String.valueOf(orderPayView.getTipsPrice()))
// .build();
String
deleteOrderRequest
=
GsonUtils
.
GsonString
(
getOrderPayRequest
(
orderPayView
));
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
deleteOrderRequest
);
mModel
.
toOrderPay
(
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
...
...
@@ -249,6 +254,32 @@ public class OrderPayPresenter extends BaseOrderPresenter<OrderPayContract.Model
});
}
private
OrderPayRequest
getOrderPayRequest
(
OrderPayView
orderPayView
)
{
List
<
PayMethod
>
payMethodList
=
orderPayView
.
getBillMoneyList
();
OrderPayRequest
payRequest
=
new
OrderPayRequest
();
payRequest
.
setOrderId
(
MyOrderManage
.
getInstance
().
getOrderId
());
payRequest
.
setOrderPayType
(
orderPayType
);
payRequest
.
setLinePayType
(
orderPayView
.
getLinePayType
());
for
(
int
i
=
0
;
i
<
payMethodList
.
size
();
i
++)
{
PayMethod
payMethod
=
payMethodList
.
get
(
i
);
OrderPayRequest
.
orderPay
orderPay
=
new
OrderPayRequest
.
orderPay
();
orderPay
.
setPayType
(
payMethod
.
getId
());
if
(
payMethodList
.
size
()
==
2
)
{
if
(
i
==
1
)
{
//小费放在第二种支付方式里面
orderPay
.
setTipsPrice
(
orderPayView
.
getTipsPrice
());
}
}
else
{
orderPay
.
setTipsPrice
(
orderPayView
.
getTipsPrice
());
}
orderPay
.
setAmount
(
payMethod
.
getPayMoney
());
payRequest
.
getOrderPays
().
add
(
orderPay
);
}
return
payRequest
;
}
/**
* 修改訂單更新支付方式
*/
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
View file @
9f67a4da
...
...
@@ -183,6 +183,10 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
mRootView
.
setCurrentOperatType
(
TableOperatTypeConstant
.
move_table_4
);
break
;
case
2
:
//分檯
mRootView
.
setCurrentOperatType
(
TableOperatTypeConstant
.
splite_table_1
);
break
;
case
3
:
//上菜紙
mRootView
.
setCurrentOperatType
(
TableOperatTypeConstant
.
print_parper_2
);
break
;
...
...
@@ -201,7 +205,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
// mBottomFunctionList.addAll(functions);
mBottomFunctionList
.
add
(
new
Function
((
long
)
1
,
"重置檯號"
,
ArmsUtils
.
getColor
(
IActivity
,
R
.
color
.
theme_black
),
ArmsUtils
.
getDimens
(
IActivity
,
R
.
dimen
.
sp_14
),
R
.
mipmap
.
table_init
));
mBottomFunctionList
.
add
(
new
Function
((
long
)
2
,
"轉檯"
,
ArmsUtils
.
getColor
(
IActivity
,
R
.
color
.
theme_black
),
ArmsUtils
.
getDimens
(
IActivity
,
R
.
dimen
.
sp_14
),
R
.
mipmap
.
table_move
));
//
mBottomFunctionList.add(new Function((long) 3, "分檯", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_splite));
mBottomFunctionList
.
add
(
new
Function
((
long
)
3
,
"分檯"
,
ArmsUtils
.
getColor
(
IActivity
,
R
.
color
.
theme_black
),
ArmsUtils
.
getDimens
(
IActivity
,
R
.
dimen
.
sp_14
),
R
.
mipmap
.
table_splite
));
// mBottomFunctionList.add(new Function((long) 4, "skyorder", ArmsUtils.getColor(IActivity, R.color.theme_black), ArmsUtils.getDimens(IActivity, R.dimen.sp_14), R.mipmap.table_skyorder));
mBottomFunctionList
.
add
(
new
Function
((
long
)
5
,
"上菜紙"
,
ArmsUtils
.
getColor
(
IActivity
,
R
.
color
.
theme_black
),
ArmsUtils
.
getDimens
(
IActivity
,
R
.
dimen
.
sp_14
),
R
.
mipmap
.
table_paper
));
}
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
View file @
9f67a4da
...
...
@@ -35,12 +35,14 @@ import androidx.recyclerview.widget.RecyclerView;
import
androidx.viewpager.widget.ViewPager
;
import
com.gingersoft.gsa.cloud.base.application.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.base.common.bean.MemberInfo
;
import
com.gingersoft.gsa.cloud.base.common.bean.OrderBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.TableBean
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.MyOrderManage
;
import
com.gingersoft.gsa.cloud.base.common.bean.mealManage.OpenTableManage
;
import
com.gingersoft.gsa.cloud.base.utils.LanguageUtils
;
import
com.gingersoft.gsa.cloud.base.utils.VibratorUtils
;
import
com.gingersoft.gsa.cloud.base.utils.encryption.Md5
;
import
com.gingersoft.gsa.cloud.base.utils.other.SPUtils
;
import
com.gingersoft.gsa.cloud.database.bean.Food
;
import
com.gingersoft.gsa.cloud.database.utils.ComboItemDaoUtils
;
...
...
@@ -58,11 +60,13 @@ import com.gingersoft.gsa.cloud.constans.MealConstant;
import
com.gingersoft.gsa.cloud.table.mvp.model.bean.SoldoutCtrFood
;
import
com.gingersoft.gsa.cloud.table.mvp.presenter.MealStandPresenter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BaseFragmentAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.MemberInfoAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.SelectMealAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.fragment.FineItemAllFragment
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.ChooseNumberDialog
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.meal.FoodGroupAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.UseMemberDialog
;
import
com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem
;
import
com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerConfig
;
import
com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridLayoutManager
;
import
com.gingersoft.gsa.cloud.ui.recylcler.Indicator.PagerGridSnapHelper
;
...
...
@@ -89,6 +93,7 @@ import org.simple.eventbus.EventBus;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Collection
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -235,11 +240,16 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@BindView
(
R2
.
id
.
tv_fine_type
)
TextView
tv_fine_type
;
private
ChooseNumberDialog
chooseNumberDialog
;
private
FragmentManager
fm
;
private
FineItemAllFragment
modMsgFineItemFragment
,
modSasteFineItemFragment
;
private
ChooseNumberDialog
mChooseNumberDialog
;
private
UseMemberDialog
mUseMemberDialog
;
private
MemberInfoAdapter
mMemberInfoAdapter
;
private
List
<
SectionTextItem
>
mMemberInfoList
;
private
RecyclerView
recycler_member_info
;
/**
* 是否初始化细项布局
*/
...
...
@@ -502,6 +512,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
showViewModeVisibility
(
MealConstant
.
fine_ViewMode
,
MealConstant
.
fine_tabs_ViewMode
);
}
@Override
public
void
setCurrentFinePage
()
{
if
(
currentFinePage
==
0
)
{
...
...
@@ -556,27 +567,64 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@OnClick
(
R2
.
id
.
btn_table
)
void
onClickTable
()
{
//type取值:1qrCdoetype,2:手機號,3:memberId
new
UseMemberDialog
.
BottomLayoutBuilder
(
this
)
// mUseMemberDialog = new UseMemberDialog(this);
mUseMemberDialog
=
new
UseMemberDialog
.
BottomLayoutBuilder
(
this
)
.
setOnLayoutClickListener
(
new
UseMemberDialog
.
BottomLayoutBuilder
.
OnLayoutClickListener
()
{
@Override
public
void
onInputPhone
(
UseMemberDialog
dialog
,
String
phone
)
{
Map
<
String
,
String
>
parameterMap
=
new
HashMap
<>();
parameterMap
.
put
(
"type"
,
"2"
);
parameterMap
.
put
(
"parm"
,
phone
);
// Md5 md5 = new Md5();
// String sign = md5.getMD5ofStr(parameterMap);
// mPresenter.queryMember(2,sign,GsaCloudApplication.getGsPosShopId(mContext));
mPresenter
.
queryMember
(
2
,
phone
,
GsaCloudApplication
.
getGsPosShopId
(
mContext
));
}
@Override
public
void
onScanAction
(
UseMemberDialog
dialog
)
{
mPresenter
.
toScanActivity
();
}
@Override
public
void
setAdapter
(
RecyclerView
recycler_member_info
)
{
if
(
mMemberInfoList
==
null
)
{
mMemberInfoList
=
new
ArrayList
<>();
}
if
(
mMemberInfoAdapter
==
null
)
{
mMemberInfoAdapter
=
new
MemberInfoAdapter
(
mMemberInfoList
);
}
recycler_member_info
.
setAdapter
(
mMemberInfoAdapter
);
}
@Override
public
void
clearMemberInfo
()
{
if
(
mMemberInfoList
.
size
()
>
0
)
{
mMemberInfoList
.
clear
();
}
mMemberInfoAdapter
.
notifyDataSetChanged
();
}
})
.
build
()
.
show
();
.
build
();
mUseMemberDialog
.
show
();
}
@Override
public
void
updateMemberInfo
(
MemberInfo
memberInfo
)
{
if
(
mUseMemberDialog
!=
null
)
{
List
<
SectionTextItem
>
data
=
getMemberInfoItem
(
memberInfo
);
if
(
mMemberInfoList
.
size
()
>
0
)
{
mMemberInfoList
.
clear
();
}
mMemberInfoList
.
addAll
(
data
);
mMemberInfoAdapter
.
notifyDataSetChanged
();
}
}
private
List
<
SectionTextItem
>
getMemberInfoItem
(
MemberInfo
memberInfo
)
{
List
<
SectionTextItem
>
textItems
=
new
ArrayList
<>();
textItems
.
add
(
new
SectionTextItem
(
"會員號碼: "
+
memberInfo
.
getMemberNo
()));
textItems
.
add
(
new
SectionTextItem
(
"會員電話: "
+
memberInfo
.
getPhone
()));
textItems
.
add
(
new
SectionTextItem
(
"會員名稱: "
+
memberInfo
.
getMemberName
()));
textItems
.
add
(
new
SectionTextItem
(
"積分: "
+
memberInfo
.
getMemberPoint
()));
return
textItems
;
}
@OnClick
(
R2
.
id
.
btn_multiple_selection
)
void
onClickMultipleSelection
()
{
...
...
@@ -671,9 +719,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
mPresenter
.
changeNumber
(
i
);
break
;
case
99
:
ChooseNumberDialog
c
hooseNumberDialog
=
new
ChooseNumberDialog
(
this
);
c
hooseNumberDialog
.
builder
();
c
hooseNumberDialog
.
setOnClickListener
(
new
ChooseNumberDialog
.
OnClickListener
()
{
ChooseNumberDialog
mC
hooseNumberDialog
=
new
ChooseNumberDialog
(
this
);
mC
hooseNumberDialog
.
builder
();
mC
hooseNumberDialog
.
setOnClickListener
(
new
ChooseNumberDialog
.
OnClickListener
()
{
@Override
public
void
onComfirmClick
(
String
number
)
{
...
...
@@ -687,9 +735,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public
void
onBackPage
()
{
}
});
c
hooseNumberDialog
.
setValueHint
(
"請輸入數量"
);
c
hooseNumberDialog
.
setCancelable
(
true
);
c
hooseNumberDialog
.
show
();
mC
hooseNumberDialog
.
setValueHint
(
"請輸入數量"
);
mC
hooseNumberDialog
.
setCancelable
(
true
);
mC
hooseNumberDialog
.
show
();
break
;
}
}
else
if
(
id
==
R
.
id
.
iv_fine_back
)
{
...
...
@@ -764,14 +812,14 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
@Override
public
void
showChoosePeopleNumDialog
(
boolean
isNeedCancel
)
{
if
(
c
hooseNumberDialog
==
null
)
{
c
hooseNumberDialog
=
new
ChooseNumberDialog
(
this
);
c
hooseNumberDialog
.
builder
();
c
hooseNumberDialog
.
setValueHint
(
"請輸入人數"
);
if
(
mC
hooseNumberDialog
==
null
)
{
mC
hooseNumberDialog
=
new
ChooseNumberDialog
(
this
);
mC
hooseNumberDialog
.
builder
();
mC
hooseNumberDialog
.
setValueHint
(
"請輸入人數"
);
// mInputNumberDialog2.setTitle(LanguageUtils.get_language_system(this, "Meal.Mannumber", "Number"));
// mInputNumberDialog2.setHeadLayoutVisibility(View.VISIBLE);
if
(!
isNeedCancel
)
c
hooseNumberDialog
.
setOnBackClickListener
(
new
ChooseNumberDialog
.
OnBackClickListener
()
{
mC
hooseNumberDialog
.
setOnBackClickListener
(
new
ChooseNumberDialog
.
OnBackClickListener
()
{
@Override
public
void
OnBackClick
()
{
...
...
@@ -785,7 +833,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
}
else
{
backPageBtnVisibility
=
View
.
VISIBLE
;
}
c
hooseNumberDialog
.
setOnClickListener
(
new
ChooseNumberDialog
.
OnClickListener
()
{
mC
hooseNumberDialog
.
setOnClickListener
(
new
ChooseNumberDialog
.
OnClickListener
()
{
@Override
public
void
onComfirmClick
(
String
number
)
{
...
...
@@ -803,9 +851,9 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
returnBeforeActivity
(
true
);
}
});
c
hooseNumberDialog
.
setCancelable
(
isNeedCancel
);
mC
hooseNumberDialog
.
setCancelable
(
isNeedCancel
);
}
c
hooseNumberDialog
.
show
();
mC
hooseNumberDialog
.
show
();
}
@Override
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
View file @
9f67a4da
...
...
@@ -292,8 +292,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
break
;
case
TableOperatTypeConstant
.
move_table_4
:
if
(
mPresenter
.
getOriginalTableId
()
==
dataBean
.
getId
()){
CommonTipDialog
.
showCancelDialog
(
this
,
"相同檯不能转檯"
,
OrderContentPresenter
.
class
,
mPresenter
,
""
,
null
,
null
);
CommonTipDialog
.
showCancelDialog
(
this
,
"相同檯不能转檯"
,
OrderContentPresenter
.
class
,
mPresenter
,
""
,
null
,
null
);
return
;
}
//獲取餐檯狀態
...
...
@@ -334,7 +333,9 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
public
void
setOperatTitle
()
{
switch
(
mPresenter
.
getCurrentChooseOperatType
())
{
case
TableOperatTypeConstant
.
splite_table_1
:
tv_operat_hint
.
setText
(
"請選擇檯號"
);
tv_operat_content
.
setText
(
""
);
mTopBar
.
setTitle
(
"分檯"
);
break
;
case
TableOperatTypeConstant
.
print_parper_2
:
tv_operat_hint
.
setText
(
"請選擇檯號"
);
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderDetailActivity.java
View file @
9f67a4da
...
...
@@ -174,7 +174,7 @@ public class OrderDetailActivity extends BaseActivity<OrderDetailPresenter> impl
if
(!
TextUtils
.
isEmpty
(
orderDetailItem
.
getEndTime
()))
{
tv_pay_time
.
setText
(
payBill
+
TimeUtil
.
getStringByFormat
(
new
Date
(
orderDetailItem
.
getEndTime
()),
TimeUtil
.
dateFormatYMDHM
));
}
tv_total_money
.
setText
(
"$"
+
orderDetailItem
.
getAmount
());
tv_total_money
.
setText
(
"$"
+
orderDetailItem
.
get
Total
Amount
());
setOrderStatus
(
orderDetailItem
);
...
...
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/MemberInfoAdapter.java
0 → 100644
View file @
9f67a4da
package
com
.
gingersoft
.
gsa
.
cloud
.
table
.
mvp
.
ui
.
adapter
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem
;
import
com.gingersoft.gsa.cloud.ui.bean.view.SectionTextItem3
;
import
java.util.List
;
import
androidx.annotation.Nullable
;
public
class
MemberInfoAdapter
extends
BaseQuickAdapter
<
SectionTextItem
,
BaseViewHolder
>
{
public
MemberInfoAdapter
(
@Nullable
List
<
SectionTextItem
>
data
)
{
super
(
R
.
layout
.
meal_item_member_info
,
data
);
}
@Override
protected
void
convert
(
BaseViewHolder
helper
,
SectionTextItem
item
)
{
helper
.
setText
(
R
.
id
.
tv_text
,
item
.
getText
());
}
}
table-module/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/widget/UseMemberDialog.java
View file @
9f67a4da
...
...
@@ -19,6 +19,8 @@ import android.widget.FrameLayout;
import
android.widget.ImageView
;
import
android.widget.LinearLayout
;
import
com.chad.library.adapter.base.BaseQuickAdapter
;
import
com.gingersoft.gsa.cloud.base.common.bean.MemberInfo
;
import
com.gingersoft.gsa.cloud.table.R
;
import
com.gingersoft.gsa.cloud.ui.adapter.BasTextSectiontAdapter
;
import
com.gingersoft.gsa.cloud.ui.bean.mode.BrandsBean
;
...
...
@@ -34,9 +36,11 @@ import com.qmuiteam.qmui.widget.section.QMUISection;
import
com.qmuiteam.qmui.widget.section.QMUIStickySectionAdapter
;
import
com.qmuiteam.qmui.widget.section.QMUIStickySectionLayout
;
import
com.rengwuxian.materialedittext.MaterialEditText
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Objects
;
import
androidx.annotation.NonNull
;
import
androidx.core.content.ContextCompat
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
...
...
@@ -59,6 +63,7 @@ public class UseMemberDialog extends Dialog {
private
View
mContentView
;
private
boolean
mIsAnimating
=
false
;
private
OnBottomSheetShowListener
mOnBottomSheetShowListener
;
public
UseMemberDialog
(
Context
context
)
{
...
...
@@ -204,6 +209,7 @@ public class UseMemberDialog extends Dialog {
void
onShow
();
}
/**
* 生成宫格类型的 {@link QMUIBottomSheet} 对话框。
*/
...
...
@@ -212,10 +218,12 @@ public class UseMemberDialog extends Dialog {
private
Context
mContext
;
private
UseMemberDialog
mDialog
;
private
MemberInfo
mMemberInfo
;
private
QMUITopBar
mTopBar
;
private
RecyclerView
.
LayoutManager
mLayoutManager
;
private
RecyclerView
recycler_mem
e
ber_info
;
private
RecyclerView
recycler_member_info
;
private
MaterialEditText
ed_phone
;
private
ImageView
iv_no_data
;
private
LinearLayout
ll_bottom
;
...
...
@@ -229,6 +237,9 @@ public class UseMemberDialog extends Dialog {
mContext
=
context
;
}
public
void
setMemberInfo
(
MemberInfo
mMemberInfo
)
{
this
.
mMemberInfo
=
mMemberInfo
;
}
@Override
public
void
onClick
(
View
v
)
{
...
...
@@ -251,7 +262,7 @@ public class UseMemberDialog extends Dialog {
private
View
buildViews
()
{
View
view
=
View
.
inflate
(
mContext
,
getContentViewLayoutId
(),
null
);
mTopBar
=
view
.
findViewById
(
R
.
id
.
topbar
);
recycler_mem
e
ber_info
=
view
.
findViewById
(
R
.
id
.
recycler_memeber_info
);
recycler_member_info
=
view
.
findViewById
(
R
.
id
.
recycler_memeber_info
);
ed_phone
=
view
.
findViewById
(
R
.
id
.
ed_phone
);
iv_no_data
=
view
.
findViewById
(
R
.
id
.
iv_no_data
);
btn_query_memeber
=
view
.
findViewById
(
R
.
id
.
btn_query_memeber
);
...
...
@@ -260,23 +271,23 @@ public class UseMemberDialog extends Dialog {
btn_clear_member
=
view
.
findViewById
(
R
.
id
.
btn_use_member
);
initTopbar
();
init
Sticky
Layout
();
init
Recycler
Layout
();
btn_query_memeber
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
if
(
TextUtils
.
isEmpty
(
getTvPhone
())){
if
(
TextUtils
.
isEmpty
(
getTvPhone
()))
{
ed_phone
.
setError
(
"請輸入會員手機號"
);
return
;
}
if
(
onLayoutClickListener
!=
null
)
{
onLayoutClickListener
.
onInputPhone
(
mDialog
,
getTvPhone
());
if
(
onLayoutClickListener
!=
null
)
{
onLayoutClickListener
.
onInputPhone
(
mDialog
,
getTvPhone
());
}
}
});
btn_scan
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
if
(
onLayoutClickListener
!=
null
)
{
if
(
onLayoutClickListener
!=
null
)
{
onLayoutClickListener
.
onScanAction
(
mDialog
);
}
}
...
...
@@ -290,14 +301,26 @@ public class UseMemberDialog extends Dialog {
btn_clear_member
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
if
(
onLayoutClickListener
!=
null
)
{
onLayoutClickListener
.
clearMemberInfo
();
}
}
});
if
(
onLayoutClickListener
!=
null
)
{
onLayoutClickListener
.
setAdapter
(
recycler_member_info
);
}
return
view
;
}
private
void
initTopbar
()
{
mTopBar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
mContext
,
R
.
color
.
theme_color
));
mTopBar
.
addRightTextButton
(
"清除"
,
R
.
id
.
btn_right
)
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
}
});
mTopBar
.
addLeftBackImageButton
().
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
...
...
@@ -308,11 +331,15 @@ public class UseMemberDialog extends Dialog {
mTopBar
.
setTitle
(
"使用會員"
);
}
private
void
init
Sticky
Layout
()
{
private
void
init
Recycler
Layout
()
{
mLayoutManager
=
createLayoutManager
();
// mSectionLayout
.setLayoutManager(mLayoutManager);
recycler_member_info
.
setLayoutManager
(
mLayoutManager
);
}
public
void
setAdapter
(
BaseQuickAdapter
adapter
)
{
recycler_member_info
.
setAdapter
(
adapter
);
adapter
.
notifyDataSetChanged
();
}
private
RecyclerView
.
LayoutManager
createLayoutManager
()
{
return
new
LinearLayoutManager
(
mContext
)
{
...
...
@@ -324,7 +351,7 @@ public class UseMemberDialog extends Dialog {
};
}
private
String
getTvPhone
(){
private
String
getTvPhone
()
{
return
ed_phone
.
getText
().
toString
();
}
...
...
@@ -350,6 +377,10 @@ public class UseMemberDialog extends Dialog {
void
onInputPhone
(
UseMemberDialog
dialog
,
String
phone
);
void
onScanAction
(
UseMemberDialog
dialog
);
void
setAdapter
(
RecyclerView
recycler_member_info
);
void
clearMemberInfo
();
}
}
...
...
table-module/src/main/res/layout/meal_dialog_use_member.xml
View file @
9f67a4da
...
...
@@ -114,6 +114,4 @@
android:textSize=
"@dimen/sp_14"
/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
\ No newline at end of file
table-module/src/main/res/layout/meal_item_member_info.xml
0 → 100644
View file @
9f67a4da
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android=
"http://schemas.android.com/apk/res/android"
android:id=
"@+id/tv_text"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:paddingLeft=
"@dimen/dp_10"
android:paddingRight=
"@dimen/dp_10"
android:paddingTop=
"@dimen/dp_5"
android:paddingBottom=
"@dimen/dp_5"
android:gravity=
"center_vertical"
android:text=
"會員名稱"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_14"
/>
table-module/src/main/res/layout/table_activity_table.xml
View file @
9f67a4da
...
...
@@ -70,8 +70,7 @@
<ImageView
android:id=
"@+id/iv_tab_icon"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
/>
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_bottom_function"
...
...
@@ -87,7 +86,7 @@
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_55"
android:textColor=
"@color/theme_white_color"
android:background=
"@color/t
heme_grey_color
"
android:background=
"@color/t
ransparent
"
android:layout_alignParentBottom=
"true"
android:visibility=
"invisible"
android:text=
"取消"
/>
...
...
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