Commit 66c18f25 by 宁斌

1、N5支付,小費,退款,取消完善 2、餐檯模式送單第三層細項消失

parent 0cb22cb8
...@@ -50,7 +50,8 @@ ...@@ -50,7 +50,8 @@
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" />
<!--相机权限--> <!--相机权限-->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!--获取Activity任务栈 权限-->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-feature <uses-feature
android:name="android.hardware.camera" android:name="android.hardware.camera"
......
...@@ -61,5 +61,7 @@ ...@@ -61,5 +61,7 @@
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<!--获取Activity任务栈 权限-->
<uses-permission android:name="android.permission.GET_TASKS" />
</manifest> </manifest>
package com.gingersoft.gsa.cloud.login; package com.gingersoft.gsa.cloud.login;
import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; import com.billy.cc.core.component.IComponent;
import com.etps.aca.lib.activity.CommandActivity; 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.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity; import com.gingersoft.gsa.cloud.login.mvp.ui.activity.mvp.ui.activity.ChooseRestaurantActivity;
...@@ -42,6 +46,9 @@ public class ComponentLogin implements IComponent { ...@@ -42,6 +46,9 @@ public class ComponentLogin implements IComponent {
case ComponentAction.Login.OPEN_LOGIN: case ComponentAction.Login.OPEN_LOGIN:
openLoginActivity(cc); openLoginActivity(cc);
break; break;
case ComponentAction.Login.OPEN_INIT_HYWEB_PAGE:
hywebOpenActivity();
break;
case "getInfo": case "getInfo":
getInfo(cc); getInfo(cc);
break; break;
...@@ -82,4 +89,9 @@ public class ComponentLogin implements IComponent { ...@@ -82,4 +89,9 @@ public class ComponentLogin implements IComponent {
CC.sendCCResult(cc.getCallId(), CCResult.success()); CC.sendCCResult(cc.getCallId(), CCResult.success());
} }
private void hywebOpenActivity(){
Intent intent = new Intent(GsaCloudApplication.getAppContext(),LoginActivity.class);
GsaCloudApplication.getAppContext().startActivity(intent);
}
} }
package com.gingersoft.gsa.cloud.main; package com.gingersoft.gsa.cloud.main;
import android.app.Activity;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.IComponent; 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.component.ComponentName;
import com.gingersoft.gsa.cloud.common.function.FModule; 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.NewMainActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.SettlementReportActivity;
import com.gingersoft.gsa.cloud.main.mvp.ui.activity.menu.FoodMenuManageActivity; 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 { public class ComponentMain implements IComponent {
...@@ -68,6 +74,7 @@ public class ComponentMain implements IComponent { ...@@ -68,6 +74,7 @@ public class ComponentMain implements IComponent {
*/ */
@Override @Override
public boolean onCall(CC cc) { public boolean onCall(CC cc) {
Context context = cc.getContext();
String actionName = cc.getActionName(); String actionName = cc.getActionName();
switch (actionName) { switch (actionName) {
case "showMainActivity": case "showMainActivity":
......
...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat ...@@ -7,6 +7,7 @@ import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder 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.core.restaurant.RestaurantInfoManager
import com.gingersoft.gsa.cloud.common.utils.FileUtils import com.gingersoft.gsa.cloud.common.utils.FileUtils
import com.gingersoft.gsa.cloud.main.R import com.gingersoft.gsa.cloud.main.R
...@@ -26,10 +27,14 @@ class LookLogActivity : AppCompatActivity() { ...@@ -26,10 +27,14 @@ class LookLogActivity : AppCompatActivity() {
log_top_bar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color)) log_top_bar.setBackgroundColor(ContextCompat.getColor(this, R.color.theme_color))
val file = File(FileUtils.ERRORLOG_PATH) val file = File(FileUtils.ERRORLOG_PATH)
// val file = File((getExternalFilesDir(null)!!.absolutePath
// + File.separator + LoganConfig.FILE_NAME))
val files = file.listFiles() val files = file.listFiles()
files?.let { files?.let {
val ml = ArrayList<File>() val ml = ArrayList<File>()
for(i in files.size-1 downTo 0){ for (i in files.size - 1 downTo 0) {
ml.add(files[i]) ml.add(files[i])
} }
rv_log.layoutManager = LinearLayoutManager(this) rv_log.layoutManager = LinearLayoutManager(this)
......
...@@ -33,6 +33,7 @@ import com.gingersoft.gsa.cloud.common.core.user.UserContext; ...@@ -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.FunctionManager;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean; import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpBean;
import com.gingersoft.gsa.cloud.common.function.jump.ActivityJumpStrategy; 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.JsonUtils;
import com.gingersoft.gsa.cloud.common.utils.encryption.Aes; import com.gingersoft.gsa.cloud.common.utils.encryption.Aes;
import com.gingersoft.gsa.cloud.common.utils.other.SPUtils; import com.gingersoft.gsa.cloud.common.utils.other.SPUtils;
...@@ -224,13 +225,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -224,13 +225,14 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "複製Token")); 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_mall_center, "商城中心"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_about_us, "關於我們")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_about_us, "關於我們"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_password, "修改密碼")); 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_setting, "上傳日誌"));
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_settlement_report, "清機"));
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境")); mainSideMenuBeans.add(new MainSideMenuBean(R.drawable.ic_setting, "切換環境"));
...@@ -265,6 +267,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl ...@@ -265,6 +267,9 @@ public class NewMainActivity extends BaseFragmentActivity<NewMainPresenter> impl
case "查看日誌": case "查看日誌":
launchActivity(new Intent(mContext, LookLogActivity.class)); launchActivity(new Intent(mContext, LookLogActivity.class));
break; break;
case "上傳日誌":
LoganManager.uploadLog(mContext, true);
break;
} }
}); });
} }
......
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
package="com.gingersoft.gsa.cloud.pay"> package="com.gingersoft.gsa.cloud.pay">
<application> <application>
<activity android:name=".mvp.ui.activity.PayResultActivity" /> <activity
android:name=".mvp.ui.activity.PayResultActivity"
android:launchMode="singleTop"/>
</application> </application>
</manifest> </manifest>
\ No newline at end of file
...@@ -11,7 +11,9 @@ ...@@ -11,7 +11,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name=".mvp.ui.activity.PayResultActivity" /> <activity
android:name=".mvp.ui.activity.PayResultActivity"
android:launchMode="singleTop"/>
<meta-data <meta-data
android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration" android:name="com.gingersoft.gsa.cloud.common.config.globalconfig.GlobalConfiguration"
......
...@@ -60,18 +60,22 @@ ...@@ -60,18 +60,22 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:drawablePadding="@dimen/dp_6" android:drawablePadding="@dimen/dp_6"
android:layout_marginTop="@dimen/dp_50"
android:drawableTop="@mipmap/pay_status_success" android:drawableTop="@mipmap/pay_status_success"
android:layout_marginTop="@dimen/dp_50"
android:text="支付成功" android:text="支付成功"
android:textSize="@dimen/font_normal2"/> android:textSize="@dimen/font_normal2"
android:textColor="@color/theme_black"
android:textStyle="bold"
android:visibility="visible"/>
<TextView <TextView
android:id="@+id/tv_amount" android:id="@+id/tv_amount"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:textStyle="bold"
android:text="$500" android:text="$500"
android:textSize="@dimen/sp_32" android:textSize="@dimen/sp_24"
android:textColor="@color/theme_black"/> android:textColor="@color/theme_black"/>
<TextView <TextView
...@@ -84,15 +88,29 @@ ...@@ -84,15 +88,29 @@
android:textSize="@dimen/sp_16" /> android:textSize="@dimen/sp_16" />
<com.qmuiteam.qmui.alpha.QMUIAlphaButton <com.qmuiteam.qmui.alpha.QMUIAlphaButton
android:id="@+id/tv_complate" android:id="@+id/btn_refresh_status"
android:layout_width="@dimen/dp_120" android:layout_width="@dimen/dp_100"
android:layout_height="@dimen/dp_50" android:layout_height="@dimen/dp_40"
android:layout_marginTop="@dimen/dp_30" android:gravity="center"
android:text="完成" android:layout_marginTop="@dimen/dp_50"
android:background="@color/green_400"
android:text="刷新"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/font_normal2" 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" 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--> <!-- <androidx.recyclerview.widget.RecyclerView-->
<!-- android:id="@+id/rv_bill_and_paymethod"--> <!-- android:id="@+id/rv_bill_and_paymethod"-->
...@@ -132,16 +150,5 @@ ...@@ -132,16 +150,5 @@
android:text="打印" android:text="打印"
android:textColor="@color/theme_white_color" android:textColor="@color/theme_white_color"
android:textSize="@dimen/font_normal2" /> 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> </LinearLayout>
</RelativeLayout> </RelativeLayout>
\ No newline at end of file
...@@ -27,6 +27,7 @@ import com.billy.cc.core.component.CCResult; ...@@ -27,6 +27,7 @@ import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication; import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; 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.PrintExecutor;
import com.gingersoft.gsa.cloud.print.PrintSocketHolder; import com.gingersoft.gsa.cloud.print.PrintSocketHolder;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
...@@ -466,6 +467,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -466,6 +467,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
printFailure("打印機缺紙"); printFailure("打印機缺紙");
break; break;
} }
LoganManager.w_printer(TAG,"printStateChanged state--->" + tip);
setLoadingText(tip); setLoadingText(tip);
} }
...@@ -474,6 +476,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -474,6 +476,7 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
*/ */
@Override @Override
public void printSuccess() { public void printSuccess() {
LoganManager.w_printer(TAG,"printFailure 打印成功");
// if (printCount <= 1) { // if (printCount <= 1) {
CC.sendCCResult(callId, CCResult.success()); CC.sendCCResult(callId, CCResult.success());
disLoadingDialog(); disLoadingDialog();
...@@ -486,10 +489,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print ...@@ -486,10 +489,11 @@ public class PrintActivity extends BaseActivity<PrintPresenter> implements Print
@Override @Override
public void printFailure(String msg) { public void printFailure(String msg) {
LoganManager.w_printer(TAG,"printFailure 打印失敗--->" + msg);
if (!TextUtil.isEmptyOrNullOrUndefined(msg)) { if (!TextUtil.isEmptyOrNullOrUndefined(msg)) {
ToastUtils.show(GsaCloudApplication.getAppContext(), msg); ToastUtils.show(GsaCloudApplication.getAppContext(), msg);
CC.sendCCResult(callId, CCResult.error(msg)); CC.sendCCResult(callId, CCResult.error(msg));
}else { } else {
CC.sendCCResult(callId, CCResult.error("print error")); CC.sendCCResult(callId, CCResult.error("print error"));
} }
// if (printCount <= 1) { // if (printCount <= 1) {
......
...@@ -20,17 +20,20 @@ ...@@ -20,17 +20,20 @@
android:name=".mvp.ui.activity.MealStandActivity" android:name=".mvp.ui.activity.MealStandActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" />
<activity
android:name=".mvp.ui.activity.OrderContentActivity" android:name=".mvp.ui.activity.OrderContentActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
<activity <activity
android:name=".mvp.ui.activity.orderManager.OrderCenterActivity" android:name=".mvp.ui.activity.OrderPayActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait"
android:launchMode="singleTop"/>
<activity <activity
android:name=".mvp.ui.activity.orderManager.OrderDetailActivity" 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 <activity
android:name=".mvp.ui.activity.SoldoutCtrlActivity" android:name=".mvp.ui.activity.SoldoutCtrlActivity"
android:screenOrientation="portrait" /> android:screenOrientation="portrait" />
......
...@@ -10,8 +10,15 @@ ...@@ -10,8 +10,15 @@
android:supportsRtl="true" android:supportsRtl="true"
android:networkSecurityConfig="@xml/network_android" android:networkSecurityConfig="@xml/network_android"
android:theme="@style/AppTheme"> android:theme="@style/AppTheme">
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity"/> <activity
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderCenterActivity" /> 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.SoldoutCtrlActivity" />
<activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity"> <activity android:name="com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity">
<intent-filter> <intent-filter>
......
package com.gingersoft.gsa.cloud.table; package com.gingersoft.gsa.cloud.table;
import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult; import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil; import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent; 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.common.function.FModule;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.order.order.DoshokuOrder; import com.gingersoft.gsa.cloud.order.order.DoshokuOrder;
...@@ -16,6 +19,7 @@ import com.gingersoft.gsa.cloud.table.mvp.ui.activity.OrderPayActivity; ...@@ -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.SoldoutCtrlActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.TableActivity; 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.OrderCenterActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.activity.orderManager.OrderDetailActivity;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
...@@ -121,6 +125,7 @@ public class ComponentTable implements IComponent { ...@@ -121,6 +125,7 @@ public class ComponentTable implements IComponent {
} }
private void lifecycleFragmentDoubleText(CC cc) { private void lifecycleFragmentDoubleText(CC cc) {
// LifecycleFragment lifecycleFragment = cc.getParamItem("fragment"); // LifecycleFragment lifecycleFragment = cc.getParamItem("fragment");
// if (lifecycleFragment != null) { // if (lifecycleFragment != null) {
......
...@@ -48,6 +48,7 @@ public class OrderManagerResponse implements Serializable { ...@@ -48,6 +48,7 @@ public class OrderManagerResponse implements Serializable {
private int status; private int status;
private String orderNo; private String orderNo;
private String tableName; private String tableName;
private String tableNumber;
private int tableId; private int tableId;
private int person; private int person;
/** /**
......
...@@ -15,7 +15,7 @@ import java.util.List; ...@@ -15,7 +15,7 @@ import java.util.List;
public class OrderAssemblyUtil { public class OrderAssemblyUtil {
/** /**
* 組裝食品結構 * 組裝食品位置和結構
* @param orderDetails * @param orderDetails
* @return * @return
*/ */
......
...@@ -1099,7 +1099,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex ...@@ -1099,7 +1099,7 @@ public abstract class BaseOrderPresenter<M extends BaseOrderContract.Model, V ex
OrderDetail item = foodList.get(j); OrderDetail item = foodList.get(j);
boolean myIndex = item.getMyIndex() != parentItem.getMyIndex(); boolean myIndex = item.getMyIndex() != parentItem.getMyIndex();
boolean parentIndex = item.getParentIndex() != parentItem.getMyIndex(); boolean parentIndex = item.getParentIndex() != parentItem.getMyIndex();
if (myIndex && parentIndex) { if (myIndex && parentIndex && item.getType() != OrderDetail.MODIFIER_TYPE) {
//已經循環過當前套餐 退出循環 //已經循環過當前套餐 退出循環
break; break;
} }
......
...@@ -814,6 +814,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra ...@@ -814,6 +814,7 @@ public class OrderContentPresenter extends BaseOrderPresenter<OrderContentContra
//緩存訂單信息 //緩存訂單信息
mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData())); mDoshokuOrder.setOrderPlaced(new OrderResponse(info.getData()));
//緩存食品信息 //緩存食品信息
// List<OrderDetail> orderDetailList = OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails());
List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails())); List<OrderDetail> orderDetailList = OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(info.getData().getOrderDetails()));
mOrderMealList.clear(); mOrderMealList.clear();
......
...@@ -43,6 +43,7 @@ import com.gingersoft.gsa.cloud.table.mvp.model.table.action.ResetSkyorderAction ...@@ -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.ResetTableAction;
import com.gingersoft.gsa.cloud.table.mvp.model.table.action.SplitTableAction; 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.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.activity.TableActivity;
import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter; import com.gingersoft.gsa.cloud.table.mvp.ui.adapter.BottomFunctionAdapter;
import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog; import com.gingersoft.gsa.cloud.table.mvp.ui.widget.SplitTableDialog;
...@@ -385,7 +386,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -385,7 +386,8 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam(); PosActionStatusExceptionParam statusExceptionParam = new PosActionStatusExceptionParam();
statusExceptionParam.setTxnId(orderBean.getTxnId()); statusExceptionParam.setTxnId(orderBean.getTxnId());
statusExceptionParam.setAmount(orderBean.getTotalAmount()); statusExceptionParam.setAmount(orderBean.getTotalAmount());
statusExceptionParam.setOrderNum(orderBean.getId()); statusExceptionParam.setOrderId(orderBean.getId());
statusExceptionParam.setOrderNo(orderBean.getOrderNo());
statusExceptionParam.setPayMethodName(orderBean.getPayName()); statusExceptionParam.setPayMethodName(orderBean.getPayName());
statusExceptionParam.setPosAction(PosAction.RETRIEVAL); statusExceptionParam.setPosAction(PosAction.RETRIEVAL);
IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam)); IActivity.loadRootFragment(R.id.fl_container, PosActionStatusExceptionFragment.newInstance(statusExceptionParam));
...@@ -410,7 +412,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont ...@@ -410,7 +412,7 @@ public class TablePresenter extends BasePresenter<TableContract.Model, TableCont
doshokuOrder.setOrderId(orderBean.getId()); doshokuOrder.setOrderId(orderBean.getId());
doshokuOrder.setOrderNo(orderBean.getOrderNo()); doshokuOrder.setOrderNo(orderBean.getOrderNo());
doshokuOrder.setOrderPlaced(new OrderResponse(orderBean)); doshokuOrder.setOrderPlaced(new OrderResponse(orderBean));
doshokuOrder.getShoppingCart().addCommodityList(OrderDetail.orderTransOrderDetails(mealCommoditysBeans)); doshokuOrder.getShoppingCart().addCommodityList(OrderAssemblyUtil.assemblyOrder(OrderDetail.orderTransOrderDetails(mealCommoditysBeans)));
if (orderBean.getMemberInfo() != null) { if (orderBean.getMemberInfo() != null) {
//设置会员信息 //设置会员信息
doshokuOrder.setMemberInfo(orderBean.getMemberInfo()); doshokuOrder.setMemberInfo(orderBean.getMemberInfo());
......
...@@ -380,7 +380,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -380,7 +380,7 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
public void initFoodGroupView(List<Food> foodGroupList) { 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; int Rows = foodGroupRow;
if (foodGroupList.size() <= foodGroupColumn) { if (foodGroupList.size() <= foodGroupColumn) {
...@@ -440,13 +440,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter> ...@@ -440,13 +440,11 @@ public class MealStandActivity extends BaseFragmentActivity<MealStandPresenter>
} else { } else {
ivPoints[i].setImageResource(R.drawable.meal_food_group_point_unfocused); 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); ivPoints[i].setPadding(0, 0, 0, 0);
ll_food_group_point.addView(ivPoints[i]); 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)) { if (foodGroupList.size() > (Rows * foodGroupColumn)) {
ll_food_group_point.setVisibility(View.VISIBLE); ll_food_group_point.setVisibility(View.VISIBLE);
......
...@@ -5,6 +5,7 @@ import android.content.Context; ...@@ -5,6 +5,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.os.Bundle; import android.os.Bundle;
import android.print.PrintManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
...@@ -19,12 +20,21 @@ import com.gingersoft.gsa.cloud.common.constans.PrintConstans; ...@@ -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.member.MemberInfo;
import com.gingersoft.gsa.cloud.common.core.table.TableBean; import com.gingersoft.gsa.cloud.common.core.table.TableBean;
import com.gingersoft.gsa.cloud.common.core.user.UserContext; 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.BigDecimalUtils;
import com.gingersoft.gsa.cloud.common.utils.LanguageUtils; import com.gingersoft.gsa.cloud.common.utils.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.VibratorUtils; import com.gingersoft.gsa.cloud.common.utils.VibratorUtils;
import com.gingersoft.gsa.cloud.component.ComponentName; 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.order.order.DoshokuOrder;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; 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.PrinterUtils;
import com.gingersoft.gsa.cloud.print.bean.PrintContent; import com.gingersoft.gsa.cloud.print.bean.PrintContent;
import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter; import com.gingersoft.gsa.cloud.print.bean.adapter.PrintContentAdapter;
...@@ -49,6 +59,7 @@ import org.simple.eventbus.EventBus; ...@@ -49,6 +59,7 @@ import org.simple.eventbus.EventBus;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.concurrent.locks.ReentrantLock;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -127,7 +138,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -127,7 +138,6 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
.inject(this); .inject(this);
} }
@Override @Override
public int initView(@Nullable Bundle savedInstanceState) { public int initView(@Nullable Bundle savedInstanceState) {
return R.layout.table_activity_order_pay; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0 return R.layout.table_activity_order_pay; //如果你不需要框架帮你设置 setContentView(id) 需要自行设置,请返回 0
...@@ -143,6 +153,11 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -143,6 +153,11 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
initMemberInfo(); initMemberInfo();
} }
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
private void initOrderPayView() { private void initOrderPayView() {
gsaPayView.setOnSelectPayClickLisenter(new OrderPayView.OnSelectPayClickLisenter() { gsaPayView.setOnSelectPayClickLisenter(new OrderPayView.OnSelectPayClickLisenter() {
@Override @Override
...@@ -417,16 +432,21 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -417,16 +432,21 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
} }
} }
if (openInstruction) { if (openInstruction) {
printBill(); printBillAndOpenInstruction();
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.build();
} else { } else {
printBill(); printBill();
} }
} }
private void printBillAndOpenInstruction() {
printBill();
CC.obtainBuilder(ComponentName.COMPONENT_PRINT)
.setActionName("printActivity")
.addParam(PrintConstans.PRINT_TYPE, PrintConstans.PRINT_INSTRUCTION)
.build()
.call();
}
private void printBill() { private void printBill() {
//打印結賬單 //打印結賬單
...@@ -474,38 +494,46 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements ...@@ -474,38 +494,46 @@ public class OrderPayActivity extends BaseActivity<OrderPayPresenter> implements
gsaPayView.loadInfo(this, payMethods, mPresenter.getTotalAmount(), mPresenter.getFoodCount()); gsaPayView.loadInfo(this, payMethods, mPresenter.getTotalAmount(), mPresenter.getFoodCount());
gsaPayView.setmOnSureClickLisenter(mBillMoneyList -> { gsaPayView.setmOnSureClickLisenter(mBillMoneyList -> {
// PayMethod hywebPayMethod = PayMethodUtils.filterPaymentMethodById(mBillMoneyList, PayTypeContract.PAY_METHOD_ID_1001); if (AppDevices.isHywebPos()) {
//
// if (AppDevice.isHywebPos()) { int hywebPayMethodIndex = PayMethodUtils.hasHywebPayMethod(mBillMoneyList);
//
// if (hywebPayMethod != null) { if (hywebPayMethodIndex != -1) {
// PayMethod hywebPayMethod = mBillMoneyList.get(hywebPayMethodIndex);
// SaleRequest saleRequest = new SaleRequest();
// saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC); SaleRequest saleRequest = new SaleRequest();
// saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount()); if (hywebPayMethod.getPayType() == PayTypeContract.PAY_METHOD_ID_1030) {
// saleRequest.setTIPS(0); //卡片支付
// saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_CC);
// GetTxnIdRequest txnIdRequest = new GetTxnIdRequest(); } else {
// txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId()); //掃碼支付
// if (!TextUtils.isEmpty(DoshokuOrder.getInstance().getOpenTableInfo().getTableNumber())) { saleRequest.setPAYMENT_APP_ID(PayMethodConstant.PAY_TYPE_QRC);
// txnIdRequest.setTableExtId(DoshokuOrder.getInstance().getOpenTableInfo().getId()); }
// } else { saleRequest.setTXN_AMT(DoshokuOrder.getInstance().getShoppingCart().getTotalAmount());
// txnIdRequest.setTableId(DoshokuOrder.getInstance().getOpenTableInfo().getId()); saleRequest.setTIPS(0);
// }
// txnIdRequest.setPayMethodId(hywebPayMethod.getId()); GetTxnIdRequest txnIdRequest = new GetTxnIdRequest();
// txnIdRequest.setAmount(hywebPayMethod.getPayMoney()); txnIdRequest.setOrderId(DoshokuOrder.getInstance().getOrderId());
// if (!TextUtils.isEmpty(DoshokuOrder.getInstance().getOpenTableInfo().getTableNumber())) {
// MealOrderPayRequest orderPayRequest = mPresenter.getOrderPayRequest(gsaPayView); txnIdRequest.setTableExtId(DoshokuOrder.getInstance().getOpenTableInfo().getId());
// List<BillItem> billItemList = DoshokuOrder.getInstance().getShoppingCart().getBillItemList(); } else {
// txnIdRequest.setTableId((DoshokuOrder.getInstance().getOpenTableInfo().getId()));
// PosPay.pay(mContext, OrderPayActivity.this, saleRequest, txnIdRequest,DoshokuOrder.getInstance().getOpenTableInfo(),orderPayRequest,billItemList,mBillMoneyList); }
// } else { txnIdRequest.setPayMethodId(hywebPayMethod.getId());
// txnIdRequest.setAmount(hywebPayMethod.getPayMoney());
// }
// } else { 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.setBillMoneyList(mBillMoneyList);
mPresenter.sendOrderBefore(); mPresenter.sendOrderBefore();
// } }
}); });
} }
......
...@@ -224,7 +224,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen ...@@ -224,7 +224,7 @@ public class TableActivity extends BaseFragmentActivity<TablePresenter> implemen
.addParam("fromPage", 2) .addParam("fromPage", 2)
.build() .build()
.call(); .call();
LoganManager.uploadLog(mContext, true); // LoganManager.uploadLog(mContext, true);
} }
}); });
mTopBar.setTitle("餐檯模式"); mTopBar.setTitle("餐檯模式");
......
...@@ -91,6 +91,11 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent ...@@ -91,6 +91,11 @@ public class OrderCenterActivity extends BaseFragmentActivity<OrderCenterPresent
mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU+"", 0, 10, null, false); mPresenter.loadOrderList(OrderManagerResponse.ORDER_TYPE_DOSHOKU+"", 0, 10, null, false);
} }
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Subscriber(tag = "updateOrderListEvent") @Subscriber(tag = "updateOrderListEvent")
private void updateOrderList(boolean update) { private void updateOrderList(boolean update) {
refeshOrderList(); refeshOrderList();
......
...@@ -6,6 +6,7 @@ import android.view.View; ...@@ -6,6 +6,7 @@ import android.view.View;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.TextView; 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.LanguageUtils;
import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils; import com.gingersoft.gsa.cloud.common.utils.time.TimeUtils;
import com.gingersoft.gsa.cloud.table.R; import com.gingersoft.gsa.cloud.table.R;
...@@ -92,21 +93,9 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -92,21 +93,9 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
@Override @Override
public void setData(OrderManagerResponse item, int position) { public void setData(OrderManagerResponse item, int position) {
String pax = LanguageUtils.get_language_system(mContext, "Meal.Mannumber", "人數") + ":"; setOrderItemDetail(item);
String openTable = LanguageUtils.get_language_system(mContext, "open.table", "開台") + ":"; setBtnVisibilityByOrderType(item.getOrderType());
String payTable = LanguageUtils.get_language_system(mContext, "open.table", "結賬") + ":"; setBtnVisibilityByOrderStatus(item, position);
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);
ll_root_container.setOnClickListener(new View.OnClickListener() { ll_root_container.setOnClickListener(new View.OnClickListener() {
@Override @Override
...@@ -118,13 +107,28 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -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 orderCode = LanguageUtils.get_language_system(mContext, "order.code", "訂單碼") + ": ";
String mealCode = LanguageUtils.get_language_system(mContext, "meal.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_table_name.setText("外賣");
tv_order_num.setText(orderCode + item.getTakeFoodCode()); 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_table_name.setText("自取");
tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode()); tv_order_num.setText(orderCode + item.getBillNo() + " " + mealCode + item.getTakeFoodCode());
} else { } else {
...@@ -135,8 +139,7 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -135,8 +139,7 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
} }
} }
private void setOrderStatus(OrderManagerResponse item, int position) { private void setBtnVisibilityByOrderStatus(OrderManagerResponse item, int position) {
// btn_cancel_order.setVisibility(View.GONE);
if (item.getStatus() == 6) { if (item.getStatus() == 6) {
btn_print_order.setVisibility(View.GONE); btn_print_order.setVisibility(View.GONE);
btn_modify_order.setVisibility(View.GONE); btn_modify_order.setVisibility(View.GONE);
...@@ -149,15 +152,11 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -149,15 +152,11 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
btn_cancel_order.setVisibility(View.VISIBLE); btn_cancel_order.setVisibility(View.VISIBLE);
btn_order_status.setVisibility(View.GONE); btn_order_status.setVisibility(View.GONE);
if (item.withHywebPay()) { if (item.withHywebPay()) {
ll_pos_bottom.setVisibility(View.VISIBLE);
setOrderStatusByTxnId(item.getPayTxnId(), item.getCancelTxnId(), item.getRefundTxnId()); setOrderStatusByTxnId(item.getPayTxnId(), item.getCancelTxnId(), item.getRefundTxnId());
ll_pos_bottom.setVisibility(View.VISIBLE);
} else { } else {
ll_pos_bottom.setVisibility(View.GONE); 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() { btn_print_order.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
...@@ -199,15 +198,6 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -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) { private void setOrderStatusByTxnId(String payTxnId, String cancelTxnId, String refundTxnId) {
...@@ -232,8 +222,16 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> { ...@@ -232,8 +222,16 @@ public class OrderCenterAdapter extends DefaultAdapter<OrderManagerResponse> {
} }
} }
private void setBtnVisibilityByOrderType(OrderManagerResponse item) { private void setOrderCancelVisbility() {
if (item.getOrderType() == 2 || item.getOrderType() == 7) { 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_modify_order.setVisibility(View.GONE);
btn_cancel_order.setVisibility(View.GONE); btn_cancel_order.setVisibility(View.GONE);
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
<solid android:color="@color/red_400" /> <solid android:color="@color/red_400" />
<corners android:radius="@dimen/dp_6"/>
<size <size
android:width="15dp" android:width="@dimen/dp_12"
android:height="2dp" /> android:height="@dimen/dp_3" />
</shape> </shape>
\ No newline at end of file
...@@ -4,7 +4,10 @@ ...@@ -4,7 +4,10 @@
<solid android:color="@color/theme_grey_color" /> <solid android:color="@color/theme_grey_color" />
<corners android:radius="@dimen/dp_6"/>
<size <size
android:width="15dp" android:width="@dimen/dp_12"
android:height="2dp" /> android:height="@dimen/dp_3" />
</shape> </shape>
\ No newline at end of file
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
android:background="@color/gray" android:background="@color/gray"
android:orientation="horizontal"/> android:orientation="horizontal"/>
<ScrollView <androidx.core.widget.NestedScrollView
android:id="@+id/scrollview" android:id="@+id/scrollview"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
...@@ -265,7 +265,7 @@ ...@@ -265,7 +265,7 @@
android:focusable="false" android:focusable="false"
android:scrollbars="none" /> android:scrollbars="none" />
</LinearLayout> </LinearLayout>
</ScrollView> </androidx.core.widget.NestedScrollView>
<com.qmuiteam.qmui.widget.QMUITopBar <com.qmuiteam.qmui.widget.QMUITopBar
android:id="@+id/topbar" android:id="@+id/topbar"
......
...@@ -482,15 +482,18 @@ ...@@ -482,15 +482,18 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_food_group" android:id="@+id/rv_food_group"
android:layout_width="match_parent" 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 <LinearLayout
android:id="@+id/ll_food_group_point" android:id="@+id/ll_food_group_point"
android:layout_width="match_parent" android:layout_width="wrap_content"
android:layout_height="@dimen/dp_5" android:layout_height="wrap_content"
android:background="@color/theme_grey_color" android:layout_gravity="center"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="invisible" /> android:visibility="visible" />
</LinearLayout> </LinearLayout>
<RelativeLayout <RelativeLayout
......
...@@ -7,8 +7,8 @@ ext { ...@@ -7,8 +7,8 @@ ext {
targetSdkVersion : 29, targetSdkVersion : 29,
//正式版: 1.0.3 3 //正式版: 1.0.3 3
//內部測試版:1.2.0 20 //內部測試版:1.2.0 20
versionCode : 16, versionCode : 17,
versionName : "1.1.6" versionName : "1.1.7"
] ]
version = [ version = [
...@@ -26,7 +26,7 @@ ext { ...@@ -26,7 +26,7 @@ ext {
dependencies = [ dependencies = [
//support //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', "design" : 'com.google.android.material:material:1.0.0',
"support-v4" : 'androidx.legacy:legacy-support-v4:1.0.0', "support-v4" : 'androidx.legacy:legacy-support-v4:1.0.0',
"cardview-v7" : 'androidx.cardview:cardview:1.0.0', "cardview-v7" : 'androidx.cardview:cardview:1.0.0',
......
...@@ -16,9 +16,11 @@ ...@@ -16,9 +16,11 @@
package com.jess.arms.integration; package com.jess.arms.integration;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application; import android.app.Application;
import android.app.Dialog; import android.app.Dialog;
import android.app.Service; import android.app.Service;
import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Message; import android.os.Message;
...@@ -40,6 +42,7 @@ import javax.inject.Inject; ...@@ -40,6 +42,7 @@ import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import timber.log.Timber; import timber.log.Timber;
/** /**
...@@ -245,6 +248,28 @@ public final class AppManager { ...@@ -245,6 +248,28 @@ public final class AppManager {
return mActivityList.size() > 0 ? mActivityList.get(mActivityList.size() - 1) : null; 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} 的集合 * 返回一个存储所有未销毁的 {@link Activity} 的集合
...@@ -368,6 +393,7 @@ public final class AppManager { ...@@ -368,6 +393,7 @@ public final class AppManager {
/** /**
* 打开指定 {@link Activity} * 打开指定 {@link Activity}
*
* @param openClass * @param openClass
*/ */
public void changeRootActivityByClass(Class openClass) { public void changeRootActivityByClass(Class openClass) {
......
...@@ -41,3 +41,6 @@ ...@@ -41,3 +41,6 @@
-keep class com.zui.deviceidservice.** { *; } -keep class com.zui.deviceidservice.** { *; }
-keep interface com.zui.deviceidservice.** { *; } -keep interface com.zui.deviceidservice.** { *; }
# loadsir
-dontwarn com.kingja.loadsir.**
-keep class com.kingja.loadsir.** {*;}
...@@ -38,9 +38,15 @@ import com.gingersoft.gsa.cloud.common.loadsir.EmptyCallback; ...@@ -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.ErrorCallback;
import com.gingersoft.gsa.cloud.common.loadsir.LoadingCallback; import com.gingersoft.gsa.cloud.common.loadsir.LoadingCallback;
import com.gingersoft.gsa.cloud.common.loadsir.TimeoutCallback; 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.logan.LoganManager;
import com.gingersoft.gsa.cloud.common.oaId.DeviceID; import com.gingersoft.gsa.cloud.common.oaId.DeviceID;
import com.gingersoft.gsa.cloud.common.utils.AidlUtil; 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.FileUtils;
import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler; import com.gingersoft.gsa.cloud.common.utils.crash.AppCrashHandler;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
...@@ -158,6 +164,7 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -158,6 +164,7 @@ public class GsaCloudApplication extends BaseApplication {
+ File.separator + LoganConfig.FILE_NAME) + File.separator + LoganConfig.FILE_NAME)
.setEncryptKey16(LoganConfig.EncryptKey16.getBytes()) .setEncryptKey16(LoganConfig.EncryptKey16.getBytes())
.setEncryptIV16(LoganConfig.EncryptIV16.getBytes()) .setEncryptIV16(LoganConfig.EncryptIV16.getBytes())
.setDay(LoganConfig.DAY)
.build(); .build();
Logan.init(config); Logan.init(config);
Logan.setOnLoganProtocolStatus(new OnLoganProtocolStatus() { Logan.setOnLoganProtocolStatus(new OnLoganProtocolStatus() {
...@@ -188,10 +195,12 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -188,10 +195,12 @@ public class GsaCloudApplication extends BaseApplication {
* 初始化Hyweb支付回調 * 初始化Hyweb支付回調
*/ */
private void initHywebCommandImpl() { private void initHywebCommandImpl() {
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN) // if (AppDevices.isHywebPos()) {
.setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL) CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.build() .setActionName(ComponentAction.Login.INIT_HYWEB_COMMAND_IMPL)
.call(); .build()
.call();
// }
} }
public Activity getCurrentActivity() { public Activity getCurrentActivity() {
...@@ -229,6 +238,11 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -229,6 +238,11 @@ public class GsaCloudApplication extends BaseApplication {
.addCallback(new LoadingCallback()) .addCallback(new LoadingCallback())
.addCallback(new TimeoutCallback()) .addCallback(new TimeoutCallback())
.addCallback(new CustomCallback()) .addCallback(new CustomCallback())
.addCallback(new PosPayStatusExceptionCallback())
.addCallback(new PosRefundStatusExceptionCallback())
.addCallback(new PosVoidStatusExceptionCallback())
.addCallback(new PosTipsStatusExceptionCallback())
.addCallback(new PosSettlementStatusExceptionCallback())
.commit(); .commit();
} }
...@@ -318,7 +332,6 @@ public class GsaCloudApplication extends BaseApplication { ...@@ -318,7 +332,6 @@ public class GsaCloudApplication extends BaseApplication {
.backupStrategy(new MyBackupStrategy(FileUtils.ACTION_MAX_SIZE)) // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024) .backupStrategy(new MyBackupStrategy(FileUtils.ACTION_MAX_SIZE)) // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)
.cleanStrategy(new FileLastModifiedCleanStrategy(FileUtils.ACTION_MAX_FILE_TIME)) // 指定日志文件清除策略,默认为 NeverCleanStrategy() .cleanStrategy(new FileLastModifiedCleanStrategy(FileUtils.ACTION_MAX_FILE_TIME)) // 指定日志文件清除策略,默认为 NeverCleanStrategy()
.build(); .build();
XLog.init( // 初始化 XLog XLog.init( // 初始化 XLog
config, // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build() config, // 指定日志配置,如果不指定,会默认使用 new LogConfiguration.Builder().build()
androidPrinter, // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java) androidPrinter, // 添加任意多的打印器。如果没有添加任何打印器,会默认使用 AndroidPrinter(Android)/ConsolePrinter(java)
......
...@@ -15,6 +15,11 @@ public class LoganConfig { ...@@ -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 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; public static final byte CODE_LEVLE = 1;
...@@ -38,4 +43,9 @@ public class LoganConfig { ...@@ -38,4 +43,9 @@ public class LoganConfig {
* native日誌 * native日誌
*/ */
public static final byte native_LEVLE = 6; public static final byte native_LEVLE = 6;
/**
* 打印相關日誌
*/
public static final byte PRINTER_LEVLE = 7;
} }
...@@ -38,6 +38,17 @@ public class FunctionExtendedConfiguration { ...@@ -38,6 +38,17 @@ public class FunctionExtendedConfiguration {
.remark("外送結賬打印次數") .remark("外送結賬打印次數")
.build(); .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() private ExpandInfoSetting TableModePrintCount = ExpandInfoSetting.builder()
.valueInt(1) .valueInt(1)
.remark("餐檯印單打印次數") .remark("餐檯印單打印次數")
...@@ -48,11 +59,6 @@ public class FunctionExtendedConfiguration { ...@@ -48,11 +59,6 @@ public class FunctionExtendedConfiguration {
.remark("餐檯模式結賬單打印次數") .remark("餐檯模式結賬單打印次數")
.build(); .build();
private ExpandInfoSetting OrderReceivingTimeout = ExpandInfoSetting.builder()
.valueInt(60 * 60 * 1000)
.remark("外送接單超時時間")
.build();
private ExpandInfoSetting PrintMemberInfo = ExpandInfoSetting.builder() private ExpandInfoSetting PrintMemberInfo = ExpandInfoSetting.builder()
.valueBoolean(false) .valueBoolean(false)
.remark("是否打印會員信息") .remark("是否打印會員信息")
...@@ -78,11 +84,6 @@ public class FunctionExtendedConfiguration { ...@@ -78,11 +84,6 @@ public class FunctionExtendedConfiguration {
.remark("是否打印\"頭單\"文字") .remark("是否打印\"頭單\"文字")
.build(); .build();
private ExpandInfoSetting FrozenChainAutoOrder = ExpandInfoSetting.builder()
.valueBoolean(true)
.remark("是否自動接單 為0true")
.build();
private ExpandInfoSetting MergeSendFood = ExpandInfoSetting.builder() private ExpandInfoSetting MergeSendFood = ExpandInfoSetting.builder()
.valueBoolean(false) .valueBoolean(false)
.remark("送單是否自動合併食品") .remark("送單是否自動合併食品")
...@@ -113,6 +114,11 @@ public class FunctionExtendedConfiguration { ...@@ -113,6 +114,11 @@ public class FunctionExtendedConfiguration {
.remark("餐檯模式開檯自動彈出輸入人數彈窗") .remark("餐檯模式開檯自動彈出輸入人數彈窗")
.build(); .build();
private ExpandInfoSetting PluNumberChar = ExpandInfoSetting.builder()
.valueChar("ABCDEFGHIJKLMNOPQRSTUVWXYZ")
.remark("PLU左側滑動信息配置")
.build();
/** /**
* skyorder相關 * skyorder相關
*/ */
...@@ -137,7 +143,9 @@ public class FunctionExtendedConfiguration { ...@@ -137,7 +143,9 @@ public class FunctionExtendedConfiguration {
.build(); .build();
public <T> T getPluNumberCharVaule() {
return PluNumberChar.getValue();
}
public <T> T getRoundingVaule() { public <T> T getRoundingVaule() {
return Rounding.getValue(); return Rounding.getValue();
......
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;
}
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);
}
}
}
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;
}
}
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;
}
}
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;
}
}
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;
}
}
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;
}
}
...@@ -53,6 +53,12 @@ public class LoganManager { ...@@ -53,6 +53,12 @@ public class LoganManager {
printLog("AppCrashHandler", log); 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) { public static void w_H5(String log) {
Logan.w(log, LoganConfig.H5_LEVLE); Logan.w(log, LoganConfig.H5_LEVLE);
} }
...@@ -92,7 +98,7 @@ public class LoganManager { ...@@ -92,7 +98,7 @@ public class LoganManager {
} }
} }
}); });
Log.d(TAG, "upload result, httpCode: " + statusCode + ", details: " + resultData); LoganManager.w_code(TAG,"upload result, httpCode: " + statusCode + ", details: " + resultData);
} }
}); });
} }
......
...@@ -8,7 +8,7 @@ import android.os.Build; ...@@ -8,7 +8,7 @@ import android.os.Build;
* @更新時間: 2020-12-26 10:49 * @更新時間: 2020-12-26 10:49
* @描述: * @描述:
*/ */
public class AppDevice { public class AppDevices {
/** /**
* 是不是N5設備 * 是不是N5設備
......
...@@ -6,45 +6,55 @@ package com.gingersoft.gsa.cloud.component; ...@@ -6,45 +6,55 @@ package com.gingersoft.gsa.cloud.component;
* @update date: 2020-11-26 * @update date: 2020-11-26
* @description: * @description:
*/ */
public class ComponentAction { public interface ComponentAction {
public interface Login{ interface Login {
String OPEN_WELCOME = "open_welcome"; String OPEN_WELCOME = "open_welcome";
String OPEN_LOGIN = "open_login"; String OPEN_LOGIN = "open_login";
String OPEN_INIT_HYWEB_PAGE = "open_init_hyweb_page";
String INIT_HYWEB_COMMAND_IMPL = "init_hyweb_command_impl"; 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 KILL_MEAL_ORDER_PAY = "kill_meal_order_pay";
/** /**
* 初始化餐檯,外賣訂單 * 初始化餐檯,外賣訂單
*/ */
String INT_ORDER = "int_order"; 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"; String OPEN_PAY_RESULT = "open_pay_result";
} }
......
<?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
<?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
<?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
<?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
<?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
...@@ -130,7 +130,15 @@ ...@@ -130,7 +130,15 @@
<string name="emptyView_mode_desc_timeout_desc">網絡加載超時,請檢查網絡重試</string> <string name="emptyView_mode_desc_timeout_desc">網絡加載超時,請檢查網絡重試</string>
<string name="emptyView_mode_desc_retry">點擊重試</string> <string name="emptyView_mode_desc_retry">點擊重試</string>
<string name="emptyView_mode_desc_double">未獲取到數據</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 --> <!-- HttpError -->
<string name="response_error_unknown_error">未知錯誤</string> <string name="response_error_unknown_error">未知錯誤</string>
<string name="response_error_network_unavailable">網絡不可用</string> <string name="response_error_network_unavailable">網絡不可用</string>
......
...@@ -46,6 +46,25 @@ public class MealOrderPayRequest implements Parcelable{ ...@@ -46,6 +46,25 @@ public class MealOrderPayRequest implements Parcelable{
public MealOrderPayRequest() { 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 @Data
public static class OrderPay implements Parcelable { public static class OrderPay implements Parcelable {
private int payType; private int payType;
...@@ -58,6 +77,16 @@ public class MealOrderPayRequest implements Parcelable{ ...@@ -58,6 +77,16 @@ public class MealOrderPayRequest implements Parcelable{
} }
@Override @Override
public String toString() {
return "OrderPay{" +
"payType=" + payType +
", amount=" + amount +
", tipsPrice=" + tipsPrice +
", consumptionPoints=" + consumptionPoints +
'}';
}
@Override
public int describeContents() { public int describeContents() {
return 0; return 0;
} }
...@@ -138,4 +167,6 @@ public class MealOrderPayRequest implements Parcelable{ ...@@ -138,4 +167,6 @@ public class MealOrderPayRequest implements Parcelable{
return new MealOrderPayRequest[size]; return new MealOrderPayRequest[size];
} }
}; };
} }
...@@ -1288,12 +1288,12 @@ public class OrderDetail implements Commodity, Serializable ,Cloneable{ ...@@ -1288,12 +1288,12 @@ public class OrderDetail implements Commodity, Serializable ,Cloneable{
public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) { public static List<OrderDetail> transNewOrderDetails(List<OrderDetail> orderDetailList) {
List<OrderDetail> newOrderList = new ArrayList<>(); List<OrderDetail> newOrderList = new ArrayList<>();
for (OrderDetail orderDetail : orderDetailList) { for (OrderDetail orderDetail : orderDetailList) {
// newOrderList.add(new OrderDetail(orderDetail)); newOrderList.add(new OrderDetail(orderDetail));
try { // try {
newOrderList.add(orderDetail.clone()); // newOrderList.add(orderDetail.clone());
} catch (CloneNotSupportedException e) { // } catch (CloneNotSupportedException e) {
e.printStackTrace(); // e.printStackTrace();
} // }
} }
return newOrderList; return newOrderList;
} }
......
package com.gingersoft.gsa.cloud.pay.base;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:46
* @更新時間: 2020-12-16 15:46
* @描述:
*/
public class BBPosPay {
}
package com.gingersoft.gsa.cloud.pay.base;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:45
* @更新時間: 2020-12-16 15:45
* @描述:
*/
public abstract class BasePay {
}
package com.gingersoft.gsa.cloud.pay.base;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:47
* @更新時間: 2020-12-16 15:47
* @描述:
*/
public class N5PosPay {
}
package com.gingersoft.gsa.cloud.pay.base;
/**
* @作者: bin
* @創建時間: 2020-12-16 15:48
* @更新時間: 2020-12-16 15:48
* @描述:
*/
public class NomalPay {
}
...@@ -91,7 +91,7 @@ public class PayMethod implements Parcelable { ...@@ -91,7 +91,7 @@ public class PayMethod implements Parcelable {
*/ */
private double amountValue; private double amountValue;
/** /**
* 支付方式(1:寶達通 8:支付寶 1001:現金 1023:支付寶HK,1030:N5刷卡 1031:N5掃碼 * 支付方式(1:寶達通 8:支付寶 1001:現金 1023:支付寶HK,1031:N5掃碼 1031:N5刷卡
*/ */
private int payType; private int payType;
......
...@@ -18,7 +18,8 @@ public class PosActionStatusExceptionParam implements Parcelable { ...@@ -18,7 +18,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
private String txnId; private String txnId;
private PosAction posAction; private PosAction posAction;
private long orderNum; private long orderId;
private String orderNo;
private double amount; private double amount;
private String payMethodName; private String payMethodName;
...@@ -34,7 +35,8 @@ public class PosActionStatusExceptionParam implements Parcelable { ...@@ -34,7 +35,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.txnId); dest.writeString(this.txnId);
dest.writeInt(this.posAction == null ? -1 : this.posAction.ordinal()); 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.writeDouble(this.amount);
dest.writeString(this.payMethodName); dest.writeString(this.payMethodName);
} }
...@@ -43,7 +45,8 @@ public class PosActionStatusExceptionParam implements Parcelable { ...@@ -43,7 +45,8 @@ public class PosActionStatusExceptionParam implements Parcelable {
this.txnId = in.readString(); this.txnId = in.readString();
int tmpPosAction = in.readInt(); int tmpPosAction = in.readInt();
this.posAction = tmpPosAction == -1 ? null : PosAction.values()[tmpPosAction]; 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.amount = in.readDouble();
this.payMethodName = in.readString(); this.payMethodName = in.readString();
} }
......
...@@ -6,7 +6,7 @@ package com.gingersoft.gsa.cloud.pay.contract; ...@@ -6,7 +6,7 @@ package com.gingersoft.gsa.cloud.pay.contract;
* @更新時間: 2020-12-28 14:49 * @更新時間: 2020-12-28 14:49
* @描述: 支付異常碼,每個支付相關的error對應一個唯一的code,方便出問題時定位 * @描述: 支付異常碼,每個支付相關的error對應一個唯一的code,方便出問題時定位
*/ */
public interface PayErrorCode { public interface PayExceptionCode {
/** /**
* pos回調為Null * pos回調為Null
...@@ -17,9 +17,13 @@ public interface PayErrorCode { ...@@ -17,9 +17,13 @@ public interface PayErrorCode {
*/ */
String pos_response_101 = "[101]"; String pos_response_101 = "[101]";
/** /**
* pos回調 withException == true * pos回调解析发生JSONException
*/ */
String pos_response_102 = "[102]"; String pos_response_102 = "[102]";
/**
* pos回調 withException == true
*/
String pos_response_105 = "[105]";
/** /**
* SaleActionImp getTxnId * SaleActionImp getTxnId
...@@ -30,7 +34,7 @@ public interface PayErrorCode { ...@@ -30,7 +34,7 @@ public interface PayErrorCode {
String sale_404 = "[404]"; String sale_404 = "[404]";
/** /**
* SaleActionImp onActionComplte * SaleActionImp onPosException
*/ */
String sale_410 = "[410]"; String sale_410 = "[410]";
String sale_411 = "[411]"; String sale_411 = "[411]";
...@@ -49,7 +53,7 @@ public interface PayErrorCode { ...@@ -49,7 +53,7 @@ public interface PayErrorCode {
String tips_704 = "[704]"; String tips_704 = "[704]";
/** /**
* SaleActionImp onActionComplte * TipsActionImpl onPosException
*/ */
String tips_710 = "[710]"; String tips_710 = "[710]";
String tips_711 = "[711]"; String tips_711 = "[711]";
...@@ -57,4 +61,23 @@ public interface PayErrorCode { ...@@ -57,4 +61,23 @@ public interface PayErrorCode {
String tips_713 = "[713]"; String tips_713 = "[713]";
String tips_714 = "[714]"; 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]";
} }
...@@ -14,6 +14,7 @@ public interface PayTypeContract { ...@@ -14,6 +14,7 @@ public interface PayTypeContract {
* 8:支付寶 * 8:支付寶
* 1001:現金 * 1001:現金
* 1023:支付寶HK * 1023:支付寶HK
*
* 1030:N5卡支付 * 1030:N5卡支付
* 1031:N5掃碼支付 * 1031:N5掃碼支付
*/ */
......
...@@ -4,7 +4,6 @@ import android.app.Activity; ...@@ -4,7 +4,6 @@ import android.app.Activity;
import android.content.Context; import android.content.Context;
import com.etps.aca.lib.util.CommandUtil; 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.bean.PosMatter;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse; 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.pos.hywebpos.constant.PayStatusCode;
...@@ -31,7 +30,7 @@ public abstract class IPosAction { ...@@ -31,7 +30,7 @@ public abstract class IPosAction {
private final String mLoadingActionText = "中..."; private final String mLoadingActionText = "中...";
private final String mLoadingActionComplteText = "成功"; private final String mLoadingActionComplteText = "成功";
private final long mCancelDelayMillis = 1500; private final long mCancelDelayMillis = 2000;
public IPosAction(Context context, IView iView, PosAction action, boolean showLoading) { public IPosAction(Context context, IView iView, PosAction action, boolean showLoading) {
this.mContext = context; this.mContext = context;
...@@ -44,58 +43,99 @@ public abstract class IPosAction { ...@@ -44,58 +43,99 @@ public abstract class IPosAction {
} }
/** /**
* 對POS幾發起請求前的業務處理,如將操作記錄添加到後台日誌表,事項表 * 對POS幾發起操作前的業務處理,如將操作記錄添加到後台日誌表,事項表
*/ */
protected abstract void onRequestBefore(); protected abstract void onBeforeActionPOS();
/** /**
* 像POS發起請求的方法 * 向POS發起操作的方法
*/ */
protected void onRequestPOS(String requestJson) { protected void onActionToPOS(String requestJson) {
CommandUtil.sendRequest(mContext, 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回調成功的方法 * POS回調成功的方法
* *
* @param posResponse * @param posResponse
*/ */
public void onActionComplte(Context context, HywebPosResponse posResponse, Activity originalActivity) { public void onPosSuccess(Context context, HywebPosResponse posResponse, Activity originalActivity) {
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + mLoadingActionComplteText); mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + mLoadingActionComplteText);
mStatusLoadingDialog.loadSuccess(); mStatusLoadingDialog.loadSuccess();
} }
if (mOnPosActionListener != null) {
mOnPosActionListener.onPosSuccess(posResponse);
}
} }
/** /**
* POS回調失敗的方法 * POS回調為null或狀態異常
*
* @param e
*/ */
public void onActionError(Exception e) { public void onPosException(Exception e) {
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText(e.getMessage()); mStatusLoadingDialog.setStatusText(mPosAction.getCallbackExceptionText() + e.getMessage());
mStatusLoadingDialog.loadFailure(); mStatusLoadingDialog.loadFailure();
} }
String errorMsg = e.getMessage(); if (mOnPosActionListener != null) {
if (errorMsg.contains(PayErrorCode.pos_response_null) || errorMsg.contains(PayErrorCode.pos_response_102)) { mOnPosActionListener.onPosException(e);
if (mOnPosActionListener != null) {
mOnPosActionListener.onPosException(null);
}
} }
} }
/** /**
* POS回調為null或狀態異常 * POS調起失敗
*/ */
public void onPosException(HywebPosResponse posResponse) { public void onPosInvalid(String e) {
if (mStatusLoadingDialog != null) { if (mStatusLoadingDialog != null) {
mStatusLoadingDialog.setStatusText("回調異常"); mStatusLoadingDialog.setStatusText(mPosAction.getActionName() + e);
mStatusLoadingDialog.loadFailure(); 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) { if (mOnPosActionListener != null) {
mOnPosActionListener.onPosException(null); mOnPosActionListener.onUpdateStatusError(e);
} }
} }
......
package com.gingersoft.gsa.cloud.pay.pos; 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; import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
/** /**
* @作者: bin * @作者: bin
* @創建時間: 2020-12-29 20:15 * @創建時間: 2020-12-29 20:15
* @更新時間: 2020-12-29 20:15 * @更新時間: 2020-12-29 20:15
* @描述:POS事件回調,需要回調的實現這個接口 * @描述:POS事件回調
*/ */
public interface OnPosActionListener { public interface OnPosActionListener<T extends HywebPosResponse> {
/** /**
* N5回調成功 * N5回調成功
* @param response * @param response
*/ */
void onPosSuccess(HywebPosResponse response); void onPosSuccess(T response);
/** /**
* N6回調狀態異常,需要去重試查詢 * N5回調狀態異常,需要去重試查詢
* @param e
*/
void onPosException(Exception e);
/**
* N5調起失敗
* @param e
*/ */
void onPosException(HywebPosResponse response); void onPosInvalid(String e);
/** /**
* 更新狀態成功 * 更新狀態成功
* @param response * @param response
*/ */
void onSuccess(HywebPosResponse response); void onUpdateStatusSuccess(T response);
/** /**
* 更新狀態失敗 * 更新狀態失敗
* @param e * @param e
*/ */
void onError(Throwable e); void onUpdateStatusError(Throwable e);
} }
...@@ -31,12 +31,11 @@ import java.util.List; ...@@ -31,12 +31,11 @@ import java.util.List;
*/ */
public final class PosPay { public final class PosPay {
public static void sendRequest(IPosAction action) { public static void sendRequest(IPosAction action) {
CommandActivity.setCommand(new CommandImpl(action)); CommandActivity.setCommand(new CommandImpl(action));
// if (AppDevice.isHywebPos()) { // if (AppDevice.isHywebPos()) {
if (action != null) { if (action != null) {
action.onRequestBefore(); action.onBeforeActionPOS();
} }
// } else if (AppDevice.isBBPos()) { // } else if (AppDevice.isBBPos()) {
// } else { // } else {
...@@ -53,15 +52,14 @@ public final class PosPay { ...@@ -53,15 +52,14 @@ public final class PosPay {
public static void refund(Context context, IView iView, RefundRequest request, GetTxnIdRequest getTxnIdRequest, OnPosActionListener onPosActionListener) { 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)); 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) { 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)); PosPay.sendRequest(new VoidActionImpl(context, iView, PosAction.VOID, request, getTxnIdRequest, onPosActionListener, true));
} }
public static void retrieval(Context context, IView iView, RetrievalRequest request, OnPosActionListener onPosActionListener) { public static void retrieval(Context context, IView iView,Long orderId, RetrievalRequest request, OnPosActionListener onPosActionListener) {
PosPay.sendRequest(new RetrievalActionImpl(context, iView, PosAction.RETRIEVAL, 111, request, onPosActionListener, false)); PosPay.sendRequest(new RetrievalActionImpl(context, iView, PosAction.RETRIEVAL, orderId, request, onPosActionListener, false));
} }
} }
...@@ -19,7 +19,8 @@ public class BBPosAction extends IPosAction { ...@@ -19,7 +19,8 @@ public class BBPosAction extends IPosAction {
} }
@Override @Override
protected void onRequestBefore() { protected void onBeforeActionPOS() {
} }
} }
...@@ -82,6 +82,26 @@ public class PosMatter implements Parcelable { ...@@ -82,6 +82,26 @@ public class PosMatter implements Parcelable {
} }
@Override @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() { public int describeContents() {
return 0; return 0;
} }
......
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg; package com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.request.bg;
import com.gingersoft.gsa.cloud.order.bean.request.MealOrderPayRequest;
import lombok.Data; import lombok.Data;
/** /**
...@@ -16,6 +18,11 @@ public class GetTxnIdRequest { ...@@ -16,6 +18,11 @@ public class GetTxnIdRequest {
private Integer tableExtId; private Integer tableExtId;
private Integer payMethodId; private Integer payMethodId;
private Double amount; private Double amount;
private Double tipsPrice; private Double tipsPrice;
/**
* 支付信息優惠券id,積分等信息..
*/
private String content;
} }
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;
}
...@@ -13,5 +13,5 @@ import lombok.Setter; ...@@ -13,5 +13,5 @@ import lombok.Setter;
@Setter @Setter
public class GetRefundIdResponse { public class GetRefundIdResponse {
private String refund_id; private String refundId;
} }
package com.gingersoft.gsa.cloud.pay.pos.hywebpos.command; package com.gingersoft.gsa.cloud.pay.pos.hywebpos.command;
import android.app.Activity; import android.app.Activity;
import android.app.ActivityManager;
import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
import com.billy.cc.core.component.CC; import com.billy.cc.core.component.CC;
import com.etps.aca.lib.action.ICommand; import com.etps.aca.lib.action.ICommand;
import com.etps.aca.lib.activity.CommandActivity; import com.etps.aca.lib.activity.CommandActivity;
import com.etps.aca.lib.constant.Constant; 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.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.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.log.LogUtil; import com.gingersoft.gsa.cloud.common.utils.log.LogUtil;
import com.gingersoft.gsa.cloud.component.ComponentAction; import com.gingersoft.gsa.cloud.component.ComponentAction;
import com.gingersoft.gsa.cloud.component.ComponentName; import com.gingersoft.gsa.cloud.component.ComponentName;
import com.gingersoft.gsa.cloud.pay.contract.PayErrorCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction; 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.AdjustTipRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse; 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 ...@@ -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.SaleRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.SettlementRespose; 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.bean.response.pos.VoidRespose;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode;
import com.jess.arms.integration.AppManager; import com.jess.arms.integration.AppManager;
import com.jess.arms.utils.ArmsUtils; import com.jess.arms.utils.ArmsUtils;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; 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 { public class CommandImpl implements ICommand {
private static final String TAG = CommandImpl.class.getSimpleName(); private static final String TAG = CommandImpl.class.getSimpleName();
...@@ -50,21 +62,20 @@ public class CommandImpl implements ICommand { ...@@ -50,21 +62,20 @@ public class CommandImpl implements ICommand {
JSONObject msgObj = new JSONObject(request); JSONObject msgObj = new JSONObject(request);
String eventName = msgObj.getString(Constant.EVENT.ATTR.EVENT_NAME); String eventName = msgObj.getString(Constant.EVENT.ATTR.EVENT_NAME);
if (Constant.EVENT.NAME.SALE.equals(eventName)) { if (Constant.EVENT.NAME.SALE.equals(eventName)) {
startWelcomeActivity(); startInitHywebActivity(context);
} else if (Constant.EVENT.NAME.REFUND.equals(eventName)) { } else if (Constant.EVENT.NAME.REFUND.equals(eventName)) {
startWelcomeActivity(); startInitHywebActivity(context);
} else if (Constant.EVENT.NAME.VOID.equals(eventName)) { } else if (Constant.EVENT.NAME.VOID.equals(eventName)) {
startWelcomeActivity(); startInitHywebActivity(context);
} else if (Constant.EVENT.NAME.GOTO.equals(eventName)) { } else if (Constant.EVENT.NAME.GOTO.equals(eventName)) {
startWelcomeActivity(); startInitHywebActivity(context);
} }
} catch (JSONException e) { } catch (JSONException e) {
startWelcomeActivity(); startInitHywebActivity(context);
} }
} }
private void startWelcomeActivity() { private void startInitHywebActivity(Context context) {
//跳轉啟動頁面
CC.obtainBuilder(ComponentName.COMPONENT_LOGIN) CC.obtainBuilder(ComponentName.COMPONENT_LOGIN)
.setActionName(ComponentAction.Login.OPEN_WELCOME) .setActionName(ComponentAction.Login.OPEN_WELCOME)
.build() .build()
...@@ -82,37 +93,67 @@ public class CommandImpl implements ICommand { ...@@ -82,37 +93,67 @@ public class CommandImpl implements ICommand {
LoganManager.w_code(TAG, "onResponse : " + response); 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)) { if (TextUtils.isEmpty(response)) {
onActionError(new Exception("回調異常" + PayErrorCode.pos_response_null)); onPosException(new Exception(PayExceptionCode.pos_response_null));
return; return;
} }
try { try {
JSONObject msgObj = new JSONObject(response); JSONObject msgObj = new JSONObject(response);
String eventName = msgObj.getString(Constant.EVENT.ATTR.EVENT_NAME); 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); HywebPosResponse posResponse = parsePosResponse(response, eventName);
if (posResponse != null) { if (posResponse != null) {
onActionComplte(context, posResponse, currentActivity); if (PayStatusCode.withInvalid(posResponse.getSTATUS())) {
//調起POS失敗
onPosInvalid(PayStatusCode.getHywebRequestTextByCode(posResponse.getSTATUS()));
} else {
//回調成功
onPosSuccess(context, posResponse, currentActivity);
}
} else { } else {
// onActionError(new Exception("回調異常" + PayErrorCode.pos_response_101)); //回調異常
onActionError(new Exception(PayErrorCode.pos_response_101)); onPosException(new Exception(PayExceptionCode.pos_response_101));
} }
} catch (JSONException e) { } catch (JSONException e) {
e.printStackTrace(); 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 { ...@@ -147,9 +188,9 @@ public class CommandImpl implements ICommand {
* @param posResponse * @param posResponse
* @param actionActivity * @param actionActivity
*/ */
private void onActionComplte(Context context, HywebPosResponse posResponse, Activity actionActivity) { private void onPosSuccess(Context context, HywebPosResponse posResponse, Activity actionActivity) {
if (mPosAction != null) { if (mPosAction != null) {
mPosAction.onActionComplte(context, posResponse, actionActivity); mPosAction.onPosSuccess(context, posResponse, actionActivity);
} }
} }
...@@ -158,9 +199,22 @@ public class CommandImpl implements ICommand { ...@@ -158,9 +199,22 @@ public class CommandImpl implements ICommand {
* *
* @param e * @param e
*/ */
private void onActionError(Exception e) { public void onPosException(Exception e) {
if (mPosAction != null) { if (mPosAction != null) {
mPosAction.onActionError(e); mPosAction.onPosException(e);
} }
} }
/**
* 調起失敗轉發到具體的實現類
*
* @param e
*/
public void onPosInvalid(String e) {
if (mPosAction != null) {
mPosAction.onPosInvalid(e);
}
}
} }
...@@ -19,11 +19,13 @@ public class PayStatusCode { ...@@ -19,11 +19,13 @@ public class PayStatusCode {
* *
*/ */
/** /**
* 支付状态 * 以下狀態認為是成功情況
*/ */
public static final String PAY_STATUS_00 = "00"; //成功 √ public static final String PAY_STATUS_00 = "00"; //成功 √
public static final String PAY_STATUS_02 = "02"; //微信、支付宝正在处理这笔退款请求(可认为已成功) √ public static final String PAY_STATUS_02 = "02"; //微信、支付宝正在处理这笔退款请求(可认为已成功) √
/**
* 以下狀態認為是无效情況
*/
public static final String PAY_STATUS_09 = "09"; //用户取消 √ public static final String PAY_STATUS_09 = "09"; //用户取消 √
public static final String PAY_STATUS_10 = "10"; //主持人拒绝 √ public static final String PAY_STATUS_10 = "10"; //主持人拒绝 √
public static final String PAY_STATUS_11 = "11"; //用户撤销(应用于仅限微信/支付宝) √ public static final String PAY_STATUS_11 = "11"; //用户撤销(应用于仅限微信/支付宝) √
...@@ -32,15 +34,19 @@ public class PayStatusCode { ...@@ -32,15 +34,19 @@ public class PayStatusCode {
public static final String PAY_STATUS_90 = "90"; //通讯/格式 错误 √ public static final String PAY_STATUS_90 = "90"; //通讯/格式 错误 √
public static final String PAY_STATUS_91 = "91"; //功能或 付款方式没有 支持的 √ public static final String PAY_STATUS_91 = "91"; //功能或 付款方式没有 支持的 √
public static final String PAY_STATUS_97 = "97"; //N5 POS忙碌 √ 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_03 = "03"; //确认/处理 (支付、清機 同步接口防止N5機器關機未收到結果) √
public static final String PAY_STATUS_98 = "98"; //超时 √
public static final String PAY_STATUS_99 = "99"; //未知错误 √ public static final String PAY_STATUS_99 = "99"; //未知错误 √
/**
* 回調成功
* @param status
* @return
*/
public static boolean withSuccess(String status) { public static boolean withSuccess(String status) {
if (TextUtils.isEmpty(status)) { if (TextUtils.isEmpty(status)) {
return false; return false;
...@@ -52,13 +58,33 @@ public class PayStatusCode { ...@@ -52,13 +58,33 @@ public class PayStatusCode {
return false; return false;
} }
/**
* 回調異常,比如突然斷網或關機沒有收到回調
* @param status
* @return
*/
public static boolean withException(String status) { 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 true;
} }
return false; 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) { public static String getHywebRequestTextByCode(String status) {
switch (status) { switch (status) {
case PAY_STATUS_00: case PAY_STATUS_00:
......
...@@ -20,29 +20,13 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler; ...@@ -20,29 +20,13 @@ import me.jessyan.rxerrorhandler.core.RxErrorHandler;
*/ */
public class PrintActionImpl extends IPosAction { public class PrintActionImpl extends IPosAction {
@Inject
RxErrorHandler mErrorHandler;
public PrintActionImpl(Context context, IView iView, PosAction action, boolean showLoading) { public PrintActionImpl(Context context, IView iView, PosAction action, boolean showLoading) {
super(context,iView,action,showLoading); super(context,iView,action,showLoading);
} }
@Override @Override
protected void onRequestBefore() { protected void onBeforeActionPOS() {
}
@Override
public void onRequestPOS(String requestJson) {
super.onRequestPOS(requestJson);
}
@Override
public void onActionComplte(Context context,HywebPosResponse result, Activity originalActivity) {
} }
@Override
public void onActionError(Exception error) {
}
} }
...@@ -9,23 +9,25 @@ import com.gingersoft.gsa.cloud.common.bean.BaseResult; ...@@ -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.constans.HttpsConstans;
import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils; import com.gingersoft.gsa.cloud.common.utils.gson.GsonUtils;
import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils; import com.gingersoft.gsa.cloud.common.utils.okhttpUtils.OkHttp3Utils;
import com.gingersoft.gsa.cloud.pay.contract.PayErrorCode; import com.gingersoft.gsa.cloud.pay.contract.PayExceptionCode;
import com.gingersoft.gsa.cloud.pay.pos.IPosAction; import com.gingersoft.gsa.cloud.pay.pos.IPosAction;
import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener; import com.gingersoft.gsa.cloud.pay.pos.OnPosActionListener;
import com.gingersoft.gsa.cloud.pay.pos.PosAction; import com.gingersoft.gsa.cloud.pay.pos.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.bean.PosMatter; 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.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.HywebPosResponse;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.RefundRespose; 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.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.gingersoft.gsa.cloud.pay.pos.hywebpos.constant.PayStatusCode;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.utils.RxLifecycleUtils; import com.jess.arms.utils.RxLifecycleUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import io.reactivex.Observer; import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable; import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.RequestBody; import okhttp3.RequestBody;
...@@ -38,39 +40,31 @@ import okhttp3.RequestBody; ...@@ -38,39 +40,31 @@ import okhttp3.RequestBody;
public class RetrievalActionImpl extends IPosAction { public class RetrievalActionImpl extends IPosAction {
private RetrievalRequest mRetrievalRequest; private RetrievalRequest mRetrievalRequest;
private long mOrderId; private Long mOrderId;
public RetrievalActionImpl(Context context, IView iView, PosAction action, long orderId,RetrievalRequest request, OnPosActionListener onPosActionListener, boolean showLoading) { public RetrievalActionImpl(Context context, IView iView, PosAction action, Long orderId,RetrievalRequest request, OnPosActionListener onPosActionListener, boolean showLoading) {
super(context, iView, action, showLoading); super(context, iView, action, showLoading);
this.mOrderId = mOrderId; this.mOrderId = orderId;
this.mRetrievalRequest = request; this.mRetrievalRequest = request;
this.mOnPosActionListener = onPosActionListener; this.mOnPosActionListener = onPosActionListener;
} }
@Override @Override
protected void onRequestBefore() { protected void onBeforeActionPOS() {
//調起N5狀態查詢 //調起N5狀態查詢
onRequestPOS(GsonUtils.GsonString(mRetrievalRequest)); onActionToPOS(GsonUtils.GsonString(mRetrievalRequest));
} }
/** /**
* 查詢回調成功 * 查詢回調成功
* 1、更新上傳狀態 * 1、更新上傳狀態
* * 2、顯示查询結果
* @param context * @param context
* @param response * @param response
* @param originalActivity * @param originalActivity
*/ */
@Override @Override
public void onActionComplte(Context context, HywebPosResponse response, Activity originalActivity) { public void onPosSuccess(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);
}
}
String url = null; String url = null;
RequestBody requestBody; RequestBody requestBody;
...@@ -83,15 +77,21 @@ public class RetrievalActionImpl extends IPosAction { ...@@ -83,15 +77,21 @@ public class RetrievalActionImpl extends IPosAction {
url = "posPay/updatePosRefund"; url = "posPay/updatePosRefund";
requestBody = getPosMatterRefundRequest((RefundRespose) response); requestBody = getPosMatterRefundRequest((RefundRespose) response);
break; 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: default:
return; return;
} }
//1、更新上傳支付狀態 //1、更新上傳支付狀態
OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + url, requestBody) OkHttp3Utils.post(HttpsConstans.ROOT_SERVER_ADDRESS_FORMAL + url, requestBody)
.subscribeOn(Schedulers.io()) .compose(RxSchedulerUtils._io_main_o())
.observeOn(Schedulers.io())
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.compose(RxLifecycleUtils.bindToLifecycle(mView)) .compose(RxLifecycleUtils.bindToLifecycle(mView))
.subscribe(new Observer<String>() { .subscribe(new Observer<String>() {
@Override @Override
...@@ -100,38 +100,51 @@ public class RetrievalActionImpl extends IPosAction { ...@@ -100,38 +100,51 @@ public class RetrievalActionImpl extends IPosAction {
@Override @Override
public void onNext(String result) { public void onNext(String result) {
displayRetrievalResult(context, response, originalActivity);
if (!TextUtils.isEmpty(result)) { if (!TextUtils.isEmpty(result)) {
BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class); BaseResult baseResult = GsonUtils.GsonToBean(result, BaseResult.class);
if (baseResult != null) { if (baseResult != null) {
if (baseResult.isSuccess() && baseResult.getData() != null) { if (baseResult.isSuccess() && baseResult.getData() != null) {
if (mOnPosActionListener != null) { onUpdateStatusSuccess(response);
mOnPosActionListener.onSuccess(response);
}
} else { } else {
onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.sale_412)); onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + "["+baseResult.getErrMsg()+"]"));
} }
} else { } else {
onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.sale_413)); onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + PayExceptionCode.sale_413));
} }
} else { } else {
onActionError(new Exception(mPosAction.getCallbackExceptionText() + PayErrorCode.sale_414)); onUpdateStatusError(new Exception(mPosAction.getCallbackExceptionText() + PayExceptionCode.sale_414));
} }
} }
@Override @Override
public void onError(Throwable e) { public void onError(Throwable e) {
if (mOnPosActionListener != null) { displayRetrievalResult(context, response, originalActivity);
mOnPosActionListener.onError(e);
}
} }
@Override @Override
public void onComplete() { 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) { private RequestBody getPosMatterSaleRequest(SaleRespose response) {
PosMatter posMatter = new PosMatter(); PosMatter posMatter = new PosMatter();
...@@ -148,10 +161,27 @@ public class RetrievalActionImpl extends IPosAction { ...@@ -148,10 +161,27 @@ public class RetrievalActionImpl extends IPosAction {
} }
private RequestBody getPosMatterRefundRequest(RefundRespose response) { 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)); RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), GsonUtils.GsonString(response));
String 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; return requestBody;
} }
......
...@@ -9,6 +9,8 @@ import com.gingersoft.gsa.cloud.pay.pos.IPosAction; ...@@ -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.PosAction;
import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse; import com.gingersoft.gsa.cloud.pay.pos.hywebpos.bean.response.pos.HywebPosResponse;
import com.jess.arms.mvp.IView; import com.jess.arms.mvp.IView;
import com.jess.arms.utils.RxLifecycleUtils;
import com.xuexiang.rxutil2.rxjava.RxSchedulerUtils;
import javax.inject.Inject; import javax.inject.Inject;
...@@ -25,44 +27,18 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber; ...@@ -25,44 +27,18 @@ import me.jessyan.rxerrorhandler.handler.ErrorHandleSubscriber;
*/ */
public class SettlementActionImpl extends IPosAction { public class SettlementActionImpl extends IPosAction {
@Inject
RxErrorHandler mErrorHandler;
public SettlementActionImpl(Context context, IView iView, PosAction action, boolean showLoading) { public SettlementActionImpl(Context context, IView iView, PosAction action, boolean showLoading) {
super(context,iView,action,showLoading); super(context,iView,action,showLoading);
} }
@Override @Override
protected void onRequestBefore() { protected void onBeforeActionPOS() {
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) {
}
});
} }
@Override @Override
public void onRequestPOS(String requestJson) { public void onPosSuccess(Context context,HywebPosResponse result, Activity actionActivity) {
super.onRequestPOS(requestJson);
}
@Override
public void onActionComplte(Context context,HywebPosResponse result, Activity actionActivity) {
} }
@Override
public void onActionError(Exception error) {
}
} }
package com.gingersoft.gsa.cloud.pay.util; package com.gingersoft.gsa.cloud.pay.util;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; import com.gingersoft.gsa.cloud.pay.bean.PayMethod;
import com.gingersoft.gsa.cloud.pay.contract.PayTypeContract;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -14,7 +15,7 @@ import java.util.List; ...@@ -14,7 +15,7 @@ import java.util.List;
public class PayMethodUtils { 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<>(); List<PayMethod> payMethodList = new ArrayList<>();
if (payMethods != null && payMethods.size() > 0 && types.length > 0) { if (payMethods != null && payMethods.size() > 0 && types.length > 0) {
for (int type : types) { for (int type : types) {
...@@ -38,4 +39,31 @@ public class PayMethodUtils { ...@@ -38,4 +39,31 @@ public class PayMethodUtils {
} }
return null; 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;
}
} }
...@@ -22,7 +22,14 @@ public class StatusLoadingDialog { ...@@ -22,7 +22,14 @@ public class StatusLoadingDialog {
private TextView tv_status; private TextView tv_status;
private long mCancelDelayMillis = 1500; 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) { public StatusLoadingDialog(Context context, String loadingText, long cancelDelayMillis) {
this.mContext = context; this.mContext = context;
...@@ -43,38 +50,32 @@ public class StatusLoadingDialog { ...@@ -43,38 +50,32 @@ public class StatusLoadingDialog {
dialog.setContentView(view); dialog.setContentView(view);
dialog.setCancelable(false); 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))); ll_container.setLayoutParams(new FrameLayout.LayoutParams((int) (ArmsUtils.getScreenWidth(mContext) * 0.4), (int) (ArmsUtils.getScreenWidth(mContext) * 0.4)));
} }
public void loadLoading() { public void loadLoading() {
as_status.loadLoading(); as_status.loadLoading();
} }
public void loadSuccess() { public void loadSuccess() {
as_status.loadSuccess(); as_status.loadSuccess();
as_status.postDelayed(new Runnable() {
@Override
public void run() {
if (mOnClickListener != null) {
mOnClickListener.loadSuccessEnd();
}
cancel();
}
}, mCancelDelayMillis);
} }
public void loadFailure() { public void loadFailure() {
as_status.loadFailure(); as_status.loadFailure();
as_status.postDelayed(new Runnable() { }
@Override
public void run() { public void cancel() {
if (mOnClickListener != null) { clearLoadingAnim();
mOnClickListener.loadFailureEnd(); if (dialog != null && dialog.isShowing()) {
as_status.postDelayed(new Runnable() {
@Override
public void run() {
dialog.cancel();
} }
cancel(); }, mCancelDelayMillis);
} }
}, mCancelDelayMillis);
} }
public void setStatusText(String text) { public void setStatusText(String text) {
...@@ -94,18 +95,6 @@ public class StatusLoadingDialog { ...@@ -94,18 +95,6 @@ public class StatusLoadingDialog {
loadLoading(); 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; private OnLoadStautsListener mOnClickListener;
public void setOnLoadStautsListener(OnLoadStautsListener onClickListener) { public void setOnLoadStautsListener(OnLoadStautsListener onClickListener) {
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
android:background="@color/theme_white_color" android:background="@color/theme_white_color"
android:orientation="vertical"> android:orientation="vertical">
<LinearLayout <LinearLayout
android:id="@+id/ll_content" android:id="@+id/ll_content"
android:layout_width="match_parent" android:layout_width="match_parent"
...@@ -17,47 +16,26 @@ ...@@ -17,47 +16,26 @@
<TextView <TextView
android:id="@+id/tv_order_num" android:id="@+id/tv_order_num"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="@dimen/dp_60" android:layout_height="@dimen/dp_60"
android:gravity="center" android:gravity="center"
android:text="單號:123571416" android:text="單號:123571416"
android:textColor="@color/theme_black" 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_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50"> android:layout_marginTop="@dimen/dp_50"
android:drawableTop="@mipmap/pay_status_success"
<TextView android:drawablePadding="@dimen/dp_6"
android:id="@+id/tv_pay_status" android:gravity="center"
android:layout_width="wrap_content" android:text="支付成功"
android:layout_height="wrap_content" android:textColor="@color/theme_black"
android:gravity="center" android:textSize="@dimen/font_normal2"
android:drawablePadding="@dimen/dp_6" android:textStyle="bold" />
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>
<TextView <TextView
android:id="@+id/tv_amount" android:id="@+id/tv_amount"
...@@ -66,40 +44,31 @@ ...@@ -66,40 +44,31 @@
android:layout_marginTop="@dimen/dp_10" android:layout_marginTop="@dimen/dp_10"
android:text="$500" android:text="$500"
android:textColor="@color/theme_black" android:textColor="@color/theme_black"
android:textSize="@dimen/sp_32" /> android:textSize="@dimen/sp_32"
android:textStyle="bold" />
<TextView <TextView
android:id="@+id/tv_paymethod" android:id="@+id/tv_pay_method"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50" android:layout_marginTop="@dimen/dp_20"
android:gravity="center" android:gravity="center"
android:text="微信,支付寶"
android:textColor="@color/black" android:textColor="@color/black"
android:textSize="@dimen/font_normal3" 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" />
</LinearLayout> </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> </RelativeLayout>
\ No newline at end of file
...@@ -19,6 +19,8 @@ package com.gingersoft.gsa.cloud.print; ...@@ -19,6 +19,8 @@ package com.gingersoft.gsa.cloud.print;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask; 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 com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.util.List; import java.util.List;
...@@ -28,6 +30,7 @@ import java.util.List; ...@@ -28,6 +30,7 @@ import java.util.List;
* Created by Alex on 2016/11/10. * Created by Alex on 2016/11/10.
*/ */
public class PrintExecutor { public class PrintExecutor {
protected final String TAG = this.getClass().getSimpleName();
private PrintSocketHolder holder; private PrintSocketHolder holder;
private int mReconnectTimes = 0; private int mReconnectTimes = 0;
private int time = 0; private int time = 0;
...@@ -62,23 +65,31 @@ public class PrintExecutor { ...@@ -62,23 +65,31 @@ public class PrintExecutor {
prjIds = maker.getPrjIds(); prjIds = maker.getPrjIds();
if (!holder.isSocketPrepared()) { if (!holder.isSocketPrepared()) {
int prepare = holder.prepareSocket(); int prepare = holder.prepareSocket();
if (prepare != PrintSocketHolder.ERROR_0) if (prepare != PrintSocketHolder.ERROR_0) {
return prepare; return prepare;
}
} }
LoganManager.w_printer(TAG,"PrintTask doRequest holder.sendData(data) ------------------------------->");
return holder.sendData(data); return holder.sendData(data);
} else { } else {
holder.onPrinterStateChanged(PrintSocketHolder.STATE_0); holder.onPrinterStateChanged(PrintSocketHolder.STATE_0);
List<byte[]> data = maker.getPrintData(); List<byte[]> data = maker.getPrintData();
prjIds = maker.getPrjIds(); prjIds = maker.getPrjIds();
if (holder.isSocketPrepared()) { 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; return PrintSocketHolder.ERROR_0;
else } else {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印失败------------------>");
return PrintSocketHolder.ERROR_100; return PrintSocketHolder.ERROR_100;
}
} else { } else {
if (prepareSocket() && sendData(data)) { if (prepareSocket() && sendData(data)) {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印成功------------------>");
return PrintSocketHolder.ERROR_0; return PrintSocketHolder.ERROR_0;
} else { } else {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) -------------打印失败------------------>");
return PrintSocketHolder.ERROR_100; return PrintSocketHolder.ERROR_100;
} }
} }
...@@ -97,8 +108,9 @@ public class PrintExecutor { ...@@ -97,8 +108,9 @@ public class PrintExecutor {
private boolean prepareSocket() { private boolean prepareSocket() {
time++; time++;
return time < mReconnectTimes && boolean prepareSocket = time < mReconnectTimes &&
(holder.prepareSocket() == PrintSocketHolder.ERROR_0 || prepareSocket()); (holder.prepareSocket() == PrintSocketHolder.ERROR_0 || prepareSocket());
return prepareSocket;
} }
private boolean sendData(List<byte[]> data) { private boolean sendData(List<byte[]> data) {
...@@ -188,28 +200,35 @@ public class PrintExecutor { ...@@ -188,28 +200,35 @@ public class PrintExecutor {
@Override @Override
protected void onPreExecute() { protected void onPreExecute() {
super.onPreExecute(); super.onPreExecute();
LoganManager.w_printer(TAG,"PrintTask onPreExecute");
holder.setOnStateChangedListener(this); holder.setOnStateChangedListener(this);
} }
@Override @Override
protected Integer doInBackground(PrintDataMaker... makers) { 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 PrintSocketHolder.ERROR_0;
}
return doRequest(makers[0]); return doRequest(makers[0]);
} }
@Override @Override
protected void onProgressUpdate(Integer... values) { protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(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; return;
if (listener != null) }
if (listener != null) {
listener.onStateChanged(values[0], holder.getPrinterDeviceBean()); listener.onStateChanged(values[0], holder.getPrinterDeviceBean());
}
} }
@Override @Override
protected void onPostExecute(Integer integer) { protected void onPostExecute(Integer integer) {
super.onPostExecute(integer); super.onPostExecute(integer);
LoganManager.w_printer(TAG,"PrintTask onPostExecute values:" + integer);
if (integer != null) { if (integer != null) {
onResult(integer); onResult(integer);
} }
...@@ -222,6 +241,7 @@ public class PrintExecutor { ...@@ -222,6 +241,7 @@ public class PrintExecutor {
*/ */
private void onResult(int errorCode) { private void onResult(int errorCode) {
try { try {
LoganManager.w_printer(TAG,"PrintTask onResult errorCode:" + errorCode);
if (mListener != null) if (mListener != null)
mListener.onResult(errorCode, holder.getPrinterDeviceBean()); mListener.onResult(errorCode, holder.getPrinterDeviceBean());
if (onPrjPrintResultListener != null) { if (onPrjPrintResultListener != null) {
...@@ -229,11 +249,13 @@ public class PrintExecutor { ...@@ -229,11 +249,13 @@ public class PrintExecutor {
} }
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
LoganManager.w_printer(TAG,"PrintTask onResult Exception:" + e.getMessage());
} }
} }
@Override @Override
public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) { public void onStateChanged(int state, PrinterDeviceBean printerDeviceBean) {
LoganManager.w_printer(TAG,"PrintTaskonStateChanged state: " + state);
publishProgress(state); publishProgress(state);
} }
} }
......
...@@ -19,7 +19,9 @@ package com.gingersoft.gsa.cloud.print; ...@@ -19,7 +19,9 @@ package com.gingersoft.gsa.cloud.print;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket; import android.bluetooth.BluetoothSocket;
import com.elvishew.xlog.XLog;
import com.gingersoft.gsa.cloud.common.constans.PrintConstans; 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 com.gingersoft.gsa.cloud.database.bean.PrinterDeviceBean;
import java.io.IOException; import java.io.IOException;
...@@ -36,6 +38,9 @@ import java.util.UUID; ...@@ -36,6 +38,9 @@ import java.util.UUID;
*/ */
@SuppressWarnings({"WeakerAccess", "unused"}) @SuppressWarnings({"WeakerAccess", "unused"})
public class PrintSocketHolder { public class PrintSocketHolder {
protected final String TAG = this.getClass().getSimpleName();
public static final int STATE_0 = 10;// 生成测试页面数据 public static final int STATE_0 = 10;// 生成测试页面数据
public static final int STATE_1 = 1;// 创建Socket连接 public static final int STATE_1 = 1;// 创建Socket连接
public static final int STATE_2 = 2;// 获取输出流 public static final int STATE_2 = 2;// 获取输出流
...@@ -113,6 +118,7 @@ public class PrintSocketHolder { ...@@ -113,6 +118,7 @@ public class PrintSocketHolder {
public int sendData(List<byte[]> data) { public int sendData(List<byte[]> data) {
onPrinterStateChanged(STATE_3); onPrinterStateChanged(STATE_3);
LoganManager.w_printer(TAG,"PrintSocketHolder sendData ----------准备往打印机写入数据-------->");
if (data == null || data.size() <= 0) if (data == null || data.size() <= 0)
return ERROR_0; return ERROR_0;
for (byte[] item : data) { for (byte[] item : data) {
...@@ -120,6 +126,7 @@ public class PrintSocketHolder { ...@@ -120,6 +126,7 @@ public class PrintSocketHolder {
out.write(item); out.write(item);
out.flush(); out.flush();
} catch (IOException e) { } catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder sendData !!!!!!!!打印异常!!!!!!!! IOException: " + e.getMessage());
closeSocket(); closeSocket();
return ERROR_4; return ERROR_4;
} }
...@@ -155,16 +162,21 @@ public class PrintSocketHolder { ...@@ -155,16 +162,21 @@ public class PrintSocketHolder {
} }
public int prepareSocket() { public int prepareSocket() {
LoganManager.w_printer(TAG,"PrintTask doRequest sendData(data) --------------准备尝试连接打印机----------------->");
int create = createSocket(); int create = createSocket();
if (create != PrintSocketHolder.ERROR_0) if (create != PrintSocketHolder.ERROR_0) {
return create; return create;
return getOutputStream(); }
int result = getOutputStream();
LoganManager.w_printer(TAG,"PrintSocketHolder prepareSocket--------------连接打印机结果----------------->" + (result == ERROR_0 ? "成功" : "失败"));
return result;
} }
/** /**
* 销毁 * 销毁
*/ */
public int closeSocket() { public int closeSocket() {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket ----------关闭打印机连接-------->");
onPrinterStateChanged(STATE_4); onPrinterStateChanged(STATE_4);
boolean error = false; boolean error = false;
try { try {
...@@ -173,6 +185,7 @@ public class PrintSocketHolder { ...@@ -173,6 +185,7 @@ public class PrintSocketHolder {
out = null; out = null;
} }
} catch (IOException e) { } catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket out----------关闭打印机连接异常-------->");
out = null; out = null;
error = true; error = true;
} }
...@@ -182,6 +195,7 @@ public class PrintSocketHolder { ...@@ -182,6 +195,7 @@ public class PrintSocketHolder {
socket = null; socket = null;
} }
} catch (IOException e) { } catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket socket----------关闭打印机连接异常-------->");
socket = null; socket = null;
error = true; error = true;
} }
...@@ -191,6 +205,7 @@ public class PrintSocketHolder { ...@@ -191,6 +205,7 @@ public class PrintSocketHolder {
bluetoothSocket = null; bluetoothSocket = null;
} }
} catch (IOException e) { } catch (IOException e) {
LoganManager.w_printer(TAG,"PrintSocketHolder closeSocket bluetoothSocket----------关闭打印机连接异常-------->");
bluetoothSocket = null; bluetoothSocket = null;
error = true; error = true;
} }
......
...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.print.newprint; ...@@ -3,6 +3,7 @@ package com.gingersoft.gsa.cloud.print.newprint;
import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothDevice;
import android.os.AsyncTask; 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.database.bean.PrinterDeviceBean;
import com.gingersoft.gsa.cloud.print.PrintDataMaker; import com.gingersoft.gsa.cloud.print.PrintDataMaker;
import com.gingersoft.gsa.cloud.print.PrintExecutor; import com.gingersoft.gsa.cloud.print.PrintExecutor;
...@@ -12,6 +13,8 @@ import java.util.List; ...@@ -12,6 +13,8 @@ import java.util.List;
public class PrintUtil { public class PrintUtil {
protected final String TAG = this.getClass().getSimpleName();
private PrintSocketHolder holder; private PrintSocketHolder holder;
private int mReconnectTimes = 0; private int mReconnectTimes = 0;
private int time = 0; private int time = 0;
...@@ -30,6 +33,7 @@ public class PrintUtil { ...@@ -30,6 +33,7 @@ public class PrintUtil {
* @return 错误代码 * @return 错误代码
*/ */
private int doRequest(PrintDataMaker maker) { private int doRequest(PrintDataMaker maker) {
LoganManager.w_printer(TAG,"PrintTask doRequest");
if (mReconnectTimes == 0) { if (mReconnectTimes == 0) {
holder.onPrinterStateChanged(PrintSocketHolder.STATE_0); holder.onPrinterStateChanged(PrintSocketHolder.STATE_0);
List<byte[]> data = maker.getPrintData(); List<byte[]> data = maker.getPrintData();
...@@ -77,9 +81,11 @@ public class PrintUtil { ...@@ -77,9 +81,11 @@ public class PrintUtil {
private boolean sendData(List<byte[]> data) { private boolean sendData(List<byte[]> data) {
if (holder.sendData(data) == PrintSocketHolder.ERROR_0) { if (holder.sendData(data) == PrintSocketHolder.ERROR_0) {
LoganManager.w_printer(TAG,"PrintTask sendData(List<byte[]> data) -------------打印完成------------------>");
time = 0; time = 0;
return true; return true;
} else { } else {
LoganManager.w_printer(TAG,"PrintTask sendData(List<byte[]> data) -------------递归打印------------------>");
return prepareSocket() && sendData(data); return prepareSocket() && sendData(data);
} }
} }
......
...@@ -17,6 +17,7 @@ import com.gingersoft.gsa.cloud.common.utils.MoneyUtil; ...@@ -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.VibratorUtils;
import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils; import com.gingersoft.gsa.cloud.common.utils.toast.ToastUtils;
import com.gingersoft.gsa.cloud.pay.bean.PayMethod; 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.R;
import com.gingersoft.gsa.cloud.ui.adapter.BillMethodAdapter; import com.gingersoft.gsa.cloud.ui.adapter.BillMethodAdapter;
import com.gingersoft.gsa.cloud.ui.adapter.BillMoneyAdapter; import com.gingersoft.gsa.cloud.ui.adapter.BillMoneyAdapter;
...@@ -146,11 +147,6 @@ public class OrderPayView extends LinearLayout { ...@@ -146,11 +147,6 @@ public class OrderPayView extends LinearLayout {
return; return;
} }
if (mBillMoneyList.size() == MAX_COUNT_PAY_MEMBER) {
//替换掉第一个
mBillMoneyList.remove(0);
}
boolean useFreeServicePayMethod = isUseFreeServicePayMethod(method); boolean useFreeServicePayMethod = isUseFreeServicePayMethod(method);
if (useFreeServicePayMethod) { if (useFreeServicePayMethod) {
//有使用免服務費支付方式 重新獲取一遍尚欠金額 //有使用免服務費支付方式 重新獲取一遍尚欠金額
...@@ -183,9 +179,21 @@ public class OrderPayView extends LinearLayout { ...@@ -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);
}
}
//添加選中支付方式 if (mBillMoneyList.size() >= MAX_COUNT_PAY_MEMBER) {
mBillMoneyList.add(method); //替换掉第一个
mBillMoneyList.remove(0);
mBillMoneyList.add(method);
} else {
mBillMoneyList.add(method);
}
int notifyPosition = mBillMoneyList.size() - 1; int notifyPosition = mBillMoneyList.size() - 1;
mBillMoneyAdapter.setSelect_position(notifyPosition); mBillMoneyAdapter.setSelect_position(notifyPosition);
......
...@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager; ...@@ -15,6 +15,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.gingersoft.gsa.cloud.app.GsaCloudApplication;
import com.gingersoft.gsa.cloud.ui.R; import com.gingersoft.gsa.cloud.ui.R;
/** /**
...@@ -44,8 +45,13 @@ public class SearchKeyBoardView extends FrameLayout { ...@@ -44,8 +45,13 @@ public class SearchKeyBoardView extends FrameLayout {
} }
private void init(Context context) { private void init(Context context) {
for (int i = 0; i < 26; i++) { // for (int i = 0; i < 26; i++) {
en[i] = ((char) (65 + i)) + "";//输出A-Z 26个大写字母 // 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); View view = LayoutInflater.from(context).inflate(R.layout.ui_layout_search_keyborder, null);
......
...@@ -37,4 +37,6 @@ public class NoScrollRecyclerView extends RecyclerView { ...@@ -37,4 +37,6 @@ public class NoScrollRecyclerView extends RecyclerView {
int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST); int expandSpec = View.MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, View.MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec); super.onMeasure(widthMeasureSpec, expandSpec);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment