Parcourir la source

第一次提交

ccc il y a 7 mois
Parent
commit
9b1279258e
100 fichiers modifiés avec 8007 ajouts et 0 suppressions
  1. 13 0
      .gitignore
  2. 1 0
      BaseLibrary/.gitignore
  3. 123 0
      BaseLibrary/build.gradle
  4. BIN
      BaseLibrary/libs/ZtlApi.jar
  5. BIN
      BaseLibrary/libs/armeabi/liblbs.so
  6. BIN
      BaseLibrary/libs/btsdk.jar
  7. BIN
      BaseLibrary/libs/commons-codec-1.15.jar
  8. BIN
      BaseLibrary/libs/tbs_sdk_thirdapp_v3.6.0.1371_43624_sharewithdownload_withoutGame_obfs_20181106_121046.jar
  9. BIN
      BaseLibrary/libs/zixing-core-3.2.0.jar
  10. 46 0
      BaseLibrary/proguard-rules.pro
  11. 13 0
      BaseLibrary/src/main/AndroidManifest.xml
  12. 149 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/BillBeanDao.java
  13. 111 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/DaoMaster.java
  14. 118 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/DaoSession.java
  15. 169 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/LocalOrderBeanDao.java
  16. 147 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/OrderBeanDao.java
  17. 211 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/UpCoinOrderBeanDao.java
  18. 149 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/WarringBeanDao.java
  19. 199 0
      BaseLibrary/src/main/java/com/example/spunsugar/db/ZeDianOrderBeanDao.java
  20. 136 0
      BaseLibrary/src/main/java/com/example/spunsugar/http/bean/GetAdBean.java
  21. 89 0
      BaseLibrary/src/main/java/com/example/spunsugar/system/model/bean/AlarmClockBean.java
  22. 86 0
      BaseLibrary/src/main/java/com/example/spunsugar/system/model/bean/PriceBean.java
  23. 112 0
      BaseLibrary/src/main/java/com/example/spunsugar/user/model/bean/BaseGoodsBean.java
  24. 11 0
      BaseLibrary/src/main/java/com/example/spunsugar/user/model/bean/GoodsBean.java
  25. 4 0
      BaseLibrary/src/main/java/com/hboxs/base_library/adapter/BaseHomeAdapter.java
  26. 170 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseApplication.java
  27. 12 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseEntity.java
  28. 80 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BasePresenter.java
  29. 16 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseTask.java
  30. 85 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseWebViewActivity.java
  31. 61 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/DynamicActivity.java
  32. 39 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/DynamicFragment.java
  33. 9 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/IPresenter.java
  34. 6 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/IView.java
  35. 8 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/ModuleInitializer.java
  36. 313 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/StaticActivity.java
  37. 95 0
      BaseLibrary/src/main/java/com/hboxs/base_library/base/StaticFragment.java
  38. 44 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/AlarmClock.java
  39. 32 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/AlarmClock2.java
  40. 35 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindCoinOrderBean.java
  41. 132 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindCoinOrderDetailBean.java
  42. 36 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindOrderBean.java
  43. 95 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindOrderDetailBean.java
  44. 14 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/IAdvancedModel.java
  45. 16 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/IUserHomeModel.java
  46. 93 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/PaperInvoiceBean.java
  47. 44 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/ParameterBean.java
  48. 63 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/ProductsBean.java
  49. 99 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/UserHomeItemModel.java
  50. 70 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/BillBean.java
  51. 36 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/GreenDaoOpenHelper.java
  52. 106 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/LocalOrderBean.java
  53. 318 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/MigrationHelper.java
  54. 67 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/OrderBean.java
  55. 149 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/UpCoinOrderBean.java
  56. 59 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/WarringBean.java
  57. 133 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/ZeDianOrderBean.java
  58. 26 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/enums/AlarmClockTypeEnum.java
  59. 29 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/enums/WeekEnum.java
  60. 12 0
      BaseLibrary/src/main/java/com/hboxs/base_library/callback/DialogClickListener.java
  61. 93 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/BaseConstant.java
  62. 251 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java
  63. 39 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Heartbeat.java
  64. 12 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/MMKVName.java
  65. 16 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/MMKVNameValue.java
  66. 355 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Name.java
  67. 325 0
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/ProductAbout.java
  68. 248 0
      BaseLibrary/src/main/java/com/hboxs/base_library/dialog/NormalDialog.java
  69. 162 0
      BaseLibrary/src/main/java/com/hboxs/base_library/dialog/SwitchDialog.java
  70. 36 0
      BaseLibrary/src/main/java/com/hboxs/base_library/entity/EventEntity.java
  71. 27 0
      BaseLibrary/src/main/java/com/hboxs/base_library/entity/FlowerTypeBean.java
  72. 42 0
      BaseLibrary/src/main/java/com/hboxs/base_library/event/ApiMessageEvent.java
  73. 57 0
      BaseLibrary/src/main/java/com/hboxs/base_library/event/DownLoadMessageEvent.java
  74. 84 0
      BaseLibrary/src/main/java/com/hboxs/base_library/event/Message.java
  75. 90 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderApi.java
  76. 250 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java
  77. 66 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/OrderApi.java
  78. 85 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/PayApi.java
  79. 12 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/ApiException.java
  80. 96 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/BaseException.java
  81. 100 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/ExceptionFactory.java
  82. 50 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/HttpCacheInterceptor.java
  83. 26 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/LoggerInterceptor.java
  84. 39 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/RequestHeaderInterceptor.java
  85. 37 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/ErrorObserver.java
  86. 43 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/HttpResultNotActivityObserver.java
  87. 55 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/HttpResultObserver.java
  88. 406 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/request/Http.java
  89. 48 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpJapanResultHandler.java
  90. 48 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpResult.java
  91. 55 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpResultHandler.java
  92. 53 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpStringResultHandler.java
  93. 36 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpSweepResult.java
  94. 45 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpSweepResultHandler.java
  95. 38 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpTimingSwitcherResult.java
  96. 45 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpTimingSwitcherResultHandler.java
  97. 11 0
      BaseLibrary/src/main/java/com/hboxs/base_library/listener/DialogClickListener.java
  98. 19 0
      BaseLibrary/src/main/java/com/hboxs/base_library/listener/ItemMaintainClickListener.java
  99. 18 0
      BaseLibrary/src/main/java/com/hboxs/base_library/listener/RecyclerItemListener.java
  100. 0 0
      BaseLibrary/src/main/java/com/hboxs/base_library/receiver/NetWorkReceiver.java

+ 13 - 0
.gitignore

@@ -0,0 +1,13 @@
+.cxx
+*.iml
+.gradle
+/local.properties
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+
+.idea/caches/

+ 1 - 0
BaseLibrary/.gitignore

@@ -0,0 +1 @@
+/build

+ 123 - 0
BaseLibrary/build.gradle

@@ -0,0 +1,123 @@
+apply plugin: 'com.android.library'
+//apply plugin: 'com.jakewharton.butterknife'
+// apply greendao plugin
+apply plugin: 'org.greenrobot.greendao'//greendao插件
+android {
+    compileSdkVersion rootProject.ext.android["compileSdkVersion"]
+    defaultConfig {
+        minSdkVersion rootProject.ext.android["minSdkVersion"]
+        targetSdkVersion rootProject.ext.android["targetSdkVersion"]
+        versionCode rootProject.ext.android["versionCode"]
+        versionName rootProject.ext.android["versionName"]
+        javaCompileOptions {
+            annotationProcessorOptions {
+                arguments = [ moduleName : project.getName() ]
+            }
+        }
+        multiDexEnabled true
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            //  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+            consumerProguardFiles  'proguard-rules.pro'
+            debuggable false
+            buildConfigField 'Boolean', 'isDebug', 'true'
+        }
+        debug{
+            buildConfigField 'Boolean', 'isDebug', 'true'
+        }
+    }
+    greendao {
+        //数据库schema版本,也可以理解为数据库版本号
+        schemaVersion 4
+        //设置DaoMaster 、DaoSession、Dao包名
+        daoPackage 'com.example.spunsugar.db'
+        //设置DaoMaster 、DaoSession、Dao目录
+        targetGenDir 'src/main/java'
+        //设置生成单元测试目录
+        //    targetGenDirTest
+        //设置自动生成单元测试用例
+        //    generateTests
+    }
+
+    sourceSets {
+        main {
+            jniLibs.srcDirs = ['libs']
+        }
+    }
+
+
+    dataBinding {
+        enabled true
+    }
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
+}
+
+dependencies {
+    implementation fileTree(include: ['*.jar'], dir: 'libs')
+    //Android Library
+    api rootProject.ext.dependencies["appcompat-v7"]
+    api rootProject.ext.dependencies["design"]
+    api rootProject.ext.dependencies["recyclerview"]
+    api rootProject.ext.dependencies["cardview"]
+    api rootProject.ext.dependencies["constraint-layout"]
+    //RxJava
+    api rootProject.ext.dependencies["rxjava"]
+    api rootProject.ext.dependencies["rxandroid"]
+    //EventBus
+    api rootProject.ext.dependencies["eventbus"]
+    //RxPermissions
+    //    api rootProject.ext.dependencies["rxpermissions"]
+    //Retrofit
+    api rootProject.ext.dependencies["retrofit"]
+    api rootProject.ext.dependencies["converter-gson"]
+    api rootProject.ext.dependencies["adapter-rxjava2"]
+    api rootProject.ext.dependencies["logging-interceptor"]
+    //ButterKnife
+    //    api rootProject.ext.dependencies["butterknife"]
+    //    annotationProcessor rootProject.ext.dependencies["butterknife-compiler"]
+    //BaseAdapter
+    //    api rootProject.ext.dependencies["BaseRecyclerViewAdapterHelper"]
+    //Glide
+    api rootProject.ext.dependencies["glide"]
+    api files('libs\\zixing-core-3.2.0.jar')
+    api files('libs/btsdk.jar')
+    api project(path: ':keboardLibrary')
+    annotationProcessor rootProject.ext.dependencies["glide-compiler"]
+    //glide-transformations
+    api rootProject.ext.dependencies["glide-transformations"]
+    //Hawk
+    api rootProject.ext.dependencies["hawk"]
+    /**
+     *     为"单Activity + 多Fragment的架构","多模块Activity + 多Fragment的架构"而生,帮你简化使用过程,轻松解决各种复杂嵌套等问题
+     */
+    api rootProject.ext.dependencies["fragmentation"]
+    //MultiDex 解决64k限制
+    api rootProject.ext.dependencies["multidex"]
+    //Shape
+    api rootProject.ext.dependencies["shape"]
+    //logger
+    api rootProject.ext.dependencies["logger"]
+    //loading
+    //    api rootProject.ext.dependencies["zloading"]
+    implementation 'org.apache.commons:commons-lang3:3.3.2'
+    implementation 'com.squareup.retrofit2:converter-scalars:2.0.0'
+//    implementation files('libs/commons-codec-1.15.jar')
+    api 'com.alibaba:arouter-api:1.3.1'
+    annotationProcessor 'com.alibaba:arouter-compiler:1.1.4'
+    api rootProject.ext.dependencies["MPAndroidChart"]
+    api rootProject.ext.dependencies["greendao"]
+    implementation group: 'net.sourceforge.jexcelapi', name: 'jxl', version: '2.6.12'
+    api project(':zloadingview')
+    api files('libs/ZtlApi.jar')
+    api 'com.sdwfqin.cbt:cbt:1.1.1'
+    api 'com.tencent:mmkv:1.3.3' //api配置 可以让下面模块的都可以使用 ,implementation就不行 why
+
+}
+

BIN
BaseLibrary/libs/ZtlApi.jar


BIN
BaseLibrary/libs/armeabi/liblbs.so


BIN
BaseLibrary/libs/btsdk.jar


BIN
BaseLibrary/libs/commons-codec-1.15.jar


BIN
BaseLibrary/libs/tbs_sdk_thirdapp_v3.6.0.1371_43624_sharewithdownload_withoutGame_obfs_20181106_121046.jar


BIN
BaseLibrary/libs/zixing-core-3.2.0.jar


+ 46 - 0
BaseLibrary/proguard-rules.pro

@@ -0,0 +1,46 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+#   http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+#   public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
+-keep public class com.hboxs.base_library.http.response.HttpResult
+
+# Retrofit
+-dontnote retrofit2.Platform
+-dontnote retrofit2.Platform$IOS$MainThreadExecutor
+-dontwarn retrofit2.Platform$Java8
+-keepattributes Signature
+-keepattributes Exceptions
+
+# okhttp
+-dontwarn okio.**
+
+
+# RxJava RxAndroid
+-dontwarn sun.misc.**
+-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
+    long producerIndex;
+    long consumerIndex;
+}
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
+    rx.internal.util.atomic.LinkedQueueNode producerNode;
+}
+-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
+    rx.internal.util.atomic.LinkedQueueNode consumerNode;
+}

+ 13 - 0
BaseLibrary/src/main/AndroidManifest.xml

@@ -0,0 +1,13 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.hboxs.base_library">
+
+    <application android:supportsRtl="true">
+
+        <!--适配全面屏-->
+        <meta-data
+            android:name="android.max_aspect"
+            android:value="2.1" />
+
+    </application>
+
+</manifest>

+ 149 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/BillBeanDao.java

@@ -0,0 +1,149 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.BillBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "BILL_BEAN".
+*/
+public class BillBeanDao extends AbstractDao<BillBean, Long> {
+
+    public static final String TABLENAME = "BILL_BEAN";
+
+    /**
+     * Properties of entity BillBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property Time = new Property(1, long.class, "time", false, "TIME");
+        public final static Property ThingError = new Property(2, String.class, "thingError", false, "ERROR");
+        public final static Property Remark = new Property(3, String.class, "remark", false, "REMARK");
+    }
+
+
+    public BillBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public BillBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"BILL_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"TIME\" INTEGER NOT NULL ," + // 1: time
+                "\"ERROR\" TEXT," + // 2: thingError
+                "\"REMARK\" TEXT);"); // 3: remark
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"BILL_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, BillBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+        stmt.bindLong(2, entity.getTime());
+ 
+        String thingError = entity.getThingError();
+        if (thingError != null) {
+            stmt.bindString(3, thingError);
+        }
+ 
+        String remark = entity.getRemark();
+        if (remark != null) {
+            stmt.bindString(4, remark);
+        }
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, BillBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+        stmt.bindLong(2, entity.getTime());
+ 
+        String thingError = entity.getThingError();
+        if (thingError != null) {
+            stmt.bindString(3, thingError);
+        }
+ 
+        String remark = entity.getRemark();
+        if (remark != null) {
+            stmt.bindString(4, remark);
+        }
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public BillBean readEntity(Cursor cursor, int offset) {
+        BillBean entity = new BillBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.getLong(offset + 1), // time
+            cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // thingError
+            cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // remark
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, BillBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setTime(cursor.getLong(offset + 1));
+        entity.setThingError(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
+        entity.setRemark(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(BillBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(BillBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(BillBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 111 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/DaoMaster.java

@@ -0,0 +1,111 @@
+package com.example.spunsugar.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteDatabase.CursorFactory;
+import android.util.Log;
+
+import org.greenrobot.greendao.AbstractDaoMaster;
+import org.greenrobot.greendao.database.StandardDatabase;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseOpenHelper;
+import org.greenrobot.greendao.identityscope.IdentityScopeType;
+
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/**
+ * Master of DAO (schema version 4): knows all DAOs.
+ */
+public class DaoMaster extends AbstractDaoMaster {
+    public static final int SCHEMA_VERSION = 4;
+
+    /** Creates underlying database table using DAOs. */
+    public static void createAllTables(Database db, boolean ifNotExists) {
+        BillBeanDao.createTable(db, ifNotExists);
+        LocalOrderBeanDao.createTable(db, ifNotExists);
+        OrderBeanDao.createTable(db, ifNotExists);
+        UpCoinOrderBeanDao.createTable(db, ifNotExists);
+        WarringBeanDao.createTable(db, ifNotExists);
+        ZeDianOrderBeanDao.createTable(db, ifNotExists);
+    }
+
+    /** Drops underlying database table using DAOs. */
+    public static void dropAllTables(Database db, boolean ifExists) {
+        BillBeanDao.dropTable(db, ifExists);
+        LocalOrderBeanDao.dropTable(db, ifExists);
+        OrderBeanDao.dropTable(db, ifExists);
+        UpCoinOrderBeanDao.dropTable(db, ifExists);
+        WarringBeanDao.dropTable(db, ifExists);
+        ZeDianOrderBeanDao.dropTable(db, ifExists);
+    }
+
+    /**
+     * WARNING: Drops all table on Upgrade! Use only during development.
+     * Convenience method using a {@link DevOpenHelper}.
+     */
+    public static DaoSession newDevSession(Context context, String name) {
+        Database db = new DevOpenHelper(context, name).getWritableDb();
+        DaoMaster daoMaster = new DaoMaster(db);
+        return daoMaster.newSession();
+    }
+
+    public DaoMaster(SQLiteDatabase db) {
+        this(new StandardDatabase(db));
+    }
+
+    public DaoMaster(Database db) {
+        super(db, SCHEMA_VERSION);
+        registerDaoClass(BillBeanDao.class);
+        registerDaoClass(LocalOrderBeanDao.class);
+        registerDaoClass(OrderBeanDao.class);
+        registerDaoClass(UpCoinOrderBeanDao.class);
+        registerDaoClass(WarringBeanDao.class);
+        registerDaoClass(ZeDianOrderBeanDao.class);
+    }
+
+    public DaoSession newSession() {
+        return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);
+    }
+
+    public DaoSession newSession(IdentityScopeType type) {
+        return new DaoSession(db, type, daoConfigMap);
+    }
+
+    /**
+     * Calls {@link #createAllTables(Database, boolean)} in {@link #onCreate(Database)} -
+     */
+    public static abstract class OpenHelper extends DatabaseOpenHelper {
+        public OpenHelper(Context context, String name) {
+            super(context, name, SCHEMA_VERSION);
+        }
+
+        public OpenHelper(Context context, String name, CursorFactory factory) {
+            super(context, name, factory, SCHEMA_VERSION);
+        }
+
+        @Override
+        public void onCreate(Database db) {
+            Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION);
+            createAllTables(db, false);
+        }
+    }
+
+    /** WARNING: Drops all table on Upgrade! Use only during development. */
+    public static class DevOpenHelper extends OpenHelper {
+        public DevOpenHelper(Context context, String name) {
+            super(context, name);
+        }
+
+        public DevOpenHelper(Context context, String name, CursorFactory factory) {
+            super(context, name, factory);
+        }
+
+        @Override
+        public void onUpgrade(Database db, int oldVersion, int newVersion) {
+            Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");
+            dropAllTables(db, true);
+            onCreate(db);
+        }
+    }
+
+}

+ 118 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/DaoSession.java

@@ -0,0 +1,118 @@
+package com.example.spunsugar.db;
+
+import java.util.Map;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.AbstractDaoSession;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.identityscope.IdentityScopeType;
+import org.greenrobot.greendao.internal.DaoConfig;
+
+import com.hboxs.base_library.beans.db.BillBean;
+import com.hboxs.base_library.beans.db.LocalOrderBean;
+import com.hboxs.base_library.beans.db.OrderBean;
+import com.hboxs.base_library.beans.db.UpCoinOrderBean;
+import com.hboxs.base_library.beans.db.WarringBean;
+import com.hboxs.base_library.beans.db.ZeDianOrderBean;
+
+import com.example.spunsugar.db.BillBeanDao;
+import com.example.spunsugar.db.LocalOrderBeanDao;
+import com.example.spunsugar.db.OrderBeanDao;
+import com.example.spunsugar.db.UpCoinOrderBeanDao;
+import com.example.spunsugar.db.WarringBeanDao;
+import com.example.spunsugar.db.ZeDianOrderBeanDao;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+
+/**
+ * {@inheritDoc}
+ * 
+ * @see org.greenrobot.greendao.AbstractDaoSession
+ */
+public class DaoSession extends AbstractDaoSession {
+
+    private final DaoConfig billBeanDaoConfig;
+    private final DaoConfig localOrderBeanDaoConfig;
+    private final DaoConfig orderBeanDaoConfig;
+    private final DaoConfig upCoinOrderBeanDaoConfig;
+    private final DaoConfig warringBeanDaoConfig;
+    private final DaoConfig zeDianOrderBeanDaoConfig;
+
+    private final BillBeanDao billBeanDao;
+    private final LocalOrderBeanDao localOrderBeanDao;
+    private final OrderBeanDao orderBeanDao;
+    private final UpCoinOrderBeanDao upCoinOrderBeanDao;
+    private final WarringBeanDao warringBeanDao;
+    private final ZeDianOrderBeanDao zeDianOrderBeanDao;
+
+    public DaoSession(Database db, IdentityScopeType type, Map<Class<? extends AbstractDao<?, ?>>, DaoConfig>
+            daoConfigMap) {
+        super(db);
+
+        billBeanDaoConfig = daoConfigMap.get(BillBeanDao.class).clone();
+        billBeanDaoConfig.initIdentityScope(type);
+
+        localOrderBeanDaoConfig = daoConfigMap.get(LocalOrderBeanDao.class).clone();
+        localOrderBeanDaoConfig.initIdentityScope(type);
+
+        orderBeanDaoConfig = daoConfigMap.get(OrderBeanDao.class).clone();
+        orderBeanDaoConfig.initIdentityScope(type);
+
+        upCoinOrderBeanDaoConfig = daoConfigMap.get(UpCoinOrderBeanDao.class).clone();
+        upCoinOrderBeanDaoConfig.initIdentityScope(type);
+
+        warringBeanDaoConfig = daoConfigMap.get(WarringBeanDao.class).clone();
+        warringBeanDaoConfig.initIdentityScope(type);
+
+        zeDianOrderBeanDaoConfig = daoConfigMap.get(ZeDianOrderBeanDao.class).clone();
+        zeDianOrderBeanDaoConfig.initIdentityScope(type);
+
+        billBeanDao = new BillBeanDao(billBeanDaoConfig, this);
+        localOrderBeanDao = new LocalOrderBeanDao(localOrderBeanDaoConfig, this);
+        orderBeanDao = new OrderBeanDao(orderBeanDaoConfig, this);
+        upCoinOrderBeanDao = new UpCoinOrderBeanDao(upCoinOrderBeanDaoConfig, this);
+        warringBeanDao = new WarringBeanDao(warringBeanDaoConfig, this);
+        zeDianOrderBeanDao = new ZeDianOrderBeanDao(zeDianOrderBeanDaoConfig, this);
+
+        registerDao(BillBean.class, billBeanDao);
+        registerDao(LocalOrderBean.class, localOrderBeanDao);
+        registerDao(OrderBean.class, orderBeanDao);
+        registerDao(UpCoinOrderBean.class, upCoinOrderBeanDao);
+        registerDao(WarringBean.class, warringBeanDao);
+        registerDao(ZeDianOrderBean.class, zeDianOrderBeanDao);
+    }
+    
+    public void clear() {
+        billBeanDaoConfig.clearIdentityScope();
+        localOrderBeanDaoConfig.clearIdentityScope();
+        orderBeanDaoConfig.clearIdentityScope();
+        upCoinOrderBeanDaoConfig.clearIdentityScope();
+        warringBeanDaoConfig.clearIdentityScope();
+        zeDianOrderBeanDaoConfig.clearIdentityScope();
+    }
+
+    public BillBeanDao getBillBeanDao() {
+        return billBeanDao;
+    }
+
+    public LocalOrderBeanDao getLocalOrderBeanDao() {
+        return localOrderBeanDao;
+    }
+
+    public OrderBeanDao getOrderBeanDao() {
+        return orderBeanDao;
+    }
+
+    public UpCoinOrderBeanDao getUpCoinOrderBeanDao() {
+        return upCoinOrderBeanDao;
+    }
+
+    public WarringBeanDao getWarringBeanDao() {
+        return warringBeanDao;
+    }
+
+    public ZeDianOrderBeanDao getZeDianOrderBeanDao() {
+        return zeDianOrderBeanDao;
+    }
+
+}

+ 169 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/LocalOrderBeanDao.java

@@ -0,0 +1,169 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.LocalOrderBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "LOCAL_ORDER_BEAN".
+*/
+public class LocalOrderBeanDao extends AbstractDao<LocalOrderBean, Long> {
+
+    public static final String TABLENAME = "LOCAL_ORDER_BEAN";
+
+    /**
+     * Properties of entity LocalOrderBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property Name = new Property(1, String.class, "name", false, "name");
+        public final static Property Price = new Property(2, double.class, "price", false, "price");
+        public final static Property PayType = new Property(3, int.class, "payType", false, "paytype");
+        public final static Property Sn = new Property(4, String.class, "sn", false, "sn");
+        public final static Property Time = new Property(5, String.class, "time", false, "time");
+    }
+
+
+    public LocalOrderBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public LocalOrderBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"LOCAL_ORDER_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"name\" TEXT," + // 1: name
+                "\"price\" REAL NOT NULL ," + // 2: price
+                "\"paytype\" INTEGER NOT NULL ," + // 3: payType
+                "\"sn\" TEXT," + // 4: sn
+                "\"time\" TEXT);"); // 5: time
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"LOCAL_ORDER_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, LocalOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(2, name);
+        }
+        stmt.bindDouble(3, entity.getPrice());
+        stmt.bindLong(4, entity.getPayType());
+ 
+        String sn = entity.getSn();
+        if (sn != null) {
+            stmt.bindString(5, sn);
+        }
+ 
+        String time = entity.getTime();
+        if (time != null) {
+            stmt.bindString(6, time);
+        }
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, LocalOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(2, name);
+        }
+        stmt.bindDouble(3, entity.getPrice());
+        stmt.bindLong(4, entity.getPayType());
+ 
+        String sn = entity.getSn();
+        if (sn != null) {
+            stmt.bindString(5, sn);
+        }
+ 
+        String time = entity.getTime();
+        if (time != null) {
+            stmt.bindString(6, time);
+        }
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public LocalOrderBean readEntity(Cursor cursor, int offset) {
+        LocalOrderBean entity = new LocalOrderBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // name
+            cursor.getDouble(offset + 2), // price
+            cursor.getInt(offset + 3), // payType
+            cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // sn
+            cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5) // time
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, LocalOrderBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setName(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
+        entity.setPrice(cursor.getDouble(offset + 2));
+        entity.setPayType(cursor.getInt(offset + 3));
+        entity.setSn(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
+        entity.setTime(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(LocalOrderBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(LocalOrderBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(LocalOrderBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 147 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/OrderBeanDao.java

@@ -0,0 +1,147 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.OrderBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "ORDER_BEAN".
+*/
+public class OrderBeanDao extends AbstractDao<OrderBean, Long> {
+
+    public static final String TABLENAME = "ORDER_BEAN";
+
+    /**
+     * Properties of entity OrderBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property Name = new Property(1, String.class, "name", false, "NAME");
+        public final static Property Type = new Property(2, int.class, "type", false, "TYPE");
+        public final static Property Price = new Property(3, double.class, "price", false, "PRICE");
+        public final static Property Time = new Property(4, long.class, "time", false, "TIME");
+    }
+
+
+    public OrderBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public OrderBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"ORDER_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"NAME\" TEXT," + // 1: name
+                "\"TYPE\" INTEGER NOT NULL ," + // 2: type
+                "\"PRICE\" REAL NOT NULL ," + // 3: price
+                "\"TIME\" INTEGER NOT NULL );"); // 4: time
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ORDER_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, OrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(2, name);
+        }
+        stmt.bindLong(3, entity.getType());
+        stmt.bindDouble(4, entity.getPrice());
+        stmt.bindLong(5, entity.getTime());
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, OrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(2, name);
+        }
+        stmt.bindLong(3, entity.getType());
+        stmt.bindDouble(4, entity.getPrice());
+        stmt.bindLong(5, entity.getTime());
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public OrderBean readEntity(Cursor cursor, int offset) {
+        OrderBean entity = new OrderBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // name
+            cursor.getInt(offset + 2), // type
+            cursor.getDouble(offset + 3), // price
+            cursor.getLong(offset + 4) // time
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, OrderBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setName(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
+        entity.setType(cursor.getInt(offset + 2));
+        entity.setPrice(cursor.getDouble(offset + 3));
+        entity.setTime(cursor.getLong(offset + 4));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(OrderBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(OrderBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(OrderBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 211 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/UpCoinOrderBeanDao.java

@@ -0,0 +1,211 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.UpCoinOrderBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "UP_COIN_ORDER_BEAN".
+*/
+public class UpCoinOrderBeanDao extends AbstractDao<UpCoinOrderBean, Long> {
+
+    public static final String TABLENAME = "UP_COIN_ORDER_BEAN";
+
+    /**
+     * Properties of entity UpCoinOrderBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property Sn = new Property(1, String.class, "sn", false, "sn");
+        public final static Property Name = new Property(2, String.class, "name", false, "name");
+        public final static Property ClientId = new Property(3, String.class, "clientId", false, "clientId");
+        public final static Property Price = new Property(4, double.class, "price", false, "price");
+        public final static Property PayType = new Property(5, int.class, "payType", false, "payType");
+        public final static Property CreateDate = new Property(6, String.class, "createDate", false, "createDate");
+        public final static Property Status = new Property(7, String.class, "status", false, "status");
+        public final static Property ProductNumber = new Property(8, Integer.class, "productNumber", false, "productNumber");
+    }
+
+
+    public UpCoinOrderBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public UpCoinOrderBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"UP_COIN_ORDER_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"sn\" TEXT," + // 1: sn
+                "\"name\" TEXT," + // 2: name
+                "\"clientId\" TEXT," + // 3: clientId
+                "\"price\" REAL NOT NULL ," + // 4: price
+                "\"payType\" INTEGER NOT NULL ," + // 5: payType
+                "\"createDate\" TEXT," + // 6: createDate
+                "\"status\" TEXT," + // 7: status
+                "\"productNumber\" INTEGER);"); // 8: productNumber
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"UP_COIN_ORDER_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, UpCoinOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String sn = entity.getSn();
+        if (sn != null) {
+            stmt.bindString(2, sn);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(3, name);
+        }
+ 
+        String clientId = entity.getClientId();
+        if (clientId != null) {
+            stmt.bindString(4, clientId);
+        }
+        stmt.bindDouble(5, entity.getPrice());
+        stmt.bindLong(6, entity.getPayType());
+ 
+        String createDate = entity.getCreateDate();
+        if (createDate != null) {
+            stmt.bindString(7, createDate);
+        }
+ 
+        String status = entity.getStatus();
+        if (status != null) {
+            stmt.bindString(8, status);
+        }
+ 
+        Integer productNumber = entity.getProductNumber();
+        if (productNumber != null) {
+            stmt.bindLong(9, productNumber);
+        }
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, UpCoinOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String sn = entity.getSn();
+        if (sn != null) {
+            stmt.bindString(2, sn);
+        }
+ 
+        String name = entity.getName();
+        if (name != null) {
+            stmt.bindString(3, name);
+        }
+ 
+        String clientId = entity.getClientId();
+        if (clientId != null) {
+            stmt.bindString(4, clientId);
+        }
+        stmt.bindDouble(5, entity.getPrice());
+        stmt.bindLong(6, entity.getPayType());
+ 
+        String createDate = entity.getCreateDate();
+        if (createDate != null) {
+            stmt.bindString(7, createDate);
+        }
+ 
+        String status = entity.getStatus();
+        if (status != null) {
+            stmt.bindString(8, status);
+        }
+ 
+        Integer productNumber = entity.getProductNumber();
+        if (productNumber != null) {
+            stmt.bindLong(9, productNumber);
+        }
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public UpCoinOrderBean readEntity(Cursor cursor, int offset) {
+        UpCoinOrderBean entity = new UpCoinOrderBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // sn
+            cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // name
+            cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3), // clientId
+            cursor.getDouble(offset + 4), // price
+            cursor.getInt(offset + 5), // payType
+            cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6), // createDate
+            cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7), // status
+            cursor.isNull(offset + 8) ? null : cursor.getInt(offset + 8) // productNumber
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, UpCoinOrderBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setSn(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
+        entity.setName(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
+        entity.setClientId(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
+        entity.setPrice(cursor.getDouble(offset + 4));
+        entity.setPayType(cursor.getInt(offset + 5));
+        entity.setCreateDate(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
+        entity.setStatus(cursor.isNull(offset + 7) ? null : cursor.getString(offset + 7));
+        entity.setProductNumber(cursor.isNull(offset + 8) ? null : cursor.getInt(offset + 8));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(UpCoinOrderBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(UpCoinOrderBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(UpCoinOrderBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 149 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/WarringBeanDao.java

@@ -0,0 +1,149 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.WarringBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "WARRING_BEAN".
+*/
+public class WarringBeanDao extends AbstractDao<WarringBean, Long> {
+
+    public static final String TABLENAME = "WARRING_BEAN";
+
+    /**
+     * Properties of entity WarringBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property Time = new Property(1, long.class, "time", false, "TIME");
+        public final static Property ThingError = new Property(2, String.class, "thingError", false, "ERROR");
+        public final static Property Remark = new Property(3, String.class, "remark", false, "REMARK");
+    }
+
+
+    public WarringBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public WarringBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"WARRING_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"TIME\" INTEGER NOT NULL ," + // 1: time
+                "\"ERROR\" TEXT," + // 2: thingError
+                "\"REMARK\" TEXT);"); // 3: remark
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"WARRING_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, WarringBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+        stmt.bindLong(2, entity.getTime());
+ 
+        String thingError = entity.getThingError();
+        if (thingError != null) {
+            stmt.bindString(3, thingError);
+        }
+ 
+        String remark = entity.getRemark();
+        if (remark != null) {
+            stmt.bindString(4, remark);
+        }
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, WarringBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+        stmt.bindLong(2, entity.getTime());
+ 
+        String thingError = entity.getThingError();
+        if (thingError != null) {
+            stmt.bindString(3, thingError);
+        }
+ 
+        String remark = entity.getRemark();
+        if (remark != null) {
+            stmt.bindString(4, remark);
+        }
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public WarringBean readEntity(Cursor cursor, int offset) {
+        WarringBean entity = new WarringBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.getLong(offset + 1), // time
+            cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2), // thingError
+            cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3) // remark
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, WarringBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setTime(cursor.getLong(offset + 1));
+        entity.setThingError(cursor.isNull(offset + 2) ? null : cursor.getString(offset + 2));
+        entity.setRemark(cursor.isNull(offset + 3) ? null : cursor.getString(offset + 3));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(WarringBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(WarringBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(WarringBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 199 - 0
BaseLibrary/src/main/java/com/example/spunsugar/db/ZeDianOrderBeanDao.java

@@ -0,0 +1,199 @@
+package com.example.spunsugar.db;
+
+import android.database.Cursor;
+import android.database.sqlite.SQLiteStatement;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.Property;
+import org.greenrobot.greendao.internal.DaoConfig;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.DatabaseStatement;
+
+import com.hboxs.base_library.beans.db.ZeDianOrderBean;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
+/** 
+ * DAO for table "ZE_DIAN_ORDER_BEAN".
+*/
+public class ZeDianOrderBeanDao extends AbstractDao<ZeDianOrderBean, Long> {
+
+    public static final String TABLENAME = "ZE_DIAN_ORDER_BEAN";
+
+    /**
+     * Properties of entity ZeDianOrderBean.<br/>
+     * Can be used for QueryBuilder and for referencing column names.
+     */
+    public static class Properties {
+        public final static Property Id = new Property(0, Long.class, "id", true, "_id");
+        public final static Property F_sn = new Property(1, String.class, "f_sn", false, "f_sn");
+        public final static Property F_timestamp = new Property(2, Integer.class, "f_timestamp", false, "f_timestamp");
+        public final static Property F_payment_amount = new Property(3, Float.class, "f_payment_amount", false, "f_payment_amount");
+        public final static Property Pid = new Property(4, String.class, "pid", false, "pid");
+        public final static Property F_payment_sn = new Property(5, String.class, "f_payment_sn", false, "f_payment_sn");
+        public final static Property F_payment_gateway = new Property(6, String.class, "f_payment_gateway", false, "f_payment_gateway");
+    }
+
+
+    public ZeDianOrderBeanDao(DaoConfig config) {
+        super(config);
+    }
+    
+    public ZeDianOrderBeanDao(DaoConfig config, DaoSession daoSession) {
+        super(config, daoSession);
+    }
+
+    /** Creates the underlying database table. */
+    public static void createTable(Database db, boolean ifNotExists) {
+        String constraint = ifNotExists? "IF NOT EXISTS ": "";
+        db.execSQL("CREATE TABLE " + constraint + "\"ZE_DIAN_ORDER_BEAN\" (" + //
+                "\"_id\" INTEGER PRIMARY KEY AUTOINCREMENT ," + // 0: id
+                "\"f_sn\" TEXT," + // 1: f_sn
+                "\"f_timestamp\" INTEGER," + // 2: f_timestamp
+                "\"f_payment_amount\" REAL," + // 3: f_payment_amount
+                "\"pid\" TEXT," + // 4: pid
+                "\"f_payment_sn\" TEXT," + // 5: f_payment_sn
+                "\"f_payment_gateway\" TEXT);"); // 6: f_payment_gateway
+    }
+
+    /** Drops the underlying database table. */
+    public static void dropTable(Database db, boolean ifExists) {
+        String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"ZE_DIAN_ORDER_BEAN\"";
+        db.execSQL(sql);
+    }
+
+    @Override
+    protected final void bindValues(DatabaseStatement stmt, ZeDianOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String f_sn = entity.getF_sn();
+        if (f_sn != null) {
+            stmt.bindString(2, f_sn);
+        }
+ 
+        Integer f_timestamp = entity.getF_timestamp();
+        if (f_timestamp != null) {
+            stmt.bindLong(3, f_timestamp);
+        }
+ 
+        Float f_payment_amount = entity.getF_payment_amount();
+        if (f_payment_amount != null) {
+            stmt.bindDouble(4, f_payment_amount);
+        }
+ 
+        String pid = entity.getPid();
+        if (pid != null) {
+            stmt.bindString(5, pid);
+        }
+ 
+        String f_payment_sn = entity.getF_payment_sn();
+        if (f_payment_sn != null) {
+            stmt.bindString(6, f_payment_sn);
+        }
+ 
+        String f_payment_gateway = entity.getF_payment_gateway();
+        if (f_payment_gateway != null) {
+            stmt.bindString(7, f_payment_gateway);
+        }
+    }
+
+    @Override
+    protected final void bindValues(SQLiteStatement stmt, ZeDianOrderBean entity) {
+        stmt.clearBindings();
+ 
+        Long id = entity.getId();
+        if (id != null) {
+            stmt.bindLong(1, id);
+        }
+ 
+        String f_sn = entity.getF_sn();
+        if (f_sn != null) {
+            stmt.bindString(2, f_sn);
+        }
+ 
+        Integer f_timestamp = entity.getF_timestamp();
+        if (f_timestamp != null) {
+            stmt.bindLong(3, f_timestamp);
+        }
+ 
+        Float f_payment_amount = entity.getF_payment_amount();
+        if (f_payment_amount != null) {
+            stmt.bindDouble(4, f_payment_amount);
+        }
+ 
+        String pid = entity.getPid();
+        if (pid != null) {
+            stmt.bindString(5, pid);
+        }
+ 
+        String f_payment_sn = entity.getF_payment_sn();
+        if (f_payment_sn != null) {
+            stmt.bindString(6, f_payment_sn);
+        }
+ 
+        String f_payment_gateway = entity.getF_payment_gateway();
+        if (f_payment_gateway != null) {
+            stmt.bindString(7, f_payment_gateway);
+        }
+    }
+
+    @Override
+    public Long readKey(Cursor cursor, int offset) {
+        return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
+    }    
+
+    @Override
+    public ZeDianOrderBean readEntity(Cursor cursor, int offset) {
+        ZeDianOrderBean entity = new ZeDianOrderBean( //
+            cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
+            cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1), // f_sn
+            cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2), // f_timestamp
+            cursor.isNull(offset + 3) ? null : cursor.getFloat(offset + 3), // f_payment_amount
+            cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4), // pid
+            cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5), // f_payment_sn
+            cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6) // f_payment_gateway
+        );
+        return entity;
+    }
+     
+    @Override
+    public void readEntity(Cursor cursor, ZeDianOrderBean entity, int offset) {
+        entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
+        entity.setF_sn(cursor.isNull(offset + 1) ? null : cursor.getString(offset + 1));
+        entity.setF_timestamp(cursor.isNull(offset + 2) ? null : cursor.getInt(offset + 2));
+        entity.setF_payment_amount(cursor.isNull(offset + 3) ? null : cursor.getFloat(offset + 3));
+        entity.setPid(cursor.isNull(offset + 4) ? null : cursor.getString(offset + 4));
+        entity.setF_payment_sn(cursor.isNull(offset + 5) ? null : cursor.getString(offset + 5));
+        entity.setF_payment_gateway(cursor.isNull(offset + 6) ? null : cursor.getString(offset + 6));
+     }
+    
+    @Override
+    protected final Long updateKeyAfterInsert(ZeDianOrderBean entity, long rowId) {
+        entity.setId(rowId);
+        return rowId;
+    }
+    
+    @Override
+    public Long getKey(ZeDianOrderBean entity) {
+        if(entity != null) {
+            return entity.getId();
+        } else {
+            return null;
+        }
+    }
+
+    @Override
+    public boolean hasKey(ZeDianOrderBean entity) {
+        return entity.getId() != null;
+    }
+
+    @Override
+    protected final boolean isEntityUpdateable() {
+        return true;
+    }
+    
+}

+ 136 - 0
BaseLibrary/src/main/java/com/example/spunsugar/http/bean/GetAdBean.java

@@ -0,0 +1,136 @@
+package com.example.spunsugar.http.bean;
+
+/**
+ * @author whw
+ * @time 2019/4/17
+ * @Description 广告管理
+ */
+public class GetAdBean {
+
+    /**
+     * adType : 视频
+     * createDate : 1555904218000
+     * locationType : 棉花糖宣传广告
+     * name : 啊啊啊
+     * order : 1
+     * url : http://app.sunzee.com.cn:80/upload/video/ce4b816e-935a-4dd8-bbec-6b83e06c3c64.mp4
+     */
+
+    private String adType;
+    private long createDate;
+    private String locationType;
+    private String name;
+    private int order;
+    private String url;
+    private String id;
+    private int duration;
+    private String mediaPreview;
+    //广告位置的 a b
+    private int screenType;
+    private String equipmentType;
+
+    public String getAdType() {
+        return adType;
+    }
+
+    public void setAdType(String adType) {
+        this.adType = adType;
+    }
+
+    public long getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(long createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getLocationType() {
+        return locationType;
+    }
+
+    public void setLocationType(String locationType) {
+        this.locationType = locationType;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getOrder() {
+        return order;
+    }
+
+    public void setOrder(int order) {
+        this.order = order;
+    }
+
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public int getDuration() {
+        return duration;
+    }
+
+    public void setDuration(int duration) {
+        this.duration = duration;
+    }
+
+    public String getMediaPreview() {
+        return mediaPreview;
+    }
+
+    public void setMediaPreview(String mediaPreview) {
+        this.mediaPreview = mediaPreview;
+    }
+
+    public int getScreenType() {
+        return screenType;
+    }
+
+    public void setScreenType(int screenType) {
+        this.screenType = screenType;
+    }
+
+    public String getEquipmentType() {
+        return equipmentType;
+    }
+
+    public void setEquipmentType(String equipmentType) {
+        this.equipmentType = equipmentType;
+    }
+
+    @Override
+    public String toString() {
+        return "GetAdBean{" +
+                "adType='" + adType + '\'' +
+                ", createDate=" + createDate +
+                ", locationType='" + locationType + '\'' +
+                ", name='" + name + '\'' +
+                ", order=" + order +
+                ", url='" + url + '\'' +
+                ", id='" + id + '\'' +
+                ", duration=" + duration +
+                ", mediaPreview='" + mediaPreview + '\'' +
+                ", screenType=" + screenType +
+                ", equipmentType='" + equipmentType + '\'' +
+                '}';
+    }
+}

+ 89 - 0
BaseLibrary/src/main/java/com/example/spunsugar/system/model/bean/AlarmClockBean.java

@@ -0,0 +1,89 @@
+package com.example.spunsugar.system.model.bean;
+
+
+import com.hboxs.base_library.beans.enums.AlarmClockTypeEnum;
+import com.hboxs.base_library.beans.enums.WeekEnum;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+public class AlarmClockBean implements Serializable {
+    private String id;//闹钟id
+    private String name;//闹钟名
+    private String hour;//小时
+    private String minute;//分钟
+    private Boolean status;//状态
+    private ArrayList<WeekEnum> week;//星期
+
+    private AlarmClockTypeEnum type;//类型
+
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getHour() {
+        return hour;
+    }
+
+    public void setHour(String hour) {
+        this.hour = hour;
+    }
+
+    public String getMinute() {
+        return minute;
+    }
+
+    public void setMinute(String minute) {
+        this.minute = minute;
+    }
+
+    public Boolean getStatus() {
+        return status;
+    }
+
+    public void setStatus(Boolean status) {
+        this.status = status;
+    }
+
+    public ArrayList<WeekEnum> getWeek() {
+        return week;
+    }
+
+    public void setWeek(ArrayList<WeekEnum> week) {
+        this.week = week;
+    }
+
+    public AlarmClockTypeEnum getType() {
+        return type;
+    }
+
+    public void setType(AlarmClockTypeEnum type) {
+        this.type = type;
+    }
+
+    @Override
+    public String toString() {
+        return "AlarmClockBean{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", hour='" + hour + '\'' +
+                ", minute='" + minute + '\'' +
+                ", status=" + status +
+                ", week=" + week +
+                ", type=" + type +
+                '}';
+    }
+}

+ 86 - 0
BaseLibrary/src/main/java/com/example/spunsugar/system/model/bean/PriceBean.java

@@ -0,0 +1,86 @@
+package com.example.spunsugar.system.model.bean;
+
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/3/14
+ * @Description 调价商品数据实体
+ */
+public class PriceBean implements Serializable {
+
+    private String name;
+    private double money;
+    private double coin;
+    private String resId;
+    private String chineseName;
+    private String customName;
+
+    public String getResId() {
+        return resId;
+    }
+
+    public void setResId(String resId) {
+        this.resId = resId;
+    }
+
+
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public double getMoney() {
+        return money;
+    }
+
+    public void setMoney(double money) {
+        this.money = money;
+    }
+
+    public double getCoin() {
+        return coin;
+    }
+
+    public void setCoin(double coin) {
+        this.coin = coin;
+    }
+
+    public String getChineseName() {
+        return chineseName;
+    }
+
+    public void setChineseName(String chineseName) {
+        this.chineseName = chineseName;
+
+    }
+
+    public String getCustomName() {
+        return customName;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+    //    @NonNull
+//    @Override
+//    public String toString() {
+//        return "name="+getName()+"  money="+money+"  coin="+coin;
+//    }
+
+    @Override
+    public String toString() {
+        return "PriceBean{" +
+                "name='" + name + '\'' +
+                ", money=" + money +
+                ", coin=" + coin +
+                ", resId='" + resId + '\'' +
+                ", chineseName='" + chineseName + '\'' +
+                '}';
+    }
+}

+ 112 - 0
BaseLibrary/src/main/java/com/example/spunsugar/user/model/bean/BaseGoodsBean.java

@@ -0,0 +1,112 @@
+package com.example.spunsugar.user.model.bean;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/3/5
+ * @Description 首页价格数据
+ */
+public class BaseGoodsBean implements Serializable {
+
+    private String nameId;
+    private double price;
+    private double coin;
+    private String imgID;
+    //chinese name
+    private String nameChinese;
+    private boolean isSelected;
+    private int index;
+    private String sugarInstruction;
+    private String itemId;
+    private String showName;
+    private String customName;
+
+    public String getShowName() {
+        return showName;
+    }
+
+    public void setShowName(String showName) {
+        this.showName = showName;
+    }
+
+    public String getItemId() {
+        return itemId;
+    }
+
+    public void setItemId(String itemId) {
+        this.itemId = itemId;
+    }
+
+    public String getSugarInstruction() {
+        return sugarInstruction;
+    }
+
+    public void setSugarInstruction(String sugarInstruction) {
+        this.sugarInstruction = sugarInstruction;
+    }
+
+    public double getCoin() {
+        return coin;
+    }
+
+    public void setCoin(double coin) {
+        this.coin = coin;
+    }
+
+    public String getNameId() {
+        return nameId;
+    }
+
+    public void setNameId(String nameId) {
+        this.nameId = nameId;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public String getImgID() {
+        return imgID;
+    }
+
+    public void setImgID(String imgID) {
+        this.imgID = imgID;
+    }
+
+    public String getNameChinese() {
+        return nameChinese;
+    }
+
+    public void setNameChinese(String nameChinese) {
+        this.nameChinese = nameChinese;
+    }
+
+    public boolean isSelected() {
+        return isSelected;
+    }
+
+    public void setSelected(boolean selected) {
+        isSelected = selected;
+    }
+
+    public int getIndex() {
+        return index;
+    }
+
+    public void setIndex(int index) {
+        this.index = index;
+    }
+
+    public String getCustomName() {
+        return customName;
+    }
+
+    public void setCustomName(String customName) {
+        this.customName = customName;
+    }
+}

+ 11 - 0
BaseLibrary/src/main/java/com/example/spunsugar/user/model/bean/GoodsBean.java

@@ -0,0 +1,11 @@
+package com.example.spunsugar.user.model.bean;
+
+/**
+ * @author whw
+ * @time 2019/3/5
+ * @Description 首页价格数据
+ */
+public class GoodsBean extends BaseGoodsBean {
+
+
+}

+ 4 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/adapter/BaseHomeAdapter.java

@@ -0,0 +1,4 @@
+package com.hboxs.base_library.adapter;
+
+public interface BaseHomeAdapter {
+}

+ 170 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseApplication.java

@@ -0,0 +1,170 @@
+package com.hboxs.base_library.base;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.database.sqlite.SQLiteDatabase;
+import android.preference.PreferenceManager;
+import android.support.multidex.MultiDex;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.example.spunsugar.db.DaoMaster;
+import com.example.spunsugar.db.DaoSession;
+import com.hboxs.base_library.beans.db.GreenDaoOpenHelper;
+import com.hboxs.base_library.constant.MMKVNameValue;
+import com.hboxs.base_library.util.GlideUtil;
+import com.hboxs.base_library.util.LanguageUtil;
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.MMKVUtil;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.orhanobut.hawk.Hawk;
+import com.orhanobut.logger.AndroidLogAdapter;
+import com.orhanobut.logger.BuildConfig;
+import com.orhanobut.logger.Logger;
+import com.tencent.smtt.sdk.QbSdk;
+
+import java.util.Locale;
+
+/**
+ * Created by MinKin.
+ */
+public class BaseApplication extends Application {
+
+    private static final String TAG = "BaseApplication";
+
+    private GreenDaoOpenHelper mHelper;
+    private SQLiteDatabase db;
+    private DaoMaster mDaoMaster;
+    public static Context mContext;
+    public static BaseApplication baseApplication;
+
+    public static BaseApplication getBaseApplication() {
+        return baseApplication;
+    }
+
+    private DaoSession mDaoSession;
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mContext = this;
+        baseApplication = this;
+        Hawk.init(this).build();
+        String initialize = MMKVUtil.initialize(this);//初始化MMKV
+        Log.d(TAG, "onCreate: " + initialize);
+        config();
+        GlideUtil.get().init(this);
+        setDatabase();//初始化数据库
+
+        // configX5Wv();
+        if (Hawk.contains("logo")) {
+            MMKVUtil.setBackgroundSystemData(MMKVNameValue.LOGO, Hawk.get("logo", "SUNZ"));
+        }
+
+        String logo = MMKVUtil.getBackgroudSystemData(MMKVNameValue.LOGO, "P?");
+        Log.d(TAG, "initPersistence logo: " + logo);
+        if (!"P?".equals(logo)) {
+            Hawk.put("logo", logo);
+        }
+    }
+
+
+    /**
+     * 设置greenDAO
+     */
+    private void setDatabase() {
+        // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
+        // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO已经帮你做了。
+        // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
+        // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
+        mHelper = new GreenDaoOpenHelper(this, "notes-db", null);
+        db = mHelper.getWritableDatabase();
+        // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
+        mDaoMaster = new DaoMaster(db);
+        mDaoSession = mDaoMaster.newSession();
+
+    }
+
+
+    /**
+     * 配置logger
+     */
+    private void config() {
+        //全局TAG
+//        FormatStrategy formatStrategy = PrettyFormatStrategy.newBuilder()
+//                .tag("sugar")
+//                .build();
+//        Logger.addLogAdapter(new AndroidLogAdapter(formatStrategy));
+        Logger.addLogAdapter(new AndroidLogAdapter() {
+            @Override
+            public boolean isLoggable(int priority, String tag) {
+                return BuildConfig.DEBUG;
+            }
+        });
+
+
+    }
+
+    /**
+     * init X5 WebView
+     * x5内核预加载接口,建议在进入WebView场景前调用该接口提升x5内核使用率和优化冷启动耗时
+     */
+    private void configX5Wv() {
+        //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核
+        QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {
+
+            /**
+             * x5内核初始化完成回调接口,可通过参数判断是否加载起来了x5内核
+             * @param isX5Core 为true表示x5内核加载成功;false表示加载失败,此时会自动切换到系统内核。如果在此回调前创建WebView会导致使用系统内核
+             */
+            @Override
+            public void onViewInitFinished(boolean isX5Core) {
+                // TODO Auto-generated method stub
+                LogUtil.e("configX5Wv", " onViewInitFinished is " + isX5Core);
+            }
+
+            /**
+             * x5内核初始化完成回调接口,此接口回调并表示已经加载起来了x5,有可能特殊情况下x5内核加载失败,切换到系统内核
+             */
+            @Override
+            public void onCoreInitFinished() {
+                // TODO Auto-generated method stub
+            }
+        };
+        //X5内核初始化接口
+        QbSdk.initX5Environment(getApplicationContext(), cb);
+
+    }
+
+    public static Context getContext() {
+        return mContext;
+    }
+
+    @Override
+    protected void attachBaseContext(Context base) {
+        super.attachBaseContext(base);
+        MultiDex.install(this);
+    }
+
+    public DaoSession getDaoSession() {
+        return mDaoSession;
+    }
+
+    public SQLiteDatabase getDb() {
+        return db;
+    }
+
+    public Locale locale = Locale.CHINA;
+
+    public void forceLocale(Locale locale, Context context) {
+        this.locale = locale;
+        Configuration conf = context.getResources().getConfiguration();
+        conf.setLocale(locale);
+        context.getResources().updateConfiguration(conf, context.getResources().getDisplayMetrics());
+        Locale.setDefault(locale);
+    }
+
+
+}

+ 12 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseEntity.java

@@ -0,0 +1,12 @@
+package com.hboxs.base_library.base;
+
+import java.io.Serializable;
+
+/**
+ * Created by MinKin
+ * 2018/11/23
+ */
+public abstract class BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 6156279973899066396L;
+}

+ 80 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/BasePresenter.java

@@ -0,0 +1,80 @@
+package com.hboxs.base_library.base;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.google.gson.reflect.TypeToken;
+import com.hboxs.base_library.http.response.HttpResult;
+import com.hboxs.base_library.http.response.HttpResultHandler;
+
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.observers.DisposableObserver;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * 具备订阅、取消订阅功能的Presenter
+ * Created By MinKin.
+ */
+public abstract class BasePresenter<T extends IView> implements IPresenter<T> {
+
+    private CompositeDisposable mDisposables;
+    protected Context mContext;
+    protected T mView;
+    private static final String TAG = "BasePresenter";
+
+    protected  void addSubscription(Observable observable, DisposableObserver observer) {
+        if (mDisposables == null) {
+            mDisposables = new CompositeDisposable();
+        }
+        observable
+                .unsubscribeOn(Schedulers.io())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+        mDisposables.add(observer);
+    }
+
+    protected  void addSubscriptionNew(Observable observable,Class clazz, DisposableObserver observer) {
+        if (mDisposables == null) {
+            mDisposables = new CompositeDisposable();
+        }
+        if (clazz == HttpResult.class) {
+            observable = observable.compose(HttpResultHandler.<String>transformer());
+        }
+        observable
+                .unsubscribeOn(Schedulers.io())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+        mDisposables.add(observer);
+    }
+    public <T> Observable<T> createJapanApi(Observable observable,Class clazz) {
+        if (clazz == HttpResult.class) {
+            return  observable.compose(HttpResultHandler.<String>transformer());
+        }
+        return observable;
+
+    }
+
+
+    public void attachView(T view) {
+        mView = view;
+        if ((mView instanceof DynamicActivity)) {
+            mContext = ((DynamicActivity) mView);
+        } else if (mView instanceof DynamicFragment) {
+            mContext = ((DynamicFragment) mView).getActivity();
+        }
+    }
+
+    public void detachView() {
+        mView = null;
+        if (mDisposables != null) {
+            mDisposables.clear();
+        }
+    }
+}

+ 16 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseTask.java

@@ -0,0 +1,16 @@
+package com.hboxs.base_library.base;
+
+public class BaseTask {
+
+    public volatile boolean isRun;
+
+
+    public void setIsRun(boolean isRun) {
+        this.isRun = isRun;
+    }
+
+    public boolean getIsRun() {
+        return isRun;
+    }
+
+}

+ 85 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseWebViewActivity.java

@@ -0,0 +1,85 @@
+package com.hboxs.base_library.base;
+
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.ProgressBar;
+
+import com.hboxs.base_library.R;
+
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.widget.SuperWebView;
+
+
+
+/**
+ * Created by MinKin
+ * 2018/12/18
+ */
+public abstract class BaseWebViewActivity extends StaticActivity {
+
+    ProgressBar progressBar;
+    SuperWebView superWebView;
+
+    @Override
+    protected int getLayout() {
+        return R.layout.activity_base_web_view;
+    }
+
+    @Override
+    protected void initView() {
+
+    }
+
+    @Override
+    protected void initListener() {
+        superWebView.setOnWebViewProgressListener(new SuperWebView.OnWebViewProgressListener() {
+
+            @Override
+            public void onProgressChanged(int newProgress) {
+                if (newProgress == 100) {
+                    progressBar.setVisibility(View.GONE);
+                } else {
+                    if (progressBar.getVisibility() == View.GONE) {
+                        progressBar.setVisibility(View.VISIBLE);
+                    }
+                    progressBar.setProgress(newProgress);
+                }
+            }
+        });
+    }
+
+    /**
+     * 加载网页
+     */
+    protected void loadUrl(String url) {
+        superWebView.loadUrlByX5(url);
+    }
+
+    /**
+     * 加载Html
+     */
+    protected void loadHtml(String htmlBody) {
+        superWebView.loadHtmlByX5(htmlBody);
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (superWebView != null) {
+            superWebView.destroy();
+            superWebView = null;
+        }
+    }
+
+    @Override
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        if (keyCode == KeyEvent.KEYCODE_BACK) {
+            if (superWebView.canGoBack()) {
+                superWebView.goBack();
+            } else {
+                finish();
+            }
+        }
+        return true;
+    }
+}

+ 61 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/DynamicActivity.java

@@ -0,0 +1,61 @@
+package com.hboxs.base_library.base;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.util.LanguageUtil;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.ToastUtil;
+import com.orhanobut.hawk.Hawk;
+
+import java.util.Locale;
+
+/**
+ * 具有网络请求的Activity可继承此类
+ * Created By MinKin.
+ */
+public abstract class DynamicActivity<T extends IPresenter> extends StaticActivity implements IView<T> {
+
+    protected T mPresenter;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        mPresenter = createPresenter();
+        if (mPresenter != null) {
+            mPresenter.attachView(this);
+        }
+        int i = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, 0) - 1;
+        if (i>=0) {
+            String s = LanguageUtil.language[i];
+            Locale locale = new Locale(s);
+            Log.d(TAG, "DynamicActivity onCreate: "+s);
+            BaseApplication.baseApplication.forceLocale(locale, this);
+
+        }
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    protected void onDestroy() {
+        if (mPresenter != null) {
+            mPresenter.detachView();
+        }
+        super.onDestroy();
+    }
+
+    protected abstract T createPresenter();
+
+    private static final String TAG = "DynamicActivity";
+    @Override
+    public void showError(int code, String errorText) {
+        ToastUtil.showToast(errorText);
+    }
+
+
+
+
+
+}

+ 39 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/DynamicFragment.java

@@ -0,0 +1,39 @@
+package com.hboxs.base_library.base;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+
+import com.hboxs.base_library.util.ToastUtil;
+
+/**
+ * 具有网络请求的Fragment可继承此类
+ * Created By MinKin.
+ */
+public abstract class DynamicFragment<T extends IPresenter> extends StaticFragment implements IView {
+
+    protected T mPresenter;
+
+    @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        mPresenter = createPresenter();
+        if (mPresenter != null) {
+            mPresenter.attachView(this);
+        }
+        super.onCreate(savedInstanceState);
+    }
+
+    @Override
+    public void onDestroy() {
+        if (mPresenter != null) {
+            mPresenter.detachView();
+        }
+        super.onDestroy();
+    }
+
+    protected abstract T createPresenter();
+
+    @Override
+    public void showError(int code, String errorText) {
+        ToastUtil.showToast(errorText);
+    }
+}

+ 9 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/IPresenter.java

@@ -0,0 +1,9 @@
+package com.hboxs.base_library.base;
+
+public interface IPresenter<T extends IView> {
+
+    void attachView(T view);
+
+    void detachView();
+
+}

+ 6 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/IView.java

@@ -0,0 +1,6 @@
+package com.hboxs.base_library.base;
+
+public interface IView<T extends IPresenter> {
+
+    void showError(int code, String errorText);
+}

+ 8 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/ModuleInitializer.java

@@ -0,0 +1,8 @@
+package com.hboxs.base_library.base;
+
+/**
+ * 创建一个公共的初始化接口:可以创建一个公共的接口或基类,定义一个 `initialize()` 或类似的方法,用于所有模块的初始化操作。
+ */
+public interface ModuleInitializer {
+    void initialize();
+}

+ 313 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/StaticActivity.java

@@ -0,0 +1,313 @@
+package com.hboxs.base_library.base;
+
+import android.app.Activity;
+import android.content.Context;
+import android.databinding.DataBindingUtil;
+import android.databinding.ViewDataBinding;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.IBinder;
+import android.support.annotation.Nullable;
+import android.transition.Fade;
+import android.transition.Slide;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+
+import com.hboxs.base_library.R;
+import com.hboxs.base_library.entity.EventEntity;
+import com.hboxs.base_library.receiver.NetWorkReceiver;
+import com.hboxs.base_library.util.ActivityManager;
+import com.hboxs.base_library.util.LogUtil;
+import com.noober.background.BackgroundLibrary;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+//import butterknife.ButterKnife;
+//import butterknife.Unbinder;
+import jsc.kit.keyboard.KeyUtils;
+import jsc.kit.keyboard.KeyboardView;
+import me.yokeyword.fragmentation.SupportActivity;
+
+/**
+ * 无需网络请求的Activity可继承此类
+ * Created By MinKin.
+ */
+public abstract class StaticActivity extends SupportActivity implements NetWorkReceiver.OnNetWorkChangedListener {
+
+    protected Context mContext;
+    //    private Unbinder mUnBinder;
+    public ViewDataBinding viewDataBindin;
+    //广播是否已经注册
+    private boolean mReceiverTag = false;
+    private KeyboardView keyboardView;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        BackgroundLibrary.inject(this);
+        setSQTheme();
+        super.onCreate(savedInstanceState);
+        setBefore();
+        setContentView();
+        //setContentView(getLayout());
+        setStatusBar();
+
+//        mUnBinder = ButterKnife.bind(this);
+        mContext = this;
+        hideNavKey(mContext);
+        ActivityManager.get().add(this);
+        if (isUseEventBus()) {
+            EventBus.getDefault().register(this);
+        }
+        Bundle bundle = getIntent().getExtras();
+        if (bundle != null) {
+            getBundle(bundle);
+        }
+        keyboardView = new KeyboardView(this);
+        keyboardView.setDefaultUpperCase(true);
+        keyboardView.setBackgroundResource(R.drawable.key_keyboard_background_shape);
+        keyboardView.setPadding(16, 24, 16, 24);
+        KeyUtils.init(this, keyboardView);
+        initView();
+        initData();
+        initListener();
+        initCustomization();
+
+
+    }
+
+    public KeyboardView addAllKeyboardView(View view){
+        boolean deviceSerialPortNumber =(Build.MODEL.equals("dolphin")?true:false);
+        if (!deviceSerialPortNumber){
+            keyboardView.addAllInputView(view);
+            Log.d("addAllKeyboardView", "addAllKeyboardView: ");
+        }
+        return keyboardView;
+    }
+
+
+
+
+
+
+    protected  void setSQTheme(){
+
+    };
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        //  NetWorkReceiver.get().registerReceiver(mContext, this);
+        if (!mReceiverTag) {
+            mReceiverTag = true;
+            NetWorkReceiver.get().registerReceiver(getApplicationContext(), this);
+        }
+
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        // NetWorkReceiver.get().unregisterReceiver(mContext);
+        if (mReceiverTag) {
+            mReceiverTag = false;
+            NetWorkReceiver.get().unregisterReceiver(getApplicationContext());
+        }
+
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        if (isUseEventBus()) {
+            EventBus.getDefault().unregister(this);
+        }
+//        mUnBinder.unbind();
+        ActivityManager.get().remove(this);
+    }
+
+    /**
+     * 在设置布局前执行
+     */
+    protected void setBefore() {
+
+    }
+
+    /**
+     * 设置布局
+     */
+    protected abstract int getLayout();
+
+    /**
+     * 初始化状态栏
+     */
+    protected void setStatusBar() {
+
+    }
+
+    /**
+     * 获取页面传值
+     */
+    protected void getBundle(Bundle bundle) {
+
+    }
+
+    /**
+     * 是否使用EventBus
+     */
+    protected boolean isUseEventBus() {
+        return false;
+    }
+
+    /**
+     * EventBus消息接收
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onEventReceive(EventEntity entity) {
+
+    }
+
+    /**
+     * EventBus消息接收
+     * 粘性事件
+     */
+    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
+    public void onEventReceiveSticky(EventEntity entity) {
+
+    }
+
+    /**
+     * 初始化View
+     */
+    protected abstract void initView();
+
+    /**
+     * 初始化数据
+     */
+    protected void initData() {
+
+    }
+
+    /**
+     * 初始化监听
+     */
+    protected void initListener() {
+
+    }
+
+    /**
+     * Activity退出动画
+     * 启动的时候要加上:ActivityOptionsCompat.makeSceneTransitionAnimation((Activity) context).toBundle()
+     */
+    protected void setUpSlide() {
+        Slide slide = new Slide();
+        slide.setSlideEdge(Gravity.START);
+        slide.setDuration(500);
+        //再次进入时使用
+        getWindow().setReenterTransition(slide);
+        //退出时使用
+        getWindow().setExitTransition(slide);
+    }
+
+    /**
+     * Activity进入动画
+     */
+    protected void setUpFade() {
+        Fade fade = new Fade();
+        fade.setDuration(1000);
+        getWindow().setEnterTransition(fade);
+    }
+
+    /**
+     * 触摸EditText以外区域能够收回软键盘
+     **/
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            View v = getCurrentFocus();
+            if (isShouldHideKeyboard(v, ev)) {
+                hideKeyboard(v.getWindowToken());
+            }
+
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+
+    /**
+     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏
+     */
+    private boolean isShouldHideKeyboard(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {
+            int[] l = {0, 0};
+            v.getLocationInWindow(l);
+            int left = l[0],
+                    top = l[1],
+                    bottom = top + v.getHeight(),
+                    right = left + v.getWidth();
+            if (event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom) {
+                // 点击EditText的事件,忽略它
+                return false;
+            } else {
+                return true;
+            }
+        }
+        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点
+        return false;
+    }
+
+    /**
+     * 获取InputMethodManager,隐藏软键盘
+     */
+    private void hideKeyboard(IBinder token) {
+        if (token != null) {
+            InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+            if (im != null) {
+                im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
+            }
+        }
+    }
+
+    /**
+     * 监听网络变化
+     */
+    @Override
+    public void onNetWorkChanged(boolean isNetWorkAvailable) {
+        LogUtil.e("onNetWorkChanged", "onNetWorkChanged -> " + isNetWorkAvailable);
+    }
+
+    public void setContentView() {
+        int layoutId = getLayout();
+        viewDataBindin = DataBindingUtil.setContentView(this, layoutId);
+    }
+
+    /**
+     * 隐藏底部虚拟键
+     *
+     * @param context
+     */
+    public static void hideNavKey(Context context) {
+        if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) {
+            View v = ((Activity) context).getWindow().getDecorView();
+            v.setSystemUiVisibility(View.GONE);
+        } else if (Build.VERSION.SDK_INT >= 19) {
+            //for new api versions.
+            View decorView = ((Activity) context).getWindow().getDecorView();
+            int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
+                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
+            decorView.setSystemUiVisibility(uiOptions);
+        }
+    }
+
+    /**
+     * 定制化的
+     */
+    public void initCustomization() {
+    }
+}
+

+ 95 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/base/StaticFragment.java

@@ -0,0 +1,95 @@
+package com.hboxs.base_library.base;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.hboxs.base_library.entity.EventEntity;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+//import butterknife.ButterKnife;
+//import butterknife.Unbinder;
+import me.yokeyword.fragmentation.SupportFragment;
+
+/**
+ * 无需网络请求的Fragment可继承此类
+ * Created By MinKin.
+ */
+public abstract class StaticFragment extends SupportFragment {
+
+    protected Context mContext;
+    private View mView;
+//    private Unbinder mUnBinder;
+
+    @Nullable
+    @Override
+    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
+        if (mView == null) {
+            mView = inflater.inflate(getLayoutId(), container, false);
+        }
+        mContext = getActivity();
+        return mView;
+    }
+
+    @Override
+    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+//        mUnBinder = ButterKnife.bind(this, view);
+        if (isUseEventBus()) {
+            EventBus.getDefault().register(this);
+        }
+        Bundle bundle = getArguments();
+        if (bundle != null) {
+            getBundle(bundle);
+        }
+        initView();
+        initData();
+        initListener();
+    }
+
+    @Override
+    public void onDestroyView() {
+        super.onDestroyView();
+        if (isUseEventBus()) {
+            EventBus.getDefault().unregister(this);
+        }
+//        mUnBinder.unbind();
+    }
+
+    protected abstract int getLayoutId();
+
+    protected void getBundle(Bundle bundle) {
+
+    }
+
+    protected boolean isUseEventBus() {
+        return false;
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onEventReceive(EventEntity entity) {
+
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
+    public void onEventReceiveSticky(EventEntity entity) {
+
+    }
+
+    protected abstract void initView();
+
+    protected void initData() {
+
+    }
+
+    protected void initListener() {
+
+    }
+}

+ 44 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/AlarmClock.java

@@ -0,0 +1,44 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+
+/**
+ * 定时开关机推送的数据的json解析
+ */
+public class AlarmClock implements Serializable {
+    private String type;
+    private ArrayList<String> data;
+
+    public AlarmClock() {
+    }
+
+    public AlarmClock(String type, ArrayList data) {
+        this.type = type;
+        this.data = data;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public ArrayList<String> getData() {
+        return data;
+    }
+
+    public void setData(ArrayList<String> data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "AlarmClock{" +
+                "type='" + type + '\'' +
+                ", data=" + data +
+                '}';
+    }
+}

+ 32 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/AlarmClock2.java

@@ -0,0 +1,32 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+
+/**
+ * 定时开关机推送的数据的json解析
+ */
+public class AlarmClock2 implements Serializable {
+    private String data;
+
+    public AlarmClock2() {
+    }
+
+    public String getData() {
+        return data;
+    }
+
+    public void setData(String data) {
+        this.data = data;
+    }
+
+    public AlarmClock2(String data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "AlarmClock2{" +
+                "data='" + data + '\'' +
+                '}';
+    }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 35 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindCoinOrderBean.java


+ 132 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindCoinOrderDetailBean.java

@@ -0,0 +1,132 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/6/10
+ * @Description 作用
+ */
+public class FindCoinOrderDetailBean implements Serializable {
+
+
+    /**
+     * adminId : 3
+     * clientId : 863010031925055
+     * createDate : 1560071151000
+     * id : 208
+     * modifyDate : 1560071151000
+     * payType : 0
+     * price : 12.0
+     * productName : 玫瑰精灵
+     * sn : d2af876a54d144a8a0b8cb6cf47a68b9
+     * type : merchant
+     */
+
+    private int adminId;
+    private String clientId;
+    private long createDate;
+    private int id;
+    private long modifyDate;
+    private int payType;
+    private double price;
+    private String productName;
+    private String sn;
+    private String type;
+
+    public int getAdminId() {
+        return adminId;
+    }
+
+    public void setAdminId(int adminId) {
+        this.adminId = adminId;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public long getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(long createDate) {
+        this.createDate = createDate;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public long getModifyDate() {
+        return modifyDate;
+    }
+
+    public void setModifyDate(long modifyDate) {
+        this.modifyDate = modifyDate;
+    }
+
+    public int getPayType() {
+        return payType;
+    }
+
+    public void setPayType(int payType) {
+        this.payType = payType;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getSn() {
+        return sn;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String toString() {
+        return "FindCoinOrderDetailBean{" +
+                "adminId=" + adminId +
+                ", clientId='" + clientId + '\'' +
+                ", createDate=" + createDate +
+                ", id=" + id +
+                ", modifyDate=" + modifyDate +
+                ", payType=" + payType +
+                ", price=" + price +
+                ", productName='" + productName + '\'' +
+                ", sn='" + sn + '\'' +
+                ", type='" + type + '\'' +
+                '}';
+    }
+}

Fichier diff supprimé car celui-ci est trop grand
+ 36 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindOrderBean.java


+ 95 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/FindOrderDetailBean.java

@@ -0,0 +1,95 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/6/10
+ * @Description 作用
+ */
+public class FindOrderDetailBean implements Serializable {
+
+
+    /**
+     * createDate : 1559640946000
+     * price : 0.05
+     * productName : 夏日爱恋
+     * sn : 7819537220190604173546
+     * status : unpay
+     * payDate : 1559544991000
+     * trxNo : 100219060369826506
+     */
+
+    private long createDate;
+    private double price;
+    private String productName;
+    private String sn;
+    private String status;
+    private long payDate;
+    private String trxNo;
+    private String frp_code;
+
+    public long getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(long createDate) {
+        this.createDate = createDate;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public String getSn() {
+        return sn;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public long getPayDate() {
+        return payDate;
+    }
+
+    public void setPayDate(long payDate) {
+        this.payDate = payDate;
+    }
+
+    public String getTrxNo() {
+        return trxNo;
+    }
+
+    public void setTrxNo(String trxNo) {
+        this.trxNo = trxNo;
+    }
+
+    public String getFrp_code() {
+        return frp_code;
+    }
+
+    public void setFrp_code(String frp_code) {
+        this.frp_code = frp_code;
+    }
+}

+ 14 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/IAdvancedModel.java

@@ -0,0 +1,14 @@
+package com.hboxs.base_library.beans;
+
+import com.hboxs.base_library.base.IView;
+
+/**
+ * @author whw
+ * @time 2019/3/11
+ * @Description model基类
+ */
+public interface IAdvancedModel {
+
+    void getData(IView view);
+
+}

+ 16 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/IUserHomeModel.java

@@ -0,0 +1,16 @@
+package com.hboxs.base_library.beans;
+
+import android.content.Context;
+
+import java.util.ArrayList;
+
+/**
+ * @author whw
+ * @time 2019/3/5
+ * @Description 作用
+ */
+public interface IUserHomeModel {
+
+    ArrayList getData(Context context);
+
+}

Fichier diff supprimé car celui-ci est trop grand
+ 93 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/PaperInvoiceBean.java


+ 44 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/ParameterBean.java

@@ -0,0 +1,44 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/6/4
+ * @Description 参数bean
+ */
+public class ParameterBean implements Serializable {
+
+
+    /**
+     * name : D400
+     * val : 1234
+     */
+
+    private String name;
+    private String val;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getVal() {
+        return val;
+    }
+
+    public void setVal(String val) {
+        this.val = val;
+    }
+
+    @Override
+    public String toString() {
+        return "ParameterBean{" +
+                "name='" + name + '\'' +
+                ", val='" + val + '\'' +
+                '}';
+    }
+}

+ 63 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/ProductsBean.java

@@ -0,0 +1,63 @@
+package com.hboxs.base_library.beans;
+
+import java.io.Serializable;
+
+public class ProductsBean implements Serializable {
+
+    private long equipmentId;
+    private int id;
+    private String productName;
+    private double rmbPrice;
+    private String name;
+    private double codePrice;
+
+
+
+    public long getEquipmentId() {
+        return equipmentId;
+    }
+
+    public void setEquipmentId(long equipmentId) {
+        this.equipmentId = equipmentId;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public String getProductName() {
+        return productName;
+    }
+
+    public void setProductName(String productName) {
+        this.productName = productName;
+    }
+
+    public double getRmbPrice() {
+        return rmbPrice;
+    }
+
+    public void setRmbPrice(double rmbPrice) {
+        this.rmbPrice = rmbPrice;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String oldName) {
+        this.name = oldName;
+    }
+
+    public double getCodePrice() {
+        return codePrice;
+    }
+
+    public void setCodePrice(double codePrice) {
+        this.codePrice = codePrice;
+    }
+}

+ 99 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/UserHomeItemModel.java

@@ -0,0 +1,99 @@
+package com.hboxs.base_library.beans;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.example.spunsugar.system.model.bean.PriceBean;
+import com.example.spunsugar.user.model.bean.GoodsBean;
+import com.hboxs.base_library.constant.Name;
+import com.orhanobut.hawk.Hawk;
+
+import java.util.ArrayList;
+
+/**
+ * @author whw
+ * @time 2019/3/5
+ * @Description userhome model类
+ */
+public class UserHomeItemModel implements IUserHomeModel {
+    private static final String TAG = "UserHomeItemModel";
+
+    @Override
+    public ArrayList getData(Context context) {
+        /**
+         * todo  在这里我们将进行数据的配置。菜品的配置
+         */
+
+        ArrayList<PriceBean> priceBeans = Hawk.get("PRICEBEAN");
+        ArrayList<GoodsBean> goodsBeans = Hawk.get(Name.ITEM_GOODS, new ArrayList<GoodsBean>());
+        ArrayList<GoodsBean> showGoodsBeans = new ArrayList<>();
+        //防止商品中文名为空
+//        if (priceBeans != null && priceBeans.size() > 0) {
+//            for (int i = 0; i < priceBeans.size(); i++) {
+//                priceBeans.get(i).setChineseName(goodsBeans.get(i).getNameChinese());
+//            }
+//        }
+        //如果没有设置价格,那么花型调整不能使用。
+//        if (goodsBeans != null && goodsBeans.size() > 0) {
+//            if (priceBeans != null && priceBeans.size() > 0) {
+//                for (int i = 0; i < goodsBeans.size(); i++) {
+//                    //更新item的价格
+//                    GoodsBean goodsBean = goodsBeans.get(i);
+//                    for (int j = 0; j < priceBeans.size(); j++) {
+//                        PriceBean priceBean = priceBeans.get(j);
+//                        if (priceBean.getChineseName().equals(goodsBean.getNameChinese())) {
+//                            goodsBean.setPrice(priceBean.getMoney());
+//                            goodsBean.setCoin(priceBean.getCoin());
+//
+//                        }
+//                    }
+//                    /*if (goodsBean.isSelected()) */showGoodsBeans.add(goodsBean);
+//                }
+//            }
+//                if (priceBeans != null && priceBeans.size() > 0) {
+//
+//                    for (int i = 0; i < goodsBeans.size(); i++) {
+//                        //更新item的价格
+//                        GoodsBean goodsBean = goodsBeans.get(i);
+//                        for (int j = 0; j < priceBeans.size(); j++) {
+//                            PriceBean priceBean = priceBeans.get(j);
+//                            if (priceBean.getChineseName().equals(goodsBean.getNameChinese())) {
+//                                goodsBean.setPrice(priceBean.getMoney());
+//                                goodsBean.setCoin(priceBean.getCoin());
+//
+//                            }
+//                        }
+//                        /* if (goodsBean.isSelected()) */
+//                        showGoodsBeans.add(goodsBean);
+//                    }
+//                }
+            if (goodsBeans != null && goodsBeans.size() > 0) {
+                if (priceBeans != null && priceBeans.size() > 0) {
+                    for (int i = 0; i < goodsBeans.size(); i++) {
+                        //更新item的价格
+                        GoodsBean goodsBean = goodsBeans.get(i);
+
+                        for (int j = 0; j < priceBeans.size(); j++) {
+                            PriceBean priceBean = priceBeans.get(j);
+                            if (priceBean.getChineseName().equals(goodsBean.getNameChinese())) {
+                                goodsBean.setPrice(priceBean.getMoney());
+                                goodsBean.setCoin(priceBean.getCoin());
+
+                            }
+                        }
+                        if (goodsBean.isSelected()) showGoodsBeans.add(goodsBean);
+                    }
+                } else {
+                    for (int i = 0; i < goodsBeans.size(); i++) {
+                        //更新item的价格
+                        GoodsBean goodsBean = goodsBeans.get(i);
+                        if (goodsBean.isSelected()) showGoodsBeans.add(goodsBean);
+                    }
+                }
+        }
+
+
+        return showGoodsBeans;
+
+    }
+}

+ 70 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/BillBean.java

@@ -0,0 +1,70 @@
+package com.hboxs.base_library.beans.db;
+
+import android.text.format.DateFormat;
+
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Keep;
+import org.greenrobot.greendao.annotation.Property;
+
+/**
+ * @author whw
+ * @time 2019/4/8
+ * @Description 错误实体类
+ */
+@Entity
+public class BillBean {
+    @Id(autoincrement = true)
+    private Long id;
+    @Property(nameInDb = "TIME")
+    private long time;
+    @Property(nameInDb = "ERROR")
+    private String thingError;
+    @Property(nameInDb = "REMARK")
+    private String remark;
+    @Keep
+    public BillBean(Long id, long time, String thingError, String remark) {
+        this.id = id;
+        this.time = time;
+        this.thingError = thingError;
+        this.remark = remark;
+    }
+
+    @Keep
+    public BillBean() {
+    }
+    public Long getId() {
+        return this.id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public long getTime() {
+        return this.time;
+    }
+    public void setTime(long time) {
+        this.time = time;
+    }
+    public String getThingError() {
+        return this.thingError;
+    }
+    public void setThingError(String thingError) {
+        this.thingError = thingError;
+    }
+    public String getRemark() {
+        return this.remark;
+    }
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        CharSequence sysTimeStr = DateFormat.format("yyyy-MM-dd HH:mm:ss", time);//时间显示格式
+
+        return "时间:" + sysTimeStr +
+                ", 错误信息:" + thingError;
+    }
+}

+ 36 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/GreenDaoOpenHelper.java

@@ -0,0 +1,36 @@
+package com.hboxs.base_library.beans.db;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+
+
+import com.example.spunsugar.db.BillBeanDao;
+import com.example.spunsugar.db.DaoMaster;
+import com.example.spunsugar.db.LocalOrderBeanDao;
+import com.example.spunsugar.db.OrderBeanDao;
+import com.example.spunsugar.db.WarringBeanDao;
+
+import org.greenrobot.greendao.database.Database;
+
+public class GreenDaoOpenHelper extends DaoMaster.OpenHelper {
+
+    public GreenDaoOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
+        super(context, name, factory);
+    }
+
+    @Override
+    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+        //将要转移的表添加进去
+        MigrationHelper.migrate(db, new MigrationHelper.ReCreateAllTableListener() {
+            @Override
+            public void onCreateAllTables(Database db, boolean ifNotExists) {
+                DaoMaster.createAllTables(db, ifNotExists);
+            }
+
+            @Override
+            public void onDropAllTables(Database db, boolean ifExists) {
+                DaoMaster.dropAllTables(db, ifExists);
+            }//中间新加了StudentDao
+        }, LocalOrderBeanDao.class, OrderBeanDao.class, WarringBeanDao.class, BillBeanDao.class);
+    }
+}

+ 106 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/LocalOrderBean.java

@@ -0,0 +1,106 @@
+package com.hboxs.base_library.beans.db;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.NotNull;
+import org.greenrobot.greendao.annotation.Property;
+import org.greenrobot.greendao.annotation.Unique;
+import org.greenrobot.greendao.annotation.Generated;
+
+@Entity
+public class LocalOrderBean {
+
+    @Id(autoincrement = true)
+    private Long id;
+
+    //@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = "name")
+    @Property(nameInDb = "name")
+    private String name;
+
+    @Property(nameInDb = "price")
+    private double price;
+
+    @Property(nameInDb = "paytype")
+    private int payType;
+
+    @Property(nameInDb = "sn")
+    private String sn;
+
+    @Property(nameInDb = "time")
+    private String time;
+
+    @Generated(hash = 1075047697)
+    public LocalOrderBean(Long id, String name, double price, int payType,
+            String sn, String time) {
+        this.id = id;
+        this.name = name;
+        this.price = price;
+        this.payType = payType;
+        this.sn = sn;
+        this.time = time;
+    }
+
+    @Generated(hash = 1839645560)
+    public LocalOrderBean() {
+    }
+
+    public Long getId() {
+        return this.id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return this.name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public double getPrice() {
+        return this.price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public int getPayType() {
+        return this.payType;
+    }
+
+    public void setPayType(int payType) {
+        this.payType = payType;
+    }
+
+    public String getSn() {
+        return this.sn;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getTime() {
+        return this.time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    @Override
+    public String toString() {
+        return "LocalOrderBean{" +
+                "id=" + id +
+                ", name='" + name + '\'' +
+                ", price=" + price +
+                ", payType=" + payType +
+                ", sn='" + sn + '\'' +
+                ", time='" + time + '\'' +
+                '}';
+    }
+}

+ 318 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/MigrationHelper.java

@@ -0,0 +1,318 @@
+package com.hboxs.base_library.beans.db;
+
+import android.database.Cursor;
+import android.database.SQLException;
+import android.database.sqlite.SQLiteDatabase;
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+import android.util.Log;
+
+import org.greenrobot.greendao.AbstractDao;
+import org.greenrobot.greendao.database.Database;
+import org.greenrobot.greendao.database.StandardDatabase;
+import org.greenrobot.greendao.internal.DaoConfig;
+
+import java.lang.ref.WeakReference;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+/**
+ * Author: John
+ * E-mail: 634930172@qq.com
+ * Date: 2018/7/15 22:30
+ * <p/>
+ * Description:数据库迁移类
+ */
+public final class MigrationHelper {
+
+    public static boolean DEBUG = false;
+    private static String TAG = "MigrationHelper";
+    private static final String SQLITE_MASTER = "sqlite_master";
+    private static final String SQLITE_TEMP_MASTER = "sqlite_temp_master";
+
+    private static WeakReference<ReCreateAllTableListener> weakListener;
+
+    public interface ReCreateAllTableListener{
+        void onCreateAllTables(Database db, boolean ifNotExists);
+        void onDropAllTables(Database db, boolean ifExists);
+    }
+
+    public static void migrate(SQLiteDatabase db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        printLog("【The Old Database Version】" + db.getVersion());
+        Database database = new StandardDatabase(db);
+        migrate(database, daoClasses);
+    }
+
+    public static void migrate(SQLiteDatabase db, ReCreateAllTableListener listener, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        weakListener = new WeakReference<>(listener);
+        migrate(db, daoClasses);
+    }
+
+    public static void migrate(Database database, ReCreateAllTableListener listener, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        weakListener = new WeakReference<>(listener);
+        migrate(database, daoClasses);
+    }
+
+    public static void migrate(Database database, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        printLog("【Generate temp table】start");
+        generateTempTables(database, daoClasses);
+        printLog("【Generate temp table】complete");
+
+        ReCreateAllTableListener listener = null;
+        if (weakListener != null) {
+            listener = weakListener.get();
+        }
+
+        if (listener != null) {
+            listener.onDropAllTables(database, true);
+            printLog("【Drop all table by listener】");
+            listener.onCreateAllTables(database, false);
+            printLog("【Create all table by listener】");
+        } else {
+            dropAllTables(database, true, daoClasses);
+            createAllTables(database, false, daoClasses);
+        }
+        printLog("【Restore data】start");
+        restoreData(database, daoClasses);
+        printLog("【Restore data】complete");
+    }
+
+    private static void generateTempTables(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        for (int i = 0; i < daoClasses.length; i++) {
+            String tempTableName = null;
+
+            DaoConfig daoConfig = new DaoConfig(db, daoClasses[i]);
+            String tableName = daoConfig.tablename;
+            if (!isTableExists(db, false, tableName)) {
+                printLog("【New Table】" + tableName);
+                continue;
+            }
+            try {
+                tempTableName = daoConfig.tablename.concat("_TEMP");
+                StringBuilder dropTableStringBuilder = new StringBuilder();
+                dropTableStringBuilder.append("DROP TABLE IF EXISTS ").append(tempTableName).append(";");
+                db.execSQL(dropTableStringBuilder.toString());
+
+                StringBuilder insertTableStringBuilder = new StringBuilder();
+                insertTableStringBuilder.append("CREATE TEMPORARY TABLE ").append(tempTableName);
+                insertTableStringBuilder.append(" AS SELECT * FROM ").append(tableName).append(";");
+                db.execSQL(insertTableStringBuilder.toString());
+                printLog("【Table】" + tableName +"\n ---Columns-->"+getColumnsStr(daoConfig));
+                printLog("【Generate temp table】" + tempTableName);
+            } catch (SQLException e) {
+                Log.e(TAG, "【Failed to generate temp table】" + tempTableName, e);
+            }
+        }
+    }
+
+    private static boolean isTableExists(Database db, boolean isTemp, String tableName) {
+        if (db == null || TextUtils.isEmpty(tableName)) {
+            return false;
+        }
+        String dbName = isTemp ? SQLITE_TEMP_MASTER : SQLITE_MASTER;
+        String sql = "SELECT COUNT(*) FROM " + dbName + " WHERE type = ? AND name = ?";
+        Cursor cursor=null;
+        int count = 0;
+        try {
+            cursor = db.rawQuery(sql, new String[]{"table", tableName});
+            if (cursor == null || !cursor.moveToFirst()) {
+                return false;
+            }
+            count = cursor.getInt(0);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (cursor != null)
+                cursor.close();
+        }
+        return count > 0;
+    }
+
+
+    private static String getColumnsStr(DaoConfig daoConfig) {
+        if (daoConfig == null) {
+            return "no columns";
+        }
+        StringBuilder builder = new StringBuilder();
+        for (int i = 0; i < daoConfig.allColumns.length; i++) {
+            builder.append(daoConfig.allColumns[i]);
+            builder.append(",");
+        }
+        if (builder.length() > 0) {
+            builder.deleteCharAt(builder.length() - 1);
+        }
+        return builder.toString();
+    }
+
+
+    private static void dropAllTables(Database db, boolean ifExists, @NonNull Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        reflectMethod(db, "dropTable", ifExists, daoClasses);
+        printLog("【Drop all table by reflect】");
+    }
+
+    private static void createAllTables(Database db, boolean ifNotExists, @NonNull Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        reflectMethod(db, "createTable", ifNotExists, daoClasses);
+        printLog("【Create all table by reflect】");
+    }
+
+    /**
+     * dao class already define the sql exec method, so just invoke it
+     */
+    private static void reflectMethod(Database db, String methodName, boolean isExists, @NonNull Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        if (daoClasses.length < 1) {
+            return;
+        }
+        try {
+            for (Class cls : daoClasses) {
+                Method method = cls.getDeclaredMethod(methodName, Database.class, boolean.class);
+                method.invoke(null, db, isExists);
+            }
+        } catch (NoSuchMethodException e) {
+            e.printStackTrace();
+        } catch (InvocationTargetException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+
+    private static void restoreData(Database db, Class<? extends AbstractDao<?, ?>>... daoClasses) {
+        for (int i = 0; i < daoClasses.length; i++) {
+            DaoConfig daoConfig = new DaoConfig(db, daoClasses[i]);
+            String tableName = daoConfig.tablename;
+            String tempTableName = daoConfig.tablename.concat("_TEMP");
+
+            if (!isTableExists(db, true, tempTableName)) {
+                continue;
+            }
+
+            try {
+                // get all columns from tempTable, take careful to use the columns list
+                List<TableInfo> newTableInfos = TableInfo.getTableInfo(db, tableName);
+                List<TableInfo> tempTableInfos = TableInfo.getTableInfo(db, tempTableName);
+                ArrayList<String> selectColumns = new ArrayList<>(newTableInfos.size());
+                ArrayList<String> intoColumns = new ArrayList<>(newTableInfos.size());
+                for (TableInfo tableInfo : tempTableInfos) {
+                    if (newTableInfos.contains(tableInfo)) {
+                        String column = '`' + tableInfo.name + '`';
+                        intoColumns.add(column);
+                        selectColumns.add(column);
+                    }
+                }
+                // NOT NULL columns list
+                for (TableInfo tableInfo : newTableInfos) {
+                    if (tableInfo.notnull && !tempTableInfos.contains(tableInfo)) {
+                        String column = '`' + tableInfo.name + '`';
+                        intoColumns.add(column);
+
+                        String value;
+                        if (tableInfo.dfltValue != null) {
+                            value = "'" + tableInfo.dfltValue + "' AS ";
+                        } else {
+                            value = "'' AS ";
+                        }
+                        selectColumns.add(value + column);
+                    }
+                }
+
+                if (intoColumns.size() != 0) {
+                    StringBuilder insertTableStringBuilder = new StringBuilder();
+                    insertTableStringBuilder.append("REPLACE INTO ").append(tableName).append(" (");
+                    insertTableStringBuilder.append(TextUtils.join(",", intoColumns));
+                    insertTableStringBuilder.append(") SELECT ");
+                    insertTableStringBuilder.append(TextUtils.join(",", selectColumns));
+                    insertTableStringBuilder.append(" FROM ").append(tempTableName).append(";");
+                    db.execSQL(insertTableStringBuilder.toString());
+                    printLog("【Restore data】 to " + tableName);
+                }
+                StringBuilder dropTableStringBuilder = new StringBuilder();
+                dropTableStringBuilder.append("DROP TABLE ").append(tempTableName);
+                db.execSQL(dropTableStringBuilder.toString());
+                printLog("【Drop temp table】" + tempTableName);
+            } catch (SQLException e) {
+                Log.e(TAG, "【Failed to restore data from temp table 】" + tempTableName, e);
+            }
+        }
+    }
+
+    private static List<String> getColumns(Database db, String tableName) {
+        List<String> columns = null;
+        Cursor cursor = null;
+        try {
+            cursor = db.rawQuery("SELECT * FROM " + tableName + " limit 0", null);
+            if (null != cursor && cursor.getColumnCount() > 0) {
+                columns = Arrays.asList(cursor.getColumnNames());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (cursor != null)
+                cursor.close();
+            if (null == columns)
+                columns = new ArrayList<>();
+        }
+        return columns;
+    }
+
+    private static void printLog(String info){
+        if(DEBUG){
+            Log.d(TAG, info);
+        }
+    }
+
+    private static class TableInfo {
+        int cid;
+        String name;
+        String type;
+        boolean notnull;
+        String dfltValue;
+        boolean pk;
+
+        @Override
+        public boolean equals(Object o) {
+            return this == o
+                    || o != null
+                    && getClass() == o.getClass()
+                    && name.equals(((TableInfo) o).name);
+        }
+
+        @Override
+        public String toString() {
+            return "TableInfo{" +
+                    "cid=" + cid +
+                    ", name='" + name + '\'' +
+                    ", type='" + type + '\'' +
+                    ", notnull=" + notnull +
+                    ", dfltValue='" + dfltValue + '\'' +
+                    ", pk=" + pk +
+                    '}';
+        }
+
+        private static List<TableInfo> getTableInfo(Database db, String tableName) {
+            String sql = "PRAGMA table_info(" + tableName + ")";
+            printLog(sql);
+            Cursor cursor = db.rawQuery(sql, null);
+            if (cursor == null)
+                return new ArrayList<>();
+
+            TableInfo tableInfo;
+            List<TableInfo> tableInfos = new ArrayList<>();
+            while (cursor.moveToNext()) {
+                tableInfo = new TableInfo();
+                tableInfo.cid = cursor.getInt(0);
+                tableInfo.name = cursor.getString(1);
+                tableInfo.type = cursor.getString(2);
+                tableInfo.notnull = cursor.getInt(3) == 1;
+                tableInfo.dfltValue = cursor.getString(4);
+                tableInfo.pk = cursor.getInt(5) == 1;
+                tableInfos.add(tableInfo);
+                // printLog(tableName + ":" + tableInfo);
+            }
+            cursor.close();
+            return tableInfos;
+        }
+    }
+}

+ 67 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/OrderBean.java

@@ -0,0 +1,67 @@
+package com.hboxs.base_library.beans.db;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Property;
+import org.greenrobot.greendao.annotation.Generated;
+
+/**
+ * @author whw
+ * @time 2019/4/8
+ * @Description 订单表
+ */
+@Entity
+public class OrderBean {
+    @Id(autoincrement = true)
+    private Long id;
+    @Property(nameInDb = "NAME")
+    private String name;
+    @Property(nameInDb = "TYPE")
+    private int type;
+    @Property(nameInDb = "PRICE")
+    private double price;
+    @Property(nameInDb = "TIME")
+    private long time;
+    @Generated(hash = 429738597)
+    public OrderBean(Long id, String name, int type, double price, long time) {
+        this.id = id;
+        this.name = name;
+        this.type = type;
+        this.price = price;
+        this.time = time;
+    }
+    @Generated(hash = 1725534308)
+    public OrderBean() {
+    }
+    public Long getId() {
+        return this.id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getName() {
+        return this.name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public int getType() {
+        return this.type;
+    }
+    public void setType(int type) {
+        this.type = type;
+    }
+    public double getPrice() {
+        return this.price;
+    }
+    public void setPrice(double price) {
+        this.price = price;
+    }
+    public long getTime() {
+        return this.time;
+    }
+    public void setTime(long time) {
+        this.time = time;
+    }
+
+}

+ 149 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/UpCoinOrderBean.java

@@ -0,0 +1,149 @@
+package com.hboxs.base_library.beans.db;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Generated;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Property;
+
+@Entity
+public class UpCoinOrderBean {
+
+    @Id(autoincrement = true)
+    private Long id;
+    //@Property:设置一个非默认关系映射所对应的列名,默认是使用字段名,例如:@Property(nameInDb = "name")
+    @Property(nameInDb = "sn")
+    private String sn;
+
+    @Property(nameInDb = "name")
+    private String name;
+
+    @Property(nameInDb = "clientId")
+    private String clientId;
+
+    @Property(nameInDb = "price")
+    private double price;
+
+    @Property(nameInDb = "payType")
+    private int payType;
+
+    @Property(nameInDb = "createDate")
+    private String createDate;
+
+    @Property(nameInDb = "status")
+    private String status;
+
+    @Property(nameInDb = "productNumber")
+    private Integer productNumber;
+
+
+
+
+    @Generated(hash = 877248372)
+    public UpCoinOrderBean(Long id, String sn, String name, String clientId,
+            double price, int payType, String createDate, String status,
+            Integer productNumber) {
+        this.id = id;
+        this.sn = sn;
+        this.name = name;
+        this.clientId = clientId;
+        this.price = price;
+        this.payType = payType;
+        this.createDate = createDate;
+        this.status = status;
+        this.productNumber = productNumber;
+    }
+
+    @Generated(hash = 713426251)
+    public UpCoinOrderBean() {
+    }
+
+
+
+
+    public String getSn() {
+        return sn;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public int getPayType() {
+        return payType;
+    }
+
+    public void setPayType(int payType) {
+        this.payType = payType;
+    }
+
+    public String getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(String createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public Integer getProductNumber() {
+        return productNumber;
+    }
+
+    public void setProductNumber(Integer productNumber) {
+        this.productNumber = productNumber;
+    }
+
+    @Override
+    public String toString() {
+        return "UpCoinOrderBean{" +
+                "id=" + id +
+                ", sn='" + sn + '\'' +
+                ", name='" + name + '\'' +
+                ", clientId='" + clientId + '\'' +
+                ", price=" + price +
+                ", payType=" + payType +
+                ", createDate='" + createDate + '\'' +
+                ", status='" + status + '\'' +
+                ", productNumber=" + productNumber +
+                '}';
+    }
+}

+ 59 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/WarringBean.java

@@ -0,0 +1,59 @@
+package com.hboxs.base_library.beans.db;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Property;
+import org.greenrobot.greendao.annotation.Generated;
+
+/**
+ * @author whw
+ * @time 2019/4/8
+ * @Description 错误实体类
+ */
+@Entity
+public class WarringBean {
+    @Id(autoincrement = true)
+    private Long id;
+    @Property(nameInDb = "TIME")
+    private long time;
+    @Property(nameInDb = "ERROR")
+    private String thingError;
+    @Property(nameInDb = "REMARK")
+    private String remark;
+    @Generated(hash = 1416434038)
+    public WarringBean(Long id, long time, String thingError, String remark) {
+        this.id = id;
+        this.time = time;
+        this.thingError = thingError;
+        this.remark = remark;
+    }
+    @Generated(hash = 1927309366)
+    public WarringBean() {
+    }
+    public Long getId() {
+        return this.id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public long getTime() {
+        return this.time;
+    }
+    public void setTime(long time) {
+        this.time = time;
+    }
+    public String getThingError() {
+        return this.thingError;
+    }
+    public void setThingError(String thingError) {
+        this.thingError = thingError;
+    }
+    public String getRemark() {
+        return this.remark;
+    }
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+
+}

+ 133 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/db/ZeDianOrderBean.java

@@ -0,0 +1,133 @@
+package com.hboxs.base_library.beans.db;
+
+import android.text.format.DateFormat;
+
+import org.greenrobot.greendao.annotation.Entity;
+import org.greenrobot.greendao.annotation.Id;
+import org.greenrobot.greendao.annotation.Keep;
+import org.greenrobot.greendao.annotation.Property;
+import org.greenrobot.greendao.annotation.Generated;
+
+/**
+ * @author whw
+ * @time 2019/4/8
+ * @Description 泽点订单类
+ */
+@Entity
+public class ZeDianOrderBean {
+    @Id(autoincrement = true)
+    private Long id;
+    @Property(nameInDb = "f_sn")
+    private String f_sn;
+    @Property(nameInDb = "f_timestamp")
+    private Integer f_timestamp;
+    @Property(nameInDb = "f_payment_amount")
+    private Float f_payment_amount;
+    @Property(nameInDb = "pid")
+    private String pid;
+    @Property(nameInDb = "f_payment_sn")
+    private String f_payment_sn;
+    @Property(nameInDb = "f_payment_gateway")
+    private String f_payment_gateway;
+
+    @Keep
+    public ZeDianOrderBean(String f_sn, Integer f_timestamp, Float f_payment_amount, String pid, String f_payment_sn, String f_payment_gateway) {
+        this.f_sn = f_sn;
+        this.f_timestamp = f_timestamp;
+        this.f_payment_amount = f_payment_amount;
+        this.pid = pid;
+        this.f_payment_sn = f_payment_sn;
+        this.f_payment_gateway = f_payment_gateway;
+    }
+
+
+
+
+    @Keep
+    public ZeDianOrderBean() {
+    }
+
+
+
+
+    @Generated(hash = 1020496016)
+    public ZeDianOrderBean(Long id, String f_sn, Integer f_timestamp, Float f_payment_amount, String pid, String f_payment_sn, String f_payment_gateway) {
+        this.id = id;
+        this.f_sn = f_sn;
+        this.f_timestamp = f_timestamp;
+        this.f_payment_amount = f_payment_amount;
+        this.pid = pid;
+        this.f_payment_sn = f_payment_sn;
+        this.f_payment_gateway = f_payment_gateway;
+    }
+
+
+
+    public Long getId() {
+        return this.id;
+    }
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getF_sn() {
+        return f_sn;
+    }
+
+    public void setF_sn(String f_sn) {
+        this.f_sn = f_sn;
+    }
+
+    public Integer getF_timestamp() {
+        return f_timestamp;
+    }
+
+    public void setF_timestamp(Integer f_timestamp) {
+        this.f_timestamp = f_timestamp;
+    }
+
+    public Float getF_payment_amount() {
+        return f_payment_amount;
+    }
+
+    public void setF_payment_amount(Float f_payment_amount) {
+        this.f_payment_amount = f_payment_amount;
+    }
+
+    public String getPid() {
+        return pid;
+    }
+
+    public void setPid(String pid) {
+        this.pid = pid;
+    }
+
+    public String getF_payment_sn() {
+        return f_payment_sn;
+    }
+
+    public void setF_payment_sn(String f_payment_sn) {
+        this.f_payment_sn = f_payment_sn;
+    }
+
+    public String getF_payment_gateway() {
+        return f_payment_gateway;
+    }
+
+    public void setF_payment_gateway(String f_payment_gateway) {
+        this.f_payment_gateway = f_payment_gateway;
+    }
+
+    @Override
+    public String toString() {
+        return "ZeDianOrderBean{" +
+                "id=" + id +
+                ", f_sn=" + f_sn +
+                ", f_timestamp='" + f_timestamp + '\'' +
+                ", f_payment_amount='" + f_payment_amount + '\'' +
+                ", pid='" + pid + '\'' +
+                ", f_payment_sn='" + f_payment_sn + '\'' +
+                ", f_payment_gateway='" + f_payment_gateway + '\'' +
+                '}';
+    }
+}

+ 26 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/enums/AlarmClockTypeEnum.java

@@ -0,0 +1,26 @@
+package com.hboxs.base_library.beans.enums;
+
+
+public enum AlarmClockTypeEnum {
+    OPEN_DEV(0, "open_dev"),
+    CLOSE_DEV(1,"close_dev"),
+    START_SLEEP(2,"start_sleep"),
+    END_SLEEP(3,"end_sleep");
+
+    private int type;
+    private String content;
+
+
+    AlarmClockTypeEnum(int type, String content) {
+        this.type = type;
+        this.content = content;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+}

+ 29 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/enums/WeekEnum.java

@@ -0,0 +1,29 @@
+package com.hboxs.base_library.beans.enums;
+
+
+public enum WeekEnum {
+    SUNDAY(7, "sunday"),
+    MONDAY(1, "monday"),
+    TUESDAY(2, "tuesday"),
+    WEDNESDAY(3,"wednesday"),
+    THURSDAY(4, "thursday"),
+    FRIDAY(5, "friday"),
+    SATURDAY(6, "saturday");
+
+    private int type;
+    private String content;
+
+
+    WeekEnum(int type, String content) {
+        this.type = type;
+        this.content = content;
+    }
+
+    public int getType() {
+        return type;
+    }
+
+    public String getContent() {
+        return content;
+    }
+}

+ 12 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/callback/DialogClickListener.java

@@ -0,0 +1,12 @@
+package com.hboxs.base_library.callback;
+
+/**
+ * @author whw
+ * @time 2019/3/22
+ * @Description dialog点击事件监听
+ */
+public interface DialogClickListener {
+
+    void onClickListener(int type);
+
+}

+ 93 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/BaseConstant.java

@@ -0,0 +1,93 @@
+package com.hboxs.base_library.constant;
+
+import android.util.ArrayMap;
+
+import com.hboxs.base_library.entity.FlowerTypeBean;
+import com.orhanobut.hawk.Hawk;
+
+import java.util.Map;
+
+/**
+ * 静态常量类
+ * Created by MinKin.
+ */
+public class BaseConstant {
+
+    /**
+     * 线上地址
+     */
+    public static final String ONLINE_BASE_URL = "http://app.sunzee.com.cn/";
+//        public static final String ONLINE_BASE_URL = "http://192.168.0.206:8098";
+//            public static final String ONLINE_BASE_URL = "http://192.168.0.184:49011";
+
+
+
+    /**
+     * Token
+     */
+//    public static final String TOKEN = "TOKEN";
+
+    /**
+     * 个推Id
+     */
+   // public static final String CLIENT_ID = "CLIENT_ID";
+
+    /**
+     * 千玺----天财商龙对接参数
+     */
+    public static String CENTER_ID = "58213";
+
+    /**
+     * 千玺----付款url
+     */
+    public static String PAY_URL = "https://fp.bywrc.com/";
+
+    /**
+     * 千玺----获取菜品url
+     */
+    public static String DATA_URL = "https://fp.bywrc.com/";
+
+    /**
+     * 千玺----获取设备id
+     */
+    public static String DEV_ID = Hawk.get("devicesId","0");
+    /**
+     *門店id
+     */
+    public static String SHOP_ID = Hawk.get("shopId","0");
+
+    /**
+     * 取消轮询
+     */
+    public static volatile boolean CANCEL_POLL = true;
+    /**
+     * 反扫开始轮询
+     */
+    public static volatile boolean SWEEP_POLL = false;
+
+    /**
+     *  千玺北京sn
+     */
+    public static String QxBeijingSn ="OW-A-0010";
+
+    /**
+     *  千玺北京账户
+     */
+    public static String QxBeijingUsername ="OW-A-0012";
+
+    /**
+     *  千玺北京密码
+     */
+    public static String QxBeijingPassword ="OW-A-0012_p";
+
+    /**
+     *  千玺北京商店id
+     */
+    public static String QxBeijingStoreId ="1407993886533494360";
+
+    /**
+     * 存储菜品对应的编号和id
+     */
+    public static Map<String, FlowerTypeBean> FoodControlMap = new ArrayMap<>();
+
+}

+ 251 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java

@@ -0,0 +1,251 @@
+package com.hboxs.base_library.constant;
+
+import android.os.Build;
+
+import com.orhanobut.hawk.Hawk;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ *
+ */
+public abstract class Global {
+
+    /**
+     * 控制当前是否为离线版本m
+     * false 线上版本
+     * true 线下版本
+     */
+    public static boolean isLocal = false;
+
+    /**
+     * 控制当前app是什么版本
+     * 0:线下shif
+     * 1:国内
+     * 2:国外线上
+     */
+    public static final int isVersions = 2;
+
+    /**
+     * 信用卡支付方式user
+     */
+    public static int payCCType = 0;
+
+    /**
+     * 控制支付方式
+     */
+    public static final int payType = 3;
+
+    public static final double num = 177.778;
+
+    /**
+     * 做糖成功,做糖失败,制作中
+     */
+    public static int isDoSugar = 0;
+    /**
+     * 存儲訂單編號
+     */
+    public static Map<String, String> mapOrderReference = new HashMap<>();
+    /**
+     * 存儲优惠码
+     */
+    public static Map<String, String> mapPromotionCOde = new HashMap<>();
+
+    /**
+     * 是否需要存儲日志信息
+     * true:存儲
+     * false:不存儲
+     */
+    public static boolean isSave = false;
+    /**
+     * 根據信號決定是否可以做糖
+     */
+    public static boolean signalStrength = true;
+
+    /**
+     * 记录定时开机时间段
+     */
+    public static int offTimeAlarmNumber = 0;
+
+    /**
+     * 记录定时关机时间段
+     */
+    public static int bootTimeAlarmNumber = 0;
+
+    /**
+     * 记录定时开休眠闹钟个数
+     */
+    public static int openSleepNumber = 0;
+    /**
+     * 记录定时关休眠闹钟个数
+     */
+    public static int closeSleepNumber = 0;
+
+    /**
+     * 记录定时开机闹钟个数
+     */
+    public static int offTimeNumber = 0;
+    /**
+     * 记录定时关机闹钟个数
+     */
+    public static int bootTimeNumber = 0;
+
+
+    /**
+     * 0.表示我要购买的升温和跳舞的升温。
+     * 1.表示远程开关机的升温
+     */
+    public static int warming = 0;
+
+    /**
+     * 0.70°以下
+     * 1.70°以上
+     * 2.表示什么状态都没有的时候,也就是没有读到温湿度的时候。
+     */
+    public static int openOrClose = 2;
+
+    /**
+     * 兼容开关机状态,比如温度上升慢的情况。
+     * 0:开机
+     * 1:没有状态
+     */
+    //public static int temperatureGoUp = 1;
+
+    /**
+     * 记录客户投入纸币金额
+     */
+    public static BigDecimal hasmoney = new BigDecimal("0").setScale(2, RoundingMode.HALF_UP);
+
+    /**
+     * 一次购买plc硬币剩余金额,剩余金额无法进行倍率计算,这个需要注意。
+     */
+    public static BigDecimal buyBalance = new BigDecimal("0").setScale(2, RoundingMode.HALF_UP);
+
+
+    /**
+     * 读取d2的状态来判断是否可以进行开机或关机,并且上传开关机状态
+     * 1:open
+     * 2:no open close
+     * 3:open close
+     * 0:无状态
+     */
+    public static int isStartupAndShutdown = 0;
+
+    //确保d3清零只会执行一次
+    public static boolean clearD3 = true;
+
+    /**
+     * 记录通讯时间
+     */
+    public static long commTime = System.currentTimeMillis();
+
+    /**
+     * 设备状态    1=正常, 2=异常
+     */
+    public static int deviceStatus = 1;
+
+    /**
+     * 设备制作    1=制作中 2=空闲
+     */
+    public static int workStatus = 2;
+
+    /**
+     * 设备取餐    1=待取餐 2=空闲
+     */
+    public static int doorStatus = 2;
+
+    /**
+     * 设备异常状态   每个bit表示一种错误,影响设备正常出餐  0表示正常
+     */
+    public static int errorCode2 = 0;//0表示正常
+
+    public static String deviceSerialPortNumber =(Build.MODEL.equals("dolphin")?"ttyS2":"ttyS4");
+
+    //plc版本区分 根据花型区分
+    public static boolean isInProduction = false;
+
+    //千玺北京所需的请求携带的数据access_token,如果为空字符串,那么就是不对的。
+    public static String access_token = "";
+    //千玺北京所需刷新的refresh_token,如果为空字符串,那么就是不对的。
+    public static String refresh_token = "";
+
+
+    /**
+     * 花型种类
+     * 18:标准版
+     * 22:川博
+     * 30:大改款
+     * 默认是没有读取到。
+     */
+    public static String patternTypes = "";
+
+    public static String  robotversion = "";
+
+
+    //0 表示没有查询过
+    //1 表示有
+    //2 表示没有
+    public static int isM4 = 0;
+
+    //0 表示没有查询过
+    //1 表示有
+    //2 表示没有
+    public static int isM490 = 0;
+    public static int isM489 = 0;
+    public static int isM480 = 0;
+    public static int isM481 = 0;
+
+    //表示信用卡器插入了。 false表示没有 true表示有了。
+    public static boolean beginSession = false;
+
+    //表示信用卡器插入了。    0表示还没有 1表示有了 2表示执行过了不需要了。
+    public static int beginSessionNew = 0;
+
+    public static boolean isChange = false;
+
+    //是否可以做糖
+    public static int timingSugar = 0;
+
+    //蓝牙是否连接成功。
+    public static int isConnectBluetooth = -1;
+
+    //美国第三方支付   nihaopay的商户认证码
+//    public static final String TOKEN = "7e857ba394e4487b0375b43fc4e821ef2fcb8e91660af660b0f3b95e0143e119";
+    public static final String NIHAO_TOKEN = "42adac15f72b944487387ce1fa005c4f60a1b2bacc8e55c7f17dd85f649798ca";
+    //ICBC成都动物园测试参数
+    public static final String mchNo = "52624214";//由优讯分配的商户编码
+    public static final String appId = "zoo_djygkdyf";//优讯分配的商户编码
+    public static final String appSecret = "8za66euerasmtye03f1d919a1b3cfe52";//优讯分配的商户密钥
+
+
+    public static boolean dialog=false;
+    //是否制作中,支持下次做糖?
+    public static int makeStatus = Name.Idle; // 0 表示空闲   1表示做糖
+
+    //d2的状态,表示做糖列表没有了,可以根据d2的状态进行判断。
+    public static boolean d2Status = false;//false表示还在制作,true表示可以制作了。
+    public static int creditCardMultiplier = Hawk.get(Name.MDB_RATE, 100);
+
+    public static int isUserHome=0;
+
+    //判断有没有改过小时
+    public static  int isOff = 0;
+
+    public static String ipAddress = "";//获取ip地址
+    public static boolean flag = false; //用于标识究竟使用的是不是定位功能
+    public static String ipLocationAddress ;//通过ip定位网址获得的地址
+
+    public static String isColdWind = "0";//读取当前的吹冷风时间
+
+    public static boolean mdbPayDuring = false;
+
+    public static  int SecureNumericKeypad = 0;
+    public static  int isLogin = 0;
+
+    public static boolean isM483=true;
+
+}
+

+ 39 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Heartbeat.java

@@ -0,0 +1,39 @@
+package com.hboxs.base_library.constant;
+
+/**
+ * @author whw
+ * @time 2019/4/8
+ * @Description 心跳包
+ */
+public class Heartbeat {
+
+    public static String cabinetHd = "0";//玉米发生器温度
+    public static String cabinetTm = "0";//搅拌温度
+    public static String furnaceTm = "0";//杯子数量
+    public static String furnaceSp = "0";//糖桶的总重量
+
+
+    public static String outCabinetHd = "0";//柜外湿度
+    public static String outCabinetTm = "0";//柜外温度
+    public static String generatorTm = "0";//发生器温度
+    public static String numberOne = "0";
+    ;//No.1000
+    public static String clientId;
+    public static String lastUpdateTime;
+    public static double latitude = 0;
+    public static double longitude = 0;
+    public static String managerId;
+    public static String netWorkingMode;
+    public static String deviceId;
+    public static Boolean dataM8 = true;
+    public static String address;//地址
+    public static String setTemperature;
+    //物料
+    public static String redSugar = "0";
+    public static String whiteSugar = "0";
+    public static String yellowSugar = "0";
+    public static String blueSugar = "0";
+    public static String stick = "0";
+    public static String water = "0";
+    public static String wasteWater = "0";
+}

+ 12 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/MMKVName.java

@@ -0,0 +1,12 @@
+package com.hboxs.base_library.constant;
+
+/**
+ * MMKVutil使用的常量类  空间类
+ */
+public class MMKVName {
+
+    public static final String BACKGROUND_SYSTEM = "BACKGROUND_SYSTEM";//后台设置数据持久化
+
+
+
+}

+ 16 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/MMKVNameValue.java

@@ -0,0 +1,16 @@
+package com.hboxs.base_library.constant;
+
+/**
+ * MMKV所使用到的用户名  空间中的字段类
+ */
+public class MMKVNameValue {
+
+    //机型持久化
+    public static String MACHINE_TYPE = "MACHINE_TYPE";
+    //nayax 支付图片持久化
+    public static String NAYAX_PAY_IMG = "NAYAX_PAY_IMG"; //1 默认 2瑞士 3美国
+
+    public static String OLD_VERSION_NEW = "OLD_VERSION_NEW";
+    //logo持久化
+    public static String LOGO = "LOGO";
+}

+ 355 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Name.java

@@ -0,0 +1,355 @@
+package com.hboxs.base_library.constant;
+
+/**
+ * @author whw
+ * @time 2019/3/30
+ * @Description 通用名称
+ */
+public interface Name {
+
+    String ADMIN = "admin";
+    String GUEST = "guest";
+    String P10 = "P10";//标准版
+
+    String MG320_18 = "MG320";//标准版
+    String MG320_30 = "MG320-1";//30种花型
+    String MG320_22 = "MG320-2";//川博
+    String MG320_26 = "MG320-3";//川博
+    String MG320_42 = "MG320-4";//42种花型
+    String MDB = "MDB";
+    String ICT = "ICT";
+    String WMDB = "WMDB";
+    String PLC = "PLC";
+    String SOEPAY_WMDB = "SOEPAY_WMDB";
+
+    /**
+     * 当前管理员 int
+     * 0-admin
+     * 1-guest
+     */
+    String ACCOUNT_STATE = "account_state";
+    /**
+     * 支付方式 int
+     * 1-无需支付
+     * 2-线上支付
+     * 3-线下支付
+     * 4-线上线下支付
+     */
+    String PAY_TYPE = "pay_type";
+    /**
+     * 联系人
+     */
+    String CONTACTS_NUM = "contacts_num";
+    /**
+     * 联系方式
+     */
+    String CONTACTS_NAME = "contacts_name";
+
+    String SP_ERROR = "sp_error";//没作用。
+    //网络状态
+    String NET_TYPE = "net_type";
+    //系统id
+    String SYSTEM_ID = "system_Id";
+    /**
+     * 设备连接状态
+     * 0-未连接
+     * 1-连接中
+     * 2-已连接
+     */
+    String CONNECT_STATE = "CONNECT_STATE";
+    /**
+     * 语言设置
+     * 1-中文
+     * 2-英文
+     */
+    String LANGUAGE_TYPE = "language_type";
+
+    String ITEM_GOODS = "item_goods";
+    String ITEM_AUTHORITY = "item_authority";
+    /**
+     * 剩余硬币个数
+     */
+    String REMAINING_COINS = "remaining_coins";
+    /**
+     * 硬币脉冲乘于x值
+     */
+    String COIN_PULSE_MULTIPLY = "coin_pulse_multiply";
+    /**
+     * 硬币脉冲除于x值
+     */
+    String COIN_PULSE_DIVIDE = "coin_pulse_divide";
+    /**
+     * 旧plc读取d2没有一个完毕的状态,我们需要根据d2完毕来停止写入数据
+     * 开机,关机的完毕状态
+     */
+    String toComplete = "to_complete";
+
+    /**
+     * 花型位置
+     */
+    // String ITEM_PATTERN_SORT = "item_pattern_sort";
+
+    /**
+     * 关机
+     */
+    String OFFTIME = "offtime";
+
+    /**
+     * 开机
+     */
+    String BOOTIME = "bootime";
+    /**
+     * 开关机状态
+     */
+    String SHUTDOWNSTATE = "shutdownstate";
+    String IS_AUTO_OPENHOT = "isautoopenhot";
+    /**
+     * 是否显示公众号
+     */
+    String IS_GONGZONGHAO = "isgongzonghao";
+    /**
+     * 记录上次的开关机规则
+     */
+    String SwitchingTime = "SWITCHINGTIME";
+
+    /**
+     * 客户自填地址
+     */
+    String SELFNAME = "SELFNAME";
+
+    /**
+     * 运营名字:联系电话
+     */
+    String OPERATIONAL = "OPERATIONAL";
+
+    /**
+     * 公众号图片地址
+     */
+    String QRCODEIMGURL = "QRCODEIMGURL";
+
+    String EXITPROGRAM = "EXITPROGRAM";
+
+    /**
+     * 币值改变了
+     */
+    String CURRENCYCHANGES = "CURRENCYCHANGES";
+
+    String QUEUE_DATA = "QUEUEDATA";    //创建队列成功
+    String SEPARATE_SUCCESS = "SEPARATESUCCESS";  //脱离系统成功
+    String CHANNEL_DATA = "CHANNELDATA";   //修改通道
+    String AIRCRAFT_TYPE = "AIRCRAFT_TYPE";//不同的型号
+    String ONOFF = "ONOFF";//是否支持线上+线下
+    String BEGINSESSION = "BEGINSESSION";//信用卡设备插卡了。
+    String VENDAPPROVED = "VENDAPPROVED";//支付成功
+    String ENDSESSION = "ENDSESSION";//结束会话
+    String STICK = "STICK";
+    String WHITE_SUGAR = "WHITE_SUGAR";
+    String RED_SUGAR = "RED_SUGAR";
+    String YELLOW_SUGAR = "YELLOW_SUGAR";
+    String BLUE_SUGAR = "BLUE_SUGAR";
+    String CLEAN_WATER = "CLEAN_WATER";
+    String DIRTY_WATER = "DIRTY_WATER";
+    //低于10%
+    String WHITE_SUGAR_10 = "WHITE_SUGAR_10";
+    String RED_SUGAR_10 = "RED_SUGAR_10";
+    String YELLOW_SUGAR_10 = "YELLOW_SUGAR_10";
+    String BLUE_SUGAR_10 = "BLUE_SUGAR_10";
+
+    String MACHINE_TYPE = "MACHINE_TYPE";//机器类型
+    String THROW_STICK = "THROWSTICK";//是否开启自动扔棍子逻辑
+    String THROW_STICK_TIME = "THROW_STICK_TIME";//每次自动扔棍时间
+    String BLACK_MAIN_TIME = "BLACK_MAIN_TIME";//返回主界面时间
+    String SERIAL_NUMBER = "SERIAL_NUMBER";//棉花糖名称是否以数字为名称。
+    String TIMER_SUGAR = "TIMER_SUGAR";//连续做倒计时。
+    String PAPERTYPE = "PAPERTYPE";//币值类型
+    String STATUS_BAR = "STATUS_BAR";//状态栏
+    String BLUETOOTH = "BLUETOOTH";//蓝牙
+    String BLUETOOTH_CONNECT_DEVICE = "BLUETOOTH_CONNECT_DEVICE ";//已连接的蓝牙设备
+
+
+    String SIM_FUNCTION = "SIM_FUNCTION";//sim卡检查功能
+    String NAYAX_FUNCTION = "NAYAX_FUNCTION";//nayax检查功能
+    String BILL_FUNCTION = "BILL_FUNCTION";//纸币检查功能
+
+    String ADAD = "ADAD";//ad视频,广告的信息保存
+    String ADADB = "ADADB";//adb视频,广告的信息保存
+
+
+
+    String GUIDE = "GUIDE";//引导页
+    String LOGIN_USER = "LOGIN_USER";//登录用户
+
+
+
+
+    String LOCAL_ALARM_CLOCK = "LOCAL_ALARM_CLOCK";//本地闹钟。
+    String ALARMCLOCK_TYPE = "ALARMCLOCK_TYPE";//闹钟类型
+
+    String ThemeSwitch = "ThemeSwitch";//主题切换
+    String Theme1 = "1";//主题1
+    String Theme2 = "2";//主题2
+
+    String ZE_DIAN_CONNECT_STATE = "ZE_DIAN_CONNECT_STATE";//泽点设备编号的状态 true表示注册成功,false表示还没注册过,或者注册失败等等。
+
+    int IN_PRODUCTION = 1;//制作中
+
+    int Idle = 0;//空闲
+    String REMOTEVEND = "REMOTEVEND";//mdb远程制作
+    String DEFAULT_FULL_SCREEN = "DEFAULT_FULL_SCREEN";//默认全屏:主要用于兼容旧版本老客户。 true为全屏
+
+    //-------------------------------------找零功能相关 ----------------------------------- ----------------------------------- -----------------------------------
+    String CHANGE = "CHANG";//找零功能
+    String CHANGE_TYPE = "CHANGE_TYPE";//找零协议
+    String LIMIT_NUMBER = "LIMIT_NUMBER";//限制找零枚数
+    String CURRENCY_VALUE = "CURRENCY_VALUE";//一枚等于多少钱
+    String CHANGE_NUMBER = "CHANGE_NUMBER";//找零库存
+    String EARLY_WARNING_CHANGE_NUMBER = "EARLY_WARNING_CHANGE_NUMBER";//找零预警库存
+    String CHANGE_ZC = "CHANGE_ZC";//找零暂存功能
+    String WARNING_ALARM = "WARNING_ALARM";//找零预警 true表示执行过了,false报警还没执行
+    //-------------------------------------找零功能相关 ----------------------------------- ----------------------------------- -----------------------------------
+
+
+
+    //----------------------------- 发票功能 ----------------------------------- ----------------------------------- -----------------------------------
+    String INVOICE_FUNCTION = "INVOICE_FUNCTION";//发票功能
+    String RECEIPT = "RECEIPT";//发票打印机功能
+    String SALESID = "SALESID";//备注
+    String COMPANYIDENTIFIER = "COMPANYIDENTIFIER";//统编
+    String INVOICE = "INVOICE";//key
+    String DEVICENO = "DEVICENO";//机台编号
+    String MANDATORY_INVOICE = "MANDATORY_INVOICE";//强制开发票
+
+    //----------------------------- 发票功能 ----------------------------------- ----------------------------------- -----------------------------------
+
+
+
+    //-------------------------- 其他 ----------------------------------- ----------------------------------- -----------------------------------
+    String TAKE_FOOD_CO = "TAKE_FOOD_CO";//取餐模式
+    String ST_CARD_TIPS = "ST_CARD_TIPS";//沙特刷卡提示语
+    String KOREA = "KOREA";//韩国文字图标的修改
+    String KOREAAI = "KOREAAI";//韩国AI拍照打印
+    String LANGUAGE_SHOW = "LANGUAGE_SHOW";//语言是否在选择棉花糖界面显示
+    String LANGUAGE2 = "LANGUAGE2";//第二种语言
+    String LANGUAGE_TYPE2 = "LANGUAGE_TYPE2";//记录之前选择的语言
+    String MALAY_DORMANCY = "MALAY_DORMANCY";//休眠中更换
+    String CANCLE_GONE = "CANCLE_GONE";//科威特取消信用卡按钮
+    String GEE_GOMES = "GEE_GOMES";//GEE_GOMES客户的需求
+    String PULSE_CREDIT_CARD = "PULSE_CREDIT_CARD";//脉冲信用卡器提示
+    String RETURN_KEY = "RETURN_KEY";//信用卡器返回键
+    String POWER_TURNED_ON = "POWER_TURNED_ON";//开机加湿
+    String VENDIM = "VENDIM";//俄罗斯客户的信用卡器币值需求
+    String USADF = "USADF";// 美国东风
+    String AMOUNT_HIDE = "AMOUNT_HIDE";//金额隐藏小数点
+    String TUANE = "TUANE";//西班牙客戶需求 TUANE
+    String SOEPAY = "SOEPAY";//SOEPAY客户的需求
+    String SOEPAY_TOWMDB = "SOEPAY_TOWMDB";//SOEPAY客户的需求 两个mdb的需求
+
+    String ZE_DIAN = "ZE_DIAN";//泽点
+
+    String WANT_TO_BUY = "WANT_TO_BUY ";//我要购买隐藏
+
+    String BUY_EN = "BUY_EN";//购买英文
+
+    String WANT_TO_BUY1 = "WANT_TO_BUY1";//我要购买使用以色列新的
+    String PORTUGUESE_FLOWER_PATTERN = "PORTUGUESE_FLOWER_PATTERN";//葡萄牙图标
+    String BAXI_CHANGE = "BAXI_CHANGE";//巴西花型修改;
+    String ISAAC = "ISAAC";//法国 ISAAC的需求
+    String CUSTON_CONTACT_INFO = "CUSTON_CONTACT_INFO";//联系信息开关
+    String AMOUNT_INVESTED = "AMOUNT_INVESTED";//选花页面的金额
+    String HAPPY_VALLEY_ORDER = "HAPPY_VALLEY_ORDER";//欢乐谷订单备注
+    String WMDB_TIME_PAYMENT = "WMDB_TIME_PAYMENT";//wmdb信用卡支付时间设置
+    String SESSION_SUBMISSION_TIME = "SESSION_SUBMISSION_TIME";//会话时间
+    String UNIT_OF_CURRENCY_TIME = "UNIT_OF_CURRENCY_TIME";//币值单位
+    String CUSTON_CONTACT_NAME = "CUSTON_CONTACT_NAME";//联系名称自定义;
+    String CUSTON_CONTACT_INFORMATION = "CUSTON_CONTACT_INFORMATION";//联系方式自定义;
+
+    String ADVERTISING_TIME = "ADVERTISING_TIME";//回到广告页面的时间
+    String RAYMEN_POS_PAY = "RAYMEN_POS_PAY";//雷门台湾电子支付
+    String SAS_SOBAPP = "SAS_SOBAPP"; //法國 SAS_SOBAPP
+    String BUYICON_POSITION = "BUYICON_POSITION";//我要购买的位置 true是中间的意思, false是右下
+    String COIN_TIPS = "COIN_TIPS";//已投硬币提示修改
+    String IF_TIPS = "IF_TIPS";//制作中条件提示修改
+    String MAKE_TIPS = "MAKE_TIPS";//制作中提示修改
+    String MONEY_TIPS = "MONEY_TIPS";//已投纸币提示修改
+    // -------------------------- 其他 ----------------------------------- ----------------------------------- ----------------------------------- -----------------------------------
+
+
+    // ---------------------------------- 通信设置 ----------------------------------- ----------------------------------- -----------------------------------
+    String MDB_LEVEL = "MDB_LEVEL";//mdb級別
+    String NAYAX_CASHCALE = "NAYAX_CASHCALE";//让nayax托管cash sale
+    String IS_PULSE_BANKNOTE = "IS_PULSE_BANKNOTE";//是否为脉冲纸币器
+    String TRUSTEESHIP = "TRUSTEESHIP";//纸币托管
+    String ALWAYS_IDLE = "ALWAYS_IDLE";//nayax一直闲置模式
+
+    String NOTE_COMMUNICATION = "NOTE_COMMUNICATION";//纸币器型号
+    String REMOTE_BUY = "REMOTE_BUY";//mdb遠程購買
+    String MDB_CASHCALE = "MDB_CASHCALE";//mdb cash sale
+
+    /**
+     * plc的串口地址
+     */
+    String PLCSERIALPORT = "plcserialport";
+    /**
+     * mdb的串口地址
+     */
+    String MDBSERIALPORT = "mdbserialport";
+    /**
+     * ox的串口地址
+     */
+    String OXSERIALPORT = "oxserialport";
+    /**
+     * pax ip
+     */
+    String PAX_IP = "PAX_IP";
+    /**
+     * pax port
+     */
+    String PAX_PORT = "PAX_PORT";
+
+    String CREDIT_CARD_PAYMENT_TEXT_DESCRIPTION = "CREDIT_CARD_PAYMENT_TEXT_DESCRIPTION";//信用卡文本描述
+    String END_CREDIT_CARD = "END_CREDIT_CARD";//信用卡对话框跟随流程结束
+    String MDB_RATE = "MDB_RATE";//mdb倍率
+
+    String MDBRS232 = "MDBRS232";//威佛启动
+    // ---------------------------------- 通信设置 ----------------------------------- ----------------------------------- -----------------------------------
+
+    // -----------------------------------功能开启 ----------------------------------- ----------------------------------- -----------------------------------
+    String PROMOTION_CODE = "PROMOTION_CODE";//优惠码功能
+    String VALUE_ZERO = "VALUE_ZERO";//是否清零
+    String BUY_AGAIN = "BUY_AGAIN";//是否显示60秒再次购买弹窗。
+    String IS_GUEST_LOGIN = "isguestlogin";//是否同意游客登陆
+    String PLAY_MODE = "PLAY_MODE";//广告播放模式
+    String NOTE_NO_REFUND = "NOTE_NO_REFUND";//提示没有退币
+    String ISOPENPAYTYPE = "ISOPENPAYTYPE";//开启选择支付方式
+    String TASTE = "TASTE";//口味描述
+    String FOCUS_ON_GETTING_COUPONS = "FOCUS_ON_GETTING_COUPONS";//关注领取优惠
+    String INIT_GUIDE_FUNCTION = "INIT_GUIDE_FUNCTION";//初始化引导功能
+    String AUTOUPLOADORDER = "AUTOUPLOADORDER";//自动订单上传
+    String ADVERTISING_RULES = "ADVERTISING_RULES";//广告规则限制
+    String AUTOMATIC_FILLING_MATERIAL = "AUTOMATIC_FILLING_MATERIAL";//自动补料
+    String SOLD_OUT = "SOLD_OUT"; //已售罄
+    String HIBERNATION = "HIBERNATION";//休眠中自定义
+    String COUNTRY = "COUNTRY";//国家地区
+    String COUNTRY_TEXT = "COUNTRY_TEXT";//国家地区网址
+    String CALIBRATION = "CALIBRATION";//时间校准功能
+    String LOCATION = "LOCATION";//位置信息获取
+
+    // -----------------------------------功能开启 ----------------------------------- ----------------------------------- -----------------------------------
+
+    //  ------------------------------- 购物车相关的 ----------------------------------- ----------------------------------- -----------------------------------
+    String SHOPPING_TROLLEY = "SHOPPING_TROLLEY";//购物车功能
+    String SHOPPING_TROLLEY_NUMBER = "SHOPPING_TROLLEY_NUMBER";//购物车数量
+    String DISCOUNT_FUNCTION = "DISCOUNT_FUNCTION";//折扣功能是否开启
+    String TWO_PIECES_DISCOUNT = "TWO_PIECES_DISCOUNT";//第二件折扣
+    String THREE_PIECES_DISCOUNT = "THREE_PIECES_DISCOUNT";//第三件折扣
+    String DISCOUNT_FUNCTION_TITLE = "DISCOUNT_FUNCTION_TITLE";//折扣功能標題
+    String OLD_SHOPPING_CART = "OLD_SHOPPING_CART";//旧广告切换
+    String AIRPLANE = "AIRPLANE";//飞行模式是否开启
+    String CARDMACHINE = "CARDMACHINE";//卡片机是否开启
+    String CARDMACHINEMODEL = "CARDMACHINEMODEL";//卡片机的模式,1为赠送,2为付费
+    //  ------------------------------- 购物车相关的 ----------------------------------- ----------------------------------- -----------------------------------
+
+    String QIANBI_METHOD = "QIANBI_METHOD";//钱币支付方式
+    String SESSION_ERROR = "SESSION_ERROR";
+}
+

+ 325 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/constant/ProductAbout.java

@@ -0,0 +1,325 @@
+package com.hboxs.base_library.constant;
+
+import android.util.Log;
+
+import com.hboxs.base_library.R;
+import com.hboxs.base_library.util.ScreenOrientationUtil;
+import com.hboxs.base_library.util.UiUtil;
+import com.orhanobut.hawk.Hawk;
+
+/**
+ * @author whw
+ * @time 2019/4/11
+ * @Description 商品数据信息
+ */
+public interface ProductAbout {
+
+
+
+    //----------------------------------------------------十八种----------------------------------------------------
+
+
+
+
+
+    //----------------------------------------------------三十种----------------------------------------------------
+    String[] namesNewR = {
+            "fancy_19", "fancy_20", "fancy_21",
+            "fancy_22", "fancy_23", "fancy_24",
+            "fancy_25", "fancy_26", "fancy_27",
+            "fancy_28", "fancy_29", "fancy_30",
+            "fancy_1", "fancy_2", "fancy_3", "fancy_4",
+            "fancy_5", "fancy_6", "fancy_7",
+            "fancy_8", "fancy_9", "fancy_10",
+            "fancy_11", "fancy_12", "fancy_13",
+            "fancy_14", "fancy_15", "fancy_16",
+            "fancy_17", "fancy_18"};
+    String[] chineseNameNewR = {
+            "精灵蝶梦", "夏日倾城", "百花齐放", "蜂缠蝶恋", "豆蔻年华", "星空幻想"
+            , "坠入星空", "雪花飞舞", "春暖花开", "花飞蝶舞", "花样年华", "心花怒放"
+            , "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄"
+    };
+
+    String[] chineseNameMQGTR = {
+            "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄",
+            "精灵蝶梦", "夏日倾城", "百花齐放", "蜂缠蝶恋", "豆蔻年华", "星空幻想"
+            , "坠入星空", "雪花飞舞", "春暖花开", "花飞蝶舞", "花样年华", "心花怒放"
+    };
+    String[] imgsNewR = {
+            "butterfly_brw", "clover_lrw", "dropwort_lrw", "butterfly_r", "clover_r", "dropwort_r",
+            "butterfly_w", "clover_w", "dropwort_w", "butterfly_ryb", "clover_ryb", "dropwort_ryb",
+            "img_meiguijingling", "img_tongxinweiming",
+            "img_wucaibingfenone", "img_tianxuelianwu",
+            "img_xiariailian", "a222",
+            "img_meimengchengzhen", "img_yijianzhongqing",
+            "img_youlanailian", "img_xinzhishouhu",
+            "icon_xral", "img_bingmeiren",
+            "img_guosetianxiang", "img_chizizhixin",
+            "img_haiyangzhixin", "img_shuijinzhilian",
+            "img_wucaibingfen", "img_xiaomianao"
+
+
+    };
+    String[] imgIdsNewR = {
+            "butterfly_brw", "clover_lrw", "dropwort_lrw",
+            "butterfly_r", "clover_r", "dropwort_r",
+            "butterfly_w", "clover_w", "dropwort_w",
+            "butterfly_ryb", "clover_ryb", "dropwort_ryb",
+            "tc_mgjl", "tc_txwm", "tc_wcbf",
+            "tc_txlw", "tc_szfr", "tc_lyhc",
+            "tc_mmcz", "tc_yjzq", "tc_ylal",
+            "tc_xzsh", "tc_xral", "tc_bmr",
+            "tc_gstx", "tc_czzx", "tc_hyzx",
+            "tc_sjzl", "tc_csjl", "tc_xma"
+
+    };
+
+    //----------------------------------------------------四十二种----------------------------------------------------
+    String[] forty_twoName = {
+            "fancy_31", "fancy_32", "fancy_33", "fancy_34",
+            "fancy_35", "fancy_36", "fancy_37", "fancy_38",
+            "fancy_39", "fancy_40", "fancy_41", "fancy_42",
+            "fancy_19", "fancy_20", "fancy_21",
+            "fancy_22", "fancy_23", "fancy_24",
+            "fancy_25", "fancy_26", "fancy_27",
+            "fancy_28", "fancy_29", "fancy_30",
+            "fancy_1", "fancy_2", "fancy_3", "fancy_4",
+            "fancy_5", "fancy_6", "fancy_7",
+            "fancy_8", "fancy_9", "fancy_10",
+            "fancy_11", "fancy_12", "fancy_13",
+            "fancy_14", "fancy_15", "fancy_16",
+            "fancy_17", "fancy_18"};
+    String[] forty_twoChineseName = {
+            "花好月圆", "出水芙蓉", "微光染晕", "夏日莓莓",
+            "芳楚纷飞", "晨夕光晕", "坠入爱河", "天马行空",
+            "灼灼其华", "一帘幽梦", "七月初夏", "四月微风",
+            "精灵蝶梦", "夏日倾城", "百花齐放", "蜂缠蝶恋", "豆蔻年华", "星空幻想"
+            , "坠入星空", "雪花飞舞", "春暖花开", "花飞蝶舞", "花样年华", "心花怒放"
+            , "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄"
+    };
+
+    String[] forty_twoChineseNameMQGTR = {
+            "花好月圆", "出水芙蓉", "微光染晕", "夏日莓莓",
+            "芳楚纷飞", "晨夕光晕", "坠入爱河", "天马行空",
+            "灼灼其华", "一帘幽梦", "七月初夏", "四月微风",
+            "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄",
+            "精灵蝶梦", "夏日倾城", "百花齐放", "蜂缠蝶恋", "豆蔻年华", "星空幻想"
+            , "坠入星空", "雪花飞舞", "春暖花开", "花飞蝶舞", "花样年华", "心花怒放"
+    };
+    String[] forty_twoImgs = {
+            "img_huahaoyueyuan", "img_chushuifurong", "img_weiguangranyun", "img_xiarimeimei",
+            "img_fangchufenfei", "img_chenxiguangyun", "img_zuiruaihe", "img_tianmaxingkong",
+            "img_zhuozhuoqihua", "img_yixiyoumeng", "img_qiyuechuxia", "img_siyueweifeng",
+            "butterfly_brw", "clover_lrw", "dropwort_lrw", "butterfly_r", "clover_r", "dropwort_r",
+            "butterfly_w", "clover_w", "dropwort_w", "butterfly_ryb", "clover_ryb", "dropwort_ryb",
+            "img_meiguijingling", "img_tongxinweiming",
+            "img_wucaibingfenone", "img_tianxuelianwu",
+            "img_xiariailian", "a222",
+            "img_meimengchengzhen", "img_yijianzhongqing",
+            "img_youlanailian", "img_xinzhishouhu",
+            "icon_xral", "img_bingmeiren",
+            "img_guosetianxiang", "img_chizizhixin",
+            "img_haiyangzhixin", "img_shuijinzhilian",
+            "img_wucaibingfen", "img_xiaomianao"
+
+
+    };
+    String[] forty_twoImgIds = {
+            "img_huahaoyueyuan", "img_chushuifurong", "img_weiguangranyun", "img_xiarimeimei",
+            "img_fangchufenfei", "img_chenxiguangyun", "img_zuiruaihe", "img_tianmaxingkong",
+            "img_zhuozhuoqihua", "img_yixiyoumeng", "img_qiyuechuxia", "img_siyueweifeng",
+            "butterfly_brw", "clover_lrw", "dropwort_lrw",
+            "butterfly_r", "clover_r", "dropwort_r",
+            "butterfly_w", "clover_w", "dropwort_w",
+            "butterfly_ryb", "clover_ryb", "dropwort_ryb",
+            "tc_mgjl", "tc_txwm", "tc_wcbf",
+            "tc_txlw", "tc_szfr", "tc_lyhc",
+            "tc_mmcz", "tc_yjzq", "tc_ylal",
+            "tc_xzsh", "tc_xral", "tc_bmr",
+            "tc_gstx", "tc_czzx", "tc_hyzx",
+            "tc_sjzl", "tc_csjl", "tc_xma"
+
+    };
+
+    //----------------------------------------------------二十二种c川博----------------------------------------------------
+    String[] namesNewCB = {
+            "fancy_19", "fancy_22",
+            "fancy_25", "fancy_28",
+            "fancy_1", "fancy_2", "fancy_3", "fancy_4",
+            "fancy_5", "fancy_6", "fancy_7",
+            "fancy_8", "fancy_9", "fancy_10",
+            "fancy_11", "fancy_12", "fancy_13",
+            "fancy_14", "fancy_15", "fancy_16",
+            "fancy_17", "fancy_18"};
+    String[] chineseNameNewCB = {
+            "精灵蝶梦", "蜂缠蝶恋"
+            , "坠入星空", "花飞蝶舞"
+            , "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄"
+    };
+
+    String[] chineseNameMQGCB = {
+            "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄",
+            "精灵蝶梦", "蜂缠蝶恋"
+            , "坠入星空", "花飞蝶舞"
+    };
+    String[] imgsNewCB = {
+            "butterfly_brw", "butterfly_r",
+            "butterfly_w", "butterfly_ryb",
+            "img_meiguijingling", "img_tongxinweiming",
+            "img_wucaibingfenone", "img_tianxuelianwu",
+            "img_xiariailian", "a222",
+            "img_meimengchengzhen", "img_yijianzhongqing",
+            "img_youlanailian", "img_xinzhishouhu",
+            "icon_xral", "img_bingmeiren",
+            "img_guosetianxiang", "img_chizizhixin",
+            "img_haiyangzhixin", "img_shuijinzhilian",
+            "img_wucaibingfen", "img_xiaomianao"
+
+    };
+    String[] imgIdsNewCB = {
+            "butterfly_brw", "butterfly_r",
+            "butterfly_w", "butterfly_ryb",
+            "tc_mgjl", "tc_txwm", "tc_wcbf",
+            "tc_txlw", "tc_szfr", "tc_lyhc",
+            "tc_mmcz", "tc_yjzq", "tc_ylal",
+            "tc_xzsh", "tc_xral", "tc_bmr",
+            "tc_gstx", "tc_czzx", "tc_hyzx",
+            "tc_sjzl", "tc_csjl", "tc_xma"
+
+    };
+
+
+    //----------------------------------------------------二十六种c川博----------------------------------------------------
+    String[] namesNewCB26 = {
+            "fancy_20", "fancy_26",
+            "fancy_23", "fancy_29",
+            "fancy_19", "fancy_22",
+            "fancy_25", "fancy_28",
+            "fancy_1", "fancy_2", "fancy_3", "fancy_4",
+            "fancy_5", "fancy_6", "fancy_7",
+            "fancy_8", "fancy_9", "fancy_10",
+            "fancy_11", "fancy_12", "fancy_13",
+            "fancy_14", "fancy_15", "fancy_16",
+            "fancy_17", "fancy_18"};
+    String[] chineseNameNewCB26 = {
+            "夏日倾城", "雪花飞舞"
+            , "豆蔻年华", "花样年华"
+            , "精灵蝶梦", "蜂缠蝶恋"
+            , "坠入星空", "花飞蝶舞"
+            , "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄"
+    };
+
+    String[] chineseNameMQGCB26 = {
+            "玫瑰精灵", "童心未泯", "五彩缤纷", "天雪恋舞", "水中芙蓉", "烈焰红唇"
+            , "美梦成真", "一见钟情", "幽兰爱恋", "心之守护", "夏日爱恋", "冰美人"
+            , "国色天香", "赤子之心", "海洋之心", "水晶之恋", "彩色精灵", "小棉袄",
+            "精灵蝶梦", "蜂缠蝶恋"
+            , "坠入星空", "花飞蝶舞"
+            , "夏日倾城", "雪花飞舞"
+            , "豆蔻年华", "花样年华"
+    };
+    String[] imgsNewCB26 = {
+            "clover_lrw", "clover_w", "clover_r", "clover_ryb",
+            "butterfly_brw", "butterfly_r",
+            "butterfly_w", "butterfly_ryb",
+            "img_meiguijingling", "img_tongxinweiming",
+            "img_wucaibingfenone", "img_tianxuelianwu",
+            "img_xiariailian", "a222",
+            "img_meimengchengzhen", "img_yijianzhongqing",
+            "img_youlanailian", "img_xinzhishouhu",
+            "icon_xral", "img_bingmeiren",
+            "img_guosetianxiang", "img_chizizhixin",
+            "img_haiyangzhixin", "img_shuijinzhilian",
+            "img_wucaibingfen", "img_xiaomianao"
+
+    };
+    String[] imgIdsNewCB26 = {
+            "clover_lrw", "clover_w", "clover_r", "clover_ryb",
+            "butterfly_brw", "butterfly_r",
+            "butterfly_w", "butterfly_ryb",
+            "tc_mgjl", "tc_txwm", "tc_wcbf",
+            "tc_txlw", "tc_szfr", "tc_lyhc",
+            "tc_mmcz", "tc_yjzq", "tc_ylal",
+            "tc_xzsh", "tc_xral", "tc_bmr",
+            "tc_gstx", "tc_czzx", "tc_hyzx",
+            "tc_sjzl", "tc_csjl", "tc_xma"
+    };
+
+    int screenOrientation= ScreenOrientationUtil.getScreenOrientation();
+
+    static String[] getNamesS() {
+        if (screenOrientation== ScreenOrientationUtil.ORIENTATION_LANDSCAPE){
+            return namesS;
+        }else {
+            return namesS1;
+        }
+    }
+
+    static String[] getChineseNameS() {
+        if (screenOrientation== ScreenOrientationUtil.ORIENTATION_LANDSCAPE) {
+            Log.d("ProductAbout", "getImgIdsS: ");
+            return chineseNameS;
+        }else {
+            Log.d("ProductAbout", "getImgIdsS1: ");
+            return chineseNameS1;
+        }
+    }
+
+    static String[] getChineseNameMQGTR() {
+        if (screenOrientation== ScreenOrientationUtil.ORIENTATION_LANDSCAPE) {
+            return chineseNameS;
+        }else {
+            return chineseNameS1;
+        }
+    }
+
+    static String[] getImgsS() {
+        if (screenOrientation== ScreenOrientationUtil.ORIENTATION_LANDSCAPE) {
+            return imgsS;
+        }else {
+            return imgsS1;
+        }
+    }
+    static String[] getImgIdsS() {
+        if (screenOrientation== ScreenOrientationUtil.ORIENTATION_LANDSCAPE) {
+            return imgIdsS;
+        }else {
+            return imgIdsS1;
+        }
+    }
+
+    //----------------------------------------------------三种----------------------------------------------------
+//    String[] namesS = {"fancy_1","fancy_2",
+//            UiUtil.getStringRes(R.string.popcorn)+"("+Hawk.get("taste1",UiUtil.getStringRes(R.string.manual_29))+")",
+//            UiUtil.getStringRes(R.string.popcorn)+"("+Hawk.get("taste2",UiUtil.getStringRes(R.string.manual_30))+")",
+//            UiUtil.getStringRes(R.string.popcorn)+"("+Hawk.get("taste3",UiUtil.getStringRes(R.string.manual_31))+")",
+//            UiUtil.getStringRes(R.string.popcorn)+"("+Hawk.get("taste4",UiUtil.getStringRes(R.string.manual_32))+")"
+//            /*,"fancy_7"*/};
+
+    String[] namesS = {"fancy_1","fancy_2","fancy_3","fancy_4","fancy_5","fancy_6"};
+
+    String[] chineseNameS = {"活力爆米花(正常糖)","活力爆米花(无糖)"/*,"活力爆米花(少糖)"*/,
+            "活力爆米花(巧克力)","活力爆米花(焦糖)","活力爆米花(水蜜桃)","活力爆米花(蓝莓)"};
+    String[] imgsS = {"pop_milkfragrance","pop_notaste",/*"pop_milkfragrance",*/"pop_qchocolate","pop_caramel","pop_peach",/*"pop_milkfragrance"*/"pop_blueberry"};
+    String[] imgIdsS = {"pop_milkfragrance","pop_notaste",/*"pop_milkfragrance",*/"pop_qchocolate","pop_caramel","pop_peach",/*"pop_milkfragrance"*/"pop_blueberry"};
+
+
+    String[] namesS1 = {"fancy_7","fancy_8"};
+    String[] chineseNameS1 = {"甜味爆米花","咸味爆米花"};
+    String[] imgsS1 = {"pop_notaste","pop_notaste"};
+    String[] imgIdsS1 = {"pop_notaste","pop_notaste"};
+}

+ 248 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/dialog/NormalDialog.java

@@ -0,0 +1,248 @@
+package com.hboxs.base_library.dialog;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Typeface;
+import android.graphics.drawable.Drawable;
+import android.os.Handler;
+import android.support.v4.widget.TextViewCompat;
+import android.text.Spanned;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.hboxs.base_library.R;
+import com.hboxs.base_library.callback.DialogClickListener;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.util.DrawableSelectorUtils;
+import com.hboxs.base_library.util.LongClickUtils;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.UiUtil;
+import com.hboxs.base_library.widget.BaseDialogNoDatabinding;
+
+/**
+ * @author whw
+ * @time 2019/3/13
+ * @Description 普通样式弹框
+ */
+public class NormalDialog extends BaseDialogNoDatabinding implements View.OnClickListener {
+
+
+    public static final int OK = 2;
+    public static final int NO = 3;
+
+    private TextView tvTitle;
+    private TextView tvContent;
+    private TextView tvContent1;
+    private Button btnConfirm;
+    private Button btnCancel;
+    private ImageView IvQrCode;
+    public Button getBtnConfirm() {
+        return btnConfirm;
+    }
+
+    public void setListener(DialogClickListener listener) {
+        this.listener = listener;
+    }
+
+    private DialogClickListener listener;
+
+
+    public NormalDialog(Context context, Activity activity) {
+        super(context, activity);
+    }
+
+    @Override
+    protected void initView() {
+        tvTitle = findViewById(R.id.tv_title);
+        tvContent = findViewById(R.id.tv_content);
+        tvContent1 = findViewById(R.id.tv_content1);
+        btnConfirm = findViewById(R.id.btn_confirm);
+        btnCancel = findViewById(R.id.btn_cancel);
+        IvQrCode = findViewById(R.id.iv_qr_code);
+        btnConfirm.setOnClickListener(this);
+        btnCancel.setOnClickListener(this);
+        Drawable updateDrawableSelector = DrawableSelectorUtils.createUpdateDrawableSelector(mActivity);
+        btnConfirm.setBackground(updateDrawableSelector);
+
+    }
+
+    @Override
+    protected int getLayout() {
+        return R.layout.dialog_normal;
+    }
+
+    /**
+     * 设置文本
+     *
+     * @param title   标题
+     * @param content 内容
+     * @param btnText 按钮文字
+     */
+    public void setContent(int title, int content, int btnText) {
+
+        tvTitle.setText(title);
+        tvContent.setText(content);
+        btnConfirm.setText(btnText);
+    }
+
+
+    public void setContent(int title, int content) {
+        tvTitle.setText(title);
+        tvContent.setText(content);
+    }
+
+    /**
+     * set button text
+     *
+     * @param strIdTitle title text
+     * @param strId      shutdown text
+     * @param strid1     open text
+     */
+    public void setBtnText(int strIdTitle, int content, int strId, int strid1) {
+        tvTitle.setText(strIdTitle);
+        tvContent.setText(content);
+        btnConfirm.setText(strId);
+        btnCancel.setText(strid1);
+        btnCancel.setBackground(UiUtil.getDrawableRes(R.drawable.shape_btn_login));
+        btnCancel.setTextColor(UiUtil.getColorRes(R.color.c_white));
+    }
+
+    /**
+     * get the text of button
+     */
+    public String getBtnTextConfirm() {
+
+        return btnConfirm.getText().toString().trim();
+    }
+
+    /**
+     * get the text of buttonCancel
+     */
+    public String getBtnTextCancel() {
+
+        return btnCancel.getText().toString().trim();
+    }
+
+    /**
+     * 用于检查更新
+     * @param titleId 标题
+     * @param version 版本名
+     * @param isUpdate 是否要更新
+     * @param versionInfo 更新内容
+     */
+    public void setUpdateContent(int titleId, String version, boolean isUpdate, String versionInfo){
+        tvTitle.setText(titleId);
+        if (isUpdate){
+            //新版本 更新
+
+            tvContent.setText(UiUtil.getStringRes(R.string.have_update_content1)+version+"\n"+versionInfo);
+            btnConfirm.setText(R.string.update_now);
+        }else {
+            //不是 不更新
+            tvContent.setText(R.string.no_update);
+            btnConfirm.setText(R.string.confirm);
+        }
+
+    }
+
+    /**
+     * 设置文字
+     *
+     * @param text
+     */
+    public void setContent(String text) {
+        tvContent.setText(text);
+    }
+
+    /**
+     * 设置文字
+     *
+     * @param str
+     * @param str1
+     */
+    @SuppressLint("ResourceAsColor")
+    public void setContent1(String str ,String str1) {
+        tvContent.setText(str);
+        tvContent1.setVisibility(View.VISIBLE);
+        tvContent1.setText(str1);
+        tvContent1.setTextColor(UiUtil.getColorRes(R.color.color_deep_red));
+    }
+
+    /**
+     * 下载进度
+     */
+    public void setContent() {
+        tvContent.setText(UiUtil.getStringRes(R.string.download_now));
+    }
+
+    public void setContent(int size) {
+        tvContent.setText(UiUtil.getStringRes(R.string.download_now) + size + "%");
+    }
+
+    public void setBtnEgState() {
+        int param = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE, -1);
+        if (param == 2) {
+            btnCancel.setLines(1);
+            TextViewCompat.setAutoSizeTextTypeWithDefaults(btnCancel, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
+            btnConfirm.setLines(1);
+            TextViewCompat.setAutoSizeTextTypeWithDefaults(btnConfirm, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
+        }
+    }
+
+    @Override
+    protected int getAnimType() {
+        return ANIM_CENTER_IN_OUT;
+    }
+
+    @Override
+    public void onClick(View v) {
+
+        if (v.getId() == R.id.btn_cancel) {
+            dismiss();
+        }
+        listener.onClickListener(v.getId());
+
+    }
+    public void showCardImg(){
+        IvQrCode.setVisibility(View.VISIBLE);
+    }
+
+    public void setImageView(int resId){
+        IvQrCode.setImageResource(resId);
+    }
+
+    public void setButton(boolean i,int text){
+        if (i){
+            btnConfirm.setVisibility(View.VISIBLE);
+        }else {
+            btnConfirm.setVisibility(View.GONE);
+        }
+        btnCancel.setText(text);
+    }
+
+    public void setTimeContent(int title, int content) {
+
+        tvTitle.setText(title);
+        tvContent.setText(content);
+        btnCancel.setText(R.string.back);
+//        tvContentTime.setVisibility(View.VISIBLE);
+
+    }
+
+    public void hideDialogContent() {
+
+        // 隐藏控件
+        btnConfirm.setVisibility(View.GONE);
+        btnCancel.setVisibility(View.GONE);
+        LongClickUtils.setLongClick(new Handler(), tvContent, 3000, new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                btnCancel.setVisibility(View.VISIBLE);
+                return false;
+            }
+        });
+    }
+}

+ 162 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/dialog/SwitchDialog.java

@@ -0,0 +1,162 @@
+package com.hboxs.base_library.dialog;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.RadioGroup;
+
+import com.hboxs.base_library.R;
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.callback.DialogClickListener;
+import com.hboxs.base_library.constant.Heartbeat;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.databinding.DialogEtBinding;
+import com.hboxs.base_library.http.NoPayOrderStringApi;
+import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
+import com.hboxs.base_library.util.DrawableSelectorUtils;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.ToastUtil;
+import com.hboxs.base_library.util.UiUtil;
+import com.hboxs.base_library.widget.BaseDialog;
+import com.orhanobut.hawk.Hawk;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.observers.DisposableObserver;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * @author whw
+ * @time 2019/3/13
+ * @Description 一个输入框弹框
+ */
+public class SwitchDialog extends BaseDialog implements View.OnClickListener, RadioGroup.OnCheckedChangeListener {
+
+    private static final String TAG = "SwitchDialog";
+    private DialogEtBinding binding;
+    private String mType = Hawk.get(Name.MACHINE_TYPE, Name.P10);
+
+    public void setListener(DialogClickListener listener) {
+        this.listener = listener;
+    }
+
+    private DialogClickListener listener;
+
+    public SwitchDialog(Context context, Activity activity) {
+        super(context, activity);
+
+    }
+
+    @Override
+    public void show() {
+        super.show();
+    }
+
+    @Override
+    protected void initView() {
+        binding = (DialogEtBinding) viewDataBinding;
+        binding.btnApply.setOnClickListener(this);
+        binding.rgMachineType.setOnCheckedChangeListener(this);
+        Drawable drawableSelector = DrawableSelectorUtils.createDrawableSelector(mActivity);
+        binding.btnApply.setBackground(drawableSelector);
+        String model = Hawk.get(Name.MACHINE_TYPE, Name.P10);
+        Log.d(TAG, "model initView: "+model);
+        if ("MG320".equals(model)) {
+            binding.rb320.setChecked(true);
+        } else {
+            binding.rb330.setChecked(true);
+        }
+        binding.tvTitle.setText(R.string.switching_model);
+        binding.tvServerid.setText(R.string.switching_model_message);
+        binding.tvServerid.setTextSize(30);
+        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
+                LinearLayout.LayoutParams.WRAP_CONTENT,
+                LinearLayout.LayoutParams.WRAP_CONTENT
+        );
+        params.gravity=Gravity.CENTER;
+        binding.tvServerid.setLayoutParams(params);
+
+        binding.tvServerid.setTextColor(UiUtil.getColorRes(R.color.color_red));
+        binding.etServerId.setVisibility(View.GONE);
+        binding.llCodeImage.setVisibility(View.GONE);
+    }
+
+    @Override
+    protected int getLayout() {
+        return R.layout.dialog_et;
+    }
+
+    @Override
+    protected int getAnimType() {
+        return ANIM_CENTER_IN_OUT;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (v.getId() == R.id.btn_apply) {
+            equimentType();
+            dismiss();
+        }
+    }
+    private CompositeDisposable mDisposables;
+    private IView view;
+
+    protected void addSubscription(Observable observable, DisposableObserver observer) {
+        if (mDisposables == null) {
+            mDisposables = new CompositeDisposable();
+        }
+        observable
+                .unsubscribeOn(Schedulers.io())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+        mDisposables.add(observer);
+    }
+    private void equimentType() {
+        String systemId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
+        if (systemId == null && TextUtils.isEmpty(systemId)) {
+            ToastUtil.showToast(UiUtil.getStringRes(R.string.ljsb));
+            return;
+        }
+        Map<String, String> params = new HashMap<>();
+        params.put("clientId", Heartbeat.deviceId);
+        params.put("equipmentType", mType);
+        Log.d(TAG, "equimentType: "+params.get("equipmentType")+":"+mType);
+        addSubscription(NoPayOrderStringApi.api.updateEquipmentType(params),
+                new HttpResultNotActivityObserver<String>(view, getContext()) {
+                    @Override
+                    public void onNext(String data) {
+                        Log.d(TAG, "equimentType: " + data+":"+SwitchDialog.this.mType);
+                        Hawk.put(Name.MACHINE_TYPE, SwitchDialog.this.mType);
+                        ToastUtil.showToast(UiUtil.getStringRes(R.string.restart_touch_screen));
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Log.d(TAG, "AlarmDateApionNext onError: " + t.getMessage());
+
+                    }
+                });
+    }
+
+    @Override
+    public void onCheckedChanged(RadioGroup group, int checkedId) {
+        if (checkedId == R.id.rb_320) {
+            mType = Name.P10;
+        } else if (checkedId == R.id.rb_330) {
+            mType = Name.P10;
+        }
+    }
+
+
+}

+ 36 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/entity/EventEntity.java

@@ -0,0 +1,36 @@
+package com.hboxs.base_library.entity;
+
+/**
+ * EventBus实体类
+ * Created by MinKin.
+ */
+public class EventEntity {
+
+    private int code;
+    private Object object;
+
+    public EventEntity(int code) {
+        this.code = code;
+    }
+
+    public EventEntity(int code, Object object) {
+        this.code = code;
+        this.object = object;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public Object getObject() {
+        return object;
+    }
+
+    public void setObject(Object object) {
+        this.object = object;
+    }
+}

+ 27 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/entity/FlowerTypeBean.java

@@ -0,0 +1,27 @@
+package com.hboxs.base_library.entity;
+
+public class FlowerTypeBean {
+    private String name;
+    private Integer code;
+
+    public FlowerTypeBean(String name, Integer code) {
+        this.name = name;
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+}

+ 42 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/event/ApiMessageEvent.java

@@ -0,0 +1,42 @@
+package com.hboxs.base_library.event;
+
+/**
+ * @author whw
+ * @time 2019/4/11
+ * @Description 发送推送结果
+ */
+public class ApiMessageEvent {
+
+    private String name;
+
+    private Object data;
+
+    public  ApiMessageEvent(String name, Object data){
+        this.name=name;
+        this.data=data;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setMessage(String name) {
+        this.name = name;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "ApiMessageEvent{" +
+                "name='" + name + '\'' +
+                ", data=" + data +
+                '}';
+    }
+}

+ 57 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/event/DownLoadMessageEvent.java

@@ -0,0 +1,57 @@
+package com.hboxs.base_library.event;
+
+/**
+ * @author whw
+ * @time 2019/4/17
+ * @Description 视频下载完成
+ */
+public class DownLoadMessageEvent {
+
+    public int getScreenType() {
+        return screenType;
+    }
+
+    public void setScreenType(int screenType) {
+        this.screenType = screenType;
+    }
+
+    private int screenType;
+
+    public DownLoadMessageEvent(Type type, Object data, int screenType) {
+        this.type = type;
+        this.data = data;
+        this.screenType=screenType;
+    }
+
+    public enum Type {
+        success,
+        failed,
+        downloadAll,//全部下载完成
+        downloadApkSuccess,
+        downloadApkFailed,
+        downloadApkProcess
+    }
+
+    public Type getType() {
+        return type;
+    }
+
+    public void setType(Type type) {
+        this.type = type;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    private Type type;
+
+    private Object data;
+
+
+
+}

+ 84 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/event/Message.java

@@ -0,0 +1,84 @@
+package com.hboxs.base_library.event;
+
+public class Message {
+    public enum Type {
+        connected,
+        disconnected,
+        response,
+        sendError,
+        ack,
+        nak
+    }
+
+    private Object content;
+
+    private Type type;
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    private int id;
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * 判断当前发的是哪条指令
+     */
+    private String name;
+
+    public Message(Object content, Type type) {
+        this.content = content;
+        this.type = type;
+        name="none";
+    }
+
+    public Message(Object content, Type type,String name) {
+        this.content = content;
+        this.type = type;
+        this.name=name;
+    }
+
+    public Message(Object content, Type type,int id,String name) {
+        this.content = content;
+        this.type = type;
+        this.id=id;
+        this.name=name;
+    }
+
+    public Object getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+
+    public Type getType() {
+        return type;
+    }
+
+    public void setType(Type type) {
+        this.type = type;
+    }
+
+    @Override
+    public String toString() {
+        return "Message{" +
+                "content=" + content +
+                ", type=" + type +
+                ", id=" + id +
+                ", name='" + name + '\'' +
+                '}';
+    }
+}

+ 90 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderApi.java

@@ -0,0 +1,90 @@
+package com.hboxs.base_library.http;
+
+import com.hboxs.base_library.http.request.Http;
+import com.hboxs.base_library.http.response.HttpResult;
+import com.hboxs.base_library.http.response.HttpTimingSwitcherResult;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.FieldMap;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.QueryMap;
+
+/**
+ * 关于非只支付订单服务的接口。
+ */
+public interface NoPayOrderApi {
+    NoPayOrderApi api= Http.get().createNoPayOrderApi(NoPayOrderApi.class);
+
+
+    //广告管理api todo 数据没有的时候会报错。
+    @GET("api/app_ADIndex/ADIndex/getAd.htm")
+    Observable<String> getAd();
+
+    //上传设备id和机型型号
+    @GET("api/app_ADIndex/ADIndex/getAdByEquipment.htm")
+    Observable<HttpResult<String>> getAdByEquipment(@QueryMap Map<String, String> params);
+
+    //根据广告id获取广告
+    @GET("api/app_ADIndex/ADIndex/getAdById.htm")
+    Observable<HttpResult<String>> getAd(@QueryMap Map<String, String> params);
+
+    //获取密码
+    @GET("api/app_equipment/index/getPwd.htm")
+    Observable<HttpResult<String>> getPwd(@QueryMap Map<String, String> params);
+
+    //plc版本号上传
+    @GET("api/app_synchro/synchroIndex/plcVersion.htm")
+    Observable<String> plcVersion(@QueryMap Map<String, String> params);
+
+    //下载失败上传
+    @FormUrlEncoded
+    @POST("api/app_ADIndex/ADIndex/pushTimeUpdate.htm")
+    Observable<String> pushTimeUpdate(@FieldMap Map<String, String> params);
+
+    //维护情况上报api
+    @POST("api/app_maintainingHistory/maintainingHistoryIndex/saveOrUpdateMaintain.htm")
+    Observable<HttpResult<String>> saveOrUpdateMaintain(@Body RequestBody body);
+
+    //同步报警记录
+    @GET("api/app_synchro/synchroIndex/synAlarmRecord.htm")
+    Observable<String> synAlarmRecord(@QueryMap Map<String, String> params);
+
+    //同步支付方式
+    @GET("api/app_synchro/synchroIndex/synPay.htm")
+    Observable<String> synPay(@QueryMap Map<String, String> params);
+
+    //同步商品
+    @GET("api/app_synchro/synchroIndex/synProduct.htm")
+    Observable<String> synProduct(@QueryMap Map<String, String> params);
+
+    //同步密码
+    @GET("api/app_synchro/synchroIndex/synPwd.htm")
+    Observable<String> synPwd(@QueryMap Map<String, String> params);
+
+    //同步规则
+    @GET("api/app_synchro/synchroIndex/synTimeRule.htm")
+    Observable<String> synTimeRule(@QueryMap Map<String, String> params);
+
+    //定时开关机
+    @GET("api/app_synchro/synchroIndex//timeRule.htm")
+    Observable<HttpTimingSwitcherResult<String>> timingSwitcher(@QueryMap Map<String, String> params);
+
+    //上传设备id
+    @GET("api/app_ADIndex/ADIndex/getAdNew.htm")
+    Observable<String> getAdNew(@QueryMap Map<String, String> params);
+
+    //确定优惠码的打折
+    @GET("api/order/getCodeDiscount.htm")
+    Observable<HttpResult<String>> getConfirmCode(@QueryMap Map<String, String> params);
+
+    //鲸准:获取取餐号
+    @POST("tOrder/getMealCode")
+    Observable<HttpResult<String>> getMealCode(@QueryMap Map<String, String> params);
+
+}

+ 250 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java

@@ -0,0 +1,250 @@
+package com.hboxs.base_library.http;
+
+import com.hboxs.base_library.http.request.Http;
+import com.hboxs.base_library.http.response.HttpResult;
+
+import java.util.Map;
+import java.util.function.DoubleUnaryOperator;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.FieldMap;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.Query;
+import retrofit2.http.QueryMap;
+import retrofit2.http.Url;
+
+/**
+ * 关于非只支付订单服务的接口。
+ */
+public interface NoPayOrderStringApi {
+    NoPayOrderStringApi api= Http.get().createNoPayOrderStringApi(NoPayOrderStringApi.class);
+
+    //报警记录
+    @POST("api/app_alarmRecord/alarmRecodeIndex/addAlarmRecord.htm")
+    Observable<String> addAlarmRecord(@Body RequestBody body);
+
+    //老客户添加12种花型
+    @POST("api/app_equipment/index/addProduct12.htm")
+    Observable<String> addProduct12(@QueryMap Map<String, String> params);
+
+    //添加mq通道
+    @GET("api/app_mq/rabbitMq/addQueue.htm")
+    Observable<String> addQueue(@QueryMap Map<String, Object> params);
+
+    //请求休眠闹钟
+    @GET("api/app_alarmClock/alarmClockIndex/getClock.htm")
+    Observable<String> getClock(@QueryMap Map<String, Object> params);
+
+    //检查更新
+    @GET("api/appApkInfo/apkinfo.htm")
+    Observable<String> apkinfo(@QueryMap Map<String, String> params);
+
+
+
+    //上传服务器发送过来的报警id
+    @GET("api/app_alarmRecord/alarmRecodeIndex/eliminate.htm")
+    Observable<String> eliminate(@QueryMap Map<String, String> params);
+
+    //设备地址 - 开机时上传
+    @GET("api/app_equipment/index/equimentArea.htm")
+    Observable<String> equimentArea(@QueryMap Map<String, String> params);
+
+    //设备型号的上传
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/equimentType.htm")
+    Observable<String> equimentType(@FieldMap Map<String, String> params);
+
+    //删除mq交换机重建的,设备型号的上传
+    @GET("api/app_mq/rabbitMq/updateEquipmentType")
+    Observable<String> updateEquipmentType(@QueryMap Map<String, String> params);
+
+    //上传机器的做糖状态
+    @GET("api/app_equipment/index/equipmentStatus.htm")
+    Observable<String> equipmentStatus(@QueryMap Map<String, String> params);
+
+    //获取当前机器的连接ID,进入屏幕后台才去请求
+    @GET("api/app_equipment/index/getManagerId.htm")
+    Observable<String> getManagerId(@QueryMap Map<String, String> params);
+
+    //检查更新列表
+    @GET("api/appApkInfo/getApkinfoList.htm")
+    Observable<String> getApkinfoList(@QueryMap Map<String, String> params);
+
+    //获取商品列表信息
+    @GET("api/app_equipment/index/getproducts")
+    Observable<String> getproducts(@QueryMap Map<String, String> params);
+
+    //支付Api todo why
+    @GET("api/app_equipment/index/getQrCodeImgUrl.htm")
+    Observable<String> getQrCodeImgUrl(@QueryMap Map<String, String> params);
+
+    //获取广告规则
+    @GET("api/app_ADIndex/ADIndex/getTimeRule.htm")
+    Observable<String> getTimeRule(@QueryMap Map<String, Long> params);
+
+    //心跳
+    @POST("api/app_equipment/index/heart.htm")
+    Observable<String> heart(@Body RequestBody body);
+
+    // 初始化设备
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/initNew.htm")
+    Observable<String> init(@FieldMap Map<String, String> params);
+
+    //上传开关机状态new
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateEqeStatusNew.htm")
+    Observable<String> updateEqeStatusNew(@FieldMap Map<String, Object> params);
+
+
+    //上传机器的apk版本
+    @GET("api/app_equipment/index/sendApkVersion.htm")
+    Observable<String> sendApkVersion(@QueryMap Map<String, String> params);
+
+    //发送log 旧系统的。。。。todo
+//    @Multipart
+//    @POST("api/app_equipment/index/sendLog.htm")
+//    @Headers({ "Content-Type: text/html;charset=UTF-8"})
+//    Observable<String> sendLog(@QueryMap Map<String, Object> params,@Part MultipartBody.Part file);
+
+    //设备上传公司电话
+    @POST("api/app_equipment/index/sentCompanyPhone.htm")
+    Observable<String> sentCompanyPhone(@QueryMap Map<String, String> params);
+
+    //设备4G卡号
+    @POST("api/app_equipment/index/sentSimNo.htm")
+    Observable<String> sentSimNo(@QueryMap Map<String, String> params);
+
+    //脱离系统api
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/separate.htm")
+    Observable<String> separate(@FieldMap Map<String, String> params);
+
+
+    //单个参数上传。
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateAloneParam.htm")
+    Observable<String> updateAloneParam(@FieldMap Map<String, String> params);
+
+    //更新锁机状态
+    @FormUrlEncoded
+    @POST(" api/app_equipment/index/updateBlock.htm")
+    Observable<String> UpdateBlockApi(@FieldMap Map<String, Object> params);
+
+    //修改通道
+    @GET("api/app_mq/rabbitMq/updateChannel.htm")
+    Observable<String> updateChannel(@QueryMap Map<String, Object> params);
+
+    //更新联系人
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateContractPN.htm")
+    Observable<String> updateContractPN(@FieldMap Map<String, String> params);
+
+    //修改优惠券开关状态
+    @GET("api/app_equipment/index/updateCouponStatus.htm")
+    Observable<String> updateCouponStatus(@QueryMap Map<String, String> params);
+
+    //上传开关机状态
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateEqeStatus.htm")
+    Observable<String> updateEqeStatus(@FieldMap Map<String, Object> params);
+
+    //上传外门内门状态 todo 怎么用的是旧系统
+    @GET("api/app_equipment/index/updateEquipmentStatus")
+    Observable<String> updateEquipmentStatus(@QueryMap Map<String, Object> params);
+
+    //修改商品数目
+    @POST("api/app_equipment/index/updateFlowers.htm")
+    Observable<String> updateFlowers(@QueryMap Map<String, String> params);
+
+    /**
+     * 是否启用物料监控功能
+     * 定义请求方式:POST
+     * 定义请求路径:/api/app_equipment/index/updateMaterialStatus.htm
+     * 定义传参:Map<String, String>:键是字符串类型,值也是字符串类型
+     *  @QueryMap的意思是将params参数映射到http请求的参数上面
+     *  定义接受相应数据为:HttpResult类型,接到的数据为string。
+     * @param params
+     * @return
+     */
+    @POST("api/app_equipment/index/updateMaterialStatus.htm")
+    Observable<String> updateMaterialStatus(@QueryMap Map<String, String> params);
+
+    //上传数据
+    @POST()
+    Observable<String> updateParamApi(@Url String url, @Body RequestBody body);
+
+    //修改支付方式api
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updatePayType.htm")
+    Observable<String> updatePayType(@FieldMap Map<String, String> params);
+
+    //上传商品价格
+    @POST("api/app_equipment/index/updateProduct.htm")
+    Observable<String> updateProduct(@Body RequestBody body);
+
+    //修改商品名称
+    @POST("api/app_equipment/index/updateProductName.htm")
+    Observable<String> updateProductName(@QueryMap Map<String, Object> params);
+
+    //上传生产总个数
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateProductTotal.htm")
+    Observable<String> updateProductTotal(@FieldMap Map<String, Object> params);
+
+    //重置密码
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updatePwd.htm")
+    Observable<String> updatePaw(@FieldMap Map<String, String> params);
+
+    //更新睡眠状态
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/updateSleep.htm")
+    Observable<String> updateSleep(@FieldMap Map<String, Object> params);
+
+    //优惠码支付成功
+    @GET("tPromoCode/updateCode")
+    Observable<String> updateCode(@QueryMap Map<String, String> params);
+
+    //鲸准:获取优惠券的折扣。
+    @GET("api/app_equipment/index/getYouHuiPrice.htm")
+    Observable<String> getYouHuiPrice(@QueryMap Map<String, String> params);
+
+
+    //提交显示屏蔽花型
+    @POST("api/app_equipment/index/updateShowGoods")
+    Observable<String> updateShowGoods(@Query("clientId")String clientId, @Body RequestBody body);
+
+    //更新做糖状态
+    @GET("api/SugarDo/updateSugarDoStatus.htm")
+    Observable<String> updateSugarDoStatus(@QueryMap Map<String, String> params);
+
+
+    //修改花型是否显示
+    @POST("tProduct/updateProductsShow")
+    Observable<String> updateProductsShow(@Body RequestBody body);
+
+    @GET("api/app_equipment/index/selectCode.htm")
+    Observable<String> selectCode(@QueryMap Map<String, String> params);
+
+    //获取设备ip并比对
+    @POST("tLocationCheck/ipCheck")
+    Observable<String> ipCheck(@QueryMap Map<String, String> params);
+
+    // 初始化设备2 用于校验ip的
+    @FormUrlEncoded
+    @POST("api/app_equipment/index/initNew2.htm")
+    Observable<String> initNew2(@FieldMap Map<String, String> params);
+
+    //设备语言 开机时上传
+    @GET("api/app_equipment/index/upLoadLanguage")
+    Observable<String> upLoadLanguage(@QueryMap Map<String, String> params);
+
+    //告诉后台消除报警
+    @GET("api/app_alarmRecord/alarmRecodeIndex/eliminateAlarm")
+    Observable<String> eliminateClean(@QueryMap Map<String, String> params);
+}

+ 66 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/OrderApi.java

@@ -0,0 +1,66 @@
+package com.hboxs.base_library.http;
+
+import com.hboxs.base_library.beans.FindCoinOrderBean;
+import com.hboxs.base_library.beans.FindOrderBean;
+import com.hboxs.base_library.http.request.Http;
+import com.hboxs.base_library.http.response.HttpResult;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.QueryMap;
+
+public interface OrderApi {
+    OrderApi api= Http.get().createOrderApi(OrderApi.class);
+
+    //订单统计
+    @POST("tOrder/getStatisticsByClientId")
+    Observable<HttpResult<String>> getStatisticsByClientId(@Body RequestBody requestBody);
+
+
+    //查询线上订单api
+    @GET("tOrder/findOrder")
+    Observable<FindOrderBean> findOrder(@QueryMap Map<String, Object> params);
+
+
+
+    //获取线下花型统计
+    @GET("api/orderStatistics/listCoinProduct.htm")
+    Observable<HttpResult<String>> listCoinProduct(@QueryMap Map<String, String> params);
+
+    //花式统计api
+    @GET("api/orderStatistics/listProductName.htm")
+    Observable<HttpResult<String>> listProductName(@QueryMap Map<String, String> params);
+
+    //设备查询线下订单记录
+    @GET("api/coinOrder/findCoinOrder.htm")
+    Observable<FindCoinOrderBean> newFindOrder(@QueryMap Map<String, Object> params);
+
+    //花型统计
+    @GET(" api/orderStatistics/productStatic.htm")
+    Observable<HttpResult<String>> productStaticApi(@QueryMap Map<String, String> params);
+
+    @POST("tCoinOrder/saveCoinOrder")
+    Observable<HttpResult<String>> saveCoinOrder(@Body RequestBody body);
+
+    //冰淇淋用这个接口上传订单
+    @POST("tCoinOrder/newSaveCoinOrder")
+    Observable<HttpResult<String>> newSaveCoinOrder(@Body RequestBody body);
+
+    //查询线下订单api
+    @GET("tCoinOrder/newFindCoinOrder")
+    Observable<FindCoinOrderBean> findCoinOrder(@QueryMap Map<String, Object> params);
+
+    //线下订单统计api
+    @GET("tCoinOrder/listCoin")
+    Observable<HttpResult<String>> listCoin(@QueryMap Map<String, String> params);
+
+    //查看后台24小时内的订单总金额
+    @GET("tCoinOrder/listCoin")
+    Observable<HttpResult<String>> orderListCoin(@QueryMap Map<String, Object> params);
+
+}

+ 85 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/PayApi.java

@@ -0,0 +1,85 @@
+package com.hboxs.base_library.http;
+
+import com.hboxs.base_library.beans.FindCoinOrderBean;
+import com.hboxs.base_library.http.request.Http;
+import com.hboxs.base_library.http.response.HttpResult;
+
+import java.util.Map;
+
+import io.reactivex.Observable;
+import okhttp3.RequestBody;
+import retrofit2.http.Body;
+import retrofit2.http.GET;
+import retrofit2.http.POST;
+import retrofit2.http.QueryMap;
+import retrofit2.http.Url;
+
+public interface PayApi {
+
+    PayApi api = Http.get().createPayApi(PayApi.class);
+
+    //二码合一支付Api 购物车
+    @POST()
+    Observable<HttpResult<String>> carsPay(@Url String url, @Body RequestBody body);
+
+
+    //删除多余的订单
+    @GET("tOrder/deleteOrder")
+    Observable<HttpResult<String>> deleteOrder(@QueryMap Map<String, String> params);
+
+    //查询优惠码状态接口
+    @GET("tOrder/selectCode.htm")
+    Observable<HttpResult<String>> selectCode(@QueryMap Map<String, String> params);
+
+    //判斷這筆訂單是否支付成功。
+    @GET("tOrder/getOrderStatus")
+    Observable<HttpResult<String>> getOrderStatus(@QueryMap Map<String, String> params);
+
+    //验证优惠码是否正确
+    @GET("tOrder/promoCodeUpdate.htm")
+    Observable<HttpResult<String>> promoCodeUpdate(@QueryMap Map<String, String> params);
+
+    //有优惠码的支付Api
+    @GET("tOrder/twoPayCode")
+    Observable<HttpResult<String>> twoPayCode(@QueryMap Map<String, String> params);
+
+    //退款
+    @GET("tOrder/refund")
+    Observable<HttpResult<String>> refund(@QueryMap Map<String, String> params);
+
+
+    //投币和无需支付订单
+    @POST("tCoinOrder/savaCoinOrder")
+    Observable<HttpResult<String>> saveCoinOrder(@Body RequestBody body);
+
+
+    //上传订单的制作状态
+    @GET("tOrder/sendOrderStatus")
+    Observable<HttpResult<String>> sendOrderStatus(@QueryMap Map<String, String> params);
+
+    //有优惠码的支付Api
+    @GET("tOrder/uniPay")
+    Observable<HttpResult<String>> uniPay(@QueryMap Map<String, String> params);
+
+    //支付Api
+    @GET("tOrder/CardPay")
+    Observable<HttpResult<String>> cardPay(@QueryMap Map<String, String> params);
+
+    //反扫优惠码的支付Api
+    @GET("tOrder/CardPayCode")
+    Observable<HttpResult<String>> cardPayCode(@QueryMap Map<String, String> params);
+
+    //上传千玺的订单状态
+    @GET("tOrder/addOrder")
+    Observable<HttpResult<String>> addOrder(@QueryMap Map<String, String> params);
+
+    //优惠码是否支付成功。
+    @GET("tOrder/promoCodeDo.htm")
+    Observable<HttpResult<String>> promoCodeDo(@QueryMap Map<String, String> params);
+
+
+
+
+
+
+}

+ 12 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/ApiException.java

@@ -0,0 +1,12 @@
+package com.hboxs.base_library.http.exception;
+
+/**
+ * Api异常类
+ * Created by MinKin.
+ */
+public class ApiException extends BaseException {
+
+    public ApiException(int code, String errorText) {
+        super(code, errorText);
+    }
+}

+ 96 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/BaseException.java

@@ -0,0 +1,96 @@
+package com.hboxs.base_library.http.exception;
+
+/**
+ * 自定义异常基类
+ * Created by MinKin.
+ */
+public class BaseException extends Exception {
+
+    /**
+     * Http 400 - Bad Request
+     */
+    public static final int HTTP_400 = 400;
+
+    /**
+     * Http 403 - Forbidden
+     */
+    public static final int HTTP_403 = 403;
+
+    /**
+     * Http 404 - Not Found
+     */
+    public static final int HTTP_404 = 404;
+
+    /**
+     * Http 405 - Method Not Allowed
+     */
+    public static final int HTTP_405 = 405;
+
+    /**
+     * Http 500 - Internal Server Error
+     */
+    public static final int HTTP_500 = 500;
+
+    /**
+     * 网络异常
+     */
+    public static final int SOCKET_EXCEPTION = 1001;
+
+    /**
+     * 连接超时异常
+     */
+    public static final int SOCKET_TIME_OUT_EXCEPTION = 1002;
+
+    /**
+     * 连接失败
+     */
+    public static final int CONNECT_EXCEPTION = 1003;
+
+    /**
+     * 无法解析该域名
+     */
+    public static final int UNKNOWN_HOST_EXCEPTION = 1004;
+
+    /**
+     * JSON解析异常
+     */
+    public static final int JSON_SYNTAX_EXCEPTION = 1005;
+
+    /**
+     * 无网络连接
+     */
+    public static final int NET_WORK_EXCEPTION = 1006;
+
+    /**
+     * 未知错误
+     */
+    public static final int UNKNOWN_EXCEPTION = 1007;
+
+    private int code;
+    private String errorText;
+
+    public BaseException() {
+
+    }
+
+    public BaseException(int code, String errorText) {
+        this.code = code;
+        this.errorText = errorText;
+    }
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public String getErrorText() {
+        return errorText;
+    }
+
+    public void setErrorText(String errorText) {
+        this.errorText = errorText;
+    }
+}

+ 100 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/exception/ExceptionFactory.java

@@ -0,0 +1,100 @@
+package com.hboxs.base_library.http.exception;
+
+import com.google.gson.JsonSyntaxException;
+import com.hboxs.base_library.R;
+import com.hboxs.base_library.util.NetWorkUtil;
+import com.hboxs.base_library.util.UiUtil;
+
+import java.net.ConnectException;
+import java.net.SocketException;
+import java.net.SocketTimeoutException;
+import java.net.UnknownHostException;
+
+import retrofit2.HttpException;
+
+/**
+ * 专门处理异常 - 转化为用户看得懂得异常信息
+ * Created by MinKin.
+ */
+public class ExceptionFactory {
+
+    /**
+     * 生成异常
+     */
+    public static BaseException create(Throwable t) {
+        BaseException exception = new BaseException();
+        if (t instanceof SocketException) {
+            exception.setCode(BaseException.SOCKET_EXCEPTION);
+        } else if (t instanceof SocketTimeoutException) {
+            exception.setCode(BaseException.SOCKET_TIME_OUT_EXCEPTION);
+        } else if (t instanceof ConnectException) {
+            exception.setCode(BaseException.CONNECT_EXCEPTION);
+        } else if (t instanceof JsonSyntaxException) {
+            exception.setCode(BaseException.JSON_SYNTAX_EXCEPTION);
+        } else if (t instanceof UnknownHostException) {
+            if (NetWorkUtil.isNetworkAvailable()) {
+                exception.setCode(BaseException.UNKNOWN_HOST_EXCEPTION);
+            } else {
+                exception.setCode(BaseException.NET_WORK_EXCEPTION);
+            }
+        } else if (t instanceof HttpException) {
+            exception.setCode(((HttpException) t).code());
+        } else if (t instanceof ApiException) {
+            exception.setCode(((ApiException) t).getCode());
+        } else {
+            exception.setCode(BaseException.UNKNOWN_EXCEPTION);
+        }
+
+        if (t instanceof ApiException) {
+            //接口错误
+            exception.setErrorText(((ApiException) t).getErrorText());
+        } else {
+            //其他错误
+            exception.setErrorText(transformer(exception));
+        }
+        return exception;
+    }
+
+    /**
+     * 信息转换
+     */
+    private static String transformer(BaseException exception) {
+        String errorText = "";
+        switch (exception.getCode()) {
+            case BaseException.HTTP_400:
+                errorText = UiUtil.getStringRes(R.string.http_400);
+                break;
+            case BaseException.HTTP_403:
+                errorText = UiUtil.getStringRes(R.string.http_403);
+                break;
+            case BaseException.HTTP_404:
+                errorText = UiUtil.getStringRes(R.string.http_404);
+                break;
+            case BaseException.HTTP_405:
+                errorText = UiUtil.getStringRes(R.string.http_405);
+                break;
+            case BaseException.HTTP_500:
+                errorText = UiUtil.getStringRes(R.string.http_500);
+                break;
+            case BaseException.SOCKET_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.socket_exception);
+                break;
+            case BaseException.SOCKET_TIME_OUT_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.socket_time_out_exception);
+                break;
+            case BaseException.NET_WORK_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.net_work_exception);
+                break;
+            case BaseException.JSON_SYNTAX_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.json_syntax_exception);
+                break;
+            case BaseException.UNKNOWN_HOST_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.unknown_host_exception);
+                break;
+            case BaseException.UNKNOWN_EXCEPTION:
+                errorText = UiUtil.getStringRes(R.string.unknown_exception);
+                break;
+        }
+        return errorText;
+    }
+}

+ 50 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/HttpCacheInterceptor.java

@@ -0,0 +1,50 @@
+package com.hboxs.base_library.http.interceptor;
+
+import android.support.annotation.NonNull;
+
+import com.hboxs.base_library.util.NetWorkUtil;
+
+import java.io.IOException;
+
+import okhttp3.CacheControl;
+import okhttp3.Interceptor;
+import okhttp3.Request;
+import okhttp3.Response;
+
+/**
+ * Http缓存拦截器
+ * Created by MinKin
+ */
+public class HttpCacheInterceptor implements Interceptor {
+
+    @Override
+    public Response intercept(Chain chain) throws IOException {
+
+        Request request = chain.request();
+        if (!NetWorkUtil.isNetworkAvailable()) {
+            request = request.newBuilder()
+                    .cacheControl(CacheControl.FORCE_CACHE)
+                    .build();
+        }
+
+        Response response = chain.proceed(request);
+
+        int maxAge;
+        String cacheControlValue;
+
+        if (NetWorkUtil.isNetworkAvailable()) {
+            //有网络时,不缓存
+            maxAge = 0;
+            cacheControlValue = "public, max-age = ";
+        } else {
+            //无网络时,缓存4周
+            maxAge = 60 * 60 * 24 * 28;
+            cacheControlValue = "public, only-if-cached, max-stale = ";
+        }
+        response.newBuilder()
+                .header("Cache-Control", cacheControlValue + maxAge)
+                .removeHeader("Pragma")
+                .build();
+        return response;
+    }
+}

+ 26 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/LoggerInterceptor.java

@@ -0,0 +1,26 @@
+package com.hboxs.base_library.http.interceptor;
+
+import android.support.annotation.NonNull;
+
+import com.hboxs.base_library.BuildConfig;
+import com.hboxs.base_library.util.LogUtil;
+
+import okhttp3.logging.HttpLoggingInterceptor;
+
+/**
+ * 日志拦截器
+ * Created by MinKin
+ */
+public class LoggerInterceptor implements  HttpLoggingInterceptor.Logger {
+
+    @Override
+    public void log(String message) {
+        if (BuildConfig.isDebug){
+            LogUtil.e("LoggerInterceptor",message);
+        }
+    }
+
+
+
+
+}

+ 39 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/interceptor/RequestHeaderInterceptor.java

@@ -0,0 +1,39 @@
+package com.hboxs.base_library.http.interceptor;
+
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+
+import com.hboxs.base_library.constant.BaseConstant;
+import com.hboxs.base_library.http.request.Http;
+import com.hboxs.base_library.util.LogUtil;
+import com.orhanobut.hawk.Hawk;
+
+import java.io.IOException;
+
+import okhttp3.Interceptor;
+import okhttp3.Request;
+
+/**
+ * 请求头拦截器
+ */
+public class RequestHeaderInterceptor implements Interceptor {
+
+    @Override
+    public okhttp3.Response intercept(Chain chain) throws IOException {
+        Request request = chain.request();
+        Request.Builder builder = request.newBuilder();
+        String token;
+        if (TextUtils.isEmpty(Http.sToken)) {
+            //从本地拿
+            token = "";//Hawk.get(BaseConstant.TOKEN, "")
+        } else {
+            //从登录拿
+            token = Http.sToken;
+        }
+        LogUtil.e("token", token);
+        builder.addHeader("token", token);
+        return chain.proceed(builder.build());
+    }
+
+
+}

+ 37 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/ErrorObserver.java

@@ -0,0 +1,37 @@
+package com.hboxs.base_library.http.observer;
+
+import android.util.Log;
+
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.http.exception.BaseException;
+import com.hboxs.base_library.http.exception.ExceptionFactory;
+
+import io.reactivex.observers.DisposableObserver;
+
+/**
+ * 拦截错误
+ * Created By MinKin.
+ */
+public abstract class ErrorObserver<T> extends DisposableObserver<T> {
+    private IView mView;
+
+    public ErrorObserver(IView view) {
+        mView = view;
+    }
+
+    @Override
+    public void onNext(T t) {
+
+    }
+
+    @Override
+    public void onError(Throwable t) {
+        t.printStackTrace();
+        BaseException exception = ExceptionFactory.create(t);
+        if (exception != null) {
+            if (mView != null) {
+                mView.showError(exception.getCode(), exception.getErrorText());
+            }
+        }
+    }
+}

+ 43 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/HttpResultNotActivityObserver.java

@@ -0,0 +1,43 @@
+package com.hboxs.base_library.http.observer;
+
+import android.content.Context;
+
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.widget.LoadingDialog;
+
+/**
+ * 没有界面的网络请求
+ * @param <T>
+ */
+public abstract class HttpResultNotActivityObserver<T> extends ErrorObserver<T> {
+
+
+
+    public HttpResultNotActivityObserver(IView view, Context context) {
+        super(view);
+
+    }
+
+    public HttpResultNotActivityObserver<T> setShowDialog(boolean showDialog) {
+
+        return this;
+    }
+
+    @Override
+    public void onComplete() {
+
+    }
+
+    @Override
+    public void onError(Throwable t) {
+
+
+    }
+
+    @Override
+    protected void onStart() {
+
+
+
+    }
+}

+ 55 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/observer/HttpResultObserver.java

@@ -0,0 +1,55 @@
+package com.hboxs.base_library.http.observer;
+
+import android.content.Context;
+
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.widget.LoadingDialog;
+
+public abstract class HttpResultObserver<T> extends ErrorObserver<T> {
+
+    private Context mContext;
+    private LoadingDialog mDialog;
+    private boolean isShowDialog = true;
+
+    public HttpResultObserver(IView view, Context context) {
+        super(view);
+        mContext = context;
+    }
+
+    public HttpResultObserver<T> setShowDialog(boolean showDialog) {
+        isShowDialog = showDialog;
+
+        return this;
+    }
+
+    @Override
+    public void onComplete() {
+        if (mDialog != null && mDialog.isShowing()) {
+           // mDialog.dismiss();
+        }
+    }
+
+
+
+    @Override
+    public void onError(Throwable t) {
+        if (mDialog != null && mDialog.isShowing()) {
+           // mDialog.dismiss();
+        }
+
+        super.onError(t);
+    }
+
+    @Override
+    protected void onStart() {
+        super.onStart();
+        if (mContext != null) {
+            if (mDialog == null) {
+              //  mDialog = new LoadingDialog(mContext);
+            }
+            if (isShowDialog) {
+         //       mDialog.show();
+            }
+        }
+    }
+}

+ 406 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/request/Http.java

@@ -0,0 +1,406 @@
+package com.hboxs.base_library.http.request;
+
+import com.alibaba.android.arouter.BuildConfig;
+import com.hboxs.base_library.base.BaseApplication;
+import com.hboxs.base_library.constant.BaseConstant;
+import com.hboxs.base_library.http.interceptor.HttpCacheInterceptor;
+import com.hboxs.base_library.http.interceptor.LoggerInterceptor;
+import com.hboxs.base_library.http.interceptor.RequestHeaderInterceptor;
+
+import java.io.File;
+import java.security.SecureRandom;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.concurrent.TimeUnit;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSession;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import okhttp3.Cache;
+import okhttp3.OkHttpClient;
+import okhttp3.logging.HttpLoggingInterceptor;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+import retrofit2.converter.scalars.ScalarsConverterFactory;
+
+/**
+ * Http发起请求类
+ * Created by MinKin.
+ */
+public class Http {
+
+    private static class HttpHolder {
+        private static final Http sHTTP = new Http();
+    }
+    private class TrustAllManager implements X509TrustManager {
+        @Override
+        public void checkClientTrusted(X509Certificate[] chain, String authType)
+                throws CertificateException {
+        }
+
+        @Override
+        public void checkServerTrusted(X509Certificate[] chain, String authType)
+                throws CertificateException {
+        }
+
+        @Override
+        public X509Certificate[] getAcceptedIssuers() {
+            return new X509Certificate[0];
+        }
+    }
+
+    public static Http get() {
+        return HttpHolder.sHTTP;
+    }
+    private class TrustAllHostnameVerifier implements HostnameVerifier {
+        @Override
+        public boolean verify(String hostname, SSLSession session) {
+            return true;
+        }
+    }
+    // 返回一个忽略所有https证书的builder
+    private OkHttpClient.Builder getSSLHttpBuilder() {
+        SSLSocketFactory sSLSocketFactory = null;
+        TrustAllManager trustAllManager = new TrustAllManager();
+        try {
+            SSLContext sc = SSLContext.getInstance("TLS");
+            sc.init(null, new TrustManager[]{trustAllManager},
+                    new SecureRandom());
+            sSLSocketFactory = sc.getSocketFactory();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        OkHttpClient.Builder builder = new OkHttpClient.Builder();
+        if (sSLSocketFactory != null) {
+            builder.sslSocketFactory(sSLSocketFactory, trustAllManager);
+        }
+        builder.hostnameVerifier(new TrustAllHostnameVerifier());
+        return builder;
+    }
+
+    private Http() {
+//        OkHttpClient.Builder builder = new OkHttpClient.Builder();//http
+        OkHttpClient.Builder builder = getSSLHttpBuilder();//https
+
+        //缓存拦截
+        String httpCachePath = BaseApplication.getContext().getCacheDir().getAbsolutePath() + File.separator + "http_cache";
+        File cacheFile = new File(httpCachePath);
+        Cache cache = new Cache(cacheFile, 1024 * 1024 * 50);  //50MB
+        builder.cache(cache);
+        builder.addNetworkInterceptor(new HttpCacheInterceptor());
+
+        //日志拦截
+        HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor(new LoggerInterceptor());
+        loggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
+        builder.addInterceptor(loggingInterceptor);
+
+        //请求头拦截
+        builder.addInterceptor(new RequestHeaderInterceptor());
+
+        //设置超时
+        builder.connectTimeout(5, TimeUnit.SECONDS);
+        builder.readTimeout(15, TimeUnit.SECONDS);
+        builder.writeTimeout(15, TimeUnit.SECONDS);
+
+        //错误重连
+        builder.retryOnConnectionFailure(true);
+
+        mRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl(BaseConstant.ONLINE_BASE_URL)
+                .build();
+
+        mStringRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl(BaseConstant.ONLINE_BASE_URL)
+                .build();
+
+        japanRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://stg.ribenmeishi.com/")
+                .build();
+
+        beijingQxRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://39.108.168.168:17160/")
+                .build();
+
+        beijingHappyValleyRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl(" http://merpay.joyala.com")
+                .build();
+
+
+        noPayRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://szwl.sunzee.com.cn:49011/")
+                .build();
+
+        payRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://sz.sunzee.com.cn/PAY-SERVER/")
+                .build();
+
+
+        macaoPayRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://aas.bocmacau.com/")
+                .build();
+
+
+        invoiceRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://webapi.systemlead.com/posapi/")
+                .build();
+
+        simRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://api.simboss.com/")
+                .build();
+
+        scrmRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://scrm.whalemed.com/")
+                .build();
+
+        szwlRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://sz.sunzee.com.cn/ORDER-SERVER/")
+                .build();
+
+        americanRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+//                .baseUrl("https://apitest.nihaopay.com/v1.2/transactions/")//测试环境
+                .baseUrl("https://api.nihaopay.com/v1.2/transactions/")//正式环境
+                .build();
+
+        icbcRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://api.91918.cn/api-pay/app/clientHelper/")//正式环境
+                .build();
+
+        noPayOrderRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://sz.sunzee.com.cn/SZWL-SERVER/")
+                .build();
+
+        noPayOrderStringRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://sz.sunzee.com.cn/SZWL-SERVER/")
+                .build();
+
+        orderRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(GsonConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://sz.sunzee.com.cn/ORDER-SERVER/")
+//                .baseUrl("https://szwl.sunzee.com.cn/ORDER-SERVER/")
+
+                .build();
+
+        orderStringRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("http://sz.sunzee.com.cn/ORDER-SERVER/")
+                .build();
+
+        zeDianRetrofit = new Retrofit.Builder()
+                .client(builder.build())
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .baseUrl("https://api.wlzepoint.com")//测试环境
+                .build();
+
+//        tonglianRetrofit = new Retrofit.Builder()
+//                .client(builder.build())
+//                .addConverterFactory(ScalarsConverterFactory.create())
+//                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+//                .baseUrl("https://vsp.allinpay.com")//测试环境
+//                .build();
+
+        OkHttpClient.Builder builder1 = new OkHttpClient.Builder();
+        if (!BuildConfig.DEBUG) {
+            // Log信息拦截器
+            HttpLoggingInterceptor loggingInterceptor1 = new HttpLoggingInterceptor(new LoggerInterceptor());
+            loggingInterceptor1.setLevel(HttpLoggingInterceptor.Level.BODY);
+            //设置 Debug Log 模式
+            builder1.addInterceptor(loggingInterceptor1);
+            //请求头拦截
+            builder1.addInterceptor(new RequestHeaderInterceptor());
+
+            //设置超时
+            builder1.connectTimeout(5, TimeUnit.SECONDS);
+            builder1.readTimeout(15, TimeUnit.SECONDS);
+            builder1.writeTimeout(15, TimeUnit.SECONDS);
+        }
+        OkHttpClient okHttpClient = builder1.build();
+        tonglianRetrofit = new Retrofit.Builder()
+                .baseUrl("https://vsp.allinpay.com")
+                .addConverterFactory(ScalarsConverterFactory.create())
+                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
+                .client(okHttpClient)
+                .build();
+    }
+
+    public static String sToken;
+
+    private Retrofit mRetrofit;
+
+    private Retrofit mStringRetrofit;
+
+
+    private Retrofit japanRetrofit;
+
+    private Retrofit beijingQxRetrofit;
+
+    private Retrofit beijingHappyValleyRetrofit;
+
+    private Retrofit noPayRetrofit;//支付以外的
+
+    private Retrofit payRetrofit;//支付相关的
+
+    private Retrofit macaoPayRetrofit;//澳門
+
+    private Retrofit invoiceRetrofit;//发票
+
+    private Retrofit simRetrofit;//simboss
+
+    private Retrofit scrmRetrofit;//鲸准
+
+    private Retrofit szwlRetrofit;//新后台
+
+    private Retrofit americanRetrofit;//ni hao pay
+
+    private Retrofit icbcRetrofit;//ICBC
+
+    private Retrofit noPayOrderStringRetrofit;//支付、订单以外的 string
+
+    private Retrofit noPayOrderRetrofit;//支付、订单以外的 json
+
+    private Retrofit orderRetrofit;//订单相关的
+
+    private Retrofit orderStringRetrofit;//订单相关的
+
+    private Retrofit zeDianRetrofit;//泽点
+
+    private Retrofit tonglianRetrofit;//通联
+
+
+    public <T> T createJapanApi(Class<T> cls) {
+        return japanRetrofit.create(cls);
+    }
+
+    public <T> T createApi(Class<T> cls) {
+        return mRetrofit.create(cls);
+    }
+
+    public <T> T createStringApi(Class<T> cls) {
+        return mStringRetrofit.create(cls);
+    }
+
+    public <T> T createBeijingQxApi(Class<T> cls) {
+        return beijingQxRetrofit.create(cls);
+    }
+
+    public <T> T createBeijingHappyValleyApi(Class<T> cls) {
+        return beijingHappyValleyRetrofit.create(cls);
+    }
+
+    public <T> T createNoPayApi(Class<T> cls) {
+        return noPayRetrofit.create(cls);
+    }
+
+    public <T> T createPayApi(Class<T> cls) {
+        return payRetrofit.create(cls);
+    }
+
+    public <T> T createMacaoPayApi(Class<T> cls) {
+        return macaoPayRetrofit.create(cls);
+    }
+
+    public <T> T createInvoicePayApi(Class<T> cls) {
+        return invoiceRetrofit.create(cls);
+    }
+
+    public <T> T createSimApi(Class<T> cls) {
+        return simRetrofit.create(cls);
+    }
+
+    public <T> T createScrmApi(Class<T> cls) {
+        return scrmRetrofit.create(cls);
+    }
+
+    public <T> T createSzwlApi(Class<T> cls) {
+        return szwlRetrofit.create(cls);
+    }
+
+    public <T> T createAmericanmApi(Class<T> cls) {
+        return americanRetrofit.create(cls);
+    }
+
+    public <T> T createIcbcRetrofitApi(Class<T> cls) {
+        return icbcRetrofit.create(cls);
+    }
+
+    public <T> T createNoPayOrderStringApi(Class<T> cls) {
+        return noPayOrderStringRetrofit.create(cls);
+    }
+
+    public <T> T createNoPayOrderApi(Class<T> cls) {
+        return noPayOrderRetrofit.create(cls);
+    }
+    public <T> T createOrderApi(Class<T> cls) {
+        return orderRetrofit.create(cls);
+    }
+
+    public <T> T createOrderStringApi(Class<T> cls) {
+        return orderStringRetrofit.create(cls);
+    }
+
+    public <T> T createZeDianRetrofitApi(Class<T> cls) {
+        return zeDianRetrofit.create(cls);
+    }
+
+    public <T> T createTonglianRetrofitApi(Class<T> cls) {
+        return tonglianRetrofit.create(cls);
+    }
+}

+ 48 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpJapanResultHandler.java

@@ -0,0 +1,48 @@
+package com.hboxs.base_library.http.response;
+
+import android.util.Log;
+
+import com.hboxs.base_library.http.exception.ApiException;
+import com.hboxs.base_library.util.LogUtil;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+
+/**
+ * 数据响应预处理
+ * Created by MinKin.
+ */
+public class HttpJapanResultHandler {
+
+    public static <T> ObservableTransformer<T, T> transformer() {
+        return new ObservableTransformer<T, T>() {
+
+            @Override
+            public ObservableSource<T> apply(Observable<T> httpResultObs) {
+                return httpResultObs.flatMap(new Function<T, ObservableSource<T>>() {
+
+                    @Override
+                    public ObservableSource<T> apply(final T httpResult) throws Exception {
+                            return Observable.create(new ObservableOnSubscribe<T>() {
+
+                                @Override
+                                public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                                    try {
+                                        emitter.onNext(httpResult);
+                                        emitter.onComplete();
+                                    } catch (Exception e) {
+                                        emitter.onError(e);
+                                    }
+                                }
+                            });
+                    }
+                });
+            }
+        };
+    }
+}

+ 48 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpResult.java

@@ -0,0 +1,48 @@
+package com.hboxs.base_library.http.response;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * Http响应实体类
+ * Created by MinKin.
+ */
+public class HttpResult<T> {
+
+    private int code;
+    private T data;
+    @SerializedName("errmsg")
+    private String errorMsg;
+
+    public int getCode() {
+        return code;
+    }
+
+    public void setCode(int code) {
+        this.code = code;
+    }
+
+    public T getData() {
+        return data;
+    }
+
+    public void setData(T data) {
+        this.data = data;
+    }
+
+    public String getErrorMsg() {
+        return errorMsg;
+    }
+
+    public void setErrorMsg(String errorMsg) {
+        this.errorMsg = errorMsg;
+    }
+
+    /**
+     * 是否请求成功(由服务器状态码决定)
+     */
+    public boolean isSuccess() {
+        return code == 0;
+    }
+
+
+}

+ 55 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpResultHandler.java

@@ -0,0 +1,55 @@
+package com.hboxs.base_library.http.response;
+
+import android.util.Log;
+
+import com.hboxs.base_library.http.exception.ApiException;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+
+/**
+ * 数据响应预处理
+ * Created by MinKin.
+ */
+public class HttpResultHandler {
+
+    private static final String TAG = "HttpResultHandler";
+
+    public static <T> ObservableTransformer<HttpResult<T>, T> transformer() {
+        return new ObservableTransformer<HttpResult<T>, T>() {
+
+            @Override
+            public ObservableSource<T> apply(Observable<HttpResult<T>> httpResultObs) {
+                return httpResultObs.flatMap(new Function<HttpResult<T>, ObservableSource<T>>() {
+
+                    @Override
+                    public ObservableSource<T> apply(final HttpResult<T> httpResult) throws Exception {
+                        if (httpResult.isSuccess()) {
+                            return Observable.create(new ObservableOnSubscribe<T>() {
+
+                                @Override
+                                public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                                    try {
+                                        Log.d(TAG, "String subscribe: "+httpResult);
+                                        emitter.onNext(httpResult.getData());
+                                        emitter.onComplete();
+                                    } catch (Exception e) {
+                                        emitter.onError(e);
+                                    }
+                                }
+                            });
+                        } else {
+                            return Observable.error(new ApiException(httpResult.getCode(), httpResult.getErrorMsg()));
+                        }
+                    }
+                });
+            }
+        };
+    }
+
+}

+ 53 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpStringResultHandler.java

@@ -0,0 +1,53 @@
+package com.hboxs.base_library.http.response;
+
+import android.util.Log;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+import okhttp3.Response;
+
+/**
+ * 数据响应预处理
+ * Created by MinKin.
+ */
+public class HttpStringResultHandler {
+    private static final String TAG = "HttpStringResultHandler";
+    public static <T> ObservableTransformer<T, T> transformer() {
+        return new ObservableTransformer<T, T>() {
+
+            @Override
+            public ObservableSource<T> apply(Observable<T> httpResultObs) {
+                return httpResultObs.flatMap(new Function<T, ObservableSource<T>>() {
+
+
+                    @Override
+                    public ObservableSource<T> apply(final T httpResult) throws Exception {
+                        Log.d(TAG, "apply1: ");
+                        return Observable.create(new ObservableOnSubscribe<T>() {
+
+                            @Override
+                            public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                                try {
+                                    Log.d(TAG, "String subscribe: "+httpResult);
+                                    emitter.onNext(httpResult);
+                                    emitter.onComplete();
+                                } catch (Exception e) {
+                                    emitter.onError(e);
+                                }
+                            }
+
+                        });
+                    }
+                });
+            }
+        };
+    }
+
+
+
+}

+ 36 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpSweepResult.java

@@ -0,0 +1,36 @@
+package com.hboxs.base_library.http.response;
+
+/**
+ * Http响应实体类
+ * Created by MinKin.
+ */
+public class HttpSweepResult<T> {
+
+
+    private T sn;
+    private T productName;
+
+    public T getSn() {
+        return sn;
+    }
+
+    public void setSn(T sn) {
+        this.sn = sn;
+    }
+
+    public T getProductName() {
+        return productName;
+    }
+
+    public void setProductName(T productName) {
+        this.productName = productName;
+    }
+
+    @Override
+    public String toString() {
+        return "HttpTimingSwitcherResult{" +
+                "sn=" + sn +
+                ", offTime=" + productName +
+                '}';
+    }
+}

+ 45 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpSweepResultHandler.java

@@ -0,0 +1,45 @@
+package com.hboxs.base_library.http.response;
+
+import android.util.Log;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+
+/**
+ * 数据响应预处理
+ * Created by MinKin.
+ */
+public class HttpSweepResultHandler {
+
+    public static <T> ObservableTransformer<HttpSweepResult<T>, T> transformer() {
+        return new ObservableTransformer<HttpSweepResult<T>, T>() {
+
+            @Override
+            public ObservableSource<T> apply(Observable<HttpSweepResult<T>> httpResultObs) {
+                return httpResultObs.flatMap(new Function<HttpSweepResult<T>, ObservableSource<T>>() {
+
+                    @Override
+                    public ObservableSource<T> apply(final HttpSweepResult<T> httpResult) throws Exception {
+                        return Observable.create(new ObservableOnSubscribe<T>() {
+
+                            @Override
+                            public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                                try {
+                                    emitter.onNext((T) httpResult);
+                                    emitter.onComplete();
+                                } catch (Exception e) {
+                                    emitter.onError(e);
+                                }
+                            }
+                        });
+                    }
+                });
+            }
+        };
+    }
+}

+ 38 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpTimingSwitcherResult.java

@@ -0,0 +1,38 @@
+package com.hboxs.base_library.http.response;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * Http响应实体类
+ * Created by MinKin.
+ */
+public class HttpTimingSwitcherResult<T> {
+
+
+    private T bootTime;
+    private T offTime;
+
+    public T getBootTime() {
+        return bootTime;
+    }
+
+    public void setBootTime(T bootTime) {
+        this.bootTime = bootTime;
+    }
+
+    public T getOffTime() {
+        return offTime;
+    }
+
+    public void setOffTime(T offTIme) {
+        this.offTime = offTIme;
+    }
+
+    @Override
+    public String toString() {
+        return "HttpTimingSwitcherResult{" +
+                "booTime=" + bootTime +
+                ", offTime=" + offTime +
+                '}';
+    }
+}

+ 45 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/response/HttpTimingSwitcherResultHandler.java

@@ -0,0 +1,45 @@
+package com.hboxs.base_library.http.response;
+
+import android.util.Log;
+
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.ObservableSource;
+import io.reactivex.ObservableTransformer;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.functions.Function;
+
+/**
+ * 数据响应预处理
+ * Created by MinKin.
+ */
+public class HttpTimingSwitcherResultHandler {
+
+    public static <T> ObservableTransformer<HttpTimingSwitcherResult<T>, T> transformer() {
+        return new ObservableTransformer<HttpTimingSwitcherResult<T>, T>() {
+
+            @Override
+            public ObservableSource<T> apply(Observable<HttpTimingSwitcherResult<T>> httpResultObs) {
+                return httpResultObs.flatMap(new Function<HttpTimingSwitcherResult<T>, ObservableSource<T>>() {
+
+                    @Override
+                    public ObservableSource<T> apply(final HttpTimingSwitcherResult<T> httpResult) throws Exception {
+                            return Observable.create(new ObservableOnSubscribe<T>() {
+
+                                @Override
+                                public void subscribe(ObservableEmitter<T> emitter) throws Exception {
+                                    try {
+                                        emitter.onNext((T) httpResult);
+                                        emitter.onComplete();
+                                    } catch (Exception e) {
+                                        emitter.onError(e);
+                                    }
+                                }
+                            });
+                    }
+                });
+            }
+        };
+    }
+}

+ 11 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/listener/DialogClickListener.java

@@ -0,0 +1,11 @@
+package com.hboxs.base_library.listener;
+
+/**
+ * @author whw
+ * @time 2019/4/9
+ * @Description 作用
+ */
+public interface DialogClickListener {
+
+    void onClickListener(int type,String text);
+}

+ 19 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/listener/ItemMaintainClickListener.java

@@ -0,0 +1,19 @@
+package com.hboxs.base_library.listener;
+
+import android.view.View;
+
+/**
+ * @author whw
+ * @time 2019/3/13
+ * @Description 维护情况上报界面点击事件监听
+ */
+public interface ItemMaintainClickListener {
+
+    /**
+     * @param view 控件
+     * @param position 位置
+     *
+     */
+    void onItemListener(View view, int position);
+
+}

+ 18 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/listener/RecyclerItemListener.java

@@ -0,0 +1,18 @@
+package com.hboxs.base_library.listener;
+
+import android.view.View;
+
+/**
+ * @author whw
+ * @time 2019/3/11
+ * @Description Recycler item 点击事件
+ */
+public interface RecyclerItemListener {
+    /**
+     *
+     * @param view 控件
+     * @param position 位置
+     */
+    void onItemClickLintener(View view,int position);
+
+}

+ 0 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/receiver/NetWorkReceiver.java


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff