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
66c18f25
Commit
66c18f25
authored
Jan 07, 2021
by
宁斌
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1、N5支付,小費,退款,取消完善 2、餐檯模式送單第三層細項消失
parent
0cb22cb8
Hide whitespace changes
Inline
Side-by-side
Showing
91 changed files
with
2284 additions
and
1088 deletions
+2284
-1088
component-login/src/main/AndroidManifest.xml
+2
-1
component-login/src/main/debug/AndroidManifest.xml
+2
-0
component-login/src/main/java/com/gingersoft/gsa/cloud/login/ComponentLogin.java
+12
-0
component-main/src/main/java/com/gingersoft/gsa/cloud/main/ComponentMain.java
+7
-0
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/LookLogActivity.kt
+6
-1
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
+7
-2
component-pay/src/main/AndroidManifest.xml
+4
-1
component-pay/src/main/debug/AndroidManifest.xml
+3
-1
component-pay/src/main/java/com/gingersoft/gsa/cloud/pay/mvp/ui/activity/PayResultActivity.java
+153
-45
component-pay/src/main/res/layout/activity_pay_result.xml
+27
-21
component-print/src/main/java/com/joe/print/mvp/print/service/PrjService.java
+36
-11
component-print/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
+5
-1
component-table/src/main/AndroidManifest.xml
+9
-6
component-table/src/main/debug/AndroidManifest.xml
+9
-2
component-table/src/main/java/com/gingersoft/gsa/cloud/table/ComponentTable.java
+5
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/response/OrderManagerResponse.java
+1
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/utils/OrderAssemblyUtil.java
+1
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
+1
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
+1
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
+4
-2
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/orderManager/AllOrderPresenter.java
+98
-45
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
+4
-6
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/OrderPayActivity.java
+64
-36
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
+1
-1
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderCenterActivity.java
+5
-0
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderDetailActivity.java
+229
-181
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/OrderCenterAdapter.java
+34
-36
component-table/src/main/res/drawable/meal_food_group_point_focuese.xml
+5
-2
component-table/src/main/res/drawable/meal_food_group_point_unfocused.xml
+6
-2
component-table/src/main/res/layout/activity_order_detail.xml
+2
-2
component-table/src/main/res/layout/table_activity_meal_stand.xml
+8
-5
config.gradle
+3
-3
library-base/src/main/java/com/jess/arms/integration/AppManager.java
+26
-0
library-common/proguard.cfg
+3
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
+18
-5
library-common/src/main/java/com/gingersoft/gsa/cloud/common/config/LoganConfig.java
+10
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/config/expandconfig/FunctionExtendedConfiguration.java
+19
-11
library-common/src/main/java/com/gingersoft/gsa/cloud/common/constans/OrderTypeConstans.java
+25
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/BasePosCallback.java
+60
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosPayStatusExceptionCallback.java
+23
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosRefundStatusExceptionCallback.java
+24
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosSettlementStatusExceptionCallback.java
+22
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosTipsStatusExceptionCallback.java
+18
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosVoidStatusExceptionCallback.java
+18
-0
library-common/src/main/java/com/gingersoft/gsa/cloud/common/logan/LoganManager.java
+7
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/common/utils/AppDevices.java
+1
-1
library-common/src/main/java/com/gingersoft/gsa/cloud/component/ComponentAction.java
+21
-11
library-common/src/main/res/layout/loadsir_pos_pay_status_exception.xml
+89
-0
library-common/src/main/res/layout/loadsir_pos_refund_status_exception.xml
+89
-0
library-common/src/main/res/layout/loadsir_pos_settlement_status_exception.xml
+89
-0
library-common/src/main/res/layout/loadsir_pos_tips_status_exception.xml
+89
-0
library-common/src/main/res/layout/loadsir_pos_void_status_exception.xml
+89
-0
library-common/src/main/res/mipmap-xhdpi/pay_status_exception.png
+0
-0
library-common/src/main/res/values/strings.xml
+8
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/order/bean/request/MealOrderPayRequest.java
+31
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/order/commodity/OrderDetail.java
+6
-6
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/BBPosPay.java
+0
-13
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/BasePay.java
+0
-15
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/N5PosPay.java
+0
-13
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/NomalPay.java
+0
-13
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PayMethod.java
+1
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PosActionStatusExceptionParam.java
+6
-3
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/contract/PayExceptionCode.java
+27
-4
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/contract/PayTypeContract.java
+1
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/IPosAction.java
+61
-21
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/OnPosActionListener.java
+15
-7
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/PosPay.java
+3
-5
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/bbpos/BBPosAction.java
+2
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/bean/PosMatter.java
+20
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/fragment/PosActionStatusExceptionFragment.java
+103
-52
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/request/bg/GetTxnIdRequest.java
+8
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/response/bg/GetCancelTxnIdResponse.java
+17
-0
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/response/bg/GetRefundIdResponse.java
+1
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/command/CommandImpl.java
+84
-30
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/constant/PayStatusCode.java
+31
-5
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/PrintActionImpl.java
+1
-17
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/RefundActionImpl.java
+29
-62
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/RetrievalActionImpl.java
+62
-32
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/SaleActionImpl.java
+50
-68
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/SettlementActionImpl.java
+4
-28
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/TipsActionImpl.java
+30
-65
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/VoidActionImpl.java
+29
-67
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/util/PayMethodUtils.java
+29
-1
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/widget/StatusLoadingDialog.java
+20
-31
library-order/src/main/res/layout/pay_fragment_pos_status_exception.xml
+34
-64
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintExecutor.java
+29
-7
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintSocketHolder.java
+17
-2
library-print/src/main/java/com/gingersoft/gsa/cloud/print/newprint/PrintUtil.java
+6
-0
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/OrderPayView.java
+15
-7
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/SearchKeyBoardView.java
+8
-2
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/base/NoScrollRecyclerView.java
+2
-0
No files found.
component-login/src/main/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -50,7 +50,8 @@
<uses-permission
android:name=
"android.permission.WRITE_SETTINGS"
/>
<!--相机权限-->
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
<!--获取Activity任务栈 权限-->
<uses-permission
android:name=
"android.permission.GET_TASKS"
/>
<uses-feature
android:name=
"android.hardware.camera"
...
...
component-login/src/main/debug/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -61,5 +61,7 @@
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.RECEIVE_USER_PRESENT"
/>
<!--获取Activity任务栈 权限-->
<uses-permission
android:name=
"android.permission.GET_TASKS"
/>
</manifest>
component-login/src/main/java/com/gingersoft/gsa/cloud/login/ComponentLogin.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
login
;
import
android.content.Intent
;
import
com.billy.cc.core.component.CC
;
import
com.billy.cc.core.component.CCResult
;
import
com.billy.cc.core.component.CCUtil
;
import
com.billy.cc.core.component.IComponent
;
import
com.etps.aca.lib.activity.CommandActivity
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity
;
...
...
@@ -42,6 +46,9 @@ public class ComponentLogin implements IComponent {
case
ComponentAction
.
Login
.
OPEN_LOGIN
:
openLoginActivity
(
cc
);
break
;
case
ComponentAction
.
Login
.
OPEN_INIT_HYWEB_PAGE
:
hywebOpenActivity
();
break
;
case
"getInfo"
:
getInfo
(
cc
);
break
;
...
...
@@ -82,4 +89,9 @@ public class ComponentLogin implements IComponent {
CC
.
sendCCResult
(
cc
.
getCallId
(),
CCResult
.
success
());
}
private
void
hywebOpenActivity
(){
Intent
intent
=
new
Intent
(
GsaCloudApplication
.
getAppContext
(),
LoginActivity
.
class
);
GsaCloudApplication
.
getAppContext
().
startActivity
(
intent
);
}
}
component-main/src/main/java/com/gingersoft/gsa/cloud/main/ComponentMain.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
main
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
com.billy.cc.core.component.CC
;
import
com.billy.cc.core.component.CCResult
;
import
com.billy.cc.core.component.IComponent
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.common.function.FModule
;
import
com.gingersoft.gsa.cloud.main.mvp.ui.activity.NewMainActivity
;
import
com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity
;
import
com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodMenuManageActivity
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.utils.ArmsUtils
;
public
class
ComponentMain
implements
IComponent
{
...
...
@@ -68,6 +74,7 @@ public class ComponentMain implements IComponent {
*/
@Override
public
boolean
onCall
(
CC
cc
)
{
Context
context
=
cc
.
getContext
();
String
actionName
=
cc
.
getActionName
();
switch
(
actionName
)
{
case
"showMainActivity"
:
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/LookLogActivity.kt
View file @
66c18f25
...
...
@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import
androidx.recyclerview.widget.LinearLayoutManager
import
com.chad.library.adapter.base.BaseQuickAdapter
import
com.chad.library.adapter.base.viewholder.BaseViewHolder
import
com.gingersoft.gsa.cloud.common.config.LoganConfig
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
import
com.gingersoft.gsa.cloud.common.utils.FileUtils
import
com.gingersoft.gsa.cloud.main.R
...
...
@@ -26,10 +27,14 @@ class LookLogActivity : AppCompatActivity() {
log_top_bar
.
setBackgroundColor
(
ContextCompat
.
getColor
(
this
,
R
.
color
.
theme_color
))
val
file
=
File
(
FileUtils
.
ERRORLOG_PATH
)
// val file = File((getExternalFilesDir(null)!!.absolutePath
// + File.separator + LoganConfig.FILE_NAME))
val
files
=
file
.
listFiles
()
files
?.
let
{
val
ml
=
ArrayList
<
File
>()
for
(
i
in
files
.
size
-
1
downTo
0
)
{
for
(
i
in
files
.
size
-
1
downTo
0
)
{
ml
.
add
(
files
[
i
])
}
rv_log
.
layoutManager
=
LinearLayoutManager
(
this
)
...
...
component-main/src/main/java/com/gingersoft/gsa/cloud/main/mvp/ui/activity/NewMainActivity.java
View file @
66c18f25
...
...
@@ -33,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext;
import
com.gingersoft.gsa.cloud.common.function.FunctionManager
;
import
com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean
;
import
com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.encryption.Aes
;
import
com.gingersoft.gsa.cloud.common.utils.other.SPUtils
;
...
...
@@ -224,13 +225,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
if
(
BuildConfig
.
DEBUG
)
{
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"複製Token"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"查看日誌"
));
//
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_mall_center
,
"商城中心"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_about_us
,
"關於我們"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_password
,
"修改密碼"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"設置"
));
}
// mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "查看日誌"));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"查看日誌"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"上傳日誌"
));
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_settlement_report
,
"清機"
));
if
(
BuildConfig
.
DEBUG
)
{
mainSideMenuBeans
.
add
(
new
MainSideMenuBean
(
R
.
drawable
.
ic_setting
,
"切換環境"
));
...
...
@@ -265,6 +267,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
case
"查看日誌"
:
launchActivity
(
new
Intent
(
mContext
,
LookLogActivity
.
class
));
break
;
case
"上傳日誌"
:
LoganManager
.
uploadLog
(
mContext
,
true
);
break
;
}
});
}
...
...
component-pay/src/main/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -3,7 +3,9 @@
package=
"com.gingersoft.gsa.cloud.pay"
>
<application>
<activity
android:name=
".mvp.ui.activity.PayResultActivity"
/>
<activity
android:name=
".mvp.ui.activity.PayResultActivity"
android:launchMode=
"singleTop"
/>
</application>
</manifest>
\ No newline at end of file
component-pay/src/main/debug/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -11,7 +11,9 @@
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".mvp.ui.activity.PayResultActivity"
/>
<activity
android:name=
".mvp.ui.activity.PayResultActivity"
android:launchMode=
"singleTop"
/>
<meta-data
android:name=
"com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
...
...
component-pay/src/main/java/com/gingersoft/gsa/cloud/pay/mvp/ui/activity/PayResultActivity.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
mvp
.
ui
.
activity
;
import
android.content.Intent
;
import
android.graphics.drawable.Drawable
;
import
android.os.Bundle
;
import
android.text.TextUtils
;
import
android.view.View
;
import
android.widget.LinearLayout
;
import
android.widget.ProgressBar
;
import
android.widget.RelativeLayout
;
import
android.widget.TextView
;
...
...
@@ -12,9 +14,17 @@ import androidx.annotation.NonNull;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
import
com.billy.cc.core.component.CC
;
import
com.billy.cc.core.component.CCUtil
;
import
com.gingersoft.gsa.cloud.common.constans.AppConstans
;
import
com.gingersoft.gsa.cloud.common.core.table.TableBean
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.BasePosCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosPayStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.utils.MoneyUtil
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.order.bean.event.MealPayResultParam
;
import
com.gingersoft.gsa.cloud.order.order.DoshokuOrder
;
import
com.gingersoft.gsa.cloud.pay.R
;
...
...
@@ -30,15 +40,21 @@ import com.gingersoft.gsa.cloud.pay.pos.PosPay;
import
com.gingersoft.gsa.cloud.pay.pos.fragment.PosActionStatusExceptionFragment
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.AdjustTipRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RetrievalRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SaleRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.KeyboardDialog
;
import
com.gingersoft.gsa.cloud.ui.widget.dialog.LoadingDialog
;
import
com.google.android.material.snackbar.BaseTransientBottomBar
;
import
com.jess.arms.base.BaseFragmentActivity
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.LoadSir
;
import
com.qmuiteam.qmui.alpha.QMUIAlphaButton
;
import
com.qmuiteam.qmui.widget.QMUITopBar
;
import
java.util.List
;
...
...
@@ -82,12 +98,21 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
TextView
tvTips
;
@BindView
(
R2
.
id
.
tv_printer
)
TextView
tvPrinter
;
@BindView
(
R2
.
id
.
tv_complate
)
TextView
tvComplate
;
//
@BindView(R2.id.tv_complate)
//
TextView tvComplate;
@BindView
(
R2
.
id
.
ll_bottom
)
LinearLayout
llBottom
;
@BindView
(
R2
.
id
.
rl_container
)
RelativeLayout
rlContainer
;
// @BindView(R2.id.pro_pay_status)
// ProgressBar proPayStatus;
// @BindView(R2.id.tv_loading_text)
// TextView tvLoadingText;
@BindView
(
R2
.
id
.
btn_refresh_status
)
QMUIAlphaButton
btnRefreshStatus
;
@BindView
(
R2
.
id
.
btn_complate
)
QMUIAlphaButton
btnComplate
;
private
LoadService
loadService
;
private
MealPayResultParam
mMealPayResultParam
;
...
...
@@ -95,6 +120,11 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
private
String
mPayMehodNames
;
/**
* 異常情況下 嘗試查詢多少次 顯示提示
*/
private
int
retryCount
=
3
;
@Override
public
void
setupActivityComponent
(
@NonNull
AppComponent
appComponent
)
{
DaggerPayResultComponent
//如找不到该类,请编译一下项目
...
...
@@ -112,49 +142,117 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
@Override
public
void
initData
(
@Nullable
Bundle
savedInstanceState
)
{
// loadService = LoadSir.getDefault().register(rlContainer, new Callback.OnReloadListener() {
// @Override
// public void onReload(View v) {
//// onRetrievalRequest(mPayResultEvent.getTxnId());
// }
// });
// loadService.showSuccess();
loadService
=
LoadSir
.
getDefault
().
register
(
llContent
,
new
Callback
.
OnReloadListener
()
{
@Override
public
void
onReload
(
View
v
)
{
if
(
retryCount
==
0
)
{
Class
<
BasePosCallback
>
callback
=
loadService
.
getCurrentCallback
();
BasePosCallback
callback1
=
callback
.
cast
(
BasePosCallback
.
class
);
callback1
.
showFinalStrategy
(
true
);
}
//支付状态异常 重试查询
retrievalStatus
();
retryCount
--;
}
});
showPaymentStatus
();
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
}
@Override
public
void
initIntent
()
{
MealPayResultParam
payResultParam
=
CCUtil
.
getNavigateParam
(
this
,
"payResultParam"
,
null
);
if
(
payResultParam
!=
null
)
{
this
.
mMealPayResultParam
=
payResultParam
;
mMealPayResultParam
=
payResultParam
;
mSaleRespose
=
mMealPayResultParam
.
getSaleRespose
();
initMealPayResultParam
();
}
}
private
void
initMealPayResultParam
()
{
mSaleRespose
=
mMealPayResultParam
.
getSaleRespose
();
if
(
PayStatusCode
.
withSuccess
(
mSaleRespose
.
getSTATUS
()))
{
mPayMehodNames
=
getPayMehodStr
(
mMealPayResultParam
.
getPayMethodList
());
tvAmount
.
setText
(
getPayAmount
());
tvPaymethod
.
setText
(
mPayMehodNames
);
tvTableName
.
setText
(
"檯號: "
+
mMealPayResultParam
.
getTableBean
().
getTableName
());
tvOrderNum
.
setText
(
"單號: "
+
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
());
}
mPayMehodNames
=
getPayMehodStr
(
mMealPayResultParam
.
getPayMethodList
());
private
void
showPaymentStatus
()
{
if
(
PayStatusCode
.
withSuccess
(
mSaleRespose
.
getSTATUS
()))
{
loadService
.
showSuccess
();
llBottom
.
setVisibility
(
View
.
VISIBLE
);
btnComplate
.
setVisibility
(
View
.
VISIBLE
);
}
else
if
(
PayStatusCode
.
withException
(
mSaleRespose
.
getSTATUS
()))
{
loadService
.
showCallback
(
PosPayStatusExceptionCallback
.
class
);
llBottom
.
setVisibility
(
View
.
INVISIBLE
);
btnComplate
.
setVisibility
(
View
.
INVISIBLE
);
}
tvPayStatus
.
setCompoundDrawables
(
null
,
getPaymentDrawableByStatus
(
mSaleRespose
.
getSTATUS
()),
null
,
null
);
tvPayStatus
.
setText
(
PayStatusCode
.
getHywebRequestTextByCode
(
mSaleRespose
.
getSTATUS
()));
}
tvAmount
.
setText
(
getPayAmount
(
mSaleRespose
.
getTXN_AMT
()));
tvPaymethod
.
setText
(
mPayMehodNames
)
;
tvTableName
.
setText
(
"檯號: "
+
mMealPayResultParam
.
getTableBean
().
getTableName
());
tvOrderNum
.
setText
(
"單號: "
+
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
()
);
// loadService.showSuccess(
);
private
Drawable
getPaymentDrawableByStatus
(
String
status
)
{
Drawable
drawable
;
if
(
PayStatusCode
.
withSuccess
(
status
))
{
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_success
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
()
);
}
else
{
// loadService.showCallback(ErrorCallback.class);
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_exception
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
}
return
drawable
;
}
private
String
getPayAmount
(
double
payAmount
)
{
return
AppConstans
.
CARSH_STR
+
payAmount
;
private
void
retrievalStatus
()
{
RetrievalRequest
retrievalRequest
=
new
RetrievalRequest
();
retrievalRequest
.
setTXN_ID
(
mMealPayResultParam
.
getTxnId
());
PosPay
.
retrieval
(
mContext
,
this
,
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
(),
retrievalRequest
,
new
OnPosActionListener
()
{
@Override
public
void
onPosSuccess
(
HywebPosResponse
response
)
{
mSaleRespose
=
mMealPayResultParam
.
getSaleRespose
();
showPaymentStatus
();
}
@Override
public
void
onPosException
(
Exception
e
)
{
loadService
.
showCallback
(
PosPayStatusExceptionCallback
.
class
);
}
@Override
public
void
onPosInvalid
(
String
e
)
{
}
@Override
public
void
onUpdateStatusSuccess
(
HywebPosResponse
response
)
{
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
}
});
}
private
String
getPayAmount
()
{
if
(
mSaleRespose
.
getTIPS
()
!=
0
)
{
return
AppConstans
.
CARSH_STR
+
MoneyUtil
.
sum
(
mSaleRespose
.
getTXN_AMT
(),
mSaleRespose
.
getTIPS
())
+
"(含小費"
+
mSaleRespose
.
getTIPS
()
+
")"
;
}
else
{
return
AppConstans
.
CARSH_STR
+
mSaleRespose
.
getTXN_AMT
();
}
}
private
String
getPayMehodStr
(
List
<
PayMethod
>
payMethodList
)
{
StringBuilder
sb
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
payMethodList
.
size
();
i
++)
{
PayMethod
payMethod
=
payMethodList
.
get
(
i
);
if
(
i
<
payMethodList
.
size
()
&&
payMethodList
.
size
()
!=
0
)
{
if
(
i
<
(
payMethodList
.
size
()
-
1
)
)
{
sb
.
append
(
payMethod
.
getPayName
()
+
","
);
}
else
{
sb
.
append
(
payMethod
.
getPayName
());
...
...
@@ -219,18 +317,18 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
killMyself
();
}
@OnClick
({
R2
.
id
.
tv_tips
,
R2
.
id
.
tv_printer
,
R2
.
id
.
tv
_complate
})
@OnClick
({
R2
.
id
.
tv_tips
,
R2
.
id
.
tv_printer
,
R2
.
id
.
btn
_complate
})
public
void
onViewClicked
(
View
view
)
{
if
(
view
.
getId
()
==
R
.
id
.
tv_tips
)
{
showKeyboardDialog
();
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv_printer
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
tv
_complate
)
{
}
else
if
(
view
.
getId
()
==
R
.
id
.
btn
_complate
)
{
//返回餐檯頁面
//
CC.obtainBuilder(ComponentName.COMPONENT_TABLE)
//
.setActionName(ComponentAction.Table.KILL_MEAL_ORDER_PAY)
//
.build()
//
.call();
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_TABLE
)
.
setActionName
(
ComponentAction
.
Table
.
KILL_MEAL_ORDER_PAY
)
.
build
()
.
call
();
killMyself
();
}
}
...
...
@@ -242,35 +340,32 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
@Override
public
void
onSure
(
String
number
)
{
if
(!
TextUtils
.
isEmpty
(
number
))
{
// GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrderId
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
getId
());
TableBean
.
DataBean
tableBean
=
mMealPayResultParam
.
getTableBean
();
txnIdRequest
.
setOrderId
(
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
());
if
(!
TextUtils
.
isEmpty
(
tableBean
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
tableBean
.
getId
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getId
());
txnIdRequest
.
setTableId
(
tableBean
.
getId
());
}
txnIdRequest
.
setAmount
(
mSaleRespose
.
getTXN_AMT
());
PosPay
.
tip
(
mContext
,
PayResultActivity
.
this
,
txnIdRequest
,
getTipsRequest
(
mMealPayResultParam
.
getSaleRespose
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
()
{
PosPay
.
tip
(
mContext
,
PayResultActivity
.
this
,
txnIdRequest
,
getTipsRequest
(
mMealPayResultParam
.
getSaleRespose
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
<
AdjustTipRespose
>
()
{
@Override
public
void
onPosSuccess
(
HywebPosResponse
response
)
{
public
void
onPosSuccess
(
AdjustTipRespose
response
)
{
mSaleRespose
.
setTIPS
(
mSaleRespose
.
getTIPS
()
+
response
.
getTIPS
());
initMealPayResultParam
();
}
@Override
public
void
onPosException
(
HywebPosResponse
response
)
{
public
void
onPosException
(
Exception
e
)
{
//POS回调异常,去重试查询
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mMealPayResultParam
.
getTxnId
());
statusExceptionParam
.
setAmount
(
mSaleRespose
.
getTXN_AMT
());
statusExceptionParam
.
setOrder
Num
(
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
());
statusExceptionParam
.
setOrder
Id
(
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
());
statusExceptionParam
.
setPayMethodName
(
mPayMehodNames
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -278,13 +373,26 @@ public class PayResultActivity extends BaseFragmentActivity<PayResultPresenter>
}
@Override
public
void
on
Success
(
HywebPosResponse
respons
e
)
{
public
void
on
PosInvalid
(
String
e
)
{
}
@Override
public
void
onError
(
Throwable
e
)
{
public
void
onUpdateStatusSuccess
(
AdjustTipRespose
response
)
{
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mMealPayResultParam
.
getTxnId
());
statusExceptionParam
.
setAmount
(
mSaleRespose
.
getTXN_AMT
());
statusExceptionParam
.
setOrderId
(
mMealPayResultParam
.
getMealOrderPayRequest
().
getOrderId
());
statusExceptionParam
.
setPayMethodName
(
mPayMehodNames
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
component-pay/src/main/res/layout/activity_pay_result.xml
View file @
66c18f25
...
...
@@ -60,18 +60,22 @@
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_6"
android:layout_marginTop=
"@dimen/dp_50"
android:drawableTop=
"@mipmap/pay_status_success"
android:layout_marginTop=
"@dimen/dp_50"
android:text=
"支付成功"
android:textSize=
"@dimen/font_normal2"
/>
android:textSize=
"@dimen/font_normal2"
android:textColor=
"@color/theme_black"
android:textStyle=
"bold"
android:visibility=
"visible"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_10"
android:textStyle=
"bold"
android:text=
"$500"
android:textSize=
"@dimen/sp_
32
"
android:textSize=
"@dimen/sp_
24
"
android:textColor=
"@color/theme_black"
/>
<TextView
...
...
@@ -84,15 +88,29 @@
android:textSize=
"@dimen/sp_16"
/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id=
"@+id/tv_complate"
android:layout_width=
"@dimen/dp_120"
android:layout_height=
"@dimen/dp_50"
android:layout_marginTop=
"@dimen/dp_30"
android:text=
"完成"
android:id=
"@+id/btn_refresh_status"
android:layout_width=
"@dimen/dp_100"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/dp_50"
android:background=
"@color/green_400"
android:text=
"刷新"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
app:cornerRadius=
"@dimen/dp_6"
android:visibility=
"gone"
/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id=
"@+id/btn_complate"
android:layout_width=
"@dimen/dp_100"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/dp_20"
android:background=
"@drawable/shape_app_btn"
app:cornerRadius=
"@dimen/dp_6"
/>
android:text=
"完成"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
android:visibility=
"visible"
/>
<!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/rv_bill_and_paymethod"-->
...
...
@@ -132,16 +150,5 @@
android:text=
"打印"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
/>
<!-- <com.qmuiteam.qmui.alpha.QMUIAlphaTextView-->
<!-- android:id="@+id/tv_complate"-->
<!-- android:layout_width="0dp"-->
<!-- android:layout_height="match_parent"-->
<!-- android:layout_weight="1"-->
<!-- android:background="@color/theme_color"-->
<!-- android:gravity="center"-->
<!-- android:text="完成"-->
<!-- android:textColor="@color/theme_white_color"-->
<!-- android:textSize="@dimen/font_normal3" />-->
</LinearLayout>
</RelativeLayout>
\ No newline at end of file
component-print/src/main/java/com/joe/print/mvp/print/service/PrjService.java
View file @
66c18f25
...
...
@@ -11,21 +11,23 @@ import android.util.Log;
import
androidx.annotation.Nullable
;
import
com.elvishew.xlog.XLog
;
import
com.epson.epos2.Epos2Exception
;
import
com.epson.epos2.printer.Printer
;
import
com.epson.epos2.printer.PrinterStatusInfo
;
import
com.epson.epos2.printer.ReceiveListener
;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.core.restaurant.RestaurantInfoManager
;
import
com.gingersoft.gsa.cloud.common.core.user.UserContext
;
import
com.gingersoft.gsa.cloud.common.
utils.threadPool.ThreadPool
Manager
;
import
com.gingersoft.gsa.cloud.common.
logan.Logan
Manager
;
import
com.gingersoft.gsa.cloud.common.utils.AidlUtil
;
import
com.gingersoft.gsa.cloud.common.utils.JsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.common.utils.other.TextUtil
;
import
com.gingersoft.gsa.cloud.common.utils.threadPool.ThreadPoolManager
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.database.bean.PrintCurrencyBean
;
import
com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean
;
import
com.gingersoft.gsa.cloud.database.utils.PrinterDeviceDaoUtils
;
...
...
@@ -84,6 +86,8 @@ import static com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean.PRINT_USB
*/
public
class
PrjService
extends
Service
implements
ReceiveListener
{
// private static final String TAG = PrjService.class.getSimpleName();
private
Disposable
disposable
;
private
Disposable
wakeDisposable
;
private
List
<
PrinterDeviceBean
>
printerDeviceBeans
;
...
...
@@ -104,6 +108,7 @@ public class PrjService extends Service implements ReceiveListener {
public
int
onStartCommand
(
Intent
intent
,
int
flags
,
int
startId
)
{
mContext
=
this
;
ThreadPoolManager
.
getInstence
().
putExecutableTasks
(()
->
{
LoganManager
.
w_printer
(
TAG
,
"開始請求 PRJ 數據"
);
getPrintList
();
//開始請求
startGetPrjInfo
();
...
...
@@ -165,21 +170,23 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public
void
onSubscribe
(
Disposable
d
)
{
disposable
=
d
;
LoganManager
.
w_printer
(
TAG
,
"startGetPrjInfo onSubscribe"
);
}
@Override
public
void
onNext
(
Long
aLong
)
{
LoganManager
.
w_printer
(
TAG
,
"startGetPrjInfo onNext"
);
getPrjInfo
();
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_printer
(
TAG
,
"startGetPrjInfo onError:"
+
e
.
getMessage
());
}
@Override
public
void
onComplete
()
{
LoganManager
.
w_printer
(
TAG
,
"startGetPrjInfo onComplete"
);
}
});
}
...
...
@@ -195,11 +202,12 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public
void
onSubscribe
(
Disposable
d
)
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo onSubscribe"
);
}
@Override
public
void
onNext
(
String
s
)
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo onNext: "
+
s
);
//請求到數據,停止輪詢,開始打印,在打印完之後再重新開始輪詢
// startPrint(s);
newPrint
(
s
);
...
...
@@ -210,32 +218,35 @@ public class PrjService extends Service implements ReceiveListener {
@Override
public
void
onSubscribe
(
Disposable
d
)
{
wakeDisposable
=
d
;
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo timer onSubscribe"
);
}
@Override
public
void
onNext
(
Long
aLong
)
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo timer onNext"
);
startGetPrjInfo
();
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo timer onError: "
+
e
.
getMessage
());
}
@Override
public
void
onComplete
()
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo timer onComplete"
);
}
});
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo onError:"
+
e
.
getMessage
());
}
@Override
public
void
onComplete
()
{
LoganManager
.
w_printer
(
TAG
,
"getPrjInfo onComplete"
);
}
});
}
...
...
@@ -340,6 +351,7 @@ public class PrjService extends Service implements ReceiveListener {
totalPrj
=
0
;
PrjBean
prjBean
=
JsonUtils
.
parseObject
(
json
,
PrjBean
.
class
);
if
(
prjBean
==
null
||
prjBean
.
getData
()
==
null
)
{
LoganManager
.
w_printer
(
TAG
,
"newPrint prjBean == null || prjBean.getData() == null "
);
return
;
}
//有數據,取消輪詢,等待打印結束。
...
...
@@ -376,6 +388,7 @@ public class PrjService extends Service implements ReceiveListener {
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
LoganManager
.
w_printer
(
TAG
,
"newPrint JSONException: "
+
e
.
getMessage
());
}
setPrjIndex
(
listMap
,
totalPrj
);
initPrinterDevices
();
...
...
@@ -383,6 +396,7 @@ public class PrjService extends Service implements ReceiveListener {
}
private
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
setPrjIndex
(
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
listMap
,
int
totalPrj
)
{
LoganManager
.
w_printer
(
TAG
,
"setPrjIndex totalPrj: "
+
totalPrj
);
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
:
listMap
.
entrySet
())
{
for
(
PrjBean
.
DataBean
.
Bean
bean
:
prjMap
.
getValue
())
{
bean
.
setTotalPrj
(
totalPrj
);
...
...
@@ -438,6 +452,7 @@ public class PrjService extends Service implements ReceiveListener {
}
private
void
foreachPrint
(
Map
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
listMap
)
{
LoganManager
.
w_printer
(
TAG
,
"foreachPrint"
);
//雙重遍歷可以以後優化
//第二步:遍歷 Map<廚房位置,需要打印的數據>,通過廚房位置找到對應的打印機,並且通過數據拿到對應的通用配置
for
(
Map
.
Entry
<
String
,
List
<
PrjBean
.
DataBean
.
Bean
>>
prjMap
:
listMap
.
entrySet
())
{
...
...
@@ -459,6 +474,7 @@ public class PrjService extends Service implements ReceiveListener {
}
private
void
initPrinterDevices
()
{
LoganManager
.
w_printer
(
TAG
,
"initPrinterDevices"
);
//讀取打印機和通用配置,可以優化
//獲取所有打印機
PrinterDeviceDaoUtils
printerDeviceDaoUtils
=
new
PrinterDeviceDaoUtils
(
this
);
...
...
@@ -470,7 +486,7 @@ public class PrjService extends Service implements ReceiveListener {
private
PrintCurrencyBean
getPrintCurrencyBean
(
List
<
PrjBean
.
DataBean
.
Bean
>
beans
)
{
PrintCurrencyBean
printCurrencyBean
=
null
;
if
(
beans
!=
null
&&
beans
.
size
()
>
0
)
{
if
(
beans
.
get
(
0
).
getOrderType
()
==
1
||
beans
.
get
(
0
).
getOrderType
()
==
3
)
{
if
(
beans
.
get
(
0
).
getOrderType
()
==
1
||
beans
.
get
(
0
).
getOrderType
()
==
3
)
{
//堂食,skyorder
printCurrencyBean
=
MyPrintUtils
.
getPrintCurrencyBeanByType
(
mContext
,
1
);
}
else
{
...
...
@@ -488,6 +504,10 @@ public class PrjService extends Service implements ReceiveListener {
* 生成用於打印的prj的Bitmap
*/
private
void
generatePrintData
(
String
key
,
List
<
PrjBean
.
DataBean
.
Bean
>
beans
,
PrinterDeviceBean
printerDeviceBean
)
{
LoganManager
.
w_printer
(
TAG
,
"generatePrintData PrinterDeviceBean deviceType: "
+
printerDeviceBean
.
getPrinterDeviceType
()
+
" ip: "
+
printerDeviceBean
.
getIp
());
if
(
isPinPrinter
(
printerDeviceBean
)
&&
printerDeviceBean
.
getPrinterDeviceType
()
==
PRINT_IP
)
{
//針式打印機並且打印機類型為IP打印,生成獨特的格式
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
=
generatePrintMaps
(
key
,
beans
,
printerDeviceBean
);
...
...
@@ -665,7 +685,6 @@ public class PrjService extends Service implements ReceiveListener {
usbPrint
(
bitmapMaps
);
break
;
default
:
break
;
}
}
...
...
@@ -677,21 +696,27 @@ public class PrjService extends Service implements ReceiveListener {
* ip設備打印
*/
public
void
ipPrint
(
PrinterDeviceBean
printerDeviceBean
,
List
<
Map
<
String
,
Bitmap
>>
bitmapMaps
)
{
LoganManager
.
w_printer
(
TAG
,
"ipPrint: "
+
printerDeviceBean
.
getPrinterDeviceType
()
+
" ip: "
+
printerDeviceBean
.
getIp
());
for
(
int
i
=
0
;
i
<
bitmapMaps
.
size
();
i
++)
{
PrintExecutor
executor
=
new
PrintExecutor
(
printerDeviceBean
);
int
finalI
=
i
;
executor
.
setOnPrjPrintResultListener
((
errorCode
,
ids
)
->
{
switch
(
errorCode
)
{
case
PrintSocketHolder
.
ERROR_0
:
//更新狀態
LoganManager
.
w_printer
(
TAG
,
"ipPrint errorCode ERROR_0 i: "
+
finalI
);
updatePrjSuccess
(
ids
);
Log
.
e
(
TAG
,
"打印成功"
);
break
;
case
PrintSocketHolder
.
ERROR_2
:
LoganManager
.
w_printer
(
TAG
,
"ipPrint errorCode ERROR_2 i: "
+
finalI
);
Log
.
e
(
TAG
,
"创建Socket失败"
);
updatePrjFailure
(
ids
);
break
;
}
});
LoganManager
.
w_printer
(
TAG
,
"ipPrint for doPrinterRequestAsync i:"
+
i
);
PrjPrintMaker
maker
=
new
PrjPrintMaker
(
bitmapMaps
.
get
(
i
));
executor
.
doPrinterRequestAsync
(
maker
);
}
...
...
component-print/src/main/java/com/joe/print/mvp/ui/activity/PrintActivity.java
View file @
66c18f25
...
...
@@ -27,6 +27,7 @@ import com.billy.cc.core.component.CCResult;
import
com.billy.cc.core.component.CCUtil
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.print.PrintExecutor
;
import
com.gingersoft.gsa.cloud.print.PrintSocketHolder
;
import
com.gingersoft.gsa.cloud.print.bean.PrintContent
;
...
...
@@ -466,6 +467,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printFailure
(
"打印機缺紙"
);
break
;
}
LoganManager
.
w_printer
(
TAG
,
"printStateChanged state--->"
+
tip
);
setLoadingText
(
tip
);
}
...
...
@@ -474,6 +476,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/
@Override
public
void
printSuccess
()
{
LoganManager
.
w_printer
(
TAG
,
"printFailure 打印成功"
);
// if (printCount <= 1) {
CC
.
sendCCResult
(
callId
,
CCResult
.
success
());
disLoadingDialog
();
...
...
@@ -486,10 +489,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override
public
void
printFailure
(
String
msg
)
{
LoganManager
.
w_printer
(
TAG
,
"printFailure 打印失敗--->"
+
msg
);
if
(!
TextUtil
.
isEmptyOrNullOrUndefined
(
msg
))
{
ToastUtils
.
show
(
GsaCloudApplication
.
getAppContext
(),
msg
);
CC
.
sendCCResult
(
callId
,
CCResult
.
error
(
msg
));
}
else
{
}
else
{
CC
.
sendCCResult
(
callId
,
CCResult
.
error
(
"print error"
));
}
// if (printCount <= 1) {
...
...
component-table/src/main/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -20,17 +20,20 @@
android:name=
".mvp.ui.activity.MealStandActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".mvp.ui.activity.OrderPayActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".mvp.ui.activity.OrderContentActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
".mvp.ui.activity.orderManager.OrderCenterActivity"
android:screenOrientation=
"portrait"
/>
android:name=
".mvp.ui.activity.OrderPayActivity"
android:screenOrientation=
"portrait"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".mvp.ui.activity.orderManager.OrderDetailActivity"
android:screenOrientation=
"portrait"
/>
android:screenOrientation=
"portrait"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".mvp.ui.activity.orderManager.OrderCenterActivity"
android:screenOrientation=
"portrait"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".mvp.ui.activity.SoldoutCtrlActivity"
android:screenOrientation=
"portrait"
/>
...
...
component-table/src/main/debug/AndroidManifest.xml
View file @
66c18f25
...
...
@@ -10,8 +10,15 @@
android:supportsRtl=
"true"
android:networkSecurityConfig=
"@xml/network_android"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
"com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity"
/>
<activity
android:name=
"com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity"
/>
<activity
android:name=
".mvp.ui.activity.orderManager.OrderDetailActivity"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".mvp.ui.activity.orderManager.OrderCenterActivity"
android:launchMode=
"singleTop"
/>
<activity
android:name=
".mvp.ui.activity.OrderPayActivity"
android:screenOrientation=
"portrait"
/>
<activity
android:name=
"com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity"
/>
<activity
android:name=
"com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity"
>
<intent-filter>
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/ComponentTable.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
table
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
com.billy.cc.core.component.CC
;
import
com.billy.cc.core.component.CCResult
;
import
com.billy.cc.core.component.CCUtil
;
import
com.billy.cc.core.component.IComponent
;
import
com.etps.aca.lib.activity.CommandActivity
;
import
com.gingersoft.gsa.cloud.common.function.FModule
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.order.order.DoshokuOrder
;
...
...
@@ -16,6 +19,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.SoldoutCtrlActivity
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.utils.ArmsUtils
;
...
...
@@ -121,6 +125,7 @@ public class ComponentTable implements IComponent {
}
private
void
lifecycleFragmentDoubleText
(
CC
cc
)
{
// LifecycleFragment lifecycleFragment = cc.getParamItem("fragment");
// if (lifecycleFragment != null) {
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/bean/response/OrderManagerResponse.java
View file @
66c18f25
...
...
@@ -48,6 +48,7 @@ public class OrderManagerResponse implements Serializable {
private
int
status
;
private
String
orderNo
;
private
String
tableName
;
private
String
tableNumber
;
private
int
tableId
;
private
int
person
;
/**
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/model/utils/OrderAssemblyUtil.java
View file @
66c18f25
...
...
@@ -15,7 +15,7 @@ import java.util.List;
public
class
OrderAssemblyUtil
{
/**
* 組裝食品結構
* 組裝食品
位置和
結構
* @param orderDetails
* @return
*/
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/BaseOrderPresenter.java
View file @
66c18f25
...
...
@@ -1099,7 +1099,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
OrderDetail
item
=
foodList
.
get
(
j
);
boolean
myIndex
=
item
.
getMyIndex
()
!=
parentItem
.
getMyIndex
();
boolean
parentIndex
=
item
.
getParentIndex
()
!=
parentItem
.
getMyIndex
();
if
(
myIndex
&&
parentIndex
)
{
if
(
myIndex
&&
parentIndex
&&
item
.
getType
()
!=
OrderDetail
.
MODIFIER_TYPE
)
{
//已經循環過當前套餐 退出循環
break
;
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/OrderContentPresenter.java
View file @
66c18f25
...
...
@@ -814,6 +814,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//緩存訂單信息
mDoshokuOrder
.
setOrderPlaced
(
new
OrderResponse
(
info
.
getData
()));
//緩存食品信息
// List<OrderDetail> orderDetailList = OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails());
List
<
OrderDetail
>
orderDetailList
=
OrderAssemblyUtil
.
assemblyOrder
(
OrderDetail
.
orderTransOrderDetails
(
info
.
getData
().
getOrderDetails
()));
mOrderMealList
.
clear
();
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/TablePresenter.java
View file @
66c18f25
...
...
@@ -43,6 +43,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetSkyorderAction
import
com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetTableAction
;
import
com.gingersoft.gsa.cloud.table.mvp.model.table.action.SplitTableAction
;
import
com.gingersoft.gsa.cloud.table.mvp.model.table.action.TableAction
;
import
com.gingersoft.gsa.cloud.table.mvp.model.utils.OrderAssemblyUtil
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter
;
import
com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog
;
...
...
@@ -385,7 +386,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
orderBean
.
getTxnId
());
statusExceptionParam
.
setAmount
(
orderBean
.
getTotalAmount
());
statusExceptionParam
.
setOrderNum
(
orderBean
.
getId
());
statusExceptionParam
.
setOrderId
(
orderBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
orderBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
orderBean
.
getPayName
());
statusExceptionParam
.
setPosAction
(
PosAction
.
RETRIEVAL
);
IActivity
.
loadRootFragment
(
R
.
id
.
fl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -410,7 +412,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
doshokuOrder
.
setOrderId
(
orderBean
.
getId
());
doshokuOrder
.
setOrderNo
(
orderBean
.
getOrderNo
());
doshokuOrder
.
setOrderPlaced
(
new
OrderResponse
(
orderBean
));
doshokuOrder
.
getShoppingCart
().
addCommodityList
(
Order
Detail
.
orderTransOrderDetails
(
mealCommoditysBeans
));
doshokuOrder
.
getShoppingCart
().
addCommodityList
(
Order
AssemblyUtil
.
assemblyOrder
(
OrderDetail
.
orderTransOrderDetails
(
mealCommoditysBeans
)
));
if
(
orderBean
.
getMemberInfo
()
!=
null
)
{
//设置会员信息
doshokuOrder
.
setMemberInfo
(
orderBean
.
getMemberInfo
());
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/presenter/orderManager/AllOrderPresenter.java
View file @
66c18f25
...
...
@@ -30,7 +30,10 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.AdjustTipRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RefundRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.VoidRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose
;
import
com.gingersoft.gsa.cloud.print.bean.PrintContent
;
import
com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter
;
import
com.gingersoft.gsa.cloud.table.R
;
...
...
@@ -84,6 +87,7 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
AppManager
mAppManager
;
private
OrderCenterActivity
IActivity
;
private
OrderCenterAdapter
mOrderCenterAdapter
;
private
List
<
OrderManagerResponse
>
mOrderItemList
=
new
ArrayList
<>();
...
...
@@ -202,30 +206,32 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
if
(!
TextUtils
.
isEmpty
(
number
))
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
datasBean
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
datasBean
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
datasBean
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
datasBean
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
datasBean
.
getAmount
());
PosPay
.
tip
(
IActivity
,
IActivity
,
txnIdRequest
,
getTipsRequest
(
datasBean
.
getPayTxnId
(),
datasBean
.
getAmount
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
()
{
getTipsRequest
(
datasBean
.
getPayTxnId
(),
datasBean
.
getAmount
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
<
AdjustTipRespose
>
()
{
@Override
public
void
onPosSuccess
(
HywebPosRespon
se
response
)
{
public
void
onPosSuccess
(
AdjustTipRespo
se
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
}
@Override
public
void
onPosException
(
HywebPosResponse
respons
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -233,14 +239,28 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
public
void
onPosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
.
toString
());
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onError: "
+
e
.
getMessage
());
public
void
onUpdateStatusSuccess
(
AdjustTipRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
@@ -271,33 +291,35 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
private
void
hywebRefund
(
OrderManagerResponse
datasBean
)
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
datasBean
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
datasBean
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
datasBean
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
datasBean
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
datasBean
.
getAmount
());
RefundRequest
refundRequest
=
new
RefundRequest
();
refundRequest
.
setPAYMENT_APP_ID
(
getPaymentAppIdByPays
(
datasBean
.
getOrderPays
()));
PosPay
.
refund
(
IActivity
,
IActivity
,
refundRequest
,
txnIdRequest
,
new
OnPosActionListener
()
{
refundRequest
.
setTXN_AMT
(
datasBean
.
getAmount
());
PosPay
.
refund
(
IActivity
,
IActivity
,
refundRequest
,
txnIdRequest
,
new
OnPosActionListener
<
RefundRespose
>()
{
@Override
public
void
onPosSuccess
(
HywebPosRespon
se
response
)
{
public
void
onPosSuccess
(
RefundRespo
se
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
}
@Override
public
void
onPosException
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
REFUND
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -305,14 +327,29 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
public
void
onPosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
);
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onError: "
+
e
.
getMessage
());
public
void
onUpdateStatusSuccess
(
RefundRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
REFUND
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
@@ -344,31 +381,33 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
private
void
hywebOrderCancle
(
OrderManagerResponse
datasBean
)
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
datasBean
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
datasBean
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
datasBean
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
datasBean
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
datasBean
.
getAmount
());
VoidRequest
voidRequest
=
new
VoidRequest
();
PosPay
.
voidO
(
IActivity
,
IActivity
,
voidRequest
,
txnIdRequest
,
new
OnPosActionListener
()
{
PosPay
.
voidO
(
IActivity
,
IActivity
,
voidRequest
,
txnIdRequest
,
new
OnPosActionListener
<
VoidRespose
>()
{
@Override
public
void
onPosSuccess
(
HywebPosRespon
se
response
)
{
public
void
onPosSuccess
(
VoidRespo
se
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
}
@Override
public
void
onPosException
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
VOID
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -376,14 +415,28 @@ public class AllOrderPresenter extends BasePresenter<AllOrderContract.Model, All
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onSuccess: "
+
response
.
toString
());
IActivity
.
refeshOrderList
();
public
void
onPosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
);
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onError: "
+
e
.
getMessage
());
public
void
onUpdateStatusSuccess
(
VoidRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
IActivity
.
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
datasBean
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
datasBean
.
getAmount
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
VOID
);
IActivity
.
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/MealStandActivity.java
View file @
66c18f25
...
...
@@ -380,7 +380,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public
void
initFoodGroupView
(
List
<
Food
>
foodGroupList
)
{
//总的页数向上取整
totalPage
=
(
int
)
Math
.
ceil
(
foodGroupList
.
size
()
*
1.0
/
GoldConstants
.
foodGriupPageSize
);
totalPage
=
(
int
)
Math
.
ceil
(
foodGroupList
.
size
()
*
1.0
/
(
foodGroupColumn
*
foodGroupRow
)
);
int
Rows
=
foodGroupRow
;
if
(
foodGroupList
.
size
()
<=
foodGroupColumn
)
{
...
...
@@ -440,13 +440,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
}
else
{
ivPoints
[
i
].
setImageResource
(
R
.
drawable
.
meal_food_group_point_unfocused
);
}
LinearLayout
.
LayoutParams
lp
=
new
LinearLayout
.
LayoutParams
(
ArmsUtils
.
dip2px
(
this
,
20
),
ArmsUtils
.
dip2px
(
this
,
12
));
lp
.
leftMargin
=
ArmsUtils
.
dip2px
(
this
,
5
);
ivPoints
[
i
].
setLayoutParams
(
lp
);
ivPoints
[
i
].
setPadding
(
0
,
0
,
0
,
0
);
ll_food_group_point
.
addView
(
ivPoints
[
i
]);
LinearLayout
.
LayoutParams
layoutParams
=
(
LinearLayout
.
LayoutParams
)
ivPoints
[
i
].
getLayoutParams
();
layoutParams
.
height
=
ll_food_group_point
.
getLayoutParams
().
height
;
layoutParams
.
width
=
ArmsUtils
.
getScreenWidth
(
this
)
/
totalPage
;
ivPoints
[
i
].
setLayoutParams
(
layoutParams
);
}
if
(
foodGroupList
.
size
()
>
(
Rows
*
foodGroupColumn
))
{
ll_food_group_point
.
setVisibility
(
View
.
VISIBLE
);
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/OrderPayActivity.java
View file @
66c18f25
...
...
@@ -5,6 +5,7 @@ import android.content.Context;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.os.Bundle
;
import
android.print.PrintManager
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.View
;
...
...
@@ -19,12 +20,21 @@ import com.gingersoft.gsa.cloud.common.constans.PrintConstans;
import
com.gingersoft.gsa.cloud.common.core.member.MemberInfo
;
import
com.gingersoft.gsa.cloud.common.core.table.TableBean
;
import
com.gingersoft.gsa.cloud.common.core.user.UserContext
;
import
com.gingersoft.gsa.cloud.common.utils.AppDevices
;
import
com.gingersoft.gsa.cloud.common.utils.BigDecimalUtils
;
import
com.gingersoft.gsa.cloud.common.utils.LanguageUtils
;
import
com.gingersoft.gsa.cloud.common.utils.VibratorUtils
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest
;
import
com.gingersoft.gsa.cloud.order.billItem.BillItem
;
import
com.gingersoft.gsa.cloud.order.order.DoshokuOrder
;
import
com.gingersoft.gsa.cloud.pay.bean.PayMethod
;
import
com.gingersoft.gsa.cloud.pay.contract.PayTypeContract
;
import
com.gingersoft.gsa.cloud.pay.pos.PosPay
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.SaleRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayMethodConstant
;
import
com.gingersoft.gsa.cloud.pay.util.PayMethodUtils
;
import
com.gingersoft.gsa.cloud.print.PrinterUtils
;
import
com.gingersoft.gsa.cloud.print.bean.PrintContent
;
import
com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter
;
...
...
@@ -49,6 +59,7 @@ import org.simple.eventbus.EventBus;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.locks.ReentrantLock
;
import
javax.inject.Inject
;
...
...
@@ -127,7 +138,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.
inject
(
this
);
}
@Override
public
int
initView
(
@Nullable
Bundle
savedInstanceState
)
{
return
R
.
layout
.
table_activity_order_pay
;
//如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
...
...
@@ -143,6 +153,11 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
initMemberInfo
();
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
}
private
void
initOrderPayView
()
{
gsaPayView
.
setOnSelectPayClickLisenter
(
new
OrderPayView
.
OnSelectPayClickLisenter
()
{
@Override
...
...
@@ -417,16 +432,21 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
}
}
if
(
openInstruction
)
{
printBill
();
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PRINT
)
.
setActionName
(
"printActivity"
)
.
addParam
(
PrintConstans
.
PRINT_TYPE
,
PrintConstans
.
PRINT_INSTRUCTION
)
.
build
();
printBillAndOpenInstruction
();
}
else
{
printBill
();
}
}
private
void
printBillAndOpenInstruction
()
{
printBill
();
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PRINT
)
.
setActionName
(
"printActivity"
)
.
addParam
(
PrintConstans
.
PRINT_TYPE
,
PrintConstans
.
PRINT_INSTRUCTION
)
.
build
()
.
call
();
}
private
void
printBill
()
{
//打印結賬單
...
...
@@ -474,38 +494,46 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
gsaPayView
.
loadInfo
(
this
,
payMethods
,
mPresenter
.
getTotalAmount
(),
mPresenter
.
getFoodCount
());
gsaPayView
.
setmOnSureClickLisenter
(
mBillMoneyList
->
{
// PayMethod hywebPayMethod = PayMethodUtils.filterPaymentMethodById(mBillMoneyList, PayTypeContract.PAY_METHOD_ID_1001);
//
// if (AppDevice.isHywebPos()) {
//
// if (hywebPayMethod != null) {
//
// SaleRequest saleRequest = new SaleRequest();
// saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
// saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
// saleRequest.setTIPS(0);
//
// GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// if (!TextUtils.isEmpty(DoshokuOrder.getInstance().getOpenTableInfo().getTableNumber())) {
// txnIdRequest.setTableExtId(DoshokuOrder.getInstance().getOpenTableInfo().getId());
// } else {
// txnIdRequest.setTableId(DoshokuOrder.getInstance().getOpenTableInfo().getId());
// }
// txnIdRequest.setPayMethodId(hywebPayMethod.getId());
// txnIdRequest.setAmount(hywebPayMethod.getPayMoney());
//
// MealOrderPayRequest orderPayRequest = mPresenter.getOrderPayRequest(gsaPayView);
// List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList();
//
// PosPay.pay(mContext, OrderPayActivity.this, saleRequest, txnIdRequest,DoshokuOrder.getInstance().getOpenTableInfo(),orderPayRequest,billItemList,mBillMoneyList);
// } else {
//
// }
// } else {
if
(
AppDevices
.
isHywebPos
())
{
int
hywebPayMethodIndex
=
PayMethodUtils
.
hasHywebPayMethod
(
mBillMoneyList
);
if
(
hywebPayMethodIndex
!=
-
1
)
{
PayMethod
hywebPayMethod
=
mBillMoneyList
.
get
(
hywebPayMethodIndex
);
SaleRequest
saleRequest
=
new
SaleRequest
();
if
(
hywebPayMethod
.
getPayType
()
==
PayTypeContract
.
PAY_METHOD_ID_1030
)
{
//卡片支付
saleRequest
.
setPAYMENT_APP_ID
(
PayMethodConstant
.
PAY_TYPE_CC
);
}
else
{
//掃碼支付
saleRequest
.
setPAYMENT_APP_ID
(
PayMethodConstant
.
PAY_TYPE_QRC
);
}
saleRequest
.
setTXN_AMT
(
DoshokuOrder
.
getInstance
().
getShoppingCart
().
getTotalAmount
());
saleRequest
.
setTIPS
(
0
);
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrderId
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
getId
());
}
else
{
txnIdRequest
.
setTableId
((
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
getId
()));
}
txnIdRequest
.
setPayMethodId
(
hywebPayMethod
.
getId
());
txnIdRequest
.
setAmount
(
hywebPayMethod
.
getPayMoney
());
MealOrderPayRequest
orderPayRequest
=
mPresenter
.
getOrderPayRequest
(
gsaPayView
);
List
<
BillItem
>
billItemList
=
DoshokuOrder
.
getInstance
().
getShoppingCart
().
getBillItemList
();
PosPay
.
pay
(
mContext
,
OrderPayActivity
.
this
,
saleRequest
,
txnIdRequest
,
DoshokuOrder
.
getInstance
().
getOpenTableInfo
(),
orderPayRequest
,
billItemList
,
mBillMoneyList
);
}
else
{
mPresenter
.
setBillMoneyList
(
mBillMoneyList
);
mPresenter
.
sendOrderBefore
();
}
}
else
{
mPresenter
.
setBillMoneyList
(
mBillMoneyList
);
mPresenter
.
sendOrderBefore
();
//
}
}
});
}
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/TableActivity.java
View file @
66c18f25
...
...
@@ -224,7 +224,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
.
addParam
(
"fromPage"
,
2
)
.
build
()
.
call
();
LoganManager
.
uploadLog
(
mContext
,
true
);
//
LoganManager.uploadLog(mContext, true);
}
});
mTopBar
.
setTitle
(
"餐檯模式"
);
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderCenterActivity.java
View file @
66c18f25
...
...
@@ -91,6 +91,11 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
mPresenter
.
loadOrderList
(
OrderManagerResponse
.
ORDER_TYPE_DOSHOKU
+
""
,
0
,
10
,
null
,
false
);
}
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
}
@Subscriber
(
tag
=
"updateOrderListEvent"
)
private
void
updateOrderList
(
boolean
update
)
{
refeshOrderList
();
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/activity/orderManager/OrderDetailActivity.java
View file @
66c18f25
...
...
@@ -13,10 +13,12 @@ import android.widget.TextView;
import
androidx.annotation.NonNull
;
import
androidx.annotation.Nullable
;
import
androidx.core.content.ContextCompat
;
import
androidx.core.widget.NestedScrollView
;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.billy.cc.core.component.CC
;
import
com.gingersoft.gsa.cloud.common.constans.OrderTypeConstans
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.core.table.TableBean
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
...
...
@@ -41,7 +43,10 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.AdjustTipRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RefundRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.VoidRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose
;
import
com.gingersoft.gsa.cloud.print.bean.PrintContent
;
import
com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter
;
import
com.gingersoft.gsa.cloud.table.R
;
...
...
@@ -98,7 +103,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
FrameLayout
rl_container
;
@BindView
(
R2
.
id
.
scrollview
)
ScrollView
scrollview
;
Nested
ScrollView
scrollview
;
@BindView
(
R2
.
id
.
tv_table_name
)
TextView
tv_table_name
;
@BindView
(
R2
.
id
.
tv_people_num
)
...
...
@@ -190,80 +195,86 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
scrollview
.
scrollTo
(
0
,
0
);
}
});
initAdapter
();
initOrderDetail
(
mOrderDetailItem
);
setTitleByOrderType
(
mOrderDetailItem
);
setBtnVisibilityByOrderType
(
mOrderDetailItem
.
getOrderType
());
setBtnVisibilityByOrderStatus
(
mOrderDetailItem
);
updateOrderItems
(
mOrderDetailItem
,
mOrderDetailList
);
}
private
void
setOrderBtnVisbilityByTxnId
(
String
payTxnId
,
String
cancelTxnId
,
String
refundTxnId
)
{
if
(!
TextUtils
.
isEmpty
(
cancelTxnId
))
{
tv_order_status
.
setText
(
"已取消"
);
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
setOrderCancelVisbility
();
return
;
}
if
(!
TextUtils
.
isEmpty
(
refundTxnId
))
{
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
tv_order_status
.
setText
(
"已退款"
);
setOrderCancelVisbility
();
return
;
}
if
(!
TextUtils
.
isEmpty
(
payTxnId
))
{
btn_print_order
.
setVisibility
(
View
.
VISIBLE
);
btn_refund
.
setVisibility
(
View
.
VISIBLE
);
btn_tips
.
setVisibility
(
View
.
VISIBLE
);
btn_cancel_order
.
setVisibility
(
View
.
VISIBLE
);
btn_modify_order
.
setVisibility
(
View
.
VISIBLE
);
}
}
private
void
setOrderCancelVisbility
()
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_refund
.
setVisibility
(
View
.
GONE
);
btn_tips
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
@Override
protected
void
onNewIntent
(
Intent
intent
)
{
super
.
onNewIntent
(
intent
);
}
private
void
initOrderDetail
(
OrderManagerResponse
orderDetailItem
)
{
if
(
orderDetailItem
!=
null
)
{
String
payBill
=
LanguageUtils
.
get_language_system
(
this
,
"opentable.paybill"
,
"結賬"
)
+
":"
;
String
pax
=
LanguageUtils
.
get_language_system
(
this
,
"Meal.Mannumber"
,
"人數"
)
+
":"
;
String
openTable
=
LanguageUtils
.
get_language_system
(
this
,
"open.table"
,
"開台"
)
+
":"
;
tv_people_num
.
setText
(
pax
+
orderDetailItem
.
getPerson
());
tv_open_time
.
setText
(
openTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
orderDetailItem
.
getCreateTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
if
(!
TextUtils
.
isEmpty
(
orderDetailItem
.
getEndTime
()))
{
tv_pay_time
.
setText
(
payBill
+
TimeUtils
.
getStringByFormat
(
new
Date
(
orderDetailItem
.
getEndTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
}
tv_total_money
.
setText
(
"$"
+
orderDetailItem
.
getTotalAmount
());
setTitleByOrderType
(
orderDetailItem
);
setOrderStatus
(
orderDetailItem
);
setBtnVisibilityByOrderType
(
orderDetailItem
);
mOrderDetailList
=
OrderAssemblyUtil
.
assemblyOrder
(
OrderDetail
.
orderTransOrderDetails
(
orderDetailItem
.
getOrderDetails
()));
mOrderDetailList
=
OrderAssemblyUtil
.
assemblyOrder
(
OrderDetail
.
orderTransOrderDetails
(
orderDetailItem
.
getOrderDetails
()));
setOrderDetailAdapter
(
mOrderDetailList
);
String
payBill
=
LanguageUtils
.
get_language_system
(
this
,
"opentable.paybill"
,
"結賬"
)
+
":"
;
String
pax
=
LanguageUtils
.
get_language_system
(
this
,
"Meal.Mannumber"
,
"人數"
)
+
":"
;
String
openTable
=
LanguageUtils
.
get_language_system
(
this
,
"open.table"
,
"開台"
)
+
":"
;
tv_people_num
.
setText
(
pax
+
orderDetailItem
.
getPerson
());
tv_open_time
.
setText
(
openTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
orderDetailItem
.
getCreateTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
if
(!
TextUtils
.
isEmpty
(
orderDetailItem
.
getEndTime
()))
{
tv_pay_time
.
setText
(
payBill
+
TimeUtils
.
getStringByFormat
(
new
Date
(
orderDetailItem
.
getEndTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
}
tv_total_money
.
setText
(
"$"
+
orderDetailItem
.
getTotalAmount
());
double
totalMoney
=
getTotalMoney
();
tv_total
.
setText
(
"$"
+
totalMoney
);
}
double
totalMoney
=
getTotalMoney
();
tv_total
.
setText
(
"$"
+
totalMoney
);
setOrderMoneyAdpater
(
orderDetailItem
,
totalMoney
);
setOrderPayMethodAdapter
(
orderDetailItem
);
private
void
setTitleByOrderType
(
OrderManagerResponse
item
)
{
String
orderCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"order.code"
,
"訂單碼"
)
+
": "
;
String
mealCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"meal.code"
,
"取餐碼"
)
+
": "
;
if
(
item
.
getOrderType
()
==
OrderTypeConstans
.
order_type_2
)
{
tv_table_name
.
setText
(
"外賣"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getTakeFoodCode
());
}
else
if
(
item
.
getOrderType
()
==
OrderTypeConstans
.
order_type_7
)
{
tv_table_name
.
setText
(
"自取"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getBillNo
()
+
" "
+
mealCode
+
item
.
getTakeFoodCode
());
}
else
{
String
tableName
=
LanguageUtils
.
get_language_system
(
this
,
"table.number"
,
"檯號"
)
+
": "
;
String
orderNumber
=
LanguageUtils
.
get_language_system
(
this
,
"order.number"
,
"訂單號"
)
+
": "
;
tv_table_name
.
setText
(
tableName
+
item
.
getTableName
());
tv_order_num
.
setText
(
orderNumber
+
item
.
getId
());
}
if
(
orderDetailItem
.
withHywebPay
())
{
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
btn_tips
.
setVisibility
(
View
.
VISIBLE
);
setOrderBtnVisbilityByTxnId
(
orderDetailItem
.
getPayTxnId
(),
orderDetailItem
.
getCancelTxnId
(),
orderDetailItem
.
getRefundTxnId
());
}
private
void
initAdapter
()
{
if
(
mOrderCenterDetailFoodAdapter
==
null
)
{
mOrderCenterDetailFoodAdapter
=
new
OrderCenterDetailFoodAdapter
(
mOrderCenterDetailFoodList
);
recycler_food
.
setAdapter
(
mOrderCenterDetailFoodAdapter
);
LinearLayoutManager
allOrderRecycleLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_food
.
setLayoutManager
(
allOrderRecycleLayoutManager
);
}
if
(
mOrderDetailPayMethodAdapter
==
null
)
{
mOrderDetailPayMethodAdapter
=
new
OrderCenterMoneyAdapter
(
mOrderCenterPayMethodList
);
recycler_pay_method
.
setAdapter
(
mOrderDetailPayMethodAdapter
);
LinearLayoutManager
allOrderRecycleLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_pay_method
.
setLayoutManager
(
allOrderRecycleLayoutManager
);
}
if
(
mOrderCenterMoneyAdapter
==
null
)
{
mOrderCenterMoneyAdapter
=
new
OrderCenterMoneyAdapter
(
mOrderCenterMoneyList
);
recycler_order_moeny
.
setAdapter
(
mOrderCenterMoneyAdapter
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_order_moeny
.
setLayoutManager
(
linearLayoutManager
);
}
// btn_modify_order.setVisibility(View.GONE);
// else {
// tv_order_status.setVisibility(View.GONE);
// btn_tips.setVisibility(View.GONE);
// }
}
private
void
setOrderMoneyAdpater
(
OrderManagerResponse
orderDetailItem
,
double
totalMoney
)
{
if
(
mOrderCenterMoneyList
.
size
()
>
0
)
{
public
void
updateOrderItems
(
OrderManagerResponse
orderDetailItem
,
List
<
OrderDetail
>
orderDetailList
){
if
(
mOrderCenterDetailFoodList
.
size
()
>
0
){
mOrderCenterDetailFoodList
.
clear
();
}
if
(
mOrderCenterMoneyList
.
size
()
>
0
){
mOrderCenterMoneyList
.
clear
();
}
if
(
mOrderCenterPayMethodList
.
size
()
>
0
){
mOrderCenterPayMethodList
.
clear
();
}
SectionTextItem3
serviceAmountSection
=
getOrderServiceAmountSection
(
orderDetailItem
);
if
(
serviceAmountSection
!=
null
)
{
mOrderCenterMoneyList
.
add
(
serviceAmountSection
);
...
...
@@ -276,46 +287,72 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
if
(
roudingSection
!=
null
)
{
mOrderCenterMoneyList
.
add
(
roudingSection
);
}
if
(
mOrderCenterMoneyAdapter
==
null
)
{
mOrderCenterMoneyAdapter
=
new
OrderCenterMoneyAdapter
(
mOrderCenterMoneyList
);
recycler_order_moeny
.
setAdapter
(
mOrderCenterMoneyAdapter
);
LinearLayoutManager
linearLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_order_moeny
.
setLayoutManager
(
linearLayoutManager
);
List
<
PayMethod
>
payMethodList
=
getPayMethodList
(
orderDetailItem
.
getOrderPays
());
List
<
SectionTextItem3
>
orderPayMethodList
=
orderPayMethodTransSectionTextItem3
(
payMethodList
);
mOrderCenterDetailFoodList
.
addAll
(
orderDetailTransSectionTextItem3
(
orderDetailList
));
mOrderCenterPayMethodList
.
addAll
(
orderPayMethodList
);
mOrderCenterDetailFoodAdapter
.
notifyDataSetChanged
();
mOrderCenterMoneyAdapter
.
notifyDataSetChanged
();
mOrderDetailPayMethodAdapter
.
notifyDataSetChanged
();
//設置打印所需支付方式
mDoshokuOrder
.
setBillMoney
(
payMethodList
);
}
private
void
setBtnVisibilityByOrderStatus
(
OrderManagerResponse
orderDetailItem
)
{
if
(
orderDetailItem
.
getStatus
()
==
6
)
{
//訂單已取消
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
mOrderCenterMoneyAdapter
.
notifyDataSetChanged
();
btn_print_order
.
setVisibility
(
View
.
VISIBLE
);
btn_modify_order
.
setVisibility
(
View
.
VISIBLE
);
btn_cancel_order
.
setVisibility
(
View
.
VISIBLE
);
tv_order_status
.
setVisibility
(
View
.
GONE
);
if
(
orderDetailItem
.
withHywebPay
())
{
setOrderBtnVisbilityByTxnId
(
orderDetailItem
.
getPayTxnId
(),
orderDetailItem
.
getCancelTxnId
(),
orderDetailItem
.
getRefundTxnId
());
}
}
}
private
void
setOrderDetailAdapter
(
List
<
OrderDetail
>
orderDetailList
)
{
if
(
mOrderCenterDetailFoodAdapter
==
null
)
{
mOrderCenterDetailFoodList
.
addAll
(
orderDetailTransSectionTextItem3
(
orderDetailList
));
mOrderCenterDetailFoodAdapter
=
new
OrderCenterDetailFoodAdapter
(
mOrderCenterDetailFoodList
);
recycler_food
.
setAdapter
(
mOrderCenterDetailFoodAdapter
);
LinearLayoutManager
allOrderRecycleLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_food
.
setLayoutManager
(
allOrderRecycleLayoutManager
);
}
else
{
mOrderCenterDetailFoodList
.
clear
();
mOrderCenterDetailFoodList
.
addAll
(
orderDetailTransSectionTextItem3
(
orderDetailList
));
mOrderCenterDetailFoodAdapter
.
notifyDataSetChanged
();
private
void
setBtnVisibilityByOrderType
(
int
orderType
)
{
if
(
orderType
==
OrderTypeConstans
.
order_type_2
||
orderType
==
OrderTypeConstans
.
order_type_7
)
{
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
}
}
private
void
setOrderPayMethodAdapter
(
OrderManagerResponse
orderDetailItem
)
{
List
<
PayMethod
>
payMethodList
=
getPayMethodList
(
orderDetailItem
.
getOrderPays
());
List
<
SectionTextItem3
>
sectionTextItem3List
=
orderPayMethodTransSectionTextItem3
(
payMethodList
);
if
(
mOrderDetailPayMethodAdapter
==
null
)
{
mOrderCenterPayMethodList
.
addAll
(
sectionTextItem3List
);
mOrderDetailPayMethodAdapter
=
new
OrderCenterMoneyAdapter
(
mOrderCenterPayMethodList
);
recycler_pay_method
.
setAdapter
(
mOrderDetailPayMethodAdapter
);
LinearLayoutManager
allOrderRecycleLayoutManager
=
new
LinearLayoutManager
(
this
,
LinearLayoutManager
.
VERTICAL
,
false
);
recycler_pay_method
.
setLayoutManager
(
allOrderRecycleLayoutManager
);
}
else
{
mOrderCenterPayMethodList
.
clear
();
mOrderCenterPayMethodList
.
addAll
(
sectionTextItem3List
);
mOrderDetailPayMethodAdapter
.
notifyDataSetChanged
();
private
void
setOrderBtnVisbilityByTxnId
(
String
payTxnId
,
String
cancelTxnId
,
String
refundTxnId
)
{
if
(!
TextUtils
.
isEmpty
(
cancelTxnId
))
{
tv_order_status
.
setText
(
"已取消"
);
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
setOrderCancelVisbility
();
return
;
}
//設置打印所需支付方式
mDoshokuOrder
.
setBillMoney
(
payMethodList
);
if
(!
TextUtils
.
isEmpty
(
refundTxnId
))
{
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
tv_order_status
.
setText
(
"已退款"
);
setOrderCancelVisbility
();
return
;
}
if
(!
TextUtils
.
isEmpty
(
payTxnId
))
{
btn_print_order
.
setVisibility
(
View
.
VISIBLE
);
btn_refund
.
setVisibility
(
View
.
VISIBLE
);
btn_tips
.
setVisibility
(
View
.
VISIBLE
);
btn_cancel_order
.
setVisibility
(
View
.
VISIBLE
);
btn_modify_order
.
setVisibility
(
View
.
VISIBLE
);
}
}
private
void
setOrderCancelVisbility
()
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_refund
.
setVisibility
(
View
.
GONE
);
btn_tips
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
}
public
static
List
<
SectionTextItem3
>
orderPayMethodTransSectionTextItem3
(
List
<
PayMethod
>
payMethodList
)
{
...
...
@@ -325,8 +362,8 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
sectionTextItem3
.
setLeftText
(
payMethod
.
getPayName
());
sectionTextItem3
.
setCenterText
(
String
.
valueOf
(
0
));
sectionTextItem3
.
setRightText
(
String
.
valueOf
(
payMethod
.
getPayMoney
()));
sectionTextItem3
.
setLeftTextStyle
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
style
.
order_paymethod_text_style
);
sectionTextItem3
.
setRightTextStyle
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
style
.
order_paymethod_text_style
);
sectionTextItem3
.
setLeftTextStyle
(
R
.
style
.
order_paymethod_text_style
);
sectionTextItem3
.
setRightTextStyle
(
R
.
style
.
order_paymethod_text_style
);
sectionTextItem3List
.
add
(
sectionTextItem3
);
}
return
sectionTextItem3List
;
...
...
@@ -451,49 +488,7 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
return
otherMoney
;
}
private
void
setTitleByOrderType
(
OrderManagerResponse
item
)
{
String
orderCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"order.code"
,
"訂單碼"
)
+
": "
;
String
mealCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"meal.code"
,
"取餐碼"
)
+
": "
;
if
(
item
.
getOrderType
()
==
2
)
{
tv_table_name
.
setText
(
"外賣"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getTakeFoodCode
());
}
else
if
(
item
.
getOrderType
()
==
7
)
{
tv_table_name
.
setText
(
"自取"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getBillNo
()
+
" "
+
mealCode
+
item
.
getTakeFoodCode
());
}
else
{
String
tableName
=
LanguageUtils
.
get_language_system
(
this
,
"table.number"
,
"檯號"
)
+
": "
;
String
orderNumber
=
LanguageUtils
.
get_language_system
(
this
,
"order.number"
,
"訂單號"
)
+
": "
;
tv_table_name
.
setText
(
tableName
+
item
.
getTableName
());
tv_order_num
.
setText
(
orderNumber
+
item
.
getId
());
}
}
/**
* 設置訂單狀態
*
* @param item
*/
private
void
setOrderStatus
(
OrderManagerResponse
item
)
{
if
(
item
.
getStatus
()
==
6
)
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
tv_order_status
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
btn_print_order
.
setVisibility
(
View
.
VISIBLE
);
btn_modify_order
.
setVisibility
(
View
.
VISIBLE
);
btn_cancel_order
.
setVisibility
(
View
.
VISIBLE
);
tv_order_status
.
setVisibility
(
View
.
GONE
);
}
}
private
void
setBtnVisibilityByOrderType
(
@NotNull
OrderManagerResponse
item
)
{
if
(
item
.
getOrderType
()
==
2
||
item
.
getOrderType
()
==
7
)
{
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
}
}
@OnClick
({
R2
.
id
.
btn_print_order
,
R2
.
id
.
btn_cancel_order
,
R2
.
id
.
btn_modify_order
,
R2
.
id
.
btn_tips
,
R2
.
id
.
btn_refund
})
public
void
onClick
(
View
v
)
{
...
...
@@ -528,31 +523,33 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
private
void
hywebRefund
(
OrderManagerResponse
datasBean
)
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
mOrderDetailItem
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
mOrderDetailItem
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
mOrderDetailItem
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
mOrderDetailItem
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
RefundRequest
refundRequest
=
new
RefundRequest
();
refundRequest
.
setPAYMENT_APP_ID
(
getPaymentAppIdByPays
(
mOrderDetailItem
.
getOrderPays
()));
PosPay
.
refund
(
mContext
,
this
,
refundRequest
,
txnIdRequest
,
new
OnPosActionListener
()
{
refundRequest
.
setTXN_AMT
(
mOrderDetailItem
.
getTotalAmount
());
PosPay
.
refund
(
mContext
,
this
,
refundRequest
,
txnIdRequest
,
new
OnPosActionListener
<
RefundRespose
>()
{
@Override
public
void
onPosSuccess
(
HywebPosRespon
se
response
)
{
public
void
onPosSuccess
(
RefundRespo
se
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
}
@Override
public
void
onPosException
(
HywebPosResponse
respons
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setOrderNo
(
mOrderDetailItem
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
REFUND
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -560,14 +557,28 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onSuccess: "
+
response
.
toString
());
refreafshOrderDetail
();
public
void
onPosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
);
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onError: "
+
e
.
getMessage
());
public
void
onUpdateStatusSuccess
(
RefundRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setOrderNo
(
mOrderDetailItem
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
REFUND
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
@@ -599,31 +610,33 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
private
void
hywebOrderCancle
(
OrderManagerResponse
datasBean
)
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
mOrderDetailItem
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
mOrderDetailItem
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
mOrderDetailItem
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
mOrderDetailItem
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
VoidRequest
voidRequest
=
new
VoidRequest
();
PosPay
.
voidO
(
mContext
,
this
,
voidRequest
,
txnIdRequest
,
new
OnPosActionListener
()
{
@Override
public
void
onPosSuccess
(
HywebPosResponse
response
)
{
PosPay
.
voidO
(
mContext
,
this
,
voidRequest
,
txnIdRequest
,
new
OnPosActionListener
<
VoidRespose
>()
{
@Override
public
void
onPosSuccess
(
VoidRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
refreafshOrderDetail
();
}
@Override
public
void
onPosException
(
HywebPosResponse
respons
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
VOID
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -631,14 +644,28 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
LoganManager
.
w_code
(
TAG
,
"onSuccess: "
+
response
.
toString
());
refreafshOrderDetail
();
public
void
onPosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
);
}
@Override
public
void
onUpdateStatusSuccess
(
VoidRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onError: "
+
e
.
getMessage
());
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
datasBean
.
getId
());
statusExceptionParam
.
setOrderNo
(
datasBean
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
VOID
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
@@ -652,30 +679,32 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
if
(!
TextUtils
.
isEmpty
(
number
))
{
GetTxnIdRequest
txnIdRequest
=
new
GetTxnIdRequest
();
txnIdRequest
.
setOrderId
(
DoshokuOrder
.
getInstance
().
getOrder
Id
());
if
(!
TextUtils
.
isEmpty
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
()
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setOrderId
(
mOrderDetailItem
.
get
Id
());
if
(!
TextUtils
.
isEmpty
(
mOrderDetailItem
.
getTableNumber
()))
{
txnIdRequest
.
setTableExtId
(
mOrderDetailItem
.
getTable
Id
());
}
else
{
txnIdRequest
.
setTableId
(
DoshokuOrder
.
getInstance
().
getOpenTableInfo
().
get
Id
());
txnIdRequest
.
setTableId
(
mOrderDetailItem
.
getTable
Id
());
}
txnIdRequest
.
setAmount
(
mOrderDetailItem
.
getAmount
());
txnIdRequest
.
setAmount
(
mOrderDetailItem
.
get
Total
Amount
());
PosPay
.
tip
(
mContext
,
OrderDetailActivity
.
this
,
txnIdRequest
,
getTipsRequest
(
mOrderDetailItem
.
getPayTxnId
(),
mOrderDetailItem
.
get
Amount
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
()
{
getTipsRequest
(
mOrderDetailItem
.
getPayTxnId
(),
mOrderDetailItem
.
get
TotalAmount
(),
Double
.
parseDouble
(
number
)),
new
OnPosActionListener
<
AdjustTipRespose
>
()
{
@Override
public
void
onPosSuccess
(
HywebPosResponse
response
)
{
public
void
onPosSuccess
(
AdjustTipRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onPosSuccess: "
+
response
.
toString
());
refreafshOrderDetail
();
}
@Override
public
void
onPosException
(
HywebPosResponse
respons
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
response
.
toString
());
public
void
onPosException
(
Exception
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosException: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getAmount
());
statusExceptionParam
.
setOrderNum
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setOrderNo
(
mOrderDetailItem
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
...
...
@@ -683,13 +712,28 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
}
@Override
public
void
on
Success
(
HywebPosResponse
respons
e
)
{
refreafshOrderDetail
(
);
public
void
on
PosInvalid
(
String
e
)
{
LoganManager
.
w_code
(
TAG
,
"onPosInvalid: "
+
e
.
toString
()
);
}
@Override
public
void
onError
(
Throwable
e
)
{
public
void
onUpdateStatusSuccess
(
AdjustTipRespose
response
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusSuccess: "
+
response
.
toString
());
}
@Override
public
void
onUpdateStatusError
(
Throwable
e
)
{
LoganManager
.
w_code
(
TAG
,
"onUpdateStatusError: "
+
e
.
getMessage
());
if
(
findFragment
(
PosActionStatusExceptionFragment
.
class
)
==
null
)
{
PosActionStatusExceptionParam
statusExceptionParam
=
new
PosActionStatusExceptionParam
();
statusExceptionParam
.
setTxnId
(
mOrderDetailItem
.
getPayTxnId
());
statusExceptionParam
.
setAmount
(
mOrderDetailItem
.
getTotalAmount
());
statusExceptionParam
.
setOrderId
(
mOrderDetailItem
.
getId
());
statusExceptionParam
.
setOrderNo
(
mOrderDetailItem
.
getOrderNo
());
statusExceptionParam
.
setPayMethodName
(
"VISA測試"
);
statusExceptionParam
.
setPosAction
(
PosAction
.
TIP
);
loadRootFragment
(
R
.
id
.
rl_container
,
PosActionStatusExceptionFragment
.
newInstance
(
statusExceptionParam
));
}
}
});
}
...
...
@@ -886,6 +930,10 @@ public class OrderDetailActivity extends BaseFragmentActivity<OrderDetailPresent
public
void
returnOrderDetail
(
OrderManagerResponse
orderDetailItem
)
{
this
.
mOrderDetailItem
=
orderDetailItem
;
initOrderDetail
(
orderDetailItem
);
setTitleByOrderType
(
mOrderDetailItem
);
setBtnVisibilityByOrderType
(
mOrderDetailItem
.
getOrderType
());
setBtnVisibilityByOrderStatus
(
mOrderDetailItem
);
updateOrderItems
(
mOrderDetailItem
,
mOrderDetailList
);
}
@Override
...
...
component-table/src/main/java/com/gingersoft/gsa/cloud/table/mvp/ui/adapter/OrderCenterAdapter.java
View file @
66c18f25
...
...
@@ -6,6 +6,7 @@ import android.view.View;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
com.gingersoft.gsa.cloud.common.constans.OrderTypeConstans
;
import
com.gingersoft.gsa.cloud.common.utils.LanguageUtils
;
import
com.gingersoft.gsa.cloud.common.utils.time.TimeUtils
;
import
com.gingersoft.gsa.cloud.table.R
;
...
...
@@ -92,21 +93,9 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
@Override
public
void
setData
(
OrderManagerResponse
item
,
int
position
)
{
String
pax
=
LanguageUtils
.
get_language_system
(
mContext
,
"Meal.Mannumber"
,
"人數"
)
+
":"
;
String
openTable
=
LanguageUtils
.
get_language_system
(
mContext
,
"open.table"
,
"開台"
)
+
":"
;
String
payTable
=
LanguageUtils
.
get_language_system
(
mContext
,
"open.table"
,
"結賬"
)
+
":"
;
String
amount
=
LanguageUtils
.
get_language_system
(
mContext
,
"amount"
,
"金額"
)
+
":$"
;
tv_people_num
.
setText
(
pax
+
item
.
getPerson
());
tv_open_time
.
setText
(
openTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
item
.
getCreateTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
if
(!
TextUtils
.
isEmpty
(
item
.
getEndTime
()))
{
tv_pay_time
.
setText
(
payTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
item
.
getEndTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
}
tv_pay_money
.
setText
(
amount
+
item
.
getTotalAmount
());
setTitleByOrderType
(
item
);
setOrderStatus
(
item
,
position
);
setBtnVisibilityByOrderType
(
item
);
setOrderItemDetail
(
item
);
setBtnVisibilityByOrderType
(
item
.
getOrderType
());
setBtnVisibilityByOrderStatus
(
item
,
position
);
ll_root_container
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
...
...
@@ -118,13 +107,28 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
});
}
private
void
setTitleByOrderType
(
OrderManagerResponse
item
)
{
private
void
setOrderItemDetail
(
OrderManagerResponse
item
)
{
String
pax
=
LanguageUtils
.
get_language_system
(
mContext
,
"Meal.Mannumber"
,
"人數"
)
+
":"
;
String
openTable
=
LanguageUtils
.
get_language_system
(
mContext
,
"open.table"
,
"開台"
)
+
":"
;
String
payTable
=
LanguageUtils
.
get_language_system
(
mContext
,
"open.table"
,
"結賬"
)
+
":"
;
String
amount
=
LanguageUtils
.
get_language_system
(
mContext
,
"amount"
,
"金額"
)
+
":$"
;
String
orderCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"order.code"
,
"訂單碼"
)
+
": "
;
String
mealCode
=
LanguageUtils
.
get_language_system
(
mContext
,
"meal.code"
,
"取餐碼"
)
+
": "
;
if
(
item
.
getOrderType
()
==
2
)
{
tv_people_num
.
setText
(
pax
+
item
.
getPerson
());
tv_open_time
.
setText
(
openTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
item
.
getCreateTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
if
(!
TextUtils
.
isEmpty
(
item
.
getEndTime
()))
{
tv_pay_time
.
setText
(
payTable
+
TimeUtils
.
getStringByFormat
(
new
Date
(
item
.
getEndTime
()),
TimeUtils
.
DEFAULT_DATE_FORMAT_YMDHM
));
}
tv_pay_money
.
setText
(
amount
+
item
.
getTotalAmount
());
btn_print_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"print.order"
,
"打印賬單"
));
btn_tips
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"public.tips"
,
"貼士"
));
btn_modify_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"modify.order"
,
"修改訂單"
));
btn_cancel_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"cancel.order"
,
"取消訂單"
));
if
(
item
.
getOrderType
()
==
OrderTypeConstans
.
order_type_2
)
{
tv_table_name
.
setText
(
"外賣"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getTakeFoodCode
());
}
else
if
(
item
.
getOrderType
()
==
7
)
{
}
else
if
(
item
.
getOrderType
()
==
OrderTypeConstans
.
order_type_
7
)
{
tv_table_name
.
setText
(
"自取"
);
tv_order_num
.
setText
(
orderCode
+
item
.
getBillNo
()
+
" "
+
mealCode
+
item
.
getTakeFoodCode
());
}
else
{
...
...
@@ -135,8 +139,7 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
}
}
private
void
setOrderStatus
(
OrderManagerResponse
item
,
int
position
)
{
// btn_cancel_order.setVisibility(View.GONE);
private
void
setBtnVisibilityByOrderStatus
(
OrderManagerResponse
item
,
int
position
)
{
if
(
item
.
getStatus
()
==
6
)
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
...
...
@@ -149,15 +152,11 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
btn_cancel_order
.
setVisibility
(
View
.
VISIBLE
);
btn_order_status
.
setVisibility
(
View
.
GONE
);
if
(
item
.
withHywebPay
())
{
ll_pos_bottom
.
setVisibility
(
View
.
VISIBLE
);
setOrderStatusByTxnId
(
item
.
getPayTxnId
(),
item
.
getCancelTxnId
(),
item
.
getRefundTxnId
());
ll_pos_bottom
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
ll_pos_bottom
.
setVisibility
(
View
.
GONE
);
}
btn_print_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"print.order"
,
"打印賬單"
));
btn_tips
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"public.tips"
,
"貼士"
));
btn_modify_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"modify.order"
,
"修改訂單"
));
btn_cancel_order
.
setText
(
LanguageUtils
.
get_language_system
(
mContext
,
"cancel.order"
,
"取消訂單"
));
btn_print_order
.
setOnClickListener
(
new
View
.
OnClickListener
()
{
@Override
public
void
onClick
(
View
v
)
{
...
...
@@ -199,15 +198,6 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
}
});
}
// btn_modify_order.setVisibility(View.GONE);
}
private
void
setOrderCancelVisbility
()
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_refund
.
setVisibility
(
View
.
GONE
);
btn_tips
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
}
private
void
setOrderStatusByTxnId
(
String
payTxnId
,
String
cancelTxnId
,
String
refundTxnId
)
{
...
...
@@ -232,8 +222,16 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
}
}
private
void
setBtnVisibilityByOrderType
(
OrderManagerResponse
item
)
{
if
(
item
.
getOrderType
()
==
2
||
item
.
getOrderType
()
==
7
)
{
private
void
setOrderCancelVisbility
()
{
btn_print_order
.
setVisibility
(
View
.
GONE
);
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
btn_refund
.
setVisibility
(
View
.
GONE
);
btn_tips
.
setVisibility
(
View
.
GONE
);
}
private
void
setBtnVisibilityByOrderType
(
int
orderType
)
{
if
(
orderType
==
OrderTypeConstans
.
order_type_2
||
orderType
==
OrderTypeConstans
.
order_type_7
)
{
//外賣自取 不可以修改訂單 取消訂單
btn_modify_order
.
setVisibility
(
View
.
GONE
);
btn_cancel_order
.
setVisibility
(
View
.
GONE
);
...
...
component-table/src/main/res/drawable/meal_food_group_point_focuese.xml
View file @
66c18f25
...
...
@@ -4,8 +4,10 @@
<solid
android:color=
"@color/red_400"
/>
<corners
android:radius=
"@dimen/dp_6"
/>
<size
android:width=
"
15dp
"
android:height=
"
2dp
"
/>
android:width=
"
@dimen/dp_12
"
android:height=
"
@dimen/dp_3
"
/>
</shape>
\ No newline at end of file
component-table/src/main/res/drawable/meal_food_group_point_unfocused.xml
View file @
66c18f25
...
...
@@ -4,7 +4,10 @@
<solid
android:color=
"@color/theme_grey_color"
/>
<corners
android:radius=
"@dimen/dp_6"
/>
<size
android:width=
"15dp"
android:height=
"2dp"
/>
android:width=
"@dimen/dp_12"
android:height=
"@dimen/dp_3"
/>
</shape>
\ No newline at end of file
component-table/src/main/res/layout/activity_order_detail.xml
View file @
66c18f25
...
...
@@ -87,7 +87,7 @@
android:background=
"@color/gray"
android:orientation=
"horizontal"
/>
<ScrollView
<
androidx.core.widget.Nested
ScrollView
android:id=
"@+id/scrollview"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
...
...
@@ -265,7 +265,7 @@
android:focusable=
"false"
android:scrollbars=
"none"
/>
</LinearLayout>
</ScrollView>
</
androidx.core.widget.Nested
ScrollView>
<com.qmuiteam.qmui.widget.QMUITopBar
android:id=
"@+id/topbar"
...
...
component-table/src/main/res/layout/table_activity_meal_stand.xml
View file @
66c18f25
...
...
@@ -482,15 +482,18 @@
<androidx.recyclerview.widget.RecyclerView
android:id=
"@+id/rv_food_group"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
/>
android:layout_height=
"wrap_content"
android:divider=
"@null"
android:fadeScrollbars=
"false"
android:orientation=
"vertical"
/>
<LinearLayout
android:id=
"@+id/ll_food_group_point"
android:layout_width=
"
match_par
ent"
android:layout_height=
"
@dimen/dp_5
"
android:
background=
"@color/theme_grey_colo
r"
android:layout_width=
"
wrap_cont
ent"
android:layout_height=
"
wrap_content
"
android:
layout_gravity=
"cente
r"
android:orientation=
"horizontal"
android:visibility=
"
in
visible"
/>
android:visibility=
"visible"
/>
</LinearLayout>
<RelativeLayout
...
...
config.gradle
View file @
66c18f25
...
...
@@ -7,8 +7,8 @@ ext {
targetSdkVersion
:
29
,
//正式版: 1.0.3 3
//內部測試版:1.2.0 20
versionCode
:
1
6
,
versionName
:
"1.1.
6
"
versionCode
:
1
7
,
versionName
:
"1.1.
7
"
]
version
=
[
...
...
@@ -26,7 +26,7 @@ ext {
dependencies
=
[
//support
"appcompat-v7"
:
'androidx.appcompat:appcompat:1.
1.0
'
,
//不要超過1.0.2,不然android5.1.1用webview會有問題
"appcompat-v7"
:
'androidx.appcompat:appcompat:1.
0.2
'
,
//不要超過1.0.2,不然android5.1.1用webview會有問題
"design"
:
'com.google.android.material:material:1.0.0'
,
"support-v4"
:
'androidx.legacy:legacy-support-v4:1.0.0'
,
"cardview-v7"
:
'androidx.cardview:cardview:1.0.0'
,
...
...
library-base/src/main/java/com/jess/arms/integration/AppManager.java
View file @
66c18f25
...
...
@@ -16,9 +16,11 @@
package
com
.
jess
.
arms
.
integration
;
import
android.app.Activity
;
import
android.app.ActivityManager
;
import
android.app.Application
;
import
android.app.Dialog
;
import
android.app.Service
;
import
android.content.ComponentName
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.os.Message
;
...
...
@@ -40,6 +42,7 @@ import javax.inject.Inject;
import
javax.inject.Singleton
;
import
androidx.appcompat.app.AppCompatActivity
;
import
timber.log.Timber
;
/**
...
...
@@ -245,6 +248,28 @@ public final class AppManager {
return
mActivityList
.
size
()
>
0
?
mActivityList
.
get
(
mActivityList
.
size
()
-
1
)
:
null
;
}
// /**
// * 獲取棧頂的{@link Activity}此方法可以保證與AMS任務棧中 topActivity一致,一般用於與調起其他應用返回上一次打開的{@link Activity}
// *
// * @return
// */
// public void startTaskTopActivity() {
// ComponentName topActivity;
// ActivityManager manager = (ActivityManager) mApplication.getSystemService(Context.ACTIVITY_SERVICE);
// ActivityManager.RunningTaskInfo info = manager.getRunningTasks(1).get(0);
//
// topActivity = info.topActivity;
//
// List<ActivityManager.RunningAppProcessInfo> runningAppProcessInfos = manager.getRunningAppProcesses();
// List<ActivityManager.AppTask> appTasks;
// if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
// appTasks = manager.getAppTasks();
// }
// //返回上次操作的頁面
// Intent intent = new Intent();
// intent.setComponent(topActivity);
// mApplication.startActivity(intent);
// }
/**
* 返回一个存储所有未销毁的 {@link Activity} 的集合
...
...
@@ -368,6 +393,7 @@ public final class AppManager {
/**
* 打开指定 {@link Activity}
*
* @param openClass
*/
public
void
changeRootActivityByClass
(
Class
openClass
)
{
...
...
library-common/proguard.cfg
View file @
66c18f25
...
...
@@ -41,3 +41,6 @@
-keep class com.zui.deviceidservice.** { *; }
-keep interface com.zui.deviceidservice.** { *; }
# loadsir
-dontwarn com.kingja.loadsir.**
-keep class com.kingja.loadsir.** {*;}
library-common/src/main/java/com/gingersoft/gsa/cloud/app/GsaCloudApplication.java
View file @
66c18f25
...
...
@@ -38,9 +38,15 @@ import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback;
import
com.gingersoft.gsa.cloud.common.loadsir.ErrorCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.LoadingCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.TimeoutCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosPayStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosRefundStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosSettlementStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.oaId.DeviceID
;
import
com.gingersoft.gsa.cloud.common.utils.AidlUtil
;
import
com.gingersoft.gsa.cloud.common.utils.AppDevices
;
import
com.gingersoft.gsa.cloud.common.utils.FileUtils
;
import
com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler
;
import
com.gingersoft.gsa.cloud.common.utils.log.LogUtil
;
...
...
@@ -158,6 +164,7 @@ public class GsaCloudApplication extends BaseApplication {
+
File
.
separator
+
LoganConfig
.
FILE_NAME
)
.
setEncryptKey16
(
LoganConfig
.
EncryptKey16
.
getBytes
())
.
setEncryptIV16
(
LoganConfig
.
EncryptIV16
.
getBytes
())
.
setDay
(
LoganConfig
.
DAY
)
.
build
();
Logan
.
init
(
config
);
Logan
.
setOnLoganProtocolStatus
(
new
OnLoganProtocolStatus
()
{
...
...
@@ -188,10 +195,12 @@ public class GsaCloudApplication extends BaseApplication {
* 初始化Hyweb支付回調
*/
private
void
initHywebCommandImpl
()
{
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_LOGIN
)
.
setActionName
(
ComponentAction
.
Login
.
INIT_HYWEB_COMMAND_IMPL
)
.
build
()
.
call
();
// if (AppDevices.isHywebPos()) {
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_LOGIN
)
.
setActionName
(
ComponentAction
.
Login
.
INIT_HYWEB_COMMAND_IMPL
)
.
build
()
.
call
();
// }
}
public
Activity
getCurrentActivity
()
{
...
...
@@ -229,6 +238,11 @@ public class GsaCloudApplication extends BaseApplication {
.
addCallback
(
new
LoadingCallback
())
.
addCallback
(
new
TimeoutCallback
())
.
addCallback
(
new
CustomCallback
())
.
addCallback
(
new
PosPayStatusExceptionCallback
())
.
addCallback
(
new
PosRefundStatusExceptionCallback
())
.
addCallback
(
new
PosVoidStatusExceptionCallback
())
.
addCallback
(
new
PosTipsStatusExceptionCallback
())
.
addCallback
(
new
PosSettlementStatusExceptionCallback
())
.
commit
();
}
...
...
@@ -318,7 +332,6 @@ public class GsaCloudApplication extends BaseApplication {
.
backupStrategy
(
new
MyBackupStrategy
(
FileUtils
.
ACTION_MAX_SIZE
))
// 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)
.
cleanStrategy
(
new
FileLastModifiedCleanStrategy
(
FileUtils
.
ACTION_MAX_FILE_TIME
))
// 指定日志文件清除策略,默认为 NeverCleanStrategy()
.
build
();
XLog
.
init
(
// 初始化 XLog
config
,
// 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()
androidPrinter
,
// 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/config/LoganConfig.java
View file @
66c18f25
...
...
@@ -15,6 +15,11 @@ public class LoganConfig {
public
static
final
String
UPLOAD_LOG_URL
=
"http://192.168.1.113:8082/logan/upload.json"
;
/**
* 日誌保留天數
*/
public
static
final
int
DAY
=
1
;
/**
* 代码日志
*/
public
static
final
byte
CODE_LEVLE
=
1
;
...
...
@@ -38,4 +43,9 @@ public class LoganConfig {
* native日誌
*/
public
static
final
byte
native_LEVLE
=
6
;
/**
* 打印相關日誌
*/
public
static
final
byte
PRINTER_LEVLE
=
7
;
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/config/expandconfig/FunctionExtendedConfiguration.java
View file @
66c18f25
...
...
@@ -38,6 +38,17 @@ public class FunctionExtendedConfiguration {
.
remark
(
"外送結賬打印次數"
)
.
build
();
private
ExpandInfoSetting
OrderReceivingTimeout
=
ExpandInfoSetting
.
builder
()
.
valueInt
(
60
*
60
*
1000
)
.
remark
(
"外送接單超時時間"
)
.
build
();
private
ExpandInfoSetting
FrozenChainAutoOrder
=
ExpandInfoSetting
.
builder
()
.
valueBoolean
(
true
)
.
remark
(
"是否自動接單 為0true"
)
.
build
();
private
ExpandInfoSetting
TableModePrintCount
=
ExpandInfoSetting
.
builder
()
.
valueInt
(
1
)
.
remark
(
"餐檯印單打印次數"
)
...
...
@@ -48,11 +59,6 @@ public class FunctionExtendedConfiguration {
.
remark
(
"餐檯模式結賬單打印次數"
)
.
build
();
private
ExpandInfoSetting
OrderReceivingTimeout
=
ExpandInfoSetting
.
builder
()
.
valueInt
(
60
*
60
*
1000
)
.
remark
(
"外送接單超時時間"
)
.
build
();
private
ExpandInfoSetting
PrintMemberInfo
=
ExpandInfoSetting
.
builder
()
.
valueBoolean
(
false
)
.
remark
(
"是否打印會員信息"
)
...
...
@@ -78,11 +84,6 @@ public class FunctionExtendedConfiguration {
.
remark
(
"是否打印\"頭單\"文字"
)
.
build
();
private
ExpandInfoSetting
FrozenChainAutoOrder
=
ExpandInfoSetting
.
builder
()
.
valueBoolean
(
true
)
.
remark
(
"是否自動接單 為0true"
)
.
build
();
private
ExpandInfoSetting
MergeSendFood
=
ExpandInfoSetting
.
builder
()
.
valueBoolean
(
false
)
.
remark
(
"送單是否自動合併食品"
)
...
...
@@ -113,6 +114,11 @@ public class FunctionExtendedConfiguration {
.
remark
(
"餐檯模式開檯自動彈出輸入人數彈窗"
)
.
build
();
private
ExpandInfoSetting
PluNumberChar
=
ExpandInfoSetting
.
builder
()
.
valueChar
(
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
)
.
remark
(
"PLU左側滑動信息配置"
)
.
build
();
/**
* skyorder相關
*/
...
...
@@ -137,7 +143,9 @@ public class FunctionExtendedConfiguration {
.
build
();
public
<
T
>
T
getPluNumberCharVaule
()
{
return
PluNumberChar
.
getValue
();
}
public
<
T
>
T
getRoundingVaule
()
{
return
Rounding
.
getValue
();
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/constans/OrderTypeConstans.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
constans
;
public
interface
OrderTypeConstans
{
/**
* 堂食
*/
int
order_type_1
=
1
;
/**
* 外賣
*/
int
order_type_2
=
2
;
/**
* 掃碼點餐
*/
int
order_type_3
=
3
;
/**
* 預點餐
*/
int
order_type_4
=
4
;
/**
* 自取
*/
int
order_type_7
=
7
;
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/BasePosCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
android.content.Context
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
public
abstract
class
BasePosCallback
extends
Callback
{
private
TextView
tv_order_num
;
private
TextView
tv_final_prompt
;
private
TextView
tv_exception
;
private
TextView
tv_amount
;
private
TextView
tv_pay_method
;
public
BasePosCallback
()
{
}
@Override
protected
void
onViewCreate
(
Context
context
,
View
rootView
)
{
tv_order_num
=
rootView
.
findViewById
(
R
.
id
.
tv_order_num
);
tv_final_prompt
=
rootView
.
findViewById
(
R
.
id
.
tv_final_prompt
);
tv_exception
=
rootView
.
findViewById
(
R
.
id
.
tv_exception
);
tv_amount
=
rootView
.
findViewById
(
R
.
id
.
tv_amount
);
tv_pay_method
=
rootView
.
findViewById
(
R
.
id
.
tv_pay_method
);
}
public
void
setTvOrderNum
(
String
orderNum
)
{
tv_order_num
.
setText
(
orderNum
);
}
public
void
setTvException
(
String
orderNum
)
{
tv_exception
.
setText
(
orderNum
);
}
public
void
setTvAmount
(
String
amount
)
{
tv_amount
.
setText
(
amount
);
}
public
void
setTvPayMethod
(
String
payMethod
)
{
tv_pay_method
.
setText
(
payMethod
);
}
/**
* 顯示重試多次還是無法查詢到狀態 顯示提示信息
*
* @param show
*/
public
void
showFinalStrategy
(
boolean
show
)
{
if
(
show
)
{
tv_final_prompt
.
setVisibility
(
View
.
VISIBLE
);
}
else
{
tv_final_prompt
.
setVisibility
(
View
.
INVISIBLE
);
}
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosPayStatusExceptionCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
android.content.Context
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
PosPayStatusExceptionCallback
extends
BasePosCallback
{
@Override
protected
int
onCreateView
()
{
return
R
.
layout
.
loadsir_pos_pay_status_exception
;
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosRefundStatusExceptionCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
PosRefundStatusExceptionCallback
extends
BasePosCallback
{
@Override
protected
int
onCreateView
()
{
return
R
.
layout
.
loadsir_pos_refund_status_exception
;
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosSettlementStatusExceptionCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
android.view.View
;
import
android.widget.TextView
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
PosSettlementStatusExceptionCallback
extends
BasePosCallback
{
@Override
protected
int
onCreateView
()
{
return
R
.
layout
.
loadsir_pos_settlement_status_exception
;
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosTipsStatusExceptionCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
PosTipsStatusExceptionCallback
extends
BasePosCallback
{
@Override
protected
int
onCreateView
()
{
return
R
.
layout
.
loadsir_pos_tips_status_exception
;
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/loadsir/pos/PosVoidStatusExceptionCallback.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
common
.
loadsir
.
pos
;
import
com.gingersoft.gsa.cloud.common.R
;
import
com.kingja.loadsir.callback.Callback
;
/**
* @author : bin
* @create date: 2020-10-27
* @update date: 2020-10-27
* @description:
*/
public
class
PosVoidStatusExceptionCallback
extends
BasePosCallback
{
@Override
protected
int
onCreateView
()
{
return
R
.
layout
.
loadsir_pos_void_status_exception
;
}
}
library-common/src/main/java/com/gingersoft/gsa/cloud/common/logan/LoganManager.java
View file @
66c18f25
...
...
@@ -53,6 +53,12 @@ public class LoganManager {
printLog
(
"AppCrashHandler"
,
log
);
}
public
static
void
w_printer
(
String
TAG
,
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
PRINTER_LEVLE
);
// Logan.f();
printLog
(
TAG
,
log
);
}
public
static
void
w_H5
(
String
log
)
{
Logan
.
w
(
log
,
LoganConfig
.
H5_LEVLE
);
}
...
...
@@ -92,7 +98,7 @@ public class LoganManager {
}
}
});
Log
.
d
(
TAG
,
"upload result, httpCode: "
+
statusCode
+
", details: "
+
resultData
);
Log
anManager
.
w_code
(
TAG
,
"upload result, httpCode: "
+
statusCode
+
", details: "
+
resultData
);
}
});
}
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/common/utils/AppDevice.java
→
library-common/src/main/java/com/gingersoft/gsa/cloud/common/utils/AppDevice
s
.java
View file @
66c18f25
...
...
@@ -8,7 +8,7 @@ import android.os.Build;
* @更新時間: 2020-12-26 10:49
* @描述:
*/
public
class
AppDevice
{
public
class
AppDevice
s
{
/**
* 是不是N5設備
...
...
library-common/src/main/java/com/gingersoft/gsa/cloud/component/ComponentAction.java
View file @
66c18f25
...
...
@@ -6,45 +6,55 @@ package com.gingersoft.gsa.cloud.component;
* @update date: 2020-11-26
* @description:
*/
public
class
ComponentAction
{
public
interface
ComponentAction
{
public
interface
Login
{
interface
Login
{
String
OPEN_WELCOME
=
"open_welcome"
;
String
OPEN_LOGIN
=
"open_login"
;
String
OPEN_INIT_HYWEB_PAGE
=
"open_init_hyweb_page"
;
String
INIT_HYWEB_COMMAND_IMPL
=
"init_hyweb_command_impl"
;
}
public
interface
Download
{
interface
Download
{
}
public
interface
Main
{
interface
Main
{
}
public
interface
Table
{
interface
Table
{
String
KILL_MEAL_ORDER_PAY
=
"kill_meal_order_pay"
;
/**
* 初始化餐檯,外賣訂單
*/
String
INT_ORDER
=
"int_order"
;
}
public
interface
Print
{
interface
Print
{
}
public
interface
Manager
{
interface
Manager
{
}
public
interface
DeliveryPick
{
interface
DeliveryPick
{
}
public
interface
ColdChain
{
interface
ColdChain
{
}
public
interface
SupplyChain
{
interface
SupplyChain
{
}
public
interface
Pay
{
interface
Pay
{
String
OPEN_PAY_RESULT
=
"open_pay_result"
;
}
...
...
library-common/src/main/res/layout/loadsir_pos_pay_status_exception.xml
0 → 100644
View file @
66c18f25
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
<TextView
android:id=
"@+id/tv_exception"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableTop=
"@mipmap/pay_status_exception"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_10"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_pay"
android:layout_marginBottom=
"@dimen/head_height"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_final_prompt"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:textColor=
"@color/red"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_final_prompt"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_exception"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_final_prompt"
/>
<TextView
android:id=
"@+id/tv_pay_method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_amount"
/>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id=
"@+id/btn_reload"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/button_height"
android:background=
"@color/theme_color"
android:layout_margin=
"@dimen/dp_10"
android:textSize=
"@dimen/text_size_default"
android:textColor=
"@color/theme_white_color"
android:text=
"@string/emptyView_mode_desc_retry_query"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_backgroundColor=
"@color/theme_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library-common/src/main/res/layout/loadsir_pos_refund_status_exception.xml
0 → 100644
View file @
66c18f25
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
<TextView
android:id=
"@+id/tv_exception"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableTop=
"@mipmap/pay_status_exception"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_10"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_refund"
android:layout_marginBottom=
"@dimen/head_height"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_final_prompt"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:textColor=
"@color/red"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_final_prompt"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_exception"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_final_prompt"
/>
<TextView
android:id=
"@+id/tv_pay_method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_amount"
/>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id=
"@+id/btn_reload"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/button_height"
android:background=
"@color/theme_color"
android:layout_margin=
"@dimen/dp_10"
android:textSize=
"@dimen/text_size_default"
android:textColor=
"@color/theme_white_color"
android:text=
"@string/emptyView_mode_desc_retry_query"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_backgroundColor=
"@color/theme_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library-common/src/main/res/layout/loadsir_pos_settlement_status_exception.xml
0 → 100644
View file @
66c18f25
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
<TextView
android:id=
"@+id/tv_exception"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableTop=
"@mipmap/pay_status_exception"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_10"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_settlement"
android:layout_marginBottom=
"@dimen/head_height"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_final_prompt"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:textColor=
"@color/red"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_final_prompt"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_exception"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_final_prompt"
/>
<TextView
android:id=
"@+id/tv_pay_method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_amount"
/>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id=
"@+id/btn_reload"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/button_height"
android:background=
"@color/theme_color"
android:layout_margin=
"@dimen/dp_10"
android:textSize=
"@dimen/text_size_default"
android:textColor=
"@color/theme_white_color"
android:text=
"@string/emptyView_mode_desc_retry_query"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_backgroundColor=
"@color/theme_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library-common/src/main/res/layout/loadsir_pos_tips_status_exception.xml
0 → 100644
View file @
66c18f25
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
<TextView
android:id=
"@+id/tv_exception"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableTop=
"@mipmap/pay_status_exception"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_10"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_tips"
android:layout_marginBottom=
"@dimen/head_height"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_final_prompt"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:textColor=
"@color/red"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_final_prompt"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_exception"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_final_prompt"
/>
<TextView
android:id=
"@+id/tv_pay_method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_amount"
/>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id=
"@+id/btn_reload"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/button_height"
android:background=
"@color/theme_color"
android:layout_margin=
"@dimen/dp_10"
android:textSize=
"@dimen/text_size_default"
android:textColor=
"@color/theme_white_color"
android:text=
"@string/emptyView_mode_desc_retry_query"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_backgroundColor=
"@color/theme_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library-common/src/main/res/layout/loadsir_pos_void_status_exception.xml
0 → 100644
View file @
66c18f25
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android=
"http://schemas.android.com/apk/res/android"
xmlns:app=
"http://schemas.android.com/apk/res-auto"
android:orientation=
"vertical"
android:layout_width=
"match_parent"
android:layout_height=
"match_parent"
>
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
<TextView
android:id=
"@+id/tv_exception"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:drawableTop=
"@mipmap/pay_status_exception"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_10"
android:textStyle=
"bold"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_void"
android:layout_marginBottom=
"@dimen/head_height"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toTopOf=
"parent"
/>
<TextView
android:id=
"@+id/tv_final_prompt"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:visibility=
"gone"
android:textColor=
"@color/red"
android:textSize=
"@dimen/load_dialog_text_size"
android:text=
"@string/emptyView_mode_desc_pos_final_prompt"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_exception"
/>
<TextView
android:id=
"@+id/tv_amount"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_20"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_final_prompt"
/>
<TextView
android:id=
"@+id/tv_pay_method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
app:layout_constraintTop_toBottomOf=
"@+id/tv_amount"
/>
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButton
android:id=
"@+id/btn_reload"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/button_height"
android:background=
"@color/theme_color"
android:layout_margin=
"@dimen/dp_10"
android:textSize=
"@dimen/text_size_default"
android:textColor=
"@color/theme_white_color"
android:text=
"@string/emptyView_mode_desc_retry_query"
app:qmui_radius=
"@dimen/dp_5"
app:qmui_backgroundColor=
"@color/theme_color"
app:layout_constraintBottom_toBottomOf=
"parent"
app:layout_constraintEnd_toEndOf=
"parent"
app:layout_constraintStart_toStartOf=
"parent"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
library-common/src/main/res/mipmap-xhdpi/pay_status_exception.png
0 → 100644
View file @
66c18f25
8.82 KB
library-common/src/main/res/values/strings.xml
View file @
66c18f25
...
...
@@ -130,7 +130,15 @@
<string
name=
"emptyView_mode_desc_timeout_desc"
>
網絡加載超時,請檢查網絡重試
</string>
<string
name=
"emptyView_mode_desc_retry"
>
點擊重試
</string>
<string
name=
"emptyView_mode_desc_double"
>
未獲取到數據
</string>
<string
name=
"emptyView_mode_desc_retry_query"
>
重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_pay"
>
支付狀態異常,請嘗試重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_refund"
>
退款狀態異常,請嘗試重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_void"
>
取消狀態異常,請嘗試重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_tips"
>
補小費狀態異常,請嘗試重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_settlement"
>
清機狀態異常,請嘗試重試查詢
</string>
<string
name=
"emptyView_mode_desc_pos_final_prompt"
>
重試多次無效?請聯繫開發人員
</string>
<!-- HttpError -->
<string
name=
"response_error_unknown_error"
>
未知錯誤
</string>
<string
name=
"response_error_network_unavailable"
>
網絡不可用
</string>
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/order/bean/request/MealOrderPayRequest.java
View file @
66c18f25
...
...
@@ -46,6 +46,25 @@ public class MealOrderPayRequest implements Parcelable{
public
MealOrderPayRequest
()
{
}
@Override
public
String
toString
()
{
return
"MealOrderPayRequest{"
+
"orderId="
+
orderId
+
", linePayType="
+
linePayType
+
", orderPayType="
+
orderPayType
+
", tableId="
+
tableId
+
", tableNumber='"
+
tableNumber
+
'\''
+
", memberId="
+
memberId
+
", couponId="
+
couponId
+
", pointsAdd="
+
pointsAdd
+
", pointsUse="
+
pointsUse
+
", whetherFreeService="
+
whetherFreeService
+
", orderPays="
+
orderPays
+
", posMatter="
+
posMatter
+
'}'
;
}
@Data
public
static
class
OrderPay
implements
Parcelable
{
private
int
payType
;
...
...
@@ -58,6 +77,16 @@ public class MealOrderPayRequest implements Parcelable{
}
@Override
public
String
toString
()
{
return
"OrderPay{"
+
"payType="
+
payType
+
", amount="
+
amount
+
", tipsPrice="
+
tipsPrice
+
", consumptionPoints="
+
consumptionPoints
+
'}'
;
}
@Override
public
int
describeContents
()
{
return
0
;
}
...
...
@@ -138,4 +167,6 @@ public class MealOrderPayRequest implements Parcelable{
return
new
MealOrderPayRequest
[
size
];
}
};
}
library-order/src/main/java/com/gingersoft/gsa/cloud/order/commodity/OrderDetail.java
View file @
66c18f25
...
...
@@ -1288,12 +1288,12 @@ public class OrderDetail implements Commodity, Serializable ,Cloneable{
public
static
List
<
OrderDetail
>
transNewOrderDetails
(
List
<
OrderDetail
>
orderDetailList
)
{
List
<
OrderDetail
>
newOrderList
=
new
ArrayList
<>();
for
(
OrderDetail
orderDetail
:
orderDetailList
)
{
//
newOrderList.add(new OrderDetail(orderDetail));
try
{
newOrderList
.
add
(
orderDetail
.
clone
());
}
catch
(
CloneNotSupportedException
e
)
{
e
.
printStackTrace
();
}
newOrderList
.
add
(
new
OrderDetail
(
orderDetail
));
//
try {
//
newOrderList.add(orderDetail.clone());
//
} catch (CloneNotSupportedException e) {
//
e.printStackTrace();
//
}
}
return
newOrderList
;
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/BBPosPay.java
deleted
100644 → 0
View file @
0cb22cb8
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
base
;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:46
* @更新時間: 2020-12-16 15:46
* @描述:
*/
public
class
BBPosPay
{
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/BasePay.java
deleted
100644 → 0
View file @
0cb22cb8
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
base
;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:45
* @更新時間: 2020-12-16 15:45
* @描述:
*/
public
abstract
class
BasePay
{
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/N5PosPay.java
deleted
100644 → 0
View file @
0cb22cb8
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
base
;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:47
* @更新時間: 2020-12-16 15:47
* @描述:
*/
public
class
N5PosPay
{
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/base/NomalPay.java
deleted
100644 → 0
View file @
0cb22cb8
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
base
;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:48
* @更新時間: 2020-12-16 15:48
* @描述:
*/
public
class
NomalPay
{
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PayMethod.java
View file @
66c18f25
...
...
@@ -91,7 +91,7 @@ public class PayMethod implements Parcelable {
*/
private
double
amountValue
;
/**
* 支付方式(1:寶達通 8:支付寶 1001:現金 1023:支付寶HK,103
0:N5刷卡 1031:N5掃碼
* 支付方式(1:寶達通 8:支付寶 1001:現金 1023:支付寶HK,103
1:N5掃碼 1031:N5刷卡
*/
private
int
payType
;
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/bean/PosActionStatusExceptionParam.java
View file @
66c18f25
...
...
@@ -18,7 +18,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
private
String
txnId
;
private
PosAction
posAction
;
private
long
orderNum
;
private
long
orderId
;
private
String
orderNo
;
private
double
amount
;
private
String
payMethodName
;
...
...
@@ -34,7 +35,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
public
void
writeToParcel
(
Parcel
dest
,
int
flags
)
{
dest
.
writeString
(
this
.
txnId
);
dest
.
writeInt
(
this
.
posAction
==
null
?
-
1
:
this
.
posAction
.
ordinal
());
dest
.
writeLong
(
this
.
orderNum
);
dest
.
writeLong
(
this
.
orderId
);
dest
.
writeString
(
this
.
orderNo
);
dest
.
writeDouble
(
this
.
amount
);
dest
.
writeString
(
this
.
payMethodName
);
}
...
...
@@ -43,7 +45,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
this
.
txnId
=
in
.
readString
();
int
tmpPosAction
=
in
.
readInt
();
this
.
posAction
=
tmpPosAction
==
-
1
?
null
:
PosAction
.
values
()[
tmpPosAction
];
this
.
orderNum
=
in
.
readLong
();
this
.
orderId
=
in
.
readLong
();
this
.
orderNo
=
in
.
readString
();
this
.
amount
=
in
.
readDouble
();
this
.
payMethodName
=
in
.
readString
();
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/contract/PayE
rror
Code.java
→
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/contract/PayE
xception
Code.java
View file @
66c18f25
...
...
@@ -6,7 +6,7 @@ package com.gingersoft.gsa.cloud.pay.contract;
* @更新時間: 2020-12-28 14:49
* @描述: 支付異常碼,每個支付相關的error對應一個唯一的code,方便出問題時定位
*/
public
interface
PayE
rror
Code
{
public
interface
PayE
xception
Code
{
/**
* pos回調為Null
...
...
@@ -17,9 +17,13 @@ public interface PayErrorCode {
*/
String
pos_response_101
=
"[101]"
;
/**
* pos回
調 withException == true
* pos回
调解析发生JSONException
*/
String
pos_response_102
=
"[102]"
;
/**
* pos回調 withException == true
*/
String
pos_response_105
=
"[105]"
;
/**
* SaleActionImp getTxnId
...
...
@@ -30,7 +34,7 @@ public interface PayErrorCode {
String
sale_404
=
"[404]"
;
/**
* SaleActionImp on
ActionComplte
* SaleActionImp on
PosException
*/
String
sale_410
=
"[410]"
;
String
sale_411
=
"[411]"
;
...
...
@@ -49,7 +53,7 @@ public interface PayErrorCode {
String
tips_704
=
"[704]"
;
/**
*
SaleActionImp onActionComplte
*
TipsActionImpl onPosException
*/
String
tips_710
=
"[710]"
;
String
tips_711
=
"[711]"
;
...
...
@@ -57,4 +61,23 @@ public interface PayErrorCode {
String
tips_713
=
"[713]"
;
String
tips_714
=
"[714]"
;
/**
* VoidActionImpl getTxnId
*/
String
void_801
=
"[801]"
;
String
void_802
=
"[802]"
;
String
void_803
=
"[803]"
;
String
void_804
=
"[804]"
;
/**
* VoidActionImpl onPosException
*/
String
void_810
=
"[810]"
;
String
void_811
=
"[811]"
;
String
void_812
=
"[812]"
;
String
void_813
=
"[813]"
;
String
void_814
=
"[814]"
;
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/contract/PayTypeContract.java
View file @
66c18f25
...
...
@@ -14,6 +14,7 @@ public interface PayTypeContract {
* 8:支付寶
* 1001:現金
* 1023:支付寶HK
*
* 1030:N5卡支付
* 1031:N5掃碼支付
*/
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/IPosAction.java
View file @
66c18f25
...
...
@@ -4,7 +4,6 @@ import android.app.Activity;
import
android.content.Context
;
import
com.etps.aca.lib.util.CommandUtil
;
import
com.gingersoft.gsa.cloud.pay.contract.PayErrorCode
;
import
com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode
;
...
...
@@ -31,7 +30,7 @@ public abstract class IPosAction {
private
final
String
mLoadingActionText
=
"中..."
;
private
final
String
mLoadingActionComplteText
=
"成功"
;
private
final
long
mCancelDelayMillis
=
15
00
;
private
final
long
mCancelDelayMillis
=
20
00
;
public
IPosAction
(
Context
context
,
IView
iView
,
PosAction
action
,
boolean
showLoading
)
{
this
.
mContext
=
context
;
...
...
@@ -44,58 +43,99 @@ public abstract class IPosAction {
}
/**
* 對POS幾發起
請求
前的業務處理,如將操作記錄添加到後台日誌表,事項表
* 對POS幾發起
操作
前的業務處理,如將操作記錄添加到後台日誌表,事項表
*/
protected
abstract
void
on
RequestBefore
();
protected
abstract
void
on
BeforeActionPOS
();
/**
*
像POS發起請求
的方法
*
向POS發起操作
的方法
*/
protected
void
on
Request
POS
(
String
requestJson
)
{
protected
void
on
ActionTo
POS
(
String
requestJson
)
{
CommandUtil
.
sendRequest
(
mContext
,
requestJson
);
}
/**
* 對POS幾發起操作前的業務處理异常 如记录事项调用出错
*
* @param e
*/
public
void
onBeforeActionPosError
(
Exception
e
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getActionName
()
+
e
.
getMessage
());
mStatusLoadingDialog
.
cancel
();
}
}
/**
* POS回調成功的方法
*
* @param posResponse
*/
public
void
on
ActionComplte
(
Context
context
,
HywebPosResponse
posResponse
,
Activity
originalActivity
)
{
public
void
on
PosSuccess
(
Context
context
,
HywebPosResponse
posResponse
,
Activity
originalActivity
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getActionName
()
+
mLoadingActionComplteText
);
mStatusLoadingDialog
.
loadSuccess
();
}
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
posResponse
);
}
}
/**
* POS回調失敗的方法
*
* @param e
* POS回調為null或狀態異常
*/
public
void
on
ActionError
(
Exception
e
)
{
public
void
on
PosException
(
Exception
e
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
e
.
getMessage
());
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getCallbackExceptionText
()
+
e
.
getMessage
());
mStatusLoadingDialog
.
loadFailure
();
}
String
errorMsg
=
e
.
getMessage
();
if
(
errorMsg
.
contains
(
PayErrorCode
.
pos_response_null
)
||
errorMsg
.
contains
(
PayErrorCode
.
pos_response_102
))
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosException
(
null
);
}
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosException
(
e
);
}
}
/**
* POS
回調為null或狀態異常
* POS
調起失敗
*/
public
void
onPos
Exception
(
HywebPosResponse
posRespons
e
)
{
public
void
onPos
Invalid
(
String
e
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
"回調異常"
);
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getActionName
()
+
e
);
mStatusLoadingDialog
.
loadFailure
();
mStatusLoadingDialog
.
cancel
();
}
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosInvalid
(
e
);
}
}
/**
* 更新狀態成功
*
* @param response
*/
public
void
onUpdateStatusSuccess
(
HywebPosResponse
response
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getActionName
()
+
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
()));
mStatusLoadingDialog
.
cancel
();
}
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onUpdateStatusSuccess
(
response
);
}
}
/**
* 更新狀態失败
*
* @param e
*/
public
void
onUpdateStatusError
(
Exception
e
)
{
if
(
mStatusLoadingDialog
!=
null
)
{
mStatusLoadingDialog
.
setStatusText
(
mPosAction
.
getActionName
()
+
e
.
getMessage
());
mStatusLoadingDialog
.
cancel
();
}
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
on
PosException
(
null
);
mOnPosActionListener
.
on
UpdateStatusError
(
e
);
}
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/OnPosActionListener.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
pos
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.BasePosCallback
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
/**
* @作者: bin
* @創建時間: 2020-12-29 20:15
* @更新時間: 2020-12-29 20:15
* @描述:POS事件回調
,需要回調的實現這個接口
* @描述:POS事件回調
*/
public
interface
OnPosActionListener
{
public
interface
OnPosActionListener
<
T
extends
HywebPosResponse
>
{
/**
* N5回調成功
* @param response
*/
void
onPosSuccess
(
HywebPosResponse
response
);
void
onPosSuccess
(
T
response
);
/**
* N6回調狀態異常,需要去重試查詢
* N5回調狀態異常,需要去重試查詢
* @param e
*/
void
onPosException
(
Exception
e
);
/**
* N5調起失敗
* @param e
*/
void
onPos
Exception
(
HywebPosResponse
respons
e
);
void
onPos
Invalid
(
String
e
);
/**
* 更新狀態成功
* @param response
*/
void
onSuccess
(
HywebPosResponse
response
);
void
onUpdateStatusSuccess
(
T
response
);
/**
* 更新狀態失敗
* @param e
*/
void
onError
(
Throwable
e
);
void
on
UpdateStatus
Error
(
Throwable
e
);
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/PosPay.java
View file @
66c18f25
...
...
@@ -31,12 +31,11 @@ import java.util.List;
*/
public
final
class
PosPay
{
public
static
void
sendRequest
(
IPosAction
action
)
{
CommandActivity
.
setCommand
(
new
CommandImpl
(
action
));
// if (AppDevice.isHywebPos()) {
if
(
action
!=
null
)
{
action
.
on
RequestBefore
();
action
.
on
BeforeActionPOS
();
}
// } else if (AppDevice.isBBPos()) {
// } else {
...
...
@@ -53,15 +52,14 @@ public final class PosPay {
public
static
void
refund
(
Context
context
,
IView
iView
,
RefundRequest
request
,
GetTxnIdRequest
getTxnIdRequest
,
OnPosActionListener
onPosActionListener
)
{
PosPay
.
sendRequest
(
new
RefundActionImpl
(
context
,
iView
,
PosAction
.
REFUND
,
request
,
getTxnIdRequest
,
onPosActionListener
,
true
));
}
public
static
void
voidO
(
Context
context
,
IView
iView
,
VoidRequest
request
,
GetTxnIdRequest
getTxnIdRequest
,
OnPosActionListener
onPosActionListener
)
{
PosPay
.
sendRequest
(
new
VoidActionImpl
(
context
,
iView
,
PosAction
.
VOID
,
request
,
getTxnIdRequest
,
onPosActionListener
,
true
));
}
public
static
void
retrieval
(
Context
context
,
IView
iView
,
RetrievalRequest
request
,
OnPosActionListener
onPosActionListener
)
{
PosPay
.
sendRequest
(
new
RetrievalActionImpl
(
context
,
iView
,
PosAction
.
RETRIEVAL
,
111
,
request
,
onPosActionListener
,
false
));
public
static
void
retrieval
(
Context
context
,
IView
iView
,
Long
orderId
,
RetrievalRequest
request
,
OnPosActionListener
onPosActionListener
)
{
PosPay
.
sendRequest
(
new
RetrievalActionImpl
(
context
,
iView
,
PosAction
.
RETRIEVAL
,
orderId
,
request
,
onPosActionListener
,
false
));
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/bbpos/BBPosAction.java
View file @
66c18f25
...
...
@@ -19,7 +19,8 @@ public class BBPosAction extends IPosAction {
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/bean/PosMatter.java
View file @
66c18f25
...
...
@@ -82,6 +82,26 @@ public class PosMatter implements Parcelable {
}
@Override
public
String
toString
()
{
return
"PosMatter{"
+
"id="
+
id
+
", payId='"
+
payId
+
'\''
+
", refundId='"
+
refundId
+
'\''
+
", deviceId='"
+
deviceId
+
'\''
+
", orderId="
+
orderId
+
", businessType="
+
businessType
+
", status="
+
status
+
", tableId="
+
tableId
+
", tableExtId="
+
tableExtId
+
", payMethodId="
+
payMethodId
+
", amount="
+
amount
+
", content='"
+
content
+
'\''
+
", linePayType="
+
linePayType
+
", tipsPrice="
+
tipsPrice
+
'}'
;
}
@Override
public
int
describeContents
()
{
return
0
;
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/fragment/PosActionStatusExceptionFragment.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
pos
.
fragment
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.drawable.Drawable
;
import
android.os.Bundle
;
...
...
@@ -15,17 +16,30 @@ import androidx.annotation.NonNull;
import
androidx.annotation.Nullable
;
import
com.gingersoft.gsa.cloud.common.constans.AppConstans
;
import
com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.BasePosCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosPayStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosRefundStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosSettlementStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosTipsStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.common.loadsir.pos.PosVoidStatusExceptionCallback
;
import
com.gingersoft.gsa.cloud.order.R
;
import
com.gingersoft.gsa.cloud.order.R2
;
import
com.gingersoft.gsa.cloud.pay.bean.PosActionStatusExceptionParam
;
import
com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.PosPay
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RetrievalRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode
;
import
com.gingersoft.gsa.cloud.pay.widget.StatusLoadingDialog
;
import
com.jess.arms.base.BaseFragment
;
import
com.jess.arms.di.component.AppComponent
;
import
com.jess.arms.mvp.IView
;
import
com.kingja.loadsir.callback.Callback
;
import
com.kingja.loadsir.core.LoadService
;
import
com.kingja.loadsir.core.LoadSir
;
import
com.kingja.loadsir.core.Transport
;
import
com.qmuiteam.qmui.alpha.QMUIAlphaButton
;
import
butterknife.BindView
;
...
...
@@ -41,18 +55,12 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@BindView
(
R2
.
id
.
tv_order_num
)
TextView
tvOrderNum
;
@BindView
(
R2
.
id
.
tv_pay_status
)
TextView
tvPayStatus
;
@BindView
(
R2
.
id
.
pro_pay_status
)
ProgressBar
proPayStatus
;
@BindView
(
R2
.
id
.
tv_loading_text
)
TextView
tvLoadingText
;
@BindView
(
R2
.
id
.
tv_pos_status
)
TextView
tvPosStatus
;
@BindView
(
R2
.
id
.
tv_amount
)
TextView
tvAmount
;
@BindView
(
R2
.
id
.
tv_paymethod
)
@BindView
(
R2
.
id
.
tv_pay
_
method
)
TextView
tvPaymethod
;
@BindView
(
R2
.
id
.
btn_refresh_status
)
QMUIAlphaButton
btnRefreshStatus
;
@BindView
(
R2
.
id
.
btn_back
)
QMUIAlphaButton
btnBack
;
@BindView
(
R2
.
id
.
ll_content
)
...
...
@@ -60,9 +68,13 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
@BindView
(
R2
.
id
.
rl_container
)
RelativeLayout
rlContainer
;
private
LoadService
loadService
;
private
PosActionStatusExceptionParam
mPosStatusExceptionParam
;
private
TextView
tv_order_num
,
tv_final_prompt
,
tv_exception
,
tv_amount
,
tv_pay_method
;
private
int
retryCount
;
public
static
PosActionStatusExceptionFragment
newInstance
(
PosActionStatusExceptionParam
posStatusExceptionParam
)
{
Bundle
args
=
new
Bundle
();
PosActionStatusExceptionFragment
fragment
=
new
PosActionStatusExceptionFragment
();
...
...
@@ -71,10 +83,8 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
return
fragment
;
}
@Override
public
void
setupFragmentComponent
(
@NonNull
AppComponent
appComponent
)
{
}
@Override
...
...
@@ -87,64 +97,108 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
Bundle
bundle
=
getArguments
();
mPosStatusExceptionParam
=
bundle
.
getParcelable
(
"posStatusExceptionParam"
);
showStatusLoading
();
initPage
();
initLoadService
();
retrievalStatus
();
}
private
void
initLoadService
()
{
BasePosCallback
posCallback
=
null
;
loadService
=
LoadSir
.
getDefault
().
register
(
rlContainer
,
new
Callback
.
OnReloadListener
()
{
@Override
public
void
onReload
(
View
v
)
{
if
(
retryCount
==
0
)
{
tv_final_prompt
.
setVisibility
(
View
.
VISIBLE
);
}
//支付状态异常 重试查询
retrievalStatus
();
retryCount
--;
}
});
switch
(
mPosStatusExceptionParam
.
getPosAction
())
{
case
SALE:
posCallback
=
new
PosPayStatusExceptionCallback
();
break
;
case
REFUND:
posCallback
=
new
PosRefundStatusExceptionCallback
();
break
;
case
VOID:
posCallback
=
new
PosVoidStatusExceptionCallback
();
break
;
case
TIP:
posCallback
=
new
PosTipsStatusExceptionCallback
();
break
;
case
SETTLEMENT:
posCallback
=
new
PosSettlementStatusExceptionCallback
();
break
;
default
:
break
;
}
if
(
posCallback
!=
null
)
{
loadService
.
setCallBack
(
PosTipsStatusExceptionCallback
.
class
,
new
Transport
()
{
@Override
public
void
order
(
Context
context
,
View
rootView
)
{
tv_order_num
=
rootView
.
findViewById
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
id
.
tv_order_num
);
tv_final_prompt
=
rootView
.
findViewById
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
id
.
tv_final_prompt
);
tv_exception
=
rootView
.
findViewById
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
id
.
tv_exception
);
tv_amount
=
rootView
.
findViewById
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
id
.
tv_amount
);
tv_pay_method
=
rootView
.
findViewById
(
com
.
gingersoft
.
gsa
.
cloud
.
common
.
R
.
id
.
tv_pay_method
);
tv_order_num
.
setText
(
"單號:"
+
mPosStatusExceptionParam
.
getOrderId
());
tv_amount
.
setText
(
AppConstans
.
CARSH_STR
+
mPosStatusExceptionParam
.
getAmount
());
tv_pay_method
.
setText
(
mPosStatusExceptionParam
.
getPayMethodName
());
}
});
loadService
.
showCallback
(
PosTipsStatusExceptionCallback
.
class
);
}
}
private
void
initPage
()
{
tvOrderNum
.
setText
(
"單號:"
+
mPosStatusExceptionParam
.
getOrder
Num
());
tvOrderNum
.
setText
(
"單號:"
+
mPosStatusExceptionParam
.
getOrder
Id
());
tvAmount
.
setText
(
AppConstans
.
CARSH_STR
+
mPosStatusExceptionParam
.
getAmount
());
tvPaymethod
.
setText
(
mPosStatusExceptionParam
.
getPayMethodName
());
}
private
void
showStatusLoading
()
{
tvPayStatus
.
setVisibility
(
View
.
INVISIBLE
);
proPayStatus
.
setVisibility
(
View
.
VISIBLE
);
tvLoadingText
.
setVisibility
(
View
.
VISIBLE
);
}
private
void
hideStatusLoading
()
{
tvPayStatus
.
setVisibility
(
View
.
VISIBLE
);
proPayStatus
.
setVisibility
(
View
.
INVISIBLE
);
tvLoadingText
.
setVisibility
(
View
.
INVISIBLE
);
private
void
setPosActionStatus
(
String
status
)
{
Drawable
drawable
;
if
(
PayStatusCode
.
withSuccess
(
status
))
{
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_success
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
}
else
{
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_exception
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
}
tvPosStatus
.
setCompoundDrawables
(
null
,
drawable
,
null
,
null
);
tvPosStatus
.
setText
(
PayStatusCode
.
getHywebRequestTextByCode
(
status
));
}
private
void
retrievalStatus
()
{
RetrievalRequest
retrievalRequest
=
new
RetrievalRequest
();
retrievalRequest
.
setTXN_ID
(
mPosStatusExceptionParam
.
getTxnId
());
PosPay
.
retrieval
(
mContext
,
this
,
retrievalRequest
,
new
OnPosActionListener
()
{
PosPay
.
retrieval
(
mContext
,
this
,
mPosStatusExceptionParam
.
getOrderId
(),
retrievalRequest
,
new
OnPosActionListener
()
{
@Override
public
void
onPosSuccess
(
HywebPosResponse
response
)
{
Drawable
drawable
;
if
(
PayStatusCode
.
withSuccess
(
response
.
getSTATUS
()))
{
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_success
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
tvPayStatus
.
setCompoundDrawables
(
null
,
drawable
,
null
,
null
);
tvPayStatus
.
setText
(
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
()));
}
else
{
drawable
=
getResources
().
getDrawable
(
R
.
mipmap
.
pay_status_exception
);
drawable
.
setBounds
(
0
,
0
,
drawable
.
getMinimumWidth
(),
drawable
.
getMinimumHeight
());
}
tvPayStatus
.
setCompoundDrawables
(
null
,
drawable
,
null
,
null
);
tvPayStatus
.
setText
(
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
()));
hideStatusLoading
();
loadService
.
showSuccess
();
setPosActionStatus
(
response
.
getSTATUS
());
}
@Override
public
void
onPosException
(
HywebPosResponse
response
)
{
hideStatusLoading
();
public
void
onPosException
(
Exception
e
)
{
}
@Override
public
void
onSuccess
(
HywebPosResponse
response
)
{
public
void
onPosInvalid
(
String
e
)
{
}
@Override
public
void
onUpdateStatusSuccess
(
HywebPosResponse
response
)
{
}
@Override
public
void
onError
(
Throwable
e
)
{
hideStatusLoading
();
public
void
onUpdateStatusError
(
Throwable
e
)
{
}
});
}
...
...
@@ -169,22 +223,19 @@ public class PosActionStatusExceptionFragment extends BaseFragment implements IV
// List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList();
// }
@Override
public
void
setData
(
@Nullable
Object
data
)
{
}
@OnClick
({
R2
.
id
.
btn_refresh_status
,
R2
.
id
.
btn_back
})
@OnClick
({
R2
.
id
.
btn_back
})
public
void
onViewClicked
(
View
view
)
{
int
id
=
view
.
getId
();
if
(
id
==
R
.
id
.
btn_back
)
{
killMyself
();
}
else
if
(
id
==
R
.
id
.
btn_refresh_status
)
{
retrievalStatus
();
}
}
@Override
public
void
setData
(
@Nullable
Object
data
)
{
}
@Override
public
void
showLoading
(
String
message
)
{
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/request/bg/GetTxnIdRequest.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
pos
.
hywebpos
.
bean
.
request
.
bg
;
import
com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest
;
import
lombok.Data
;
/**
...
...
@@ -16,6 +18,11 @@ public class GetTxnIdRequest {
private
Integer
tableExtId
;
private
Integer
payMethodId
;
private
Double
amount
;
private
Double
tipsPrice
;
/**
* 支付信息優惠券id,積分等信息..
*/
private
String
content
;
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/response/bg/GetCancelTxnIdResponse.java
0 → 100644
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
pos
.
hywebpos
.
bean
.
response
.
bg
;
import
lombok.Getter
;
import
lombok.Setter
;
/**
* @作者: bin
* @創建時間: 2020-12-26 16:46
* @更新時間: 2020-12-26 16:46
* @描述:
*/
@Getter
@Setter
public
class
GetCancelTxnIdResponse
{
private
String
cancelTxnId
;
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/bean/response/bg/GetRefundIdResponse.java
View file @
66c18f25
...
...
@@ -13,5 +13,5 @@ import lombok.Setter;
@Setter
public
class
GetRefundIdResponse
{
private
String
refund
_i
d
;
private
String
refund
I
d
;
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/command/CommandImpl.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
pos
.
hywebpos
.
command
;
import
android.app.Activity
;
import
android.app.ActivityManager
;
import
android.app.Application
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.text.TextUtils
;
import
com.billy.cc.core.component.CC
;
import
com.etps.aca.lib.action.ICommand
;
import
com.etps.aca.lib.activity.CommandActivity
;
import
com.etps.aca.lib.constant.Constant
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.common.utils.ReflectionUtils
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.log.LogUtil
;
import
com.gingersoft.gsa.cloud.component.ComponentAction
;
import
com.gingersoft.gsa.cloud.component.ComponentName
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
...
...
@@ -22,12 +28,18 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RetrievalResp
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SaleRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SettlementRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode
;
import
com.jess.arms.integration.AppManager
;
import
com.jess.arms.utils.ArmsUtils
;
import
org.json.JSONException
;
import
org.json.JSONObject
;
import
java.lang.reflect.Field
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
public
class
CommandImpl
implements
ICommand
{
private
static
final
String
TAG
=
CommandImpl
.
class
.
getSimpleName
();
...
...
@@ -50,21 +62,20 @@ public class CommandImpl implements ICommand {
JSONObject
msgObj
=
new
JSONObject
(
request
);
String
eventName
=
msgObj
.
getString
(
Constant
.
EVENT
.
ATTR
.
EVENT_NAME
);
if
(
Constant
.
EVENT
.
NAME
.
SALE
.
equals
(
eventName
))
{
start
WelcomeActivity
(
);
start
InitHywebActivity
(
context
);
}
else
if
(
Constant
.
EVENT
.
NAME
.
REFUND
.
equals
(
eventName
))
{
start
WelcomeActivity
(
);
start
InitHywebActivity
(
context
);
}
else
if
(
Constant
.
EVENT
.
NAME
.
VOID
.
equals
(
eventName
))
{
start
WelcomeActivity
(
);
start
InitHywebActivity
(
context
);
}
else
if
(
Constant
.
EVENT
.
NAME
.
GOTO
.
equals
(
eventName
))
{
start
WelcomeActivity
(
);
start
InitHywebActivity
(
context
);
}
}
catch
(
JSONException
e
)
{
start
WelcomeActivity
(
);
start
InitHywebActivity
(
context
);
}
}
private
void
startWelcomeActivity
()
{
//跳轉啟動頁面
private
void
startInitHywebActivity
(
Context
context
)
{
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_LOGIN
)
.
setActionName
(
ComponentAction
.
Login
.
OPEN_WELCOME
)
.
build
()
...
...
@@ -82,37 +93,67 @@ public class CommandImpl implements ICommand {
LoganManager
.
w_code
(
TAG
,
"onResponse : "
+
response
);
AppManager
appManager
=
ArmsUtils
.
obtainAppComponentFromContext
(
context
).
appManager
();
//kill掉hyweb支付頁
appManager
.
killActivity
(
CommandActivity
.
class
);
Activity
currentActivity
=
appManager
.
getTopActivity
();
if
(
TextUtils
.
isEmpty
(
response
))
{
on
ActionError
(
new
Exception
(
"回調異常"
+
PayError
Code
.
pos_response_null
));
on
PosException
(
new
Exception
(
PayException
Code
.
pos_response_null
));
return
;
}
try
{
JSONObject
msgObj
=
new
JSONObject
(
response
);
String
eventName
=
msgObj
.
getString
(
Constant
.
EVENT
.
ATTR
.
EVENT_NAME
);
AppManager
appManager
=
ArmsUtils
.
obtainAppComponentFromContext
(
context
).
appManager
();
//kill掉n5頁回到原來的頁面
appManager
.
killActivity
(
CommandActivity
.
class
);
Activity
currentActivity
=
null
;
if
(
appManager
.
getActivityList
()
!=
null
&&
appManager
.
getActivityList
().
size
()
>
0
)
{
currentActivity
=
appManager
.
getActivityList
().
get
(
appManager
.
getActivityList
().
size
()
-
1
);
}
LoganManager
.
w_code
(
TAG
,
"currentActivity : "
+
currentActivity
.
getClass
().
getName
());
HywebPosResponse
posResponse
=
parsePosResponse
(
response
,
eventName
);
if
(
posResponse
!=
null
)
{
onActionComplte
(
context
,
posResponse
,
currentActivity
);
if
(
PayStatusCode
.
withInvalid
(
posResponse
.
getSTATUS
()))
{
//調起POS失敗
onPosInvalid
(
PayStatusCode
.
getHywebRequestTextByCode
(
posResponse
.
getSTATUS
()));
}
else
{
//回調成功
onPosSuccess
(
context
,
posResponse
,
currentActivity
);
}
}
else
{
// onActionError(new Exception("回調異常" + PayErrorCode.pos_response_101));
on
ActionError
(
new
Exception
(
PayError
Code
.
pos_response_101
));
//回調異常
on
PosException
(
new
Exception
(
PayException
Code
.
pos_response_101
));
}
}
catch
(
JSONException
e
)
{
e
.
printStackTrace
();
onActionError
(
e
);
try
{
JSONObject
msgObj
=
new
JSONObject
(
response
);
String
status
=
msgObj
.
getString
(
"STATUS"
);
if
(
PayStatusCode
.
withInvalid
(
status
))
{
//調起POS失敗
onPosInvalid
(
PayStatusCode
.
getHywebRequestTextByCode
(
status
));
}
else
{
//回調異常
onPosException
(
new
Exception
(
PayStatusCode
.
getHywebRequestTextByCode
(
status
)));
}
}
catch
(
JSONException
ex
)
{
ex
.
printStackTrace
();
//回調異常
onPosException
(
e
);
}
}
finally
{
returnLastActivity
(
context
,
currentActivity
);
}
}
/**
* 返回操作頁
* @param context
* @param currentActivity
*/
private
void
returnLastActivity
(
Context
context
,
Activity
currentActivity
)
{
if
(
currentActivity
!=
null
)
{
LoganManager
.
w_code
(
TAG
,
"currentActivity : "
+
currentActivity
.
getClass
().
getName
());
//返回上次操作的頁面
Intent
intent
=
new
Intent
();
intent
.
setComponent
(
currentActivity
.
getComponentName
());
context
.
startActivity
(
intent
);
}
}
...
...
@@ -147,9 +188,9 @@ public class CommandImpl implements ICommand {
* @param posResponse
* @param actionActivity
*/
private
void
on
ActionComplte
(
Context
context
,
HywebPosResponse
posResponse
,
Activity
actionActivity
)
{
private
void
on
PosSuccess
(
Context
context
,
HywebPosResponse
posResponse
,
Activity
actionActivity
)
{
if
(
mPosAction
!=
null
)
{
mPosAction
.
on
ActionComplte
(
context
,
posResponse
,
actionActivity
);
mPosAction
.
on
PosSuccess
(
context
,
posResponse
,
actionActivity
);
}
}
...
...
@@ -158,9 +199,22 @@ public class CommandImpl implements ICommand {
*
* @param e
*/
p
rivate
void
onActionError
(
Exception
e
)
{
p
ublic
void
onPosException
(
Exception
e
)
{
if
(
mPosAction
!=
null
)
{
mPosAction
.
on
ActionError
(
e
);
mPosAction
.
on
PosException
(
e
);
}
}
/**
* 調起失敗轉發到具體的實現類
*
* @param e
*/
public
void
onPosInvalid
(
String
e
)
{
if
(
mPosAction
!=
null
)
{
mPosAction
.
onPosInvalid
(
e
);
}
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/constant/PayStatusCode.java
View file @
66c18f25
...
...
@@ -19,11 +19,13 @@ public class PayStatusCode {
*
*/
/**
*
支付状态
*
以下狀態認為是成功情況
*/
public
static
final
String
PAY_STATUS_00
=
"00"
;
//成功 √
public
static
final
String
PAY_STATUS_02
=
"02"
;
//微信、支付宝正在处理这笔退款请求(可认为已成功) √
/**
* 以下狀態認為是无效情況
*/
public
static
final
String
PAY_STATUS_09
=
"09"
;
//用户取消 √
public
static
final
String
PAY_STATUS_10
=
"10"
;
//主持人拒绝 √
public
static
final
String
PAY_STATUS_11
=
"11"
;
//用户撤销(应用于仅限微信/支付宝) √
...
...
@@ -32,15 +34,19 @@ public class PayStatusCode {
public
static
final
String
PAY_STATUS_90
=
"90"
;
//通讯/格式 错误 √
public
static
final
String
PAY_STATUS_91
=
"91"
;
//功能或 付款方式没有 支持的 √
public
static
final
String
PAY_STATUS_97
=
"97"
;
//N5 POS忙碌 √
public
static
final
String
PAY_STATUS_98
=
"98"
;
//超时 √
/**
* 以下狀態認為是異常情況
*/
public
static
final
String
PAY_STATUS_03
=
"03"
;
//确认/处理 (支付、清機 同步接口防止N5機器關機未收到結果) √
public
static
final
String
PAY_STATUS_98
=
"98"
;
//超时 √
public
static
final
String
PAY_STATUS_99
=
"99"
;
//未知错误 √
/**
* 回調成功
* @param status
* @return
*/
public
static
boolean
withSuccess
(
String
status
)
{
if
(
TextUtils
.
isEmpty
(
status
))
{
return
false
;
...
...
@@ -52,13 +58,33 @@ public class PayStatusCode {
return
false
;
}
/**
* 回調異常,比如突然斷網或關機沒有收到回調
* @param status
* @return
*/
public
static
boolean
withException
(
String
status
)
{
if
(
status
.
equals
(
PAY_STATUS_99
)
||
status
.
equals
(
PAY_STATUS_03
))
{
if
(
TextUtils
.
isEmpty
(
status
))
{
return
true
;
}
if
(
status
.
equals
(
PAY_STATUS_98
)
||
status
.
equals
(
PAY_STATUS_99
)
||
status
.
equals
(
PAY_STATUS_03
))
{
return
true
;
}
return
false
;
}
/**
* 本次操作無效
* @param status
* @return
*/
public
static
boolean
withInvalid
(
String
status
){
if
(
withSuccess
(
status
)
||
withException
(
status
)){
return
false
;
}
return
true
;
}
public
static
String
getHywebRequestTextByCode
(
String
status
)
{
switch
(
status
)
{
case
PAY_STATUS_00:
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/PrintActionImpl.java
View file @
66c18f25
...
...
@@ -20,29 +20,13 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
*/
public
class
PrintActionImpl
extends
IPosAction
{
@Inject
RxErrorHandler
mErrorHandler
;
public
PrintActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
boolean
showLoading
)
{
super
(
context
,
iView
,
action
,
showLoading
);
}
@Override
protected
void
onRequestBefore
()
{
}
@Override
public
void
onRequestPOS
(
String
requestJson
)
{
super
.
onRequestPOS
(
requestJson
);
}
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
result
,
Activity
originalActivity
)
{
protected
void
onBeforeActionPOS
()
{
}
@Override
public
void
onActionError
(
Exception
error
)
{
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/RefundActionImpl.java
View file @
66c18f25
...
...
@@ -8,13 +8,14 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RefundRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.bg.GetRefundIdResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.bg.GetTxnIdResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose
;
...
...
@@ -23,11 +24,10 @@ import com.jess.arms.integration.AppManager;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
io.reactivex.Observer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -40,7 +40,7 @@ import okhttp3.RequestBody;
public
class
RefundActionImpl
extends
IPosAction
{
private
GetTxnIdRequest
mGetTxnIdRequest
;
private
Get
TxnIdResponse
mTxn
IdResponse
;
private
Get
RefundIdResponse
mGetRefund
IdResponse
;
private
RefundRequest
mRefundRequest
;
...
...
@@ -52,23 +52,17 @@ public class RefundActionImpl extends IPosAction {
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
mGetTxnIdRequest
));
String
json
=
GsonUtils
.
GsonString
(
mGetTxnIdRequest
);
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/getRefundTxnId"
,
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
}
@Override
...
...
@@ -78,23 +72,23 @@ public class RefundActionImpl extends IPosAction {
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
m
TxnIdResponse
=
GsonUtils
.
GsonToBean
(
baseResult
.
getData
(),
GetTxn
IdResponse
.
class
);
m
GetRefundIdResponse
=
GsonUtils
.
GsonToBean
(
baseResult
.
getData
(),
GetRefund
IdResponse
.
class
);
if
(
mRefundRequest
!=
null
)
{
mRefundRequest
.
setTXN_ID
(
m
TxnIdResponse
.
getTxn
Id
());
mRefundRequest
.
setTXN_ID
(
m
GetRefundIdResponse
.
getRefund
Id
());
//調起N5退款
on
Request
POS
(
GsonUtils
.
GsonString
(
mRefundRequest
));
canCelLoadingDialog
();
on
ActionTo
POS
(
GsonUtils
.
GsonString
(
mRefundRequest
));
//
canCelLoadingDialog();
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_701
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_701
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_702
));
on
BeforeActionPosError
(
new
Exception
(
error
+
baseResult
.
getErrMsg
()
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_703
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_703
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_704
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_704
));
}
}
...
...
@@ -104,9 +98,7 @@ public class RefundActionImpl extends IPosAction {
@Override
public
void
onError
(
Throwable
t
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onError
(
new
Exception
(
t
.
getMessage
()));
}
onBeforeActionPosError
(
new
Exception
(
t
.
getMessage
()));
}
});
}
...
...
@@ -121,25 +113,10 @@ public class RefundActionImpl extends IPosAction {
* @param originalActivity
*/
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
onActionError
(
new
Exception
(
"回調異常"
+
PayErrorCode
.
pos_response_102
));
}
else
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
response
);
}
}
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
//1、更新上傳退款狀態
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"orderPay/add"
,
getPosMatterRequest
((
RefundRespose
)
response
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
{
})
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
...
...
@@ -149,32 +126,28 @@ public class RefundActionImpl extends IPosAction {
@Override
public
void
onNext
(
String
result
)
{
show
RefundResult
(
context
,
response
,
originalActivity
);
display
RefundResult
(
context
,
response
,
originalActivity
);
if
(!
TextUtils
.
isEmpty
(
result
))
{
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
onUpdateStatusSuccess
(
response
);
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayErrorCode
.
sale_412
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
"["
+
baseResult
.
getErrMsg
()+
"]"
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_413
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_413
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_414
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_414
));
}
}
@Override
public
void
onError
(
Throwable
e
)
{
showRefundResult
(
context
,
response
,
originalActivity
);
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onError
(
e
);
}
onUpdateStatusError
(
new
Exception
(
e
.
getMessage
()));
displayRefundResult
(
context
,
response
,
originalActivity
);
}
@Override
...
...
@@ -190,17 +163,11 @@ public class RefundActionImpl extends IPosAction {
* @param response
* @param originalActivity
*/
private
void
showRefundResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withSuccess
(
response
.
getSTATUS
()))
{
//退款成功
AppManager
appManager
=
ArmsUtils
.
obtainAppComponentFromContext
(
context
).
appManager
();
Activity
activity
=
appManager
.
getCurrentActivity
();
if
(
activity
.
getClass
().
equals
(
originalActivity
.
getClass
()))
{
super
.
onActionComplte
(
context
,
response
,
originalActivity
);
}
private
void
displayRefundResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
super
.
onPosException
(
new
Exception
(
response
.
getSTATUS
()));
}
else
{
//退款失敗
onActionError
(
new
Exception
(
mPosAction
.
getActionName
()
+
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
())
+
PayErrorCode
.
tips_710
));
super
.
onPosSuccess
(
context
,
response
,
originalActivity
);
}
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/RetrievalActionImpl.java
View file @
66c18f25
...
...
@@ -9,23 +9,25 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.RetrievalRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.AdjustTipRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SaleRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SettlementRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
io.reactivex.Observer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -38,39 +40,31 @@ import okhttp3.RequestBody;
public
class
RetrievalActionImpl
extends
IPosAction
{
private
RetrievalRequest
mRetrievalRequest
;
private
l
ong
mOrderId
;
private
L
ong
mOrderId
;
public
RetrievalActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
l
ong
orderId
,
RetrievalRequest
request
,
OnPosActionListener
onPosActionListener
,
boolean
showLoading
)
{
public
RetrievalActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
L
ong
orderId
,
RetrievalRequest
request
,
OnPosActionListener
onPosActionListener
,
boolean
showLoading
)
{
super
(
context
,
iView
,
action
,
showLoading
);
this
.
mOrderId
=
mO
rderId
;
this
.
mOrderId
=
o
rderId
;
this
.
mRetrievalRequest
=
request
;
this
.
mOnPosActionListener
=
onPosActionListener
;
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
//調起N5狀態查詢
on
Request
POS
(
GsonUtils
.
GsonString
(
mRetrievalRequest
));
on
ActionTo
POS
(
GsonUtils
.
GsonString
(
mRetrievalRequest
));
}
/**
* 查詢回調成功
* 1、更新上傳狀態
*
*
2、顯示查询結果
* @param context
* @param response
* @param originalActivity
*/
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
onActionError
(
new
Exception
(
"回調異常"
+
PayErrorCode
.
pos_response_102
));
}
else
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
response
);
}
}
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
String
url
=
null
;
RequestBody
requestBody
;
...
...
@@ -83,15 +77,21 @@ public class RetrievalActionImpl extends IPosAction {
url
=
"posPay/updatePosRefund"
;
requestBody
=
getPosMatterRefundRequest
((
RefundRespose
)
response
);
break
;
case
Constant
.
EVENT
.
NAME
.
VOID_RESP
:
requestBody
=
getPosMatterVoidRequest
((
VoidRespose
)
response
);
break
;
case
Constant
.
EVENT
.
NAME
.
ADJUST_RESP
:
requestBody
=
getPosMatterTipsRequest
((
AdjustTipRespose
)
response
);
break
;
case
"SETTLE_RESP"
:
requestBody
=
getPosMatterSettlementRequest
((
SettlementRespose
)
response
);
break
;
default
:
return
;
}
//1、更新上傳支付狀態
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
url
,
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
...
...
@@ -100,38 +100,51 @@ public class RetrievalActionImpl extends IPosAction {
@Override
public
void
onNext
(
String
result
)
{
displayRetrievalResult
(
context
,
response
,
originalActivity
);
if
(!
TextUtils
.
isEmpty
(
result
))
{
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
onUpdateStatusSuccess
(
response
);
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayErrorCode
.
sale_412
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
"["
+
baseResult
.
getErrMsg
()+
"]"
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_413
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_413
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_414
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_414
));
}
}
@Override
public
void
onError
(
Throwable
e
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onError
(
e
);
}
displayRetrievalResult
(
context
,
response
,
originalActivity
);
}
@Override
public
void
onComplete
()
{
}
});
}
/**
* 2、顯示查询結果
*
* @param context
* @param response
* @param originalActivity
*/
private
void
displayRetrievalResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
super
.
onPosException
(
new
Exception
(
response
.
getSTATUS
()));
}
else
{
super
.
onPosSuccess
(
context
,
response
,
originalActivity
);
}
}
private
RequestBody
getPosMatterSaleRequest
(
SaleRespose
response
)
{
PosMatter
posMatter
=
new
PosMatter
();
...
...
@@ -148,10 +161,27 @@ public class RetrievalActionImpl extends IPosAction {
}
private
RequestBody
getPosMatterRefundRequest
(
RefundRespose
response
)
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
response
));
String
json
=
GsonUtils
.
GsonString
(
response
);
return
requestBody
;
}
private
RequestBody
getPosMatterVoidRequest
(
VoidRespose
response
)
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
response
));
String
json
=
GsonUtils
.
GsonString
(
response
);
return
requestBody
;
}
private
RequestBody
getPosMatterTipsRequest
(
AdjustTipRespose
response
)
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
response
));
String
json
=
GsonUtils
.
GsonString
(
response
);
return
requestBody
;
}
private
RequestBody
getPosMatterSettlementRequest
(
SettlementRespose
response
)
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
response
));
String
json
=
GsonUtils
.
GsonString
(
response
);
return
requestBody
;
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/SaleActionImpl.java
View file @
66c18f25
...
...
@@ -16,7 +16,7 @@ import com.gingersoft.gsa.cloud.order.bean.event.MealPayResultParam;
import
com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest
;
import
com.gingersoft.gsa.cloud.order.billItem.BillItem
;
import
com.gingersoft.gsa.cloud.pay.bean.PayMethod
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter
;
...
...
@@ -29,13 +29,15 @@ import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode;
import
com.gingersoft.gsa.cloud.pay.widget.StatusLoadingDialog
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxJavaUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
import
io.reactivex.Observer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.
schedulers.Schedulers
;
import
io.reactivex.
functions.Consumer
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -78,25 +80,17 @@ public class SaleActionImpl extends IPosAction {
}
});
}
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
mTxnIdRequest
.
setContent
(
mMealOrderPayRequest
.
toString
());
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
mTxnIdRequest
));
String
json
=
GsonUtils
.
GsonString
(
mTxnIdRequest
);
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/getTxnId"
,
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
{
})
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
...
...
@@ -115,19 +109,19 @@ public class SaleActionImpl extends IPosAction {
if
(
mSaleRequest
!=
null
)
{
mSaleRequest
.
setTXN_ID
(
mTxnIdResponse
.
getTxnId
());
//調起N5支付 936E4F01A0A5473C971503433F78027E
on
Request
POS
(
GsonUtils
.
GsonString
(
mSaleRequest
));
canCelLoadingDialog
();
on
ActionTo
POS
(
GsonUtils
.
GsonString
(
mSaleRequest
));
//
canCelLoadingDialog();
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
sale_401
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
sale_401
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
sale_402
));
on
BeforeActionPosError
(
new
Exception
(
error
+
baseResult
.
getErrMsg
()
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
sale_403
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
sale_403
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
sale_404
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
sale_404
));
}
}
...
...
@@ -137,7 +131,7 @@ public class SaleActionImpl extends IPosAction {
@Override
public
void
onError
(
Throwable
t
)
{
on
Action
Error
(
new
Exception
(
t
.
getMessage
()));
on
BeforeActionPos
Error
(
new
Exception
(
t
.
getMessage
()));
}
});
}
...
...
@@ -153,25 +147,10 @@ public class SaleActionImpl extends IPosAction {
* @param originalActivity 原來跳轉到pos的支付頁
*/
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
onActionError
(
new
Exception
(
"回調異常"
+
PayErrorCode
.
pos_response_102
));
}
else
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
response
);
}
}
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
//1、更新上傳支付狀態
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"orderPay/add"
,
getPosMatterRequest
((
SaleRespose
)
response
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
{
})
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
...
...
@@ -181,31 +160,29 @@ public class SaleActionImpl extends IPosAction {
@Override
public
void
onNext
(
String
result
)
{
showPay
Result
(
context
,
response
,
originalActivity
);
displayPayment
Result
(
context
,
response
,
originalActivity
);
if
(!
TextUtils
.
isEmpty
(
result
))
{
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
startPayResultActivity
(
context
,
response
);
onUpdateStatusSuccess
(
response
);
startPaymentDetailActivity
(
context
,
response
);
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayErrorCode
.
sale_412
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()+
"["
+
baseResult
.
getErrMsg
()+
"]"
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_413
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_413
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
sale_414
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
sale_414
));
}
}
@Override
public
void
onError
(
Throwable
e
)
{
showPay
Result
(
context
,
response
,
originalActivity
);
startPay
Result
Activity
(
context
,
response
);
displayPayment
Result
(
context
,
response
,
originalActivity
);
startPay
mentDetail
Activity
(
context
,
response
);
}
@Override
...
...
@@ -214,6 +191,7 @@ public class SaleActionImpl extends IPosAction {
});
}
/**
* 2、顯示支付結果
*
...
...
@@ -221,8 +199,12 @@ public class SaleActionImpl extends IPosAction {
* @param response
* @param originalActivity
*/
private
void
showPayResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
super
.
onActionComplte
(
context
,
response
,
originalActivity
);
private
void
displayPaymentResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
super
.
onPosException
(
new
Exception
(
response
.
getSTATUS
()));
}
else
{
super
.
onPosSuccess
(
context
,
response
,
originalActivity
);
}
}
/**
...
...
@@ -230,8 +212,7 @@ public class SaleActionImpl extends IPosAction {
*
* @param response
*/
private
void
startPayResultActivity
(
Context
context
,
HywebPosResponse
response
)
{
private
void
startPaymentDetailActivity
(
Context
context
,
HywebPosResponse
response
)
{
MealPayResultParam
payResultParam
=
new
MealPayResultParam
();
payResultParam
.
setTxnId
(
mTxnIdResponse
.
getTxnId
());
payResultParam
.
setTableBean
(
mTableBean
);
...
...
@@ -240,17 +221,23 @@ public class SaleActionImpl extends IPosAction {
payResultParam
.
setPayMethodList
(
mPayMethodList
);
payResultParam
.
setSaleRespose
((
SaleRespose
)
response
);
//kill orderPayActivity,orderContentActivity,mealActivity
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_TABLE
)
.
setActionName
(
ComponentAction
.
Table
.
KILL_MEAL_ORDER_PAY
)
.
build
()
.
call
();
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PAY
)
.
setActionName
(
ComponentAction
.
Pay
.
OPEN_PAY_RESULT
)
.
addParam
(
"payResultParam"
,
payResultParam
)
.
build
()
.
call
();
//等待Dialog動畫加載完再跳轉支付結果頁面
RxJavaUtils
.
delay
(
2
,
TimeUnit
.
SECONDS
)
.
subscribe
(
new
Consumer
<
Long
>()
{
@Override
public
void
accept
(
Long
aLong
)
throws
Exception
{
//kill orderPayActivity,orderContentActivity,mealActivity
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_TABLE
)
.
setActionName
(
ComponentAction
.
Table
.
KILL_MEAL_ORDER_PAY
)
.
build
()
.
call
();
CC
.
obtainBuilder
(
ComponentName
.
COMPONENT_PAY
)
.
setActionName
(
ComponentAction
.
Pay
.
OPEN_PAY_RESULT
)
.
addParam
(
"payResultParam"
,
payResultParam
)
.
build
()
.
call
();
}
});
}
private
RequestBody
getPosMatterRequest
(
SaleRespose
response
)
{
...
...
@@ -268,10 +255,5 @@ public class SaleActionImpl extends IPosAction {
return
requestBody
;
}
@Override
public
void
onActionError
(
Exception
error
)
{
super
.
onActionError
(
error
);
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/SettlementActionImpl.java
View file @
66c18f25
...
...
@@ -9,6 +9,8 @@ import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
javax.inject.Inject
;
...
...
@@ -25,44 +27,18 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
*/
public
class
SettlementActionImpl
extends
IPosAction
{
@Inject
RxErrorHandler
mErrorHandler
;
public
SettlementActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
boolean
showLoading
)
{
super
(
context
,
iView
,
action
,
showLoading
);
}
@Override
protected
void
onRequestBefore
()
{
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/getRefundTxnId"
,
null
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
subscribe
(
new
ErrorHandleSubscriber
<
String
>(
mErrorHandler
)
{
@Override
public
void
onNext
(
String
s
)
{
}
});
protected
void
onBeforeActionPOS
()
{
}
@Override
public
void
onRequestPOS
(
String
requestJson
)
{
super
.
onRequestPOS
(
requestJson
);
}
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
result
,
Activity
actionActivity
)
{
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
result
,
Activity
actionActivity
)
{
}
@Override
public
void
onActionError
(
Exception
error
)
{
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/TipsActionImpl.java
View file @
66c18f25
...
...
@@ -8,7 +8,7 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
...
...
@@ -23,11 +23,10 @@ import com.jess.arms.integration.AppManager;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
io.reactivex.Observer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -45,8 +44,6 @@ public class TipsActionImpl extends IPosAction {
private
GetTxnIdRequest
mTxnIdRequest
;
private
GetTipTxnIdResponse
mTxnIdResponse
;
private
OnPosActionListener
mOnPosActionListener
;
public
TipsActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
GetTxnIdRequest
txnIdRequest
,
AdjustTipRequest
adjustTipRequest
,
OnPosActionListener
onPosActionListener
,
boolean
showLoading
)
{
super
(
context
,
iView
,
action
,
showLoading
);
this
.
mTxnIdRequest
=
txnIdRequest
;
...
...
@@ -55,19 +52,14 @@ public class TipsActionImpl extends IPosAction {
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
mTxnIdRequest
));
String
json
=
GsonUtils
.
GsonString
(
mTxnIdRequest
);
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/getTipTxnId"
,
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
...
...
@@ -85,23 +77,23 @@ public class TipsActionImpl extends IPosAction {
if
(
mAdjustTipRequest
!=
null
)
{
mAdjustTipRequest
.
setTXN_ID
(
mTxnIdResponse
.
getTipTxnId
());
//調起N5補小費
on
Request
POS
(
GsonUtils
.
GsonString
(
mAdjustTipRequest
));
canCelLoadingDialog
();
on
ActionTo
POS
(
GsonUtils
.
GsonString
(
mAdjustTipRequest
));
//
canCelLoadingDialog();
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_701
));
on
BeforeActionPosError
(
new
Exception
(
error
+
baseResult
.
getErrMsg
()
));
}
}
else
{
if
(!
TextUtils
.
isEmpty
(
baseResult
.
getErrMsg
()))
{
on
Action
Error
(
new
Exception
(
baseResult
.
getErrMsg
()));
on
BeforeActionPos
Error
(
new
Exception
(
baseResult
.
getErrMsg
()));
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_702
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_702
));
}
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_703
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_703
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayError
Code
.
tips_704
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayException
Code
.
tips_704
));
}
}
...
...
@@ -111,7 +103,7 @@ public class TipsActionImpl extends IPosAction {
@Override
public
void
onError
(
Throwable
t
)
{
on
Action
Error
(
new
Exception
(
t
.
getMessage
()));
on
BeforeActionPos
Error
(
new
Exception
(
t
.
getMessage
()));
}
});
}
...
...
@@ -127,27 +119,10 @@ public class TipsActionImpl extends IPosAction {
* @param originalActivity
*/
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
onActionError
(
new
Exception
(
"回調異常"
+
PayErrorCode
.
pos_response_102
));
}
else
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
response
);
}
}
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
//1、更新上傳小費狀態
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"orderPay/updatePosTip"
,
getPosMatterRequest
((
AdjustTipRespose
)
response
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
{
})
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/updatePosTip"
,
getPosMatterRequest
((
AdjustTipRespose
)
response
))
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
...
...
@@ -158,32 +133,28 @@ public class TipsActionImpl extends IPosAction {
@Override
public
void
onNext
(
String
result
)
{
show
TipsResult
(
context
,
response
,
originalActivity
);
display
TipsResult
(
context
,
response
,
originalActivity
);
if
(!
TextUtils
.
isEmpty
(
result
))
{
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
if
(
baseResult
.
isSuccess
())
{
onUpdateStatusSuccess
(
response
);
}
else
{
onActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayErrorCode
.
tips_711
));
// onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + PayExceptionCode.tips_711));
onUpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
"["
+
baseResult
.
getErrMsg
()+
"]"
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
tips_712
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
tips_712
));
}
}
else
{
on
ActionError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayError
Code
.
tips_713
));
on
UpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayException
Code
.
tips_713
));
}
}
@Override
public
void
onError
(
Throwable
e
)
{
showTipsResult
(
context
,
response
,
originalActivity
);
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onError
(
e
);
}
displayTipsResult
(
context
,
response
,
originalActivity
);
}
@Override
...
...
@@ -199,17 +170,11 @@ public class TipsActionImpl extends IPosAction {
* @param response
* @param originalActivity
*/
private
void
showTipsResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withSuccess
(
response
.
getSTATUS
()))
{
//補小費成功
AppManager
appManager
=
ArmsUtils
.
obtainAppComponentFromContext
(
context
).
appManager
();
Activity
activity
=
appManager
.
getCurrentActivity
();
if
(
activity
.
getClass
().
equals
(
originalActivity
.
getClass
()))
{
super
.
onActionComplte
(
context
,
response
,
originalActivity
);
}
private
void
displayTipsResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
super
.
onPosException
(
new
Exception
(
response
.
getSTATUS
()));
}
else
{
//補小費失敗
onActionError
(
new
Exception
(
mPosAction
.
getActionName
()
+
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
())
+
PayErrorCode
.
tips_710
));
super
.
onPosSuccess
(
context
,
response
,
originalActivity
);
}
}
...
...
@@ -217,8 +182,8 @@ public class TipsActionImpl extends IPosAction {
PosMatter
posMatter
=
new
PosMatter
();
posMatter
.
setOrderId
(
mTxnIdRequest
.
getOrderId
());
posMatter
.
setTipsPrice
(
mTxnIdRequest
.
getTipsPrice
());
posMatter
.
setPayId
(
response
.
getTXN_ID
());
posMatter
.
setTipsPrice
(
response
.
getTIPS
());
//
posMatter.setPayId(response.getTXN_ID());
posMatter
.
setContent
(
GsonUtils
.
GsonString
(
response
));
posMatter
.
setStatus
(
getPosMatterStatus
(
response
.
getSTATUS
()));
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/pos/hywebpos/imp/VoidActionImpl.java
View file @
66c18f25
...
...
@@ -8,13 +8,14 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult;
import
com.gingersoft.gsa.cloud.common.constans.HttpsConstans
;
import
com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils
;
import
com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
rror
Code
;
import
com.gingersoft.gsa.cloud.pay.contract.PayE
xception
Code
;
import
com.gingersoft.gsa.cloud.pay.pos.IPosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener
;
import
com.gingersoft.gsa.cloud.pay.pos.PosAction
;
import
com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg.GetTxnIdRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.pos.VoidRequest
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.bg.GetCancelTxnIdResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.bg.GetTxnIdResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse
;
import
com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.VoidRespose
;
...
...
@@ -23,11 +24,10 @@ import com.jess.arms.integration.AppManager;
import
com.jess.arms.mvp.IView
;
import
com.jess.arms.utils.ArmsUtils
;
import
com.jess.arms.utils.RxLifecycleUtils
;
import
com.xuexiang.rxutil2.rxjava.RxSchedulerUtils
;
import
io.reactivex.Observer
;
import
io.reactivex.android.schedulers.AndroidSchedulers
;
import
io.reactivex.disposables.Disposable
;
import
io.reactivex.schedulers.Schedulers
;
import
okhttp3.MediaType
;
import
okhttp3.RequestBody
;
...
...
@@ -42,9 +42,7 @@ public class VoidActionImpl extends IPosAction {
private
VoidRequest
mVoidRequest
;
private
GetTxnIdRequest
mTxnIdRequest
;
private
GetTxnIdResponse
mTxnIdResponse
;
private
OnPosActionListener
mOnPosActionListener
;
private
GetCancelTxnIdResponse
mTxnIdResponse
;
public
VoidActionImpl
(
Context
context
,
IView
iView
,
PosAction
action
,
VoidRequest
voidRequest
,
GetTxnIdRequest
txnIdRequest
,
OnPosActionListener
onPosActionListener
,
boolean
showLoading
)
{
super
(
context
,
iView
,
action
,
showLoading
);
...
...
@@ -54,19 +52,14 @@ public class VoidActionImpl extends IPosAction {
}
@Override
protected
void
on
RequestBefore
()
{
protected
void
on
BeforeActionPOS
()
{
RequestBody
requestBody
=
RequestBody
.
create
(
MediaType
.
parse
(
"application/json"
),
GsonUtils
.
GsonString
(
mTxnIdRequest
));
String
json
=
GsonUtils
.
GsonString
(
mTxnIdRequest
);
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"posPay/getCancelTxnId"
,
requestBody
)
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
public
void
onSubscribe
(
Disposable
d
)
{
...
...
@@ -79,23 +72,23 @@ public class VoidActionImpl extends IPosAction {
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
mTxnIdResponse
=
GsonUtils
.
GsonToBean
(
baseResult
.
getData
(),
GetTxnIdResponse
.
class
);
mTxnIdResponse
=
GsonUtils
.
GsonToBean
(
baseResult
.
getData
(),
Get
Cancel
TxnIdResponse
.
class
);
if
(
mVoidRequest
!=
null
)
{
mVoidRequest
.
setTXN_ID
(
mTxnIdResponse
.
getTxnId
());
mVoidRequest
.
setTXN_ID
(
mTxnIdResponse
.
get
Cancel
TxnId
());
//調起N5取消訂單
on
Request
POS
(
GsonUtils
.
GsonString
(
mVoidRequest
));
canCelLoadingDialog
();
on
ActionTo
POS
(
GsonUtils
.
GsonString
(
mVoidRequest
));
//
canCelLoadingDialog();
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_7
01
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayExceptionCode
.
void_8
01
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_702
));
on
BeforeActionPosError
(
new
Exception
(
error
+
baseResult
.
getErrMsg
()
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_7
03
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayExceptionCode
.
void_8
03
));
}
}
else
{
on
ActionError
(
new
Exception
(
error
+
PayErrorCode
.
tips_7
04
));
on
BeforeActionPosError
(
new
Exception
(
error
+
PayExceptionCode
.
void_8
04
));
}
}
...
...
@@ -105,7 +98,7 @@ public class VoidActionImpl extends IPosAction {
@Override
public
void
onError
(
Throwable
t
)
{
on
Action
Error
(
new
Exception
(
t
.
getMessage
()));
on
BeforeActionPos
Error
(
new
Exception
(
t
.
getMessage
()));
}
});
}
...
...
@@ -123,27 +116,10 @@ public class VoidActionImpl extends IPosAction {
* @param originalActivity
*/
@Override
public
void
onActionComplte
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
onActionError
(
new
Exception
(
"回調異常"
+
PayErrorCode
.
pos_response_102
));
}
else
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onPosSuccess
(
response
);
}
}
public
void
onPosSuccess
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
//1、更新上傳取消狀態
OkHttp3Utils
.
post
(
HttpsConstans
.
ROOT_SERVER_ADDRESS_FORMAL
+
"orderPay/updatePosCancel"
,
getPosMatterRequest
((
VoidRespose
)
response
))
.
subscribeOn
(
Schedulers
.
io
())
.
observeOn
(
Schedulers
.
io
())
.
doOnSubscribe
(
disposable
->
{
})
.
subscribeOn
(
AndroidSchedulers
.
mainThread
())
.
observeOn
(
AndroidSchedulers
.
mainThread
())
.
doAfterTerminate
(()
->
{
})
.
compose
(
RxSchedulerUtils
.
_io_main_o
())
.
compose
(
RxLifecycleUtils
.
bindToLifecycle
(
mView
))
.
subscribe
(
new
Observer
<
String
>()
{
@Override
...
...
@@ -153,61 +129,47 @@ public class VoidActionImpl extends IPosAction {
@Override
public
void
onNext
(
String
result
)
{
show
VoidResult
(
context
,
response
,
originalActivity
);
display
VoidResult
(
context
,
response
,
originalActivity
);
if
(!
TextUtils
.
isEmpty
(
result
))
{
BaseResult
baseResult
=
GsonUtils
.
GsonToBean
(
result
,
BaseResult
.
class
);
if
(
baseResult
!=
null
)
{
if
(
baseResult
.
isSuccess
()
&&
baseResult
.
getData
()
!=
null
)
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
onUpdateStatusSuccess
(
response
);
}
else
{
// onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.tips_711
));
onUpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
baseResult
.
getErrMsg
()
));
}
}
else
{
// onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.tips_712
));
onUpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayExceptionCode
.
void_811
));
}
}
else
{
// onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.tips_713
));
onUpdateStatusError
(
new
Exception
(
mPosAction
.
getCallbackExceptionText
()
+
PayExceptionCode
.
void_812
));
}
}
@Override
public
void
onError
(
Throwable
e
)
{
showVoidResult
(
context
,
response
,
originalActivity
);
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onError
(
e
);
}
displayVoidResult
(
context
,
response
,
originalActivity
);
}
@Override
public
void
onComplete
()
{
if
(
mOnPosActionListener
!=
null
)
{
mOnPosActionListener
.
onSuccess
(
response
);
}
}
});
}
/**
* 2、顯示
小費
結果
* 2、顯示
取消
結果
*
* @param context
* @param response
* @param originalActivity
*/
private
void
showVoidResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withSuccess
(
response
.
getSTATUS
()))
{
//補小費成功
AppManager
appManager
=
ArmsUtils
.
obtainAppComponentFromContext
(
context
).
appManager
();
Activity
activity
=
appManager
.
getCurrentActivity
();
if
(
activity
.
getClass
().
equals
(
originalActivity
.
getClass
()))
{
super
.
onActionComplte
(
context
,
response
,
originalActivity
);
}
private
void
displayVoidResult
(
Context
context
,
HywebPosResponse
response
,
Activity
originalActivity
)
{
if
(
PayStatusCode
.
withException
(
response
.
getSTATUS
()))
{
super
.
onPosException
(
new
Exception
(
response
.
getSTATUS
()));
}
else
{
//補小費失敗
onActionError
(
new
Exception
(
mPosAction
.
getActionName
()
+
PayStatusCode
.
getHywebRequestTextByCode
(
response
.
getSTATUS
())
+
PayErrorCode
.
tips_710
));
super
.
onPosSuccess
(
context
,
response
,
originalActivity
);
}
}
...
...
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/util/PayMethodUtils.java
View file @
66c18f25
package
com
.
gingersoft
.
gsa
.
cloud
.
pay
.
util
;
import
com.gingersoft.gsa.cloud.pay.bean.PayMethod
;
import
com.gingersoft.gsa.cloud.pay.contract.PayTypeContract
;
import
java.util.ArrayList
;
import
java.util.List
;
...
...
@@ -14,7 +15,7 @@ import java.util.List;
public
class
PayMethodUtils
{
public
static
List
<
PayMethod
>
filterPaymentsMethodById
(
List
<
PayMethod
>
payMethods
,
int
...
types
)
{
public
static
List
<
PayMethod
>
filterPaymentsMethodById
(
List
<
PayMethod
>
payMethods
,
int
[]
types
)
{
List
<
PayMethod
>
payMethodList
=
new
ArrayList
<>();
if
(
payMethods
!=
null
&&
payMethods
.
size
()
>
0
&&
types
.
length
>
0
)
{
for
(
int
type
:
types
)
{
...
...
@@ -38,4 +39,31 @@ public class PayMethodUtils {
}
return
null
;
}
/**
* 存在hyweb支付方式
*
* @param payMethods
* @return
*/
public
static
int
hasHywebPayMethod
(
List
<
PayMethod
>
payMethods
)
{
if
(
payMethods
!=
null
&&
payMethods
.
size
()
>
0
)
{
int
[]
payTypes
=
{
PayTypeContract
.
PAY_METHOD_ID_1030
,
PayTypeContract
.
PAY_METHOD_ID_1031
};
for
(
int
i
=
0
;
i
<
payMethods
.
size
();
i
++)
{
PayMethod
payMethod
=
payMethods
.
get
(
i
);
if
(
payMethod
.
getPayType
()
==
payTypes
[
0
]
||
payMethod
.
getPayType
()
==
payTypes
[
1
])
{
return
i
;
}
}
}
return
-
1
;
}
public
static
boolean
hasHywebPayMethod
(
PayMethod
payMethod
)
{
int
[]
payTypes
=
{
PayTypeContract
.
PAY_METHOD_ID_1030
,
PayTypeContract
.
PAY_METHOD_ID_1031
};
if
(
payMethod
.
getPayType
()
==
payTypes
[
0
]
||
payMethod
.
getPayType
()
==
payTypes
[
1
])
{
return
true
;
}
return
false
;
}
}
library-order/src/main/java/com/gingersoft/gsa/cloud/pay/widget/StatusLoadingDialog.java
View file @
66c18f25
...
...
@@ -22,7 +22,14 @@ public class StatusLoadingDialog {
private
TextView
tv_status
;
private
long
mCancelDelayMillis
=
1500
;
private
String
mLoadingText
;
private
String
mLoadingText
=
"支付中..."
;
public
StatusLoadingDialog
(
Context
context
,
String
loadingText
)
{
this
.
mContext
=
context
;
this
.
mLoadingText
=
loadingText
;
initView
();
}
public
StatusLoadingDialog
(
Context
context
,
String
loadingText
,
long
cancelDelayMillis
)
{
this
.
mContext
=
context
;
...
...
@@ -43,38 +50,32 @@ public class StatusLoadingDialog {
dialog
.
setContentView
(
view
);
dialog
.
setCancelable
(
false
);
tv_status
.
setText
(
mLoadingText
);
ll_container
.
setLayoutParams
(
new
FrameLayout
.
LayoutParams
((
int
)
(
ArmsUtils
.
getScreenWidth
(
mContext
)
*
0.4
),
(
int
)
(
ArmsUtils
.
getScreenWidth
(
mContext
)
*
0.4
)));
}
public
void
loadLoading
()
{
as_status
.
loadLoading
();
}
public
void
loadSuccess
()
{
as_status
.
loadSuccess
();
as_status
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
mOnClickListener
!=
null
)
{
mOnClickListener
.
loadSuccessEnd
();
}
cancel
();
}
},
mCancelDelayMillis
);
}
public
void
loadFailure
()
{
as_status
.
loadFailure
();
as_status
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
if
(
mOnClickListener
!=
null
)
{
mOnClickListener
.
loadFailureEnd
();
}
public
void
cancel
()
{
clearLoadingAnim
();
if
(
dialog
!=
null
&&
dialog
.
isShowing
())
{
as_status
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
dialog
.
cancel
();
}
cancel
();
}
},
mCancelDelayMillis
);
},
mCancelDelayMillis
);
}
}
public
void
setStatusText
(
String
text
)
{
...
...
@@ -94,18 +95,6 @@ public class StatusLoadingDialog {
loadLoading
();
}
public
void
cancel
()
{
clearLoadingAnim
();
if
(
dialog
!=
null
&&
dialog
.
isShowing
())
{
as_status
.
postDelayed
(
new
Runnable
()
{
@Override
public
void
run
()
{
dialog
.
cancel
();
}
},
mCancelDelayMillis
);
}
}
private
OnLoadStautsListener
mOnClickListener
;
public
void
setOnLoadStautsListener
(
OnLoadStautsListener
onClickListener
)
{
...
...
library-order/src/main/res/layout/pay_fragment_pos_status_exception.xml
View file @
66c18f25
...
...
@@ -7,7 +7,6 @@
android:background=
"@color/theme_white_color"
android:orientation=
"vertical"
>
<LinearLayout
android:id=
"@+id/ll_content"
android:layout_width=
"match_parent"
...
...
@@ -17,47 +16,26 @@
<TextView
android:id=
"@+id/tv_order_num"
android:layout_width=
"
wrap_cont
ent"
android:layout_width=
"
match_par
ent"
android:layout_height=
"@dimen/dp_60"
android:gravity=
"center"
android:text=
"單號:123571416"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal3"
/>
android:textSize=
"@dimen/font_normal3"
android:textStyle=
"bold"
/>
<FrameLayout
<TextView
android:id=
"@+id/tv_pos_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_50"
>
<TextView
android:id=
"@+id/tv_pay_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:gravity=
"center"
android:drawablePadding=
"@dimen/dp_6"
android:drawableTop=
"@mipmap/pay_status_exception"
android:text=
"支付失敗"
android:textSize=
"@dimen/font_normal2"
android:textColor=
"@color/theme_black"
/>
<ProgressBar
android:id=
"@+id/pro_pay_status"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:layout_gravity=
"center"
android:theme=
"@style/AppTheme"
android:visibility=
"invisible"
/>
<TextView
android:id=
"@+id/tv_loading_text"
android:layout_width=
"wrap_content"
android:layout_height=
"wrap_content"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal"
android:text=
"@string/loading"
android:visibility=
"invisible"
android:layout_gravity=
"center_horizontal|bottom"
/>
</FrameLayout>
android:layout_marginTop=
"@dimen/dp_50"
android:drawableTop=
"@mipmap/pay_status_success"
android:drawablePadding=
"@dimen/dp_6"
android:gravity=
"center"
android:text=
"支付成功"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/font_normal2"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tv_amount"
...
...
@@ -66,40 +44,31 @@
android:layout_marginTop=
"@dimen/dp_10"
android:text=
"$500"
android:textColor=
"@color/theme_black"
android:textSize=
"@dimen/sp_32"
/>
android:textSize=
"@dimen/sp_32"
android:textStyle=
"bold"
/>
<TextView
android:id=
"@+id/tv_paymethod"
android:id=
"@+id/tv_pay
_
method"
android:layout_width=
"match_parent"
android:layout_height=
"wrap_content"
android:layout_marginTop=
"@dimen/dp_
5
0"
android:layout_marginTop=
"@dimen/dp_
2
0"
android:gravity=
"center"
android:text=
"微信,支付寶"
android:textColor=
"@color/black"
android:textSize=
"@dimen/font_normal3"
android:text=
"微信,支付寶"
/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id=
"@+id/btn_refresh_status"
android:layout_width=
"@dimen/dp_100"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/dp_50"
android:background=
"@color/theme_color"
android:text=
"刷新"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
app:cornerRadius=
"@dimen/dp_6"
/>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id=
"@+id/btn_back"
android:layout_width=
"@dimen/dp_100"
android:layout_height=
"@dimen/dp_40"
android:gravity=
"center"
android:layout_marginTop=
"@dimen/dp_20"
android:background=
"@color/theme_grey_color"
android:text=
"返回"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
app:cornerRadius=
"@dimen/dp_6"
/>
android:textSize=
"@dimen/font_normal3"
/>
</LinearLayout>
<com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id=
"@+id/btn_back"
android:layout_width=
"match_parent"
android:layout_height=
"@dimen/dp_50"
android:layout_margin=
"@dimen/dp_20"
android:gravity=
"center"
android:layout_alignParentBottom=
"true"
android:layout_centerHorizontal=
"true"
android:background=
"@drawable/shape_app_btn"
android:text=
"返回"
android:textColor=
"@color/theme_white_color"
android:textSize=
"@dimen/font_normal2"
app:cornerRadius=
"@dimen/dp_6"
/>
</RelativeLayout>
\ No newline at end of file
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintExecutor.java
View file @
66c18f25
...
...
@@ -19,6 +19,8 @@ package com.gingersoft.gsa.cloud.print;
import
android.bluetooth.BluetoothDevice
;
import
android.os.AsyncTask
;
import
com.elvishew.xlog.XLog
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean
;
import
java.util.List
;
...
...
@@ -28,6 +30,7 @@ import java.util.List;
* Created by Alex on 2016/11/10.
*/
public
class
PrintExecutor
{
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
private
PrintSocketHolder
holder
;
private
int
mReconnectTimes
=
0
;
private
int
time
=
0
;
...
...
@@ -62,23 +65,31 @@ public class PrintExecutor {
prjIds
=
maker
.
getPrjIds
();
if
(!
holder
.
isSocketPrepared
())
{
int
prepare
=
holder
.
prepareSocket
();
if
(
prepare
!=
PrintSocketHolder
.
ERROR_0
)
if
(
prepare
!=
PrintSocketHolder
.
ERROR_0
)
{
return
prepare
;
}
}
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest holder.sendData(data) ------------------------------->"
);
return
holder
.
sendData
(
data
);
}
else
{
holder
.
onPrinterStateChanged
(
PrintSocketHolder
.
STATE_0
);
List
<
byte
[]>
data
=
maker
.
getPrintData
();
prjIds
=
maker
.
getPrjIds
();
if
(
holder
.
isSocketPrepared
())
{
if
(
sendData
(
data
))
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) --------------连接打印机完成----------------->"
);
if
(
sendData
(
data
))
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) -------------打印成功------------------>"
);
return
PrintSocketHolder
.
ERROR_0
;
else
}
else
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) -------------打印失败------------------>"
);
return
PrintSocketHolder
.
ERROR_100
;
}
}
else
{
if
(
prepareSocket
()
&&
sendData
(
data
))
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) -------------打印成功------------------>"
);
return
PrintSocketHolder
.
ERROR_0
;
}
else
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) -------------打印失败------------------>"
);
return
PrintSocketHolder
.
ERROR_100
;
}
}
...
...
@@ -97,8 +108,9 @@ public class PrintExecutor {
private
boolean
prepareSocket
()
{
time
++;
return
time
<
mReconnectTimes
&&
boolean
prepareSocket
=
time
<
mReconnectTimes
&&
(
holder
.
prepareSocket
()
==
PrintSocketHolder
.
ERROR_0
||
prepareSocket
());
return
prepareSocket
;
}
private
boolean
sendData
(
List
<
byte
[]>
data
)
{
...
...
@@ -188,28 +200,35 @@ public class PrintExecutor {
@Override
protected
void
onPreExecute
()
{
super
.
onPreExecute
();
LoganManager
.
w_printer
(
TAG
,
"PrintTask onPreExecute"
);
holder
.
setOnStateChangedListener
(
this
);
}
@Override
protected
Integer
doInBackground
(
PrintDataMaker
...
makers
)
{
if
(
makers
==
null
||
makers
.
length
<
1
)
LoganManager
.
w_printer
(
TAG
,
"PrintTask doInBackground makers.length:"
+
makers
.
length
);
if
(
makers
==
null
||
makers
.
length
<
1
)
{
return
PrintSocketHolder
.
ERROR_0
;
}
return
doRequest
(
makers
[
0
]);
}
@Override
protected
void
onProgressUpdate
(
Integer
...
values
)
{
super
.
onProgressUpdate
(
values
);
if
(
values
==
null
||
values
.
length
<
1
)
LoganManager
.
w_printer
(
TAG
,
"PrintTask onProgressUpdate values:"
+
values
);
if
(
values
==
null
||
values
.
length
<
1
)
{
return
;
if
(
listener
!=
null
)
}
if
(
listener
!=
null
)
{
listener
.
onStateChanged
(
values
[
0
],
holder
.
getPrinterDeviceBean
());
}
}
@Override
protected
void
onPostExecute
(
Integer
integer
)
{
super
.
onPostExecute
(
integer
);
LoganManager
.
w_printer
(
TAG
,
"PrintTask onPostExecute values:"
+
integer
);
if
(
integer
!=
null
)
{
onResult
(
integer
);
}
...
...
@@ -222,6 +241,7 @@ public class PrintExecutor {
*/
private
void
onResult
(
int
errorCode
)
{
try
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask onResult errorCode:"
+
errorCode
);
if
(
mListener
!=
null
)
mListener
.
onResult
(
errorCode
,
holder
.
getPrinterDeviceBean
());
if
(
onPrjPrintResultListener
!=
null
)
{
...
...
@@ -229,11 +249,13 @@ public class PrintExecutor {
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
LoganManager
.
w_printer
(
TAG
,
"PrintTask onResult Exception:"
+
e
.
getMessage
());
}
}
@Override
public
void
onStateChanged
(
int
state
,
PrinterDeviceBean
printerDeviceBean
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintTaskonStateChanged state: "
+
state
);
publishProgress
(
state
);
}
}
...
...
library-print/src/main/java/com/gingersoft/gsa/cloud/print/PrintSocketHolder.java
View file @
66c18f25
...
...
@@ -19,7 +19,9 @@ package com.gingersoft.gsa.cloud.print;
import
android.bluetooth.BluetoothDevice
;
import
android.bluetooth.BluetoothSocket
;
import
com.elvishew.xlog.XLog
;
import
com.gingersoft.gsa.cloud.common.constans.PrintConstans
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean
;
import
java.io.IOException
;
...
...
@@ -36,6 +38,9 @@ import java.util.UUID;
*/
@SuppressWarnings
({
"WeakerAccess"
,
"unused"
})
public
class
PrintSocketHolder
{
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
public
static
final
int
STATE_0
=
10
;
// 生成测试页面数据
public
static
final
int
STATE_1
=
1
;
// 创建Socket连接
public
static
final
int
STATE_2
=
2
;
// 获取输出流
...
...
@@ -113,6 +118,7 @@ public class PrintSocketHolder {
public
int
sendData
(
List
<
byte
[]>
data
)
{
onPrinterStateChanged
(
STATE_3
);
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder sendData ----------准备往打印机写入数据-------->"
);
if
(
data
==
null
||
data
.
size
()
<=
0
)
return
ERROR_0
;
for
(
byte
[]
item
:
data
)
{
...
...
@@ -120,6 +126,7 @@ public class PrintSocketHolder {
out
.
write
(
item
);
out
.
flush
();
}
catch
(
IOException
e
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder sendData !!!!!!!!打印异常!!!!!!!! IOException: "
+
e
.
getMessage
());
closeSocket
();
return
ERROR_4
;
}
...
...
@@ -155,16 +162,21 @@ public class PrintSocketHolder {
}
public
int
prepareSocket
()
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest sendData(data) --------------准备尝试连接打印机----------------->"
);
int
create
=
createSocket
();
if
(
create
!=
PrintSocketHolder
.
ERROR_0
)
if
(
create
!=
PrintSocketHolder
.
ERROR_0
)
{
return
create
;
return
getOutputStream
();
}
int
result
=
getOutputStream
();
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder prepareSocket--------------连接打印机结果----------------->"
+
(
result
==
ERROR_0
?
"成功"
:
"失败"
));
return
result
;
}
/**
* 销毁
*/
public
int
closeSocket
()
{
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder closeSocket ----------关闭打印机连接-------->"
);
onPrinterStateChanged
(
STATE_4
);
boolean
error
=
false
;
try
{
...
...
@@ -173,6 +185,7 @@ public class PrintSocketHolder {
out
=
null
;
}
}
catch
(
IOException
e
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder closeSocket out----------关闭打印机连接异常-------->"
);
out
=
null
;
error
=
true
;
}
...
...
@@ -182,6 +195,7 @@ public class PrintSocketHolder {
socket
=
null
;
}
}
catch
(
IOException
e
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder closeSocket socket----------关闭打印机连接异常-------->"
);
socket
=
null
;
error
=
true
;
}
...
...
@@ -191,6 +205,7 @@ public class PrintSocketHolder {
bluetoothSocket
=
null
;
}
}
catch
(
IOException
e
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintSocketHolder closeSocket bluetoothSocket----------关闭打印机连接异常-------->"
);
bluetoothSocket
=
null
;
error
=
true
;
}
...
...
library-print/src/main/java/com/gingersoft/gsa/cloud/print/newprint/PrintUtil.java
View file @
66c18f25
...
...
@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.print.newprint;
import
android.bluetooth.BluetoothDevice
;
import
android.os.AsyncTask
;
import
com.gingersoft.gsa.cloud.common.logan.LoganManager
;
import
com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean
;
import
com.gingersoft.gsa.cloud.print.PrintDataMaker
;
import
com.gingersoft.gsa.cloud.print.PrintExecutor
;
...
...
@@ -12,6 +13,8 @@ import java.util.List;
public
class
PrintUtil
{
protected
final
String
TAG
=
this
.
getClass
().
getSimpleName
();
private
PrintSocketHolder
holder
;
private
int
mReconnectTimes
=
0
;
private
int
time
=
0
;
...
...
@@ -30,6 +33,7 @@ public class PrintUtil {
* @return 错误代码
*/
private
int
doRequest
(
PrintDataMaker
maker
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask doRequest"
);
if
(
mReconnectTimes
==
0
)
{
holder
.
onPrinterStateChanged
(
PrintSocketHolder
.
STATE_0
);
List
<
byte
[]>
data
=
maker
.
getPrintData
();
...
...
@@ -77,9 +81,11 @@ public class PrintUtil {
private
boolean
sendData
(
List
<
byte
[]>
data
)
{
if
(
holder
.
sendData
(
data
)
==
PrintSocketHolder
.
ERROR_0
)
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask sendData(List<byte[]> data) -------------打印完成------------------>"
);
time
=
0
;
return
true
;
}
else
{
LoganManager
.
w_printer
(
TAG
,
"PrintTask sendData(List<byte[]> data) -------------递归打印------------------>"
);
return
prepareSocket
()
&&
sendData
(
data
);
}
}
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/OrderPayView.java
View file @
66c18f25
...
...
@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.common.utils.MoneyUtil;
import
com.gingersoft.gsa.cloud.common.utils.VibratorUtils
;
import
com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils
;
import
com.gingersoft.gsa.cloud.pay.bean.PayMethod
;
import
com.gingersoft.gsa.cloud.pay.util.PayMethodUtils
;
import
com.gingersoft.gsa.cloud.ui.R
;
import
com.gingersoft.gsa.cloud.ui.adapter.BillMethodAdapter
;
import
com.gingersoft.gsa.cloud.ui.adapter.BillMoneyAdapter
;
...
...
@@ -146,11 +147,6 @@ public class OrderPayView extends LinearLayout {
return
;
}
if
(
mBillMoneyList
.
size
()
==
MAX_COUNT_PAY_MEMBER
)
{
//替换掉第一个
mBillMoneyList
.
remove
(
0
);
}
boolean
useFreeServicePayMethod
=
isUseFreeServicePayMethod
(
method
);
if
(
useFreeServicePayMethod
)
{
//有使用免服務費支付方式 重新獲取一遍尚欠金額
...
...
@@ -183,9 +179,21 @@ public class OrderPayView extends LinearLayout {
}
}
}
if
(
mBillMoneyList
.
size
()
>
0
&&
PayMethodUtils
.
hasHywebPayMethod
(
method
))
{
int
hywebPayMethodIndex
=
PayMethodUtils
.
hasHywebPayMethod
(
mBillMoneyList
);
if
(
hywebPayMethodIndex
!=
-
1
)
{
//只允許存在一個hyweb支付
mBillMoneyList
.
remove
(
hywebPayMethodIndex
);
}
}
//添加選中支付方式
mBillMoneyList
.
add
(
method
);
if
(
mBillMoneyList
.
size
()
>=
MAX_COUNT_PAY_MEMBER
)
{
//替换掉第一个
mBillMoneyList
.
remove
(
0
);
mBillMoneyList
.
add
(
method
);
}
else
{
mBillMoneyList
.
add
(
method
);
}
int
notifyPosition
=
mBillMoneyList
.
size
()
-
1
;
mBillMoneyAdapter
.
setSelect_position
(
notifyPosition
);
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/SearchKeyBoardView.java
View file @
66c18f25
...
...
@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import
androidx.recyclerview.widget.LinearLayoutManager
;
import
androidx.recyclerview.widget.RecyclerView
;
import
com.gingersoft.gsa.cloud.app.GsaCloudApplication
;
import
com.gingersoft.gsa.cloud.ui.R
;
/**
...
...
@@ -44,8 +45,13 @@ public class SearchKeyBoardView extends FrameLayout {
}
private
void
init
(
Context
context
)
{
for
(
int
i
=
0
;
i
<
26
;
i
++)
{
en
[
i
]
=
((
char
)
(
65
+
i
))
+
""
;
//输出A-Z 26个大写字母
// for (int i = 0; i < 26; i++) {
// en[i] = ((char) (65 + i)) + "";//输出A-Z 26个大写字母
// }
String
PluNumberChar
=
GsaCloudApplication
.
functionConfiguration
.
getPluNumberCharVaule
();
String
[]
en
=
new
String
[
PluNumberChar
.
length
()];
for
(
int
i
=
0
;
i
<
PluNumberChar
.
length
();
i
++)
{
en
[
i
]
=
PluNumberChar
.
charAt
(
i
)
+
""
;
//输出A-Z 26个大写字母
}
View
view
=
LayoutInflater
.
from
(
context
).
inflate
(
R
.
layout
.
ui_layout_search_keyborder
,
null
);
...
...
library-ui/src/main/java/com/gingersoft/gsa/cloud/ui/view/base/NoScrollRecyclerView.java
View file @
66c18f25
...
...
@@ -37,4 +37,6 @@ public class NoScrollRecyclerView extends RecyclerView {
int
expandSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
Integer
.
MAX_VALUE
>>
2
,
View
.
MeasureSpec
.
AT_MOST
);
super
.
onMeasure
(
widthMeasureSpec
,
expandSpec
);
}
}
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