Parcourir la source

上传离线订单

ccc il y a 9 mois
Parent
commit
827d689e14

+ 1 - 0
.idea/misc.xml

@@ -26,6 +26,7 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_main.xml" value="0.2" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_sleep_setting.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_sn_setting.xml" value="0.12132725430597771" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_system_switch_setting.xml" value="0.2" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_system_text_setting.xml" value="0.176" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_system_time_setting.xml" value="0.2" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_update_password.xml" value="0.24947916666666667" />

Fichier diff supprimé car celui-ci est trop grand
+ 15667 - 14006
BaseLibrary/class_files.txt


+ 5 - 1
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/UpCoinOrderBean.java

@@ -5,8 +5,12 @@ import org.greenrobot.greendao.annotation.Generated;
 import org.greenrobot.greendao.annotation.Id;
 import org.greenrobot.greendao.annotation.Property;
 
+import java.io.Serializable;
+
 @Entity
-public class UpCoinOrderBean {
+public class UpCoinOrderBean implements Serializable{
+
+    private static final long serialVersionUID = 1L; // 显式声明 serialVersionUID
 
     @Id(autoincrement = true)
     private Long id;

+ 8 - 7
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java

@@ -15,6 +15,14 @@ import java.util.Map;
 public abstract class Global {
 
     /**
+     * 控制当前app是什么版本
+     * 0:线下shif
+     * 1:
+     * 2:国外线上
+     */
+    public static final int isVersions = 2;
+
+    /**
      * 用来初始化这个Global的类,不然会很卡。
      */
     public static boolean isTrue=false;
@@ -27,13 +35,6 @@ public abstract class Global {
      */
     public static boolean isLocal = false;
 
-    /**
-     * 控制当前app是什么版本
-     * 0:线下shif
-     * 1:
-     * 2:国外线上
-     */
-    public static final int isVersions = 1;
 
     /**
      * 信用卡支付方式user

+ 1 - 0
app/src/main/AndroidManifest.xml

@@ -68,6 +68,7 @@
         <activity android:name=".ui.operator.TextSettingActivity" />
         <activity android:name=".ui.operator.LocalAlarmClockActivity" />
         <activity android:name=".ui.operator.TimeSettingActivity" />
+        <activity android:name=".ui.operator.SwitchSettingActivity" />
 
         <activity
             android:name=".ui.operator.DeviceManagerActivity"

+ 50 - 4
app/src/main/java/com/bgy/autosale/RemoteSupportService.java

@@ -1,6 +1,5 @@
 package com.bgy.autosale;
 
-import static com.hboxs.base_library.constant.Name.ALARMCLOCK_TYPE;
 import static com.hboxs.base_library.util.ToastUtil.showToast;
 import static org.greenrobot.eventbus.EventBus.getDefault;
 
@@ -21,24 +20,24 @@ import android.text.TextUtils;
 import android.util.Log;
 
 import com.bgy.autosale.helpers.CommunicationHelper;
-import com.bgy.autosale.helpers.ErrorViewHelper;
 import com.bgy.autosale.interfaces.SendCallback;
 import com.bgy.autosale.payutil.AddAlarmRecordBean;
 import com.bgy.autosale.payutil.HeartbeatBean;
 import com.bgy.autosale.payutil.MQService;
 import com.bgy.autosale.payutil.PaymentMessage;
 import com.bgy.autosale.ui.MainActivity;
-import com.bgy.autosale.ui.consumer.IceCreamFragment;
 import com.bgy.autosale.ui.operator.LockActivity;
 import com.bgy.autosale.utils.ShellUtils;
 import com.example.offpay.event.OfflineMessageEvent;
 import com.example.offpay.ictrs232.SerialPortUtil;
 import com.example.offpay.wmdb.WeaverUtil;
+import com.example.spunsugar.db.UpCoinOrderBeanDao;
 import com.example.spunsugar.system.model.bean.AlarmClockBean;
 import com.google.gson.Gson;
 import com.hboxs.base_library.base.BaseApplication;
 import com.hboxs.base_library.base.IView;
 import com.hboxs.base_library.beans.PaperInvoiceBean;
+import com.hboxs.base_library.beans.db.UpCoinOrderBean;
 import com.hboxs.base_library.beans.enums.WeekEnum;
 import com.hboxs.base_library.constant.BaseConstant;
 import com.hboxs.base_library.constant.Global;
@@ -47,6 +46,7 @@ import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.event.ApiMessageEvent;
 import com.hboxs.base_library.event.ErrorApiMessageEvent;
 import com.hboxs.base_library.http.NoPayOrderStringApi;
+import com.hboxs.base_library.http.OrderApi;
 import com.hboxs.base_library.http.PayApi;
 import com.hboxs.base_library.http.exception.ApiException;
 import com.hboxs.base_library.http.exception.BaseException;
@@ -68,7 +68,6 @@ import com.igexin.sdk.PushManager;
 import com.orhanobut.hawk.Hawk;
 import com.orhanobut.logger.Logger;
 
-import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
@@ -78,6 +77,7 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -148,6 +148,10 @@ public class RemoteSupportService extends Service implements SendCallback {
                 sendApkVersion();
             }
         }, 20000);
+
+        if (Hawk.get(Name.AUTOUPLOADORDER, false)) {
+            upCoinOrder();
+        }
     }
 
 
@@ -1375,4 +1379,46 @@ public class RemoteSupportService extends Service implements SendCallback {
             timer = null;
         }
     }
+
+    /**
+     * 上传网络不好的时候存储在数据库的订单
+     */
+    public void upCoinOrder() {
+        UpCoinOrderBeanDao upCoinOrderBeanDao = BaseApplication.getBaseApplication().getDaoSession().getUpCoinOrderBeanDao();
+        List<UpCoinOrderBean> upCoinOrderBeans = upCoinOrderBeanDao.queryBuilder().list();
+        if (upCoinOrderBeans.size() <= 0) {
+            extracted(1000 * 60 * 5);
+            return;
+        }
+        UpCoinOrderBean selectedUpCoinOrderBean = upCoinOrderBeans.get(0); // 获取第一条数据
+        Gson gson = new Gson();
+        String json = gson.toJson(selectedUpCoinOrderBean);
+        Log.d(TAG, "upCoinOrder json: " + json);
+        RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json;charset=utf-8"), json);
+        addSubscription(OrderApi.api.saveCoinOrder(body).compose(HttpResultHandler.<String>transformer()),
+                new HttpResultObserver<String>(view, BaseApplication.getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        LogUtil.d(TAG, "upCoinOrder onNextupdateSuccess: " + o);
+                        upCoinOrderBeanDao.delete(selectedUpCoinOrderBean); // 删除第一条数据
+                        extracted(3000);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        LogUtil.d(TAG, "upCoinOrder onError: " + t.getMessage());
+                        super.onError(t);
+                        extracted(1000 * 60 * 5);
+                    }
+                });
+    }
+
+    private void extracted(int delayMillis) {
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                upCoinOrder();
+            }
+        }, delayMillis);
+    }
 }

+ 38 - 8
app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java

@@ -11,7 +11,6 @@ import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.AppCompatImageView;
@@ -79,9 +78,12 @@ import com.example.offpay.ictrs232.ByteUtils;
 import com.example.offpay.ictrs232.DataUtils;
 import com.example.offpay.nayax.CreditCardPresenter;
 import com.example.offpay.wmdb.WeaverUtil;
+import com.example.spunsugar.db.UpCoinOrderBeanDao;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
+import com.hboxs.base_library.base.BaseApplication;
 import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.beans.db.UpCoinOrderBean;
 import com.hboxs.base_library.callback.DialogClickListener;
 import com.hboxs.base_library.constant.BaseConstant;
 import com.hboxs.base_library.constant.Global;
@@ -1692,13 +1694,14 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 double totalSum = 0.0; // 用于存储总和
                 if (orderHelper.getOrderList().get(i).selectSpecBeans.size() > 0) {
                     for (int j = 0; j < orderHelper.getOrderList().get(i).selectSpecBeans.size(); j++) {
-                        totalSum += Double.parseDouble(orderHelper.getOrderList().get(j).selectSpecBeans.get(j).price);
+                        totalSum += Double.parseDouble(orderHelper.getOrderList().get(i).selectSpecBeans.get(j).price);
                     }
                     totalSum += shoppingCart.getPrice();
                 } else {
                     totalSum = shoppingCart.getPrice();
                 }
-                saveCoinOrder(shoppingCart.getShoppingName(), totalSum, payType, orderHelper.getOrderList().get(i).buyCount);
+                number=0;
+                saveCoinOrder(shoppingCart.getShoppingName(), totalSum, payType,localOrderSn, orderHelper.getOrderList().get(i).buyCount);
             }
         }
         LogUtils.logWrite("制作了" + orderHelper.generateMakingIceCream().size() + "杯冰淇淋");
@@ -2040,18 +2043,21 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
         }, 1000);
     }
+    int number = 0;
 
-    private void saveCoinOrder(String productName, double price, int payType, int count) {
+    private String localOrderSn = UUID.randomUUID().toString().replace("-", "");
+
+    private void saveCoinOrder(String productName, double price, int payType,String Sn, int productNumber) {
         CoinOrdeBean bean = new CoinOrdeBean();
         String sn = UUID.randomUUID().toString().replace("-", "");
         bean.setClientId(Heartbeat.deviceId);
         bean.setSn(sn);
         bean.setPayType(payType);
-        bean.setName(productName + "x" + count);
-        bean.setProductNumber(count);
+        bean.setName(productName + "x" + productNumber);
+        bean.setProductNumber(productNumber);
         bean.setPrice(price);
         bean.setCreateDate(getStackCompleteTime());
-        bean.setNo(productName + "-" + "I01" + "-" + count);
+        bean.setNo(productName + "-" + "I01" + "-" + productNumber);
         Gson gson = new Gson();
         String json = gson.toJson(bean);
         RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json;charset=utf-8"), json);
@@ -2066,11 +2072,35 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                     public void onError(Throwable t) {
                         super.onError(t);
                         Log.e(TAG, "Throwable: " + t.getMessage());
-
+                        number++;
+                        if (number <= 3) {
+                            new Handler().postDelayed(new Runnable() {
+                                @Override
+                                public void run() {
+                                    LogUtils.logWrite("order e:"+t.getMessage());
+                                    saveCoinOrder(productName, price, payType, sn, productNumber);
+                                }
+                            }, 3000);
+                        }else if (Hawk.get(Name.AUTOUPLOADORDER, false)) {
+                            saveErrorOrder(productName, price, payType, sn, productNumber, getStackCompleteTime());
+                        }
                     }
                 });
     }
 
+    public void saveErrorOrder(String productName, double price, int payType, String sn, int productNumber ,String time){
+        UpCoinOrderBeanDao upCoinOrderBeanDao = BaseApplication.getBaseApplication().getDaoSession().getUpCoinOrderBeanDao();
+        UpCoinOrderBean upCoinOrderBean=new UpCoinOrderBean();
+        upCoinOrderBean.setClientId(Heartbeat.deviceId);
+        upCoinOrderBean.setSn(sn);
+        upCoinOrderBean.setProductNumber(productNumber);
+        upCoinOrderBean.setPayType(payType);
+        upCoinOrderBean.setName(productName);
+        upCoinOrderBean.setPrice(price);
+        upCoinOrderBean.setCreateDate(time);
+        upCoinOrderBeanDao.insert(upCoinOrderBean);
+    }
+
     private String getStackCompleteTime() {
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         String sd = sdf.format(new Date(Long.parseLong(String.valueOf(System.currentTimeMillis()))));

+ 67 - 0
app/src/main/java/com/bgy/autosale/ui/operator/SwitchSettingActivity.java

@@ -0,0 +1,67 @@
+package com.bgy.autosale.ui.operator;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.text.InputType;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.RadioButton;
+import android.widget.RadioGroup;
+
+import com.bgy.autosale.R;
+import com.bgy.autosale.ui.base.BaseScanGunActivity;
+import com.hboxs.base_library.constant.Name;
+import com.orhanobut.hawk.Hawk;
+
+/**
+ * Created by cjx on 2020-09-08
+ * 说明:
+ */
+public class SwitchSettingActivity extends BaseScanGunActivity implements View.OnClickListener,RadioGroup.OnCheckedChangeListener {
+
+
+    RadioButton rbAutoUploadYes,rbAutoUploadNo;
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_system_switch_setting);
+        findViewById(R.id.setting_back).setOnClickListener(this);
+
+
+        RadioGroup rgAutoUpload = findViewById(R.id.rg_auto_upload);
+        rgAutoUpload.setOnCheckedChangeListener(this);
+
+        rbAutoUploadYes = findViewById(R.id.rb_auto_upload_yes);
+        rbAutoUploadNo = findViewById(R.id.rb_auto_upload_no);
+
+        Boolean alwaysIdle = Hawk.get(Name.AUTOUPLOADORDER, false);
+        if (alwaysIdle) {
+            rbAutoUploadYes.setChecked(true);
+        } else {
+            rbAutoUploadNo.setChecked(true);
+        }
+    }
+    @Override
+    public void onCheckedChanged(RadioGroup group, int checkedId) {
+        if (checkedId == R.id.rb_auto_upload_yes) {
+            Hawk.put(Name.AUTOUPLOADORDER, true);
+        } else if (checkedId == R.id.rb_auto_upload_no) {
+            Hawk.put(Name.AUTOUPLOADORDER, false);
+        }
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.setting_back) {
+            finish();
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+
+
+}

+ 13 - 1
app/src/main/java/com/bgy/autosale/ui/operator/fragments/OtherSettingFragment.java

@@ -19,6 +19,7 @@ import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
 import com.bgy.autosale.ui.base.BaseFragment;
 import com.bgy.autosale.ui.operator.LocalAlarmClockActivity;
+import com.bgy.autosale.ui.operator.SwitchSettingActivity;
 import com.bgy.autosale.ui.operator.TextSettingActivity;
 import com.bgy.autosale.ui.operator.TimeSettingActivity;
 import com.bgy.autosale.utils.SPUtils;
@@ -38,6 +39,7 @@ public class OtherSettingFragment extends BaseFragment {
     private final int SET_TEXT = 0;
     private final int ALARM_CLOCK = 1;
     private final int TIME_SET = 2;
+    private final int SWITCH_SET = 3;
 
     @Override
     public int getViewId() {
@@ -57,7 +59,7 @@ public class OtherSettingFragment extends BaseFragment {
         list.add(initAlarmClock());
         list.add(initSetMsg());
         list.add(initTimeSet());
-
+        list.add(initFunctionSwitchSet());
         RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
         OtherAdapter adapter = new OtherAdapter(list, getContext());
@@ -88,6 +90,14 @@ public class OtherSettingFragment extends BaseFragment {
         return itemBean;
     }
 
+    private OtherBean initFunctionSwitchSet() {
+        OtherBean itemBean = new OtherBean(SWITCH_SET);
+        itemBean.title = getString(R.string.function_switch_setting);
+        itemBean.button = R.string.button_update;
+        itemBean.buttonEnable = true;
+        return itemBean;
+    }
+
     private static long lastClickTime = 0;
 
     public static boolean isFastDoubleShake() {
@@ -172,6 +182,8 @@ public class OtherSettingFragment extends BaseFragment {
                 case TIME_SET:
                     gotoActivity(TimeSettingActivity.class);
                     break;
+                case SWITCH_SET:
+                    gotoActivity(SwitchSettingActivity.class);
             }
         }
 

+ 76 - 0
app/src/main/res/layout/activity_system_switch_setting.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusable="true"
+    android:focusableInTouchMode="true">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <android.support.v7.widget.AppCompatImageView
+            android:id="@+id/setting_back"
+            android:layout_width="@dimen/dp_35"
+            android:layout_height="@dimen/dp_35"
+            android:layout_marginStart="@dimen/dp_26"
+            android:layout_marginTop="@dimen/dp_26"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
+            app:srcCompat="@drawable/vector_btn_back" />
+    </RelativeLayout>
+
+    <LinearLayout
+        android:layout_marginTop="@dimen/dp_20"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        tools:ignore="MissingConstraints">
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:orientation="vertical"
+            tools:ignore="MissingConstraints">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/dp_8"
+                android:text="@string/automatically_upload_orders"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14"
+                android:textStyle="bold" />
+
+            <RadioGroup
+                android:id="@+id/rg_auto_upload"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <RadioButton
+                    android:id="@+id/rb_auto_upload_yes"
+                    android:layout_width="@dimen/dp_60"
+                    android:layout_height="@dimen/dp_26"
+                    android:gravity="center"
+                    android:text="@string/setting_switch_on"
+                    android:textColor="#576478"
+                    android:textSize="@dimen/sp_8" />
+
+                <RadioButton
+                    android:id="@+id/rb_auto_upload_no"
+                    android:layout_width="@dimen/dp_60"
+                    android:layout_height="@dimen/dp_26"
+                    android:layout_marginLeft="@dimen/dp_20"
+                    android:gravity="center"
+                    android:text="@string/setting_switch_off"
+                    android:textColor="#576478"
+                    android:textSize="@dimen/sp_8" />
+            </RadioGroup>
+        </LinearLayout>
+    </LinearLayout>
+
+</android.support.constraint.ConstraintLayout>

+ 1 - 1
app/src/main/res/values-es/strings.xml

@@ -61,7 +61,7 @@
     <string name="flavor_original">Helado de vainilla</string>
     <string name="flavor_original_hw">Servicio suave y natural</string>
     <string name="flavor_multi">Helado de múltiples sabores</string>
-    <string name="flavor_sauce">Jarabe +</string>
+    <string name="flavor_sauce">Salsa +</string>
     <string name="flavor_kernel">+ Ingredientes</string>
     <string name="shop_cart_add">Agregar al \ncarrito</string>
     <string name="make_now">Creación</string>

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -502,6 +502,7 @@
     <string name="nayax_pay_icon_choice">Nayax支付图标切换</string>
     <string name="ic_icon_text">冰淇淋图标文字更改</string>
     <string name="credit_card_text_description">信用卡文本描述</string>
+    <string name="function_switch_setting">功能设置开关</string>
 
 </resources>
 <!--中文-->

+ 1 - 1
config.gradle

@@ -5,7 +5,7 @@ ext {
             "minSdkVersion"                : 19,
             "targetSdkVersion"             : 28,
             "versionCode"                  : 110,
-            "versionName"                  : "1.0.34",//版本号修改
+            "versionName"                  : "1.0.37",//版本号修改
 
             "androidSupport"               : "28.0.0",
             "constraint-layout"            : "1.1.3",

BIN
jniLibs/armeabi-v7a/libSerialPortJni.so


Fichier diff supprimé car celui-ci est trop grand
+ 9141 - 8849
module_offpay/class_files.txt