Przeglądaj źródła

优惠码功能

ccc 8 miesięcy temu
rodzic
commit
507df7dac5
56 zmienionych plików z 1047 dodań i 168 usunięć
  1. 5 2
      .idea/misc.xml
  2. 6 2
      BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderApi.java
  3. 11 6
      BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java
  4. 0 10
      BaseLibrary/src/main/res/drawable-mdpi/shape_btn_login.xml
  5. 0 10
      BaseLibrary/src/main/res/drawable-v24/shape_btn_login.xml
  6. 4 0
      BaseLibrary/src/main/res/values-aa/strings.xml
  7. 4 0
      BaseLibrary/src/main/res/values-ab/strings.xml
  8. 3 0
      BaseLibrary/src/main/res/values-ak/strings.xml
  9. 4 0
      BaseLibrary/src/main/res/values-am/strings.xml
  10. 4 0
      BaseLibrary/src/main/res/values-ar/strings.xml
  11. 5 1
      BaseLibrary/src/main/res/values-ba/strings.xml
  12. 4 0
      BaseLibrary/src/main/res/values-bg/strings.xml
  13. 4 0
      BaseLibrary/src/main/res/values-cs/strings.xml
  14. 4 0
      BaseLibrary/src/main/res/values-da/strings.xml
  15. 4 0
      BaseLibrary/src/main/res/values-de/strings.xml
  16. 3 0
      BaseLibrary/src/main/res/values-en/strings.xml
  17. 4 0
      BaseLibrary/src/main/res/values-es/strings.xml
  18. 4 0
      BaseLibrary/src/main/res/values-et/strings.xml
  19. 4 0
      BaseLibrary/src/main/res/values-fi/strings.xml
  20. 4 0
      BaseLibrary/src/main/res/values-fr/strings.xml
  21. 4 0
      BaseLibrary/src/main/res/values-hu/strings.xml
  22. 4 0
      BaseLibrary/src/main/res/values-hy/strings.xml
  23. 4 0
      BaseLibrary/src/main/res/values-it/strings.xml
  24. 4 0
      BaseLibrary/src/main/res/values-ja/strings.xml
  25. 1 1
      BaseLibrary/src/main/res/values-ka/strings.xml
  26. 4 0
      BaseLibrary/src/main/res/values-ko/strings.xml
  27. 3 0
      BaseLibrary/src/main/res/values-lt/strings.xml
  28. 4 0
      BaseLibrary/src/main/res/values-lv/strings.xml
  29. 4 0
      BaseLibrary/src/main/res/values-mn/strings.xml
  30. 31 1
      BaseLibrary/src/main/res/values-ms/strings.xml
  31. 4 0
      BaseLibrary/src/main/res/values-nl/strings.xml
  32. 4 0
      BaseLibrary/src/main/res/values-no/strings.xml
  33. 4 0
      BaseLibrary/src/main/res/values-pl/strings.xml
  34. 1 1
      BaseLibrary/src/main/res/values-pt/strings.xml
  35. 4 0
      BaseLibrary/src/main/res/values-ro/strings.xml
  36. 4 0
      BaseLibrary/src/main/res/values-ru/strings.xml
  37. 4 0
      BaseLibrary/src/main/res/values-sk/strings.xml
  38. 4 0
      BaseLibrary/src/main/res/values-sq/strings.xml
  39. 4 0
      BaseLibrary/src/main/res/values-sv/strings.xml
  40. 4 0
      BaseLibrary/src/main/res/values-th/strings.xml
  41. 4 0
      BaseLibrary/src/main/res/values-tr/strings.xml
  42. 4 0
      BaseLibrary/src/main/res/values-uk/strings.xml
  43. 3 0
      BaseLibrary/src/main/res/values/strings.xml
  44. 5 5
      app/src/main/java/com/bgy/autosale/RemoteSupportService.java
  45. 17 0
      app/src/main/java/com/bgy/autosale/entitys/MakeIceCreamBean.java
  46. 52 0
      app/src/main/java/com/bgy/autosale/entitys/ShopCartAdapterBean.java
  47. 77 0
      app/src/main/java/com/bgy/autosale/payutil/OverseasShoppingCartBean.java
  48. 135 5
      app/src/main/java/com/bgy/autosale/payutil/dialog/ShoppingTrolleyDialogChoosePay.java
  49. 361 62
      app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java
  50. 19 0
      app/src/main/java/com/bgy/autosale/ui/operator/SwitchSettingActivity.java
  51. 2 1
      app/src/main/java/com/bgy/autosale/ui/operator/TextSettingActivity.java
  52. 10 2
      app/src/main/java/com/bgy/autosale/utils/PriceUtil.java
  53. 42 0
      app/src/main/res/layout/activity_system_switch_setting.xml
  54. 132 56
      app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml
  55. 1 1
      config.gradle
  56. 2 2
      module_offpay/src/main/java/com/example/offpay/service/OfflinePayService.java

+ 5 - 2
.idea/misc.xml

@@ -3,6 +3,7 @@
   <component name="DesignSurface">
     <option name="filePathToZoomLevelMap">
       <map>
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable-v24/shape_btn_login.xml" value="0.165" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/dingdian_seekbar_progress_drawable.xml" value="0.155" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/selector_btn_gray_orange.xml" value="0.165" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/selector_language_bg.xml" value="0.1595" />
@@ -19,6 +20,8 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/drawable/bg_switch_off.xml" value="0.102" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/drawable/bg_switch_on.xml" value="0.102" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/drawable/circular_white.xml" value="0.102" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/drawable/vector_kernel_1.xml" value="0.165" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/drawable/vector_sauce_pineapple_3.xml" value="0.165" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_authnumer.xml" value="0.1" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_device_manager.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_error.xml" value="0.176" />
@@ -42,7 +45,7 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_mix_pay_now.xml" value="0.72" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_pay.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_select_icon.xml" value="0.24947916666666667" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml" value="0.4" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_update.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_clean_finish.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_clean_schedule.xml" value="0.24947916666666667" />
@@ -66,7 +69,7 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_technology.xml" value="0.4" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_batching.xml" value="0.46194690265486726" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_contact.xml" value="0.6" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_shop_cart.xml" value="0.2" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_shop_cart.xml" value="0.264" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/xml/file_paths.xml" value="0.1" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/xml/filepaths.xml" value="0.1" />
       </map>

+ 6 - 2
BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderApi.java

@@ -79,8 +79,12 @@ public interface NoPayOrderApi {
     @GET("api/app_ADIndex/ADIndex/getAdNew.htm")
     Observable<String> getAdNew(@QueryMap Map<String, String> params);
 
-    //确定优惠码的打折
-    @GET("api/order/getCodeDiscount.htm")
+//    //确定优惠码的打折
+//    @GET("api/order/getCodeDiscount.htm")
+//    Observable<HttpResult<String>> getConfirmCode(@QueryMap Map<String, String> params);
+
+    //确定优惠码的打折的多少
+    @GET("tPromoCode/getCodeDiscount")
     Observable<HttpResult<String>> getConfirmCode(@QueryMap Map<String, String> params);
 
     //鲸准:获取取餐号

+ 11 - 6
BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java

@@ -210,9 +210,6 @@ public interface NoPayOrderStringApi {
     @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")
@@ -232,12 +229,20 @@ public interface NoPayOrderStringApi {
     @POST("tProduct/updateProductsShow")
     Observable<String> updateProductsShow(@Body RequestBody body);
 
+    //告诉后台消除报警
+    @GET("api/app_alarmRecord/alarmRecodeIndex/eliminateAlarm")
+    Observable<String> eliminateClean(@QueryMap Map<String, String> params);
 
     //查询优惠码状态接口
     @GET("api/app_equipment/index/selectCode.htm")
     Observable<String> selectCode(@QueryMap Map<String, String> params);
 
-    //告诉后台消除报警
-    @GET("api/app_alarmRecord/alarmRecodeIndex/eliminateAlarm")
-    Observable<String> eliminateClean(@QueryMap Map<String, String> params);
+    //确定优惠码的打折多少
+    @GET("tPromoCode/getCodeDiscount")
+    Observable<HttpResult<String>> getConfirmCode(@QueryMap Map<String, String> params);
+
+    //优惠码支付成功
+    @GET("tPromoCode/updateCode")
+    Observable<String> updateCode(@QueryMap Map<String, String> params);
+
 }

+ 0 - 10
BaseLibrary/src/main/res/drawable-mdpi/shape_btn_login.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="?attr/text_color"/>
-    <corners
-        android:bottomLeftRadius="8dp"
-        android:bottomRightRadius="8dp"
-        android:topLeftRadius="8dp"
-        android:topRightRadius="8dp" />
-</shape>

+ 0 - 10
BaseLibrary/src/main/res/drawable-v24/shape_btn_login.xml

@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<shape xmlns:android="http://schemas.android.com/apk/res/android"
-    android:shape="rectangle">
-    <solid android:color="?attr/text_color"/>
-    <corners
-        android:bottomLeftRadius="8dp"
-        android:bottomRightRadius="8dp"
-        android:topLeftRadius="8dp"
-        android:topRightRadius="8dp" />
-</shape>

+ 4 - 0
BaseLibrary/src/main/res/values-aa/strings.xml

@@ -1117,5 +1117,9 @@
     <string name="hotwifi_name_pass">wifi hotspot პარამეტრები</string>
     <string name="choose_language_type">გთხოვთ, აირჩიოთ ვალუტის ტიპი</string>
     <string name="please_coin">გთხოვთ, დაასრულოთ მონეტის განთავსება შეზღუდული დროის განმავლობაში და ის ავტომატურად წაიშლება ათვლის შემდეგ</string>
+    <string name="promo_code_duplication">შეიყვანეთ ფასდაკლების კოდი არაერთხელ და მხოლოდ ერთი ფასდაკლების კოდის გამოყენება შეიძლება ერთი პროდუქტისთვის</string>
+    <string name="only_one_code">ფასდაკლების კოდის გამოყენება შესაძლებელია მხოლოდ ერთხელ თითო ჭიქაზე</string>
+    <string name="more_code">თუ რამდენიმე ფასდაკლების კოდია, გამოიყენეთ სიმბოლო "#" მათ გამოსაყოფად</string>
+
 </resources>
 <!--格鲁吉亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-ab/strings.xml

@@ -1098,5 +1098,9 @@
     <string name="hotwifi_name_pass">wifi熱點參數</string>
     <string name="choose_language_type">請選擇幣值類型</string>
     <string name="please_coin">請在限定時間內投幣完畢,在倒數結束後自動清除</string>
+    <string name="promo_code_duplication">優惠碼輸入重複,單一商品只能使用一個優惠碼</string>
+    <string name="only_one_code">每杯只能使用一次優惠碼</string>
+    <string name="more_code">如果有多個優惠碼,使用符號"#"分隔</string>
+
 </resources>
 <!--繁体-->

+ 3 - 0
BaseLibrary/src/main/res/values-ak/strings.xml

@@ -1071,5 +1071,8 @@
     <string name="password">Senha</string>
     <string name="hotwifi_name_pass">parâmetros de ponto de acesso Wi-Fi</string>
     <string name="choose_language_type">Selecione o tipo de moeda</string>
+    <string name="promo_code_duplication">Insira o código de desconto repetidamente e apenas um código de desconto poderá ser usado para um único produto</string>
+    <string name="only_one_code">O código de desconto só pode ser usado uma vez por xícara</string>
+    <string name="more_code">Se houver vários códigos de desconto, use o símbolo "#" para separá-los</string>
 </resources>
     <!--葡萄牙语-->

+ 4 - 0
BaseLibrary/src/main/res/values-am/strings.xml

@@ -1528,5 +1528,9 @@
     <string name="password">رمز عبور</string>
     <string name="hotwifi_name_pass">پارامترهای نقطه اتصال وای فای</string>
     <string name="choose_language_type">لطفاً نوع ارز را انتخاب کنید</string>
+    <string name="promo_code_duplication">کد تخفیف را به طور مکرر وارد کنید، و تنها یک کد تخفیف می تواند برای یک محصول استفاده شود</string>
+    <string name="only_one_code">کد تخفیف فقط یک بار در هر فنجان قابل استفاده است</string>
+    <string name="more_code">اگر چندین کد تخفیف وجود دارد، از نماد "#" برای جدا کردن آنها استفاده کنید</string>
+
 </resources>
 <!--    波斯语-->

+ 4 - 0
BaseLibrary/src/main/res/values-ar/strings.xml

@@ -1114,6 +1114,10 @@
    <string name="password">كلمة المرور</string>
    <string name="hotwifi_name_pass">معلمات نقطة اتصال wifi</string>
    <string name="choose_language_type">يُرجى تحديد نوع العملة</string>
+    <string name="promo_code_duplication">أدخل رمز الخصم بشكل متكرر، ويمكن استخدام رمز خصم واحد فقط لمنتج واحد</string>
+    <string name="only_one_code">لا يمكن استخدام رمز الخصم إلا مرة واحدة لكل كوب</string>
+    <string name="more_code">إذا كانت هناك رموز خصم متعددة، فاستخدم الرمز "#" للفصل بينها</string>
+
 </resources>
     <!--阿拉伯语-->
 

+ 5 - 1
BaseLibrary/src/main/res/values-ba/strings.xml

@@ -1093,8 +1093,12 @@
     <string name="ospf">th</string>
     <string name="price_zero_tips">O preço de cada produto é 0. Deseja confirmar a modificação para evitar erros de configuração de preço</string>
     <string name="coin_return">Retirar moedas</string>
-    <string name="senha">Senha</string>
+    <string name="password">Senha</string>
     <string name="hotwifi_name_pass">parâmetros de ponto de acesso Wi-Fi</string>
     <string name="choose_language_type">Selecione o tipo de moeda</string>
+    <string name="promo_code_duplication">Insira o código de desconto repetidamente e apenas um código de desconto poderá ser usado para um único produto</string>
+    <string name="only_one_code">O código de desconto só pode ser usado uma vez por xícara</string>
+    <string name="more_code">Se houver vários códigos de desconto, use o símbolo "#" para separá-los</string>
+
 </resources>
         <!--葡萄牙语-->

+ 4 - 0
BaseLibrary/src/main/res/values-bg/strings.xml

@@ -1157,5 +1157,9 @@
     <string name="password">Senha</string>
     <string name="hotwifi_name_pass">parâmetros de ponto de acesso Wi-Fi</string>
     <string name="choose_language_type">Selecione o tipo de moeda</string>
+    <string name="promo_code_duplication">Въведете кода за отстъпка многократно и само един код за отстъпка може да се използва за един продукт</string>
+    <string name="only_one_code">Кодът за отстъпка може да се използва само веднъж на чаша</string>
+    <string name="more_code">Ако има няколко кода за отстъпка, използвайте символа „#“, за да ги разделите</string>
+
 </resources>
     <!--保加利亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-cs/strings.xml

@@ -1109,5 +1109,9 @@
     <string name="password">Heslo</string>
     <string name="hotwifi_name_pass">parametry wifi hotspotu</string>
     <string name="choose_language_type">Vyberte prosím typ měny</string>
+    <string name="promo_code_duplication">Slevový kód zadávejte opakovaně a na jeden produkt lze použít pouze jeden slevový kód</string>
+    <string name="only_one_code">Slevový kód lze použít pouze jednou na šálek</string>
+    <string name="more_code">Pokud existuje více slevových kódů, oddělte je pomocí symbolu „#“</string>
+
 </resources>
         <!--捷克语-->

+ 4 - 0
BaseLibrary/src/main/res/values-da/strings.xml

@@ -1110,5 +1110,9 @@
     <string name="password">Heslo</string>
     <string name="hotwifi_name_pass">parametry wifi hotspotu</string>
     <string name="choose_language_type">Vyberte prosím typ měny</string>
+    <string name="promo_code_duplication">Kampagnekoden indtastes gentagne gange, kun én kampagnekode kan bruges til et enkelt produkt</string>
+    <string name="only_one_code">Kampagnekoden kan kun bruges én gang pr. kop</string>
+    <string name="more_code">Hvis der er flere kampagnekoder, skal du bruge symbolet "#" for at adskille dem</string>
+
 </resources>
 <!--丹麦语-->

+ 4 - 0
BaseLibrary/src/main/res/values-de/strings.xml

@@ -1125,5 +1125,9 @@
     <string name="password">Adgangskode</string>
     <string name="hotwifi_name_pass">wifi-hotspot-parametre</string>
     <string name="choose_language_type">Vælg venligst valutatype</string>
+    <string name="promo_code_duplication">Der Aktionscode wird mehrfach eingegeben, es kann nur ein Aktionscode für ein Produkt verwendet werden</string>
+    <string name="only_one_code">Der Aktionscode kann nur einmal pro Tasse verwendet werden</string>
+    <string name="more_code">Wenn mehrere Aktionscodes vorhanden sind, verwenden Sie das Symbol "#", um sie zu trennen</string>
+
 </resources>
 <!--德语-->

+ 3 - 0
BaseLibrary/src/main/res/values-en/strings.xml

@@ -1118,5 +1118,8 @@
     <string name="password">Passwort</string>
     <string name="hotwifi_name_pass">WLAN-Hotspot-Parameter</string>
     <string name="choose_language_type">Bitte wählen Sie den Währungstyp aus</string>
+    <string name="promo_code_duplication">The promo code is entered repeatedly, only one promo code can be used for a single product</string>
+    <string name="only_one_code">The promo code can only be used once per cup</string>
+    <string name="more_code">If there are multiple promo codes, use the symbol "#" to separate them</string>
 </resources>
 <!--英语-->

+ 4 - 0
BaseLibrary/src/main/res/values-es/strings.xml

@@ -1163,5 +1163,9 @@
     <string name="password">Password</string>
     <string name="hotwifi_name_pass">wifi hotspot parameters</string>
     <string name="choose_language_type">Please select currency type</string>
+    <string name="promo_code_duplication">El código promocional se ingresa repetidamente, solo se puede usar un código promocional para un solo producto</string>
+    <string name="only_one_code">El código promocional solo se puede usar una vez por taza</string>
+    <string name="more_code">Si hay varios códigos promocionales, use el símbolo "#" para separarlos</string>
+
 </resources>
 <!--西班牙语-->

+ 4 - 0
BaseLibrary/src/main/res/values-et/strings.xml

@@ -1112,4 +1112,8 @@
    <string name="password">Contraseña</string>
    <string name="hotwifi_name_pass">parámetros del punto de acceso wifi</string>
    <string name="choose_language_type">Seleccione el tipo de moneda</string>
+    <string name="promo_code_duplication">Sooduskoodi sisestatakse korduvalt, ühe toote puhul saab kasutada ainult ühte sooduskoodi</string>
+    <string name="only_one_code">Sooduskoodi saab kasutada ainult üks kord tassi kohta</string>
+    <string name="more_code">Kui sooduskoode on mitu, kasutage nende eraldamiseks sümbolit „#”</string>
+
 </resources><!--爱沙尼亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-fi/strings.xml

@@ -1110,5 +1110,9 @@
     <string name="password">Parool</string>
     <string name="hotwifi_name_pass">wifi-leviala parameetrid</string>
     <string name="choose_language_type">Valige valuuta tüüp</string>
+    <string name="promo_code_duplication">Tarjouskoodi syötetään toistuvasti, yhdelle tuotteelle voi käyttää vain yhtä tarjouskoodia</string>
+    <string name="only_one_code">Tarjouskoodia voi käyttää vain kerran kuppia kohden</string>
+    <string name="more_code">Jos tarjouskoodeja on useita, erota ne symbolilla #</string>
+
 </resources>
 <!--芬兰语-->

+ 4 - 0
BaseLibrary/src/main/res/values-fr/strings.xml

@@ -1126,5 +1126,9 @@
     <string name="password">Mot de passe</string>
     <string name="hotwifi_name_pass">Paramètres du point d\'accès Wi-Fi</string>
     <string name="choose_language_type">Veuillez sélectionner le type de devise</string>
+    <string name="promo_code_duplication">Le code promo est saisi à plusieurs reprises, un seul code promo peut être utilisé pour un seul produit</string>
+    <string name="only_one_code">Le code promo ne peut être utilisé qu\'une seule fois par tasse</string>
+    <string name="more_code">S\'il y a plusieurs codes promo, utilisez le symbole "#" pour les séparer</string>
+
 </resources>
 <!--法语-->

+ 4 - 0
BaseLibrary/src/main/res/values-hu/strings.xml

@@ -1109,5 +1109,9 @@
     <string name="password">Mot de passe</string>
     <string name="hotwifi_name_pass">Paramètres du point d\'accès Wi-Fi</string>
     <string name="choose_language_type">Veuillez sélectionner le type de devise</string>
+    <string name="promo_code_duplication">A promóciós kódot többször kell megadni, egyetlen termékhez csak egy promóciós kód használható</string>
+    <string name="only_one_code">A promóciós kód csészénként csak egyszer használható fel</string>
+    <string name="more_code">Ha több promóciós kód is van, használja a "#" szimbólumot az elválasztásukhoz</string>
+
 </resources>
 <!--匈牙利语-->

+ 4 - 0
BaseLibrary/src/main/res/values-hy/strings.xml

@@ -1100,5 +1100,9 @@
     <string name="password">Գաղտնաբառ</string>
     <string name="hotwifi_name_pass">wifi թեժ կետի պարամետրեր</string>
     <string name="choose_language_type">Խնդրում ենք ընտրել արժույթի տեսակը</string>
+    <string name="promo_code_duplication">Պրոմո կոդը բազմիցս մուտքագրվում է, միայն մեկ պրոմո կոդը կարող է օգտագործվել մեկ ապրանքի համար</string>
+    <string name="only_one_code">Պրոմո կոդը կարող է օգտագործվել միայն մեկ բաժակի համար</string>
+    <string name="more_code">Եթե կան բազմաթիվ պրոմո կոդեր, օգտագործեք «#» նշանը՝ դրանք առանձնացնելու համար</string>
+
 </resources>
     <!--亚美尼亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-it/strings.xml

@@ -1088,5 +1088,9 @@
     <string name="generator_work_temp">Temperatura di lavoro del generatore</string>
     <string name="generator_standby_temp">Temperatura di standby del generatore</string>
     <string name="choose_language_type">Seleziona il tipo di valuta</string>
+    <string name="promo_code_duplication">Il codice promozionale viene inserito ripetutamente, è possibile utilizzare un solo codice promozionale per un singolo prodotto</string>
+    <string name="only_one_code">Il codice promozionale può essere utilizzato solo una volta per tazza</string>
+    <string name="more_code">Se sono presenti più codici promozionali, utilizzare il simbolo "#" per separarli</string>
+
 </resources>
 <!--意大利-->

+ 4 - 0
BaseLibrary/src/main/res/values-ja/strings.xml

@@ -1118,4 +1118,8 @@
     <string name="password">パスワード</string>
     <string name="hotwifi_name_pass">Wi-Fi ホットスポットのパラメータ</string>
     <string name="choose_language_type">通貨の種類を選択してください</string>
+    <string name="promo_code_duplication">プロモーション コードが繰り返し入力されています。1 つの製品に使用できるプロモーション コードは 1 つだけです</string>
+    <string name="only_one_code">プロモーション コードは 1 杯につき 1 回のみ使用できます</string>
+    <string name="more_code">プロモーション コードが複数ある場合は、記号「#」を使用して区切ります</string>
+
 </resources><!--日语-->

+ 1 - 1
BaseLibrary/src/main/res/values-ka/strings.xml

@@ -1106,7 +1106,7 @@
     <string name="ospf">th</string>
     <string name="price_zero_tips">O preço de cada produto é 0. Deseja confirmar a modificação para evitar erros de configuração de preço</string>
     <string name="coin_return">Retirar moedas</string>
-    <string name="senha">Senha</string>
+    <string name="password">Senha</string>
     <string name="hotwifi_name_pass">parâmetros de ponto de acesso Wi-Fi</string>
     <string name="choose_language_type">Selecione o tipo de moeda</string>
 </resources>

+ 4 - 0
BaseLibrary/src/main/res/values-ko/strings.xml

@@ -1106,4 +1106,8 @@
     <string name="password">비밀번호</string>
     <string name="hotwifi_name_pass">WiFi 핫스팟 매개변수</string>
     <string name="choose_language_type">통화 유형을 선택하세요</string>
+    <string name="promo_code_duplication">프로모 코드는 반복적으로 입력되므로, 단일 제품에는 하나의 프로모 코드만 사용할 수 있습니다.</string>
+    <string name="only_one_code">프로모 코드는 컵당 한 번만 사용할 수 있습니다.</string>
+    <string name="more_code">프로모 코드가 여러 개 있는 경우, "#" 기호를 사용하여 구분합니다.</string>
+
 </resources><!--韩语-->

+ 3 - 0
BaseLibrary/src/main/res/values-lt/strings.xml

@@ -1187,6 +1187,9 @@
     <string name="password">Slaptažodis</string>
     <string name="hotwifi_name_pass">Wi-Fi viešosios interneto prieigos taško parametrai</string>
     <string name="choose_language_type">Pasirinkite valiutos tipą</string>
+    <string name="promo_code_duplication">Reklamos kredito kodas įvedamas pakartotinai, vienam produktui galima naudoti tik vieną reklamos kredito kodą</string>
+    <string name="only_one_code">Reklamos kredito kodas vienam puodeliui gali būti naudojamas tik vieną kartą</string>
+    <string name="more_code">Jei yra keli reklamos kredito kodai, naudokite simbolį „#“, kad juos atskirtumėte</string>
 
 </resources>
 <!--立陶宛-->

+ 4 - 0
BaseLibrary/src/main/res/values-lv/strings.xml

@@ -1111,5 +1111,9 @@
     <string name="password">Parole</string>
     <string name="hotwifi_name_pass">wifi tīklāja parametri</string>
     <string name="choose_language_type">Lūdzu, atlasiet valūtas veidu</string>
+    <string name="promo_code_duplication">Reklāmas kods tiek ievadīts atkārtoti, vienam produktam var izmantot tikai vienu akcijas kodu</string>
+    <string name="only_one_code">Reklāmas kodu var izmantot tikai vienu reizi vienā krūzē</string>
+    <string name="more_code">Ja ir vairāki reklāmas kodi, izmantojiet simbolu "#", lai tos atdalītu</string>
+
 </resources>
 <!--拉脱维亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-mn/strings.xml

@@ -1110,4 +1110,8 @@
     <string name="password">Нууц үг</string>
     <string name = "hotwifi_name_pass" >wifi холболтын цэгийн параметрүүд</string>
     <string name = "choose_language_type" >Валютын төрлийг сонгоно уу</string>
+    <string name = "promo_code_duplication">Урамшууллын кодыг дахин дахин оруулах бөгөөд нэг бүтээгдэхүүнд зөвхөн нэг сурталчилгааны кодыг ашиглах боломжтой</string>
+    <string name = "only_one_code" >Урамшууллын кодыг нэг аяга тутамд нэг л удаа ашиглах боломжтой</string>
+    <string name = "more_code">Хэрэв олон сурталчилгааны код байгаа бол тэдгээрийг тусгаарлахын тулд "#" тэмдгийг ашиглаарай</string>
+
 </resources><!--蒙古语-->

+ 31 - 1
BaseLibrary/src/main/res/values-ms/strings.xml

@@ -21,6 +21,36 @@
     <string name="language_2">Pilihan bahasa kedua:</string>
     <string name="choose_language_type">Sila pilih jenis mata wang</string>
     <string name="value_of_zero">Tetapkan semula nilai mata wang selepas pengeluaran</string>
-
+    <string name="pay_choose">Pilih kaedah pembayaran</string>
+    <string name="no_cid">Gagal mendapatkan id peranti, sila pastikan anda disambungkan ke rangkaian</string>
+    <string name="alarmclock_type">Jenis jam penggera:</string>
+    <string name="local_alarmclock">Jam penggera tempatan</string>
+    <string name="clock_add">Tambah penggera</string>
+    <string name="sunday">Ahad</string>
+    <string name="monday">Isnin</string>
+    <string name="tuesday">Selasa</string>
+    <string name="wednesday">Rabu</string>
+    <string name="thursday">Khamis</string>
+    <string name="friday">Jumaat</string>
+    <string name="saturday">Sabtu</string>
+    <string name="start_sleep">Mulakan tidur</string>
+    <string name="end_sleep">Matikan tidur</string>
+    <string name="alarm_clock">Jam penggera</string>
+    <string name="confirm">Sahkan</string>
+    <string name="hibernation_title">Hibernasi</string>
+    <string name="mix_now">Masukkan syiling/nota dengan segera</string>
+    <string name="cha">Tidak mencukupi</string>
+    <string name="shengyu">Baki</string>
+    <string name="mei">Mei</string>
+    <string name="second">Kedua</string>
+    <string name="nany_noconnect">Pembaca kad tiada komunikasi</string>
+    <string name="credit_card_payment">Leret kad anda dengan segera untuk menyelesaikan pembayaran</string>
+    <string name="dont_coin1">Sila jangan masukkan syiling untuk mengelakkan salah faham</string>
+    <string name="guanbi">Tutup</string>
+    <string name="pay_success">Pembayaran berjaya</string>
+    <string name="promotion_code">Fungsi kod promosi</string>
+    <string name="promo_code_duplication">Masukkan kod diskaun berulang kali dan hanya satu kod diskaun boleh digunakan untuk satu produk</string>
+    <string name="only_one_code">Kod diskaun hanya boleh digunakan sekali setiap cawan</string>
+    <string name="more_code">Jika terdapat berbilang kod diskaun, gunakan simbol "#" untuk memisahkannya</string>
 </resources>
 <!--马来语-->

+ 4 - 0
BaseLibrary/src/main/res/values-nl/strings.xml

@@ -1111,5 +1111,9 @@
     <string name="password">Wachtwoord</string>
     <string name="hotwifi_name_pass">wifi-hotspotparameters</string>
     <string name="choose_language_type">Selecteer het valutatype</string>
+    <string name="promo_code_duplication">De promotiecode wordt herhaaldelijk ingevoerd, er kan slechts één promotiecode voor één product worden gebruikt</string>
+    <string name="only_one_code">De promotiecode kan slechts één keer per kopje worden gebruikt</string>
+    <string name="more_code">Als er meerdere promotiecodes zijn, gebruik dan het symbool "#" om ze te scheiden</string>
+
 </resources>
 <!--荷兰语-->

+ 4 - 0
BaseLibrary/src/main/res/values-no/strings.xml

@@ -1111,5 +1111,9 @@
     <string name="password">Passord</string>
     <string name="hotwifi_name_pass">parametere for wifi-hotspot</string>
     <string name="choose_language_type">Velg valutatype</string>
+    <string name="promo_code_duplication">Kampanjekoden skrives inn gjentatte ganger, kun én kampanjekode kan brukes for ett enkelt produkt</string>
+    <string name="only_one_code">Kampanjekoden kan bare brukes én gang per kopp</string>
+    <string name="more_code">Hvis det er flere kampanjekoder, bruk symbolet "#" for å skille dem</string>
+
 </resources>
 <!--挪威语-->

+ 4 - 0
BaseLibrary/src/main/res/values-pl/strings.xml

@@ -1567,4 +1567,8 @@
     <string name="password">Hasło</string>
     <string name="hotwifi_name_pass">Parametry hotspotu Wi-Fi</string>
     <string name="choose_language_type">Proszę wybrać typ waluty</string>
+    <string name="promo_code_duplication">Kod promocyjny jest wprowadzany wielokrotnie, tylko jeden kod promocyjny może być użyty dla jednego produktu</string>
+    <string name="only_one_code">Kod promocyjny może być użyty tylko raz na kubek</string>
+    <string name="more_code">Jeśli jest wiele kodów promocyjnych, użyj symbolu „#”, aby je rozdzielić</string>
+
 </resources><!--波兰语-->

+ 1 - 1
BaseLibrary/src/main/res/values-pt/strings.xml

@@ -1122,7 +1122,7 @@
     <string name="ospf">th</string>
     <string name="price_zero_tips">O preço de cada produto é 0. Deseja confirmar a modificação para evitar erros de configuração de preço</string>
     <string name="coin_return">Retirar moedas</string>
-    <string name="senha">Senha</string>
+    <string name="password">Senha</string>
     <string name="hotwifi_name_pass">parâmetros de ponto de acesso Wi-Fi</string>
     <string name="choose_language_type">Selecione o tipo de moeda</string>
 </resources>

+ 4 - 0
BaseLibrary/src/main/res/values-ro/strings.xml

@@ -1112,5 +1112,9 @@
     <string name="password">Parola</string>
     <string name="hotwifi_name_pass">parametrii hotspot-ului wifi</string>
     <string name="choose_language_type">Vă rugăm să selectați tipul monedei</string>
+    <string name="promo_code_duplication">Codul promoțional este introdus în mod repetat, un singur cod promoțional poate fi utilizat pentru un singur produs</string>
+    <string name="only_one_code">Codul promoțional poate fi folosit o singură dată pe cană</string>
+    <string name="more_code">Dacă există mai multe coduri promoționale, utilizați simbolul „#” pentru a le separa</string>
+
 </resources>
 <!--罗马尼亚-->

+ 4 - 0
BaseLibrary/src/main/res/values-ru/strings.xml

@@ -1085,5 +1085,9 @@
     <string name="password">Пароль</string>
     <string name="hotwifi_name_pass">Параметры точки доступа Wi-Fi</string>
     <string name="choose_language_type">Выберите тип валюты</string>
+    <string name="promo_code_duplication">Промокод вводится многократно, для одного продукта можно использовать только один промокод</string>
+    <string name="only_one_code">Промокод можно использовать только один раз на чашку</string>
+    <string name="more_code">Если есть несколько промокодов, используйте символ "#" для их разделения</string>
+
 </resources>
 <!--俄语-->

+ 4 - 0
BaseLibrary/src/main/res/values-sk/strings.xml

@@ -1112,5 +1112,9 @@
     <string name="password">Heslo</string>
     <string name="hotwifi_name_pass">parametre wifi hotspotu</string>
     <string name="choose_language_type">Vyberte typ meny</string>
+    <string name="promo_code_duplication">Propagačný kód sa zadáva opakovane, pre jeden produkt možno použiť iba jeden propagačný kód</string>
+    <string name="only_one_code">Promo kód možno použiť iba raz na šálku</string>
+    <string name="more_code">Ak existuje viacero propagačných kódov, oddeľte ich pomocou symbolu „#“</string>
+
 </resources>
     <!--斯洛伐克-->

+ 4 - 0
BaseLibrary/src/main/res/values-sq/strings.xml

@@ -1065,5 +1065,9 @@
     <string name="password">סיסמה</string>
     <string name="hotwifi_name_pass">פרמטרים של נקודה חמה של wifi</string>
     <string name="choose_language_type">בחר סוג מטבע</string>
+    <string name="promo_code_duplication">קוד ההטבה מוזן שוב ושוב, ניתן להשתמש רק בקוד הטבה אחד עבור מוצר בודד</string>
+    <string name="only_one_code">ניתן להשתמש בקוד ההטבה רק פעם אחת לכל כוס</string>
+    <string name="more_code">אם ישנם קודי קידום מכירות מרובים, השתמש בסמל "#" כדי להפריד ביניהם</string>
+
 </resources>
 <!--希伯来语  以色列-->

+ 4 - 0
BaseLibrary/src/main/res/values-sv/strings.xml

@@ -1109,5 +1109,9 @@
     <string name="password">Lösenord</string>
     <string name="hotwifi_name_pass">parametrar för wifi-hotspot</string>
     <string name="choose_language_type">Välj valutatyp</string>
+    <string name="promo_code_duplication">Kampanjkoden skrivs in upprepade gånger, endast en kampanjkod kan användas för en enskild produkt</string>
+    <string name="only_one_code">Kampanjkoden kan endast användas en gång per kopp</string>
+    <string name="more_code">Om det finns flera kampanjkoder, använd symbolen "#" för att skilja dem åt</string>
+
 </resources>
 <!--瑞典语-->

+ 4 - 0
BaseLibrary/src/main/res/values-th/strings.xml

@@ -1140,5 +1140,9 @@
     <string name="password">รหัสผ่าน</string>
     <string name="hotwifi_name_pass">พารามิเตอร์ฮอตสปอต wifi</string>
     <string name="choose_language_type">โปรดเลือกประเภทสกุลเงิน</string>
+    <string name="promo_code_duplication">มีการป้อนรหัสโปรโมชั่นซ้ำหลายครั้ง สามารถใช้รหัสโปรโมชั่นได้เพียงรหัสเดียวต่อผลิตภัณฑ์เดียว</string>
+    <string name="only_one_code">รหัสโปรโมชั่นใช้ได้เพียงครั้งเดียวต่อแก้ว</string>
+    <string name="more_code">หากมีรหัสโปรโมชั่นหลายรหัส ให้ใช้สัญลักษณ์ "#" เพื่อคั่น</string>
+
 </resources>
     <!--泰语-->

+ 4 - 0
BaseLibrary/src/main/res/values-tr/strings.xml

@@ -1109,5 +1109,9 @@
     <string name="password">Şifre</string>
     <string name="hotwifi_name_pass">wifi ortak erişim noktası parametreleri</string>
     <string name="choose_language_type">Lütfen para birimi türünü seçin</string>
+    <string name="promo_code_duplication">Promosyon kodu tekrar tekrar girilir, tek bir ürün için yalnızca bir promosyon kodu kullanılabilir</string>
+    <string name="only_one_code">Promosyon kodu her fincan için yalnızca bir kez kullanılabilir</string>
+    <string name="more_code">Birden fazla promosyon kodu varsa, bunları ayırmak için "#" sembolünü kullanın</string>
+
 </resources>
 <!--土耳其-->

+ 4 - 0
BaseLibrary/src/main/res/values-uk/strings.xml

@@ -1098,5 +1098,9 @@
     <string name="password">Пароль</string>
     <string name="hotwifi_name_pass">параметри точки доступу Wi-Fi</string>
     <string name="choose_language_type">Будь ласка, виберіть тип валюти</string>
+    <string name="promo_code_duplication">Промокод вводиться багаторазово, для одного продукту можна використовувати лише один промокод</string>
+    <string name="only_one_code">Промокод можна використати лише один раз на чашку</string>
+    <string name="more_code">Якщо є кілька промо-кодів, використовуйте символ "#", щоб розділити їх</string>
+
 </resources>
     <!--乌克兰语-->

+ 3 - 0
BaseLibrary/src/main/res/values/strings.xml

@@ -1187,5 +1187,8 @@
     <string name="password">密码</string>
     <string name="hotwifi_name_pass">wifi热点参数</string>
     <string name="choose_language_type">请选择币值类型</string>
+    <string name="promo_code_duplication">优惠码输入重复,单个商品只能使用一个优惠码</string>
+    <string name="only_one_code">每杯只能使用一次优惠码</string>
+    <string name="more_code">如果有多个优惠码,使用符号"#"进行分隔</string>
 
 </resources>

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

@@ -417,7 +417,7 @@ public class RemoteSupportService extends Service implements SendCallback {
                     @Override
                     public void run() {
                         Log.d(TAG, "run: cash sale0");
-                        if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+                        if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                             if (Hawk.get(Name.MDB_CASHCALE, true)) {
                                 String asfd = (String) messageEvent.getData();
                                 String[] split3 = asfd.split(";");
@@ -634,17 +634,17 @@ public class RemoteSupportService extends Service implements SendCallback {
             Intent intent = new Intent(RemoteSupportService.this, LockActivity.class);
             intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
             startActivity(intent);
-            if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+            if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                 WeaverUtil.billValidatorDisable();
             }
         } else {
-            if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+            if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                 WeaverUtil.billValidatorSetUp();
-            } else if (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+            } else if (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                 SerialPortUtil.getSerialPortUtil().sendSerialPort("3E");
 
             }
-            LogUtils.logWrite("开启:" + (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))));
+            LogUtils.logWrite("开启:" + (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))));
             //唤醒
             SharedPreferencesUtils.setParam("sleep", 1);
             Intent intent = new Intent(RemoteSupportService.this, MainActivity.class);

+ 17 - 0
app/src/main/java/com/bgy/autosale/entitys/MakeIceCreamBean.java

@@ -1,6 +1,7 @@
 package com.bgy.autosale.entitys;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 
 /**
  * Created by cjx on 2020-08-19
@@ -34,4 +35,20 @@ public class MakeIceCreamBean {
         this.productId = productId;
         amount = 0;
     }
+
+    @Override
+    public String toString() {
+        return "MakeIceCreamBean{" +
+                "amount=" + amount +
+                ", orderId='" + orderId + '\'' +
+                ", orderDetailId='" + orderDetailId + '\'' +
+                ", productId='" + productId + '\'' +
+                ", iceCreamName='" + iceCreamName + '\'' +
+                ", makeCodes=" + Arrays.toString(makeCodes) +
+                ", specs=" + specs +
+                ", orderStatus=" + orderStatus +
+                ", orderStatusName='" + orderStatusName + '\'' +
+                ", thirdPartyId='" + thirdPartyId + '\'' +
+                '}';
+    }
 }

+ 52 - 0
app/src/main/java/com/bgy/autosale/entitys/ShopCartAdapterBean.java

@@ -0,0 +1,52 @@
+package com.bgy.autosale.entitys;
+
+import java.io.Serializable;
+
+/**
+ * Created by cjx on 2019/8/14
+ * 说明:
+ */
+public class ShopCartAdapterBean implements Serializable {
+    public int position;
+    public double temppric;
+    public int buyCount;
+
+    public ShopCartAdapterBean(int position, double temppric, int buyCount) {
+        this.position=position;
+        this.temppric = temppric;
+        this.buyCount = buyCount;
+    }
+
+    public int getPosition() {
+        return position;
+    }
+
+    public void setPosition(int position) {
+        this.position = position;
+    }
+
+    public double getTemppric() {
+        return temppric;
+    }
+
+    public void setTemppric(double temppric) {
+        this.temppric = temppric;
+    }
+
+    public int getBuyCount() {
+        return buyCount;
+    }
+
+    public void setBuyCount(int buyCount) {
+        this.buyCount = buyCount;
+    }
+
+    @Override
+    public String toString() {
+        return "ShopCarAdapterBean{" +
+                "position=" + position +
+                ", temppric=" + temppric +
+                ", buyCount=" + buyCount +
+                '}';
+    }
+}

+ 77 - 0
app/src/main/java/com/bgy/autosale/payutil/OverseasShoppingCartBean.java

@@ -0,0 +1,77 @@
+package com.bgy.autosale.payutil;
+
+public class OverseasShoppingCartBean {
+
+    //爆米花
+    private String shoppingName;//商品名字
+    //价格
+    private double price;//商品金额
+
+    //折扣码
+    private String discountCode;
+    //折扣
+    private Double discountNumber;
+
+    private String type;
+
+    public OverseasShoppingCartBean(String shoppingName, double price, String discountCode, Double discountNumber, String type) {
+        this.shoppingName = shoppingName;
+        this.price = price;
+        this.discountCode = discountCode;
+        this.discountNumber = discountNumber;
+        this.type = type;
+    }
+
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getShoppingName() {
+        return shoppingName;
+    }
+
+    public void setShoppingName(String shoppingName) {
+        this.shoppingName = shoppingName;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public String getDiscountCode() {
+        return discountCode;
+    }
+
+    public void setDiscountCode(String discountCode) {
+        this.discountCode = discountCode;
+    }
+
+    public Double getDiscountNumber() {
+        return discountNumber;
+    }
+
+    public void setDiscountNumber(Double discountNumber) {
+        this.discountNumber = discountNumber;
+    }
+
+
+    @Override
+    public String toString() {
+        return "OverseasShoppingCartBean{" +
+                "shoppingName='" + shoppingName + '\'' +
+                ", price=" + price +
+                ", discountCode='" + discountCode + '\'' +
+                ", discountNumber=" + discountNumber +
+                ", type='" + type + '\'' +
+                '}';
+    }
+}

+ 135 - 5
app/src/main/java/com/bgy/autosale/payutil/dialog/ShoppingTrolleyDialogChoosePay.java

@@ -1,25 +1,43 @@
 package com.bgy.autosale.payutil.dialog;
 
 import android.annotation.SuppressLint;
+import android.app.Activity;
 import android.content.Context;
+import android.os.IBinder;
 import android.text.Html;
+import android.text.InputFilter;
+import android.text.InputType;
+import android.text.Spanned;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
+import android.widget.LinearLayout;
 
 import com.bgy.autosale.App;
 import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
+import com.bgy.autosale.utils.ToastUtil;
+import com.google.gson.Gson;
 import com.hboxs.base_library.callback.DialogClickListener;
+import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.util.UiUtil;
 import com.orhanobut.hawk.Hawk;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
 /**
  * @author whw
  * @time 2019/3/22
@@ -30,6 +48,9 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
     private View view;
     private boolean canTouchOutsideDismiss = true;
     ImageView ivNayax;
+    private LinearLayout llDiscountsCode;
+
+    private static final String TAG = "ShoppingTrolleyDialogCh";
 
     public void setListener(DialogClickListener listener) {
         this.listener = listener;
@@ -43,10 +64,10 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
         setOnClickListener(this);
         view.setOnClickListener(this);
         view.findViewById(R.id.iv_qianbi).setOnClickListener(this);
-        if (App.app.payChannel == Constant.PAY_POS_DEVICE_PAY_MIX){
+        if (App.app.payChannel == Constant.PAY_POS_DEVICE_PAY_MIX) {
             view.findViewById(R.id.iv_w_mdb_xinyongka).setOnClickListener(this);
             view.findViewById(R.id.iv_w_mdb_xinyongka).setVisibility(VISIBLE);
-        }else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX){
+        } else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX) {
             view.findViewById(R.id.iv_nayax).setOnClickListener(this);
             view.findViewById(R.id.iv_nayax).setVisibility(VISIBLE);
         } else if (App.app.payChannel == Constant.PAY_ONLINE_AND_PRICE_MODEL) {
@@ -58,14 +79,39 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
         layoutParams.gravity = Gravity.CENTER;
         addView(view, layoutParams);
 
-        ivNayax=view.findViewById(R.id.iv_nayax);
-        if (Hawk.get("isScan",false)){
+        ivNayax = view.findViewById(R.id.iv_nayax);
+        if (Hawk.get("isScan", false)) {
             ivNayax.setImageResource(R.drawable.icon_scan);
-        }else {
+        } else {
             ivNayax.setImageResource(R.drawable.icon_xinyongka_pay);
         }
+
+        llDiscountsCode=view.findViewById(R.id.ll_discounts_code);
+        if (Hawk.get(Name.PROMOTION_CODE,false)){
+            Log.d(TAG, "ShoppingTrolleyDialogChoosePay:1 ");
+            llDiscountsCode.setVisibility(VISIBLE);
+        }else {
+            Log.d(TAG, "ShoppingTrolleyDialogChoosePay: 2");
+            llDiscountsCode.setVisibility(GONE);
+        }
+        etDiscountsCode = view.findViewById(R.id.et_discounts_code);
+//        etDiscountsCode.setFilters(new InputFilter[] {
+//                new InputFilter() {
+//                    @Override
+//                    public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
+//                        // 合并当前输入和已有文本
+//                        String combined = dest.toString() + source.toString();
+//                        // 检查是否符合正则表达式
+//                        if (!combined.matches("\\d*(\\.\\d*)?")) {
+//                            return ""; // 返回空字符串,拒绝输入
+//                        }
+//                        return null; // 允许输入
+//                    }
+//                }
+//        });
     }
 
+    private EditText etDiscountsCode;
 
     public void show(ViewGroup parent) {
         if (parent == null) {
@@ -81,21 +127,25 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.iv_qianbi:
+                if (checkCode()) break;
                 if (listener != null) {
                     listener.onClickListener(R.id.iv_qianbi);
                 }
                 break;
             case R.id.iv_nayax:
+                if (checkCode()) break;
                 if (listener != null) {
                     listener.onClickListener(R.id.iv_nayax);
                 }
                 break;
             case R.id.iv_w_mdb_xinyongka:
+                if (checkCode()) break;
                 if (listener != null) {
                     listener.onClickListener(R.id.iv_w_mdb_xinyongka);
                 }
                 break;
             case R.id.iv_qr_code:
+                if (checkCode()) break;
                 if (listener != null) {
                     listener.onClickListener(R.id.iv_qr_code);
                 }
@@ -110,6 +160,20 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
         }
     }
 
+    private boolean checkCode() {
+        if (Hawk.get(Name.PROMOTION_CODE, false)) {
+            if (etDiscountsCode.getText().length() > 0) {
+                String[] array = etDiscountsCode.getText().toString().trim().split("#");
+                boolean isSteam = hasDuplicatesWithHashSet(array);
+                if (isSteam) {
+                    ToastUtil.getInstance().showText(UiUtil.getStringRes(R.string.promo_code_duplication));
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
 
     public void dismiss() {
         if (getParent() == null) {
@@ -124,4 +188,70 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
         return this;
     }
 
+    private boolean hasDuplicatesWithHashSet(String[] array) {
+        Set<String> set = new HashSet<>();
+        for (String element : array) {
+            String trimmedElement = element.trim();
+            if (trimmedElement.isEmpty()) {
+                continue;
+            }
+            if (!set.add(trimmedElement)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+
+    @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);
+    }
+    private View getCurrentFocus() {
+        // 获取当前 Activity 的焦点视图
+        if (getContext() instanceof Activity) {
+            return ((Activity) getContext()).getCurrentFocus();
+        }
+        return null;
+    }
+    /**
+     * 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏
+     *
+     * @param v
+     * @param event
+     * @return
+     */
+    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;
+    }
+
+    private void hideKeyboard(IBinder token) {
+        if (token != null) {
+            InputMethodManager im = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+            im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
+        }
+    }
 }

+ 361 - 62
app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java

@@ -6,12 +6,13 @@ import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
 import android.annotation.SuppressLint;
 import android.app.Dialog;
-import android.content.Intent;
+import android.content.Context;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
+import android.support.annotation.RequiresApi;
 import android.support.v4.app.Fragment;
 import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
@@ -33,6 +34,8 @@ import android.view.WindowManager;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.view.animation.OvershootInterpolator;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
@@ -43,6 +46,7 @@ import com.bgy.autosale.R;
 import com.bgy.autosale.entitys.DishesBean;
 import com.bgy.autosale.entitys.MakeIceCreamBean;
 import com.bgy.autosale.entitys.ResponseBean;
+import com.bgy.autosale.entitys.ShopCartAdapterBean;
 import com.bgy.autosale.entitys.SpecBean;
 import com.bgy.autosale.entitys.SpecCategoryBean;
 import com.bgy.autosale.helpers.ClickHelper;
@@ -64,8 +68,6 @@ import com.bgy.autosale.payutil.dialog.ShoppingTrolleyDialogChoosePay;
 import com.bgy.autosale.ui.MainActivity;
 import com.bgy.autosale.ui.adapters.ShopCartAdapter;
 import com.bgy.autosale.ui.base.BaseAutoExitFragment;
-import com.bgy.autosale.ui.operator.LockActivity;
-import com.bgy.autosale.ui.operator.MyFragmentActivity;
 import com.bgy.autosale.ui.operator.fragments.PriceFragment;
 import com.bgy.autosale.ui.widget.BatchingView;
 import com.bgy.autosale.ui.widget.ClickLinearLayout;
@@ -96,11 +98,15 @@ import com.hboxs.base_library.constant.Global;
 import com.hboxs.base_library.constant.Heartbeat;
 import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.event.ApiMessageEvent;
+import com.hboxs.base_library.http.NoPayOrderApi;
+import com.hboxs.base_library.http.NoPayOrderStringApi;
 import com.hboxs.base_library.http.OrderApi;
 import com.hboxs.base_library.http.PayApi;
 import com.hboxs.base_library.http.exception.BaseException;
 import com.hboxs.base_library.http.exception.ExceptionFactory;
+import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
 import com.hboxs.base_library.http.observer.HttpResultObserver;
+import com.hboxs.base_library.http.response.HttpResult;
 import com.hboxs.base_library.http.response.HttpResultHandler;
 import com.hboxs.base_library.util.DialogUtil;
 import com.hboxs.base_library.util.DrawableSelectorUtils;
@@ -126,6 +132,7 @@ import java.text.NumberFormat;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.LinkedList;
@@ -221,8 +228,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private MdbCreditCardDialog mMdbCreditCardDialog;
     private ScanDialog scanDialog;
 
-    private int ADVERTISING_TIME1=Hawk.get(Name.ADVERTISING_TIME1,90);//自动模式
-    private int ADVERTISING_TIME2=Hawk.get(Name.ADVERTISING_TIME2,60);//手动模式
+    private int ADVERTISING_TIME1 = Hawk.get(Name.ADVERTISING_TIME1, 90);//自动模式
+    private int ADVERTISING_TIME2 = Hawk.get(Name.ADVERTISING_TIME2, 60);//手动模式
 
     public static IceCreamFragment getFragment(String manualReason) {
         Bundle bundle = new Bundle();
@@ -233,7 +240,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     protected int getExitTime() {
-        return isManualMode() ? ADVERTISING_TIME2*1000 : ADVERTISING_TIME1*1000;
+        return isManualMode() ? ADVERTISING_TIME2 * 1000 : ADVERTISING_TIME1 * 1000;
     }
 
     @Override
@@ -248,12 +255,12 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
             getActivity().getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
         }
-        RelativeLayout rlSelectLanguage=view.findViewById(R.id.rl_select_language);
-        if (Hawk.get(Name.LANGUAGE_SHOW,false)){
+        RelativeLayout rlSelectLanguage = view.findViewById(R.id.rl_select_language);
+        if (Hawk.get(Name.LANGUAGE_SHOW, false)) {
             rlSelectLanguage.setVisibility(View.VISIBLE);
         }
 
-        TextView tvArab=view.findViewById(R.id.tv_arab);
+        TextView tvArab = view.findViewById(R.id.tv_arab);
         int languageNumber = Hawk.get(Name.LANGUAGE2, 4);
         tvArab.setText(LanguageUtil.LANGUAGE3[languageNumber] + "");
         tvArab.setOnClickListener(new View.OnClickListener() {
@@ -265,16 +272,16 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 exit();
             }
         });
-        TextView tvEnglish=view.findViewById(R.id.tv_english);
+        TextView tvEnglish = view.findViewById(R.id.tv_english);
         int language = (int) SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE2, 1);
-        Log.d(TAG, "onViewCreated: "+language);
-        tvEnglish.setText(LanguageUtil.LANGUAGE_TEXT2[language-1] + "");
+        Log.d(TAG, "onViewCreated: " + language);
+        tvEnglish.setText(LanguageUtil.LANGUAGE_TEXT2[language - 1] + "");
         tvEnglish.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
                 SharedPreferencesUtils.setParam(Name.LANGUAGE_TYPE, SharedPreferencesUtils.getParam(Name.LANGUAGE_TYPE2, 0));
                 LanguageUtil.setLanguage();
-                Log.d(TAG, "onClick2: "+languageNumber);
+                Log.d(TAG, "onClick2: " + languageNumber);
 
 //                Intent intent = getActivity().getIntent(); // 获取当前 Activity 的 Intent
 //                getActivity().finish(); // 结束当前 Activity
@@ -343,17 +350,17 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 //        if (!Constant.LANGUAGE_ZH.equals(App.app.language)) {
 //            logo_hw_iv.setVisibility(View.VISIBLE);
 //        }
-        if (Hawk.get(Name.IC_TEXT,"").equals("")){
+        if (Hawk.get(Name.IC_TEXT, "").equals("")) {
             logo_hw_iv.setBackground(UiUtil.getDrawableRes(R.drawable.logo_hw));
-        }else {
+        } else {
             logo_hw_iv.setBackground(null);
-            if (Hawk.get(Name.IC_TEXT,"").length()>27&&Hawk.get(Name.IC_TEXT,"").length()<=76){
+            if (Hawk.get(Name.IC_TEXT, "").length() > 27 && Hawk.get(Name.IC_TEXT, "").length() <= 76) {
                 logo_hw_iv.setTextSize(25);
-            }else if (Hawk.get(Name.IC_TEXT,"").length()>76){
+            } else if (Hawk.get(Name.IC_TEXT, "").length() > 76) {
                 logo_hw_iv.setTextSize(19);
             }
-            logo_hw_iv.setText(Hawk.get(Name.IC_TEXT,""));
-            Log.d(TAG, "onViewCreated00: "+Hawk.get(Name.IC_TEXT,""));
+            logo_hw_iv.setText(Hawk.get(Name.IC_TEXT, ""));
+            Log.d(TAG, "onViewCreated00: " + Hawk.get(Name.IC_TEXT, ""));
         }
 
         kernelEffectViews = new AppCompatImageView[]{
@@ -575,6 +582,9 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     }
 
+    private List<Double> priceList;//分别拿到列表价格。
+    private List<Double> priceList1;//分别拿到列表价格。
+
     @Override
     public void onClick(View v) {
         if (!mClickHelper.canClick()) {
@@ -585,6 +595,29 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         if (id == R.id.dishes_shop_cart_clear) {
             showClearDialog();
         } else if (id == R.id.dishes_shop_cart_pay) {
+            if (Global.isVersions==2){
+                 priceList = new ArrayList<>();
+                 priceList1 = new ArrayList<>();
+                 for (int i = 0; i < orderHelper.getOrderList().size(); i++) {
+                     ShoppingCartBean shoppingCart = new ShoppingCartBean();
+                     shoppingCart.setShoppingName(orderHelper.getOrderList().get(i).selectTag);//商品名字
+                     shoppingCart.setCount(orderHelper.getOrderList().get(i).buyCount);
+                     shoppingCart.setPrice(Double.parseDouble(orderHelper.getOrderList().get(i).price));
+                     double totalSum = 0.0; // 用于存储总和
+                     if (orderHelper.getOrderList().get(i).selectSpecBeans.size() > 0) {
+                         for (int j = 0; j < orderHelper.getOrderList().get(i).selectSpecBeans.size(); j++) {
+                             totalSum += Double.parseDouble(orderHelper.getOrderList().get(i).selectSpecBeans.get(j).price);
+                         }
+                         totalSum += shoppingCart.getPrice();
+                     } else {
+                         totalSum = shoppingCart.getPrice();
+                     }
+                     for (int k = 0; k < orderHelper.getOrderList().get(i).buyCount; k++) {
+                         priceList.add(totalSum); // 将单个商品的总价格添加 buyCount 次
+                     }
+                     Log.d(TAG, "onClick:orderHelper 商品名字:" + orderHelper.getOrderList().get(i).selectTag + " 单个商品价格:" + totalSum + "  数量:" + orderHelper.getOrderList().get(i).buyCount);
+                 }
+            }
             showLoading();
             if (App.app.payChannel == Constant.PAY_FREE || manualReason != null) {
                 payType = 0;
@@ -647,12 +680,17 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private ShoppingTrolleyDialogChoosePay shoppingTrolleyDialogChoosePay;
+    int combinationCount;
+    String[] arrayCode;
+    private EditText etDiscountsCode;
 
     private void showDialogChoosePay() {
         if (shoppingTrolleyDialogChoosePay == null) {
             shoppingTrolleyDialogChoosePay = new ShoppingTrolleyDialogChoosePay(getContext());
             shoppingTrolleyDialogChoosePay.setCanTouchOutsideDismiss(false);
         }
+        etDiscountsCode = shoppingTrolleyDialogChoosePay.findViewById(R.id.et_discounts_code);
+
         ispaySuccess = true;
         shoppingTrolleyDialogChoosePay.setListener(new DialogClickListener() {
             @Override
@@ -662,16 +700,13 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                         shoppingTrolleyDialogChoosePay.dismiss();
                         break;
                     case R.id.iv_qianbi:
-                        payType = 3;
-                        showPayMixDialog();
+                        handlePaymentSelection(3, R.id.iv_qianbi, () -> showPayMixDialog());
                         break;
                     case R.id.iv_nayax:
-                        payType = 4;
-                        showNayaxCreditCard();
+                        handlePaymentSelection(4, R.id.iv_nayax, () -> showNayaxCreditCard());
                         break;
                     case R.id.iv_w_mdb_xinyongka:
-                        payType = 4;
-                        showDialogWMDBCreditCard();
+                        handlePaymentSelection(4, R.id.iv_w_mdb_xinyongka, () -> showDialogWMDBCreditCard());
                         break;
                     case R.id.iv_qr_code:
                         if (Hawk.get("PRICEBEAN") != null) {
@@ -681,7 +716,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                             showToast("请重新设置价格");
                             return;
                         }
-                        carsPay(str());//国内二码合一支付
+                        Log.d(TAG, "onClickListener: 1");
+                        handlePaymentSelection(5, R.id.iv_qr_code, () ->  carsPay(str()));//国内二码合一支付
                         break;
                 }
             }
@@ -689,6 +725,31 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         shoppingTrolleyDialogChoosePay.show((ViewGroup) iceCreamView.getParent());
     }
 
+    private void handlePaymentSelection(int payType, int id, Runnable fallbackAction) {
+        this.payType = payType;
+        shoppingNumber = 0;
+        specialPrice = 0;
+        if (Hawk.get(Name.PROMOTION_CODE, false)) {
+            String inputText = etDiscountsCode.getText().toString();
+            if (!inputText.equals("")) {
+                arrayCode = inputText.split("#");
+                combinationCount = arrayCode.length;
+                Log.d(TAG, "handlePaymentSelection: " + arrayCode);
+                if (combinationCount > orderHelper.generateMakingIceCream().size()) {
+                    ToastUtil.getInstance().showText(UiUtil.getStringRes(R.string.only_one_code));
+                    return; // 直接返回,不继续执行
+                } else {
+                    getDiscountCodeOverseas(arrayCode[shoppingNumber], id);
+                }
+            } else {
+//                manualMake();
+                fallbackAction.run(); // 执行对应的回调方法
+            }
+        } else {
+            fallbackAction.run(); // 执行对应的回调方法
+        }
+    }
+
     private boolean isCreditCards = false;
 
     private void showDialogCreditCard() {
@@ -962,11 +1023,11 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 //        String p=priceBean.getPriceDefault();
         Log.d(TAG, "initPrice1111: " + p);
         double num = 0;
-        if (p.contains("٠")|| p.contains("١")|| p.contains("٢")||
-                p.contains("٣")|| p.contains("٤")|| p.contains("٥")||
-                p.contains("٦")|| p.contains("٧")|| p.contains("٨")||
-                p.contains("٩")){
-           String str= p
+        if (p.contains("٠") || p.contains("١") || p.contains("٢") ||
+                p.contains("٣") || p.contains("٤") || p.contains("٥") ||
+                p.contains("٦") || p.contains("٧") || p.contains("٨") ||
+                p.contains("٩")) {
+            String str = p
                     .replace("٠", "0")
                     .replace("١", "1")
                     .replace("٢", "2")
@@ -984,11 +1045,11 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             } catch (ParseException e) {
                 e.printStackTrace();
             }
-        }else {
+        } else {
             num = Double.parseDouble(p);
         }
 
-        Log.d(TAG, "initPrice11112: "+num);
+        Log.d(TAG, "initPrice11112: " + num);
         int endPosition = p.indexOf(".");
         if (endPosition == -1) {
             endPosition = p.length();
@@ -1759,11 +1820,20 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         addShopCartView.startAnimation(notifyAnim);
     }
 
+    private double getPri;
+    private List<Double> getPriceList;
+
     // 进入手动制作的界面
     private void manualMake() {
         Log.d(TAG, "manualMake orderHelper: " + orderHelper.getOrderList().toString());
+        if (arrayCode!=null){
+            for (String s : arrayCode) {
+                updateCode(s);
+            }
+        }
         if (Global.isVersions != 1 && orderHelper.getOrderList().size() > 0) {
             for (int i = 0; i < orderHelper.getOrderList().size(); i++) {
+                double totalSum = 0.0; // 用于存储总和
                 ShoppingCartBean shoppingCart = new ShoppingCartBean();
                 Log.d(TAG, "onClick: 冰淇淋组合:" + orderHelper.getOrderList().get(i).selectTag);
 //                            "冰淇淋的金额:"+orderHelper.getOrderList().get(i).price+
@@ -1771,17 +1841,41 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 shoppingCart.setShoppingName(orderHelper.getOrderList().get(i).selectTag);//商品名字
                 shoppingCart.setCount(orderHelper.getOrderList().get(i).buyCount);
                 shoppingCart.setPrice(Double.parseDouble(orderHelper.getOrderList().get(i).price));
-                double totalSum = 0.0; // 用于存储总和
-                if (orderHelper.getOrderList().get(i).selectSpecBeans.size() > 0) {
-                    for (int j = 0; j < orderHelper.getOrderList().get(i).selectSpecBeans.size(); j++) {
-                        totalSum += Double.parseDouble(orderHelper.getOrderList().get(i).selectSpecBeans.get(j).price);
+                for (int j = 0; j < orderHelper.getOrderList().get(i).selectSpecBeans.size(); j++) {
+                    totalSum += Double.parseDouble(orderHelper.getOrderList().get(i).selectSpecBeans.get(j).price);
+                }
+                totalSum += shoppingCart.getPrice();
+                Log.d(TAG, "manualMake:42 " + totalSum + "*" + orderHelper.getOrderList().get(i).buyCount);
+                getPriceList = new ArrayList<>();
+                for (int j = 0; j < orderHelper.getOrderList().get(i).buyCount; j++) {
+                    getPriceList.add(totalSum);
+                }
+                Log.d(TAG, "DecimalFormat: 1");
+                for (int j = 0; j < getPriceList.size(); j++) {
+                    DecimalFormat df = new DecimalFormat("#.##");
+                    df.setRoundingMode(RoundingMode.HALF_UP);
+                    if (priceList1.size() > 0) {
+                        double newPri = getPriceList.get(j) - priceList1.get(0);
+                        String roundedResult = df.format(newPri);
+                        getPriceList.set(j, Double.valueOf(roundedResult));
+                        priceList1.remove(0);
+                        Log.d(TAG, "DecimalFormat: 2");
                     }
-                    totalSum += shoppingCart.getPrice();
-                } else {
-                    totalSum = shoppingCart.getPrice();
                 }
-                number=0;
-                saveCoinOrder(shoppingCart.getShoppingName(), totalSum, payType,localOrderSn, orderHelper.getOrderList().get(i).buyCount);
+//                if (i<priceList1.size()) {
+//                    DecimalFormat df = new DecimalFormat("#.##");
+//                    df.setRoundingMode(RoundingMode.HALF_UP);
+//                    double newPri= getPriceList.get(i)-priceList1.get(i);
+//                    String roundedResult = df.format(newPri);
+//                    getPriceList.set(i, Double.valueOf(roundedResult));
+//                }
+                number = 0;
+                double sum = 0.0; // 用于存储总和
+                for (Double price : getPriceList) {
+                    sum += price; // 单个商品价格的总和
+                }
+                Log.d(TAG, "manualMake: sum" + sum + ":" + orderHelper.getOrderList().get(i).buyCount);
+                saveCoinOrder(shoppingCart.getShoppingName(), sum, payType,localOrderSn, orderHelper.getOrderList().get(i).buyCount);
             }
         }
         LogUtils.logWrite("制作了" + orderHelper.generateMakingIceCream().size() + "杯冰淇淋");
@@ -1794,6 +1888,9 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         if (paySuccessDialog != null) {
             paySuccessDialog.dismiss();
         }
+        if (shoppingTrolleyDialogChoosePay != null) {
+            shoppingTrolleyDialogChoosePay.dismiss();
+        }
         if (getFragmentManager() != null) {
 
             removeFinish();
@@ -1965,8 +2062,12 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         //scanDialog.startGetTime(sn);
 //        extracted();
     }
-
+    private ArrayList<String> promotionCodes;
     private String str() {
+        promotionCodes = new ArrayList<>();
+        if (arrayCode!=null&&arrayCode.length>0){
+            promotionCodes.addAll(Arrays.asList(arrayCode));
+        }
         shoppingCartBeanList.clear();
         Log.d(TAG, "onClick: 总共需要制作的组合:" + orderHelper.getOrderList().size());
         Log.d(TAG, "onClick: 总共需要制作冰淇淋的杯数:" + orderHelper.generateMakingIceCream().size());
@@ -1989,27 +2090,44 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         Log.d(TAG, "str测试: " + shoppingCartBeanList);
         Gson gson = new Gson();
         Map<String, String> a = new HashMap<String, String>();
-        HashMap<String, String> strings1 = new HashMap<>();
+//        HashMap<String, String> strings1 = new HashMap<>();
+
         ArrayList<String> strings = new ArrayList<>();
         for (int i = 0; i < shoppingCartBeanList.size(); i++) {
             strings.clear();
             //优惠码集合
             for (int i1 = 0; i1 < shoppingCartBeanList.get(i).getCount(); i1++) {
-                strings.add("0");
+                if (i1<promotionCodes.size()){
+                    strings.add(promotionCodes.get(i1));
+                }else {
+                    strings.add("0");
+                }
+                Log.d(TAG, ":shoppingCartBeanList onClick: "+strings+" "+promotionCodes);
             }
             String s1 = new Gson().toJson(strings);
-            if (strings1.size() > 0) {
-                String s = strings1.get(shoppingCartBeanList.get(i).getShoppingName());
-                if (s != null && "".equals(s)) {
-                    s1 = s;
-                }
+            Log.d(TAG, ":shoppingCartBeanList onClick:0 "+s1+" "+promotionCodes);
+                for (int j = 0; j < promotionCodes.size(); j++) {
+                    String s = promotionCodes.get(j);
+                    if (s != null &&"".equals(s)) {
+                        Log.d(TAG, ":shoppingCartBeanList onClick:2 "+s1+" "+promotionCodes);
+                        s1 = s;
+                    }
             }
+
             Log.d(TAG, shoppingCartBeanList.size() + ":shoppingCartBeanList onClick: " + s1 + ":" + shoppingCartBeanList.get(i).getShoppingName() + "-" + shoppingCartBeanList.get(i).getCount());
             a.put(shoppingCartBeanList.get(i).getShoppingName() + "-" + shoppingCartBeanList.get(i).getCount(), s1);
             //将优惠码保存起来,带到make界面去处理。等于0就什么都不做
             Gson gson1 = new Gson();
             ArrayList<String> list = gson1.fromJson(s1, new TypeToken<List<String>>() {
             }.getType());
+            if (list != null) {
+                for (String s : list) {
+//                    promotionCodes.add(s);
+//                    Log.d(TAG, "showShoppingTrolleyDialog0-2: " + s);
+                    promotionCodes.remove(s);
+                }
+            }
+
         }
         String str = gson.toJson(a);
         Log.d(TAG, shoppingCartBeanList.size() + "showShoppingTrolleyDialog: " + str);
@@ -2024,14 +2142,14 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         String getOneTaste = "";
         for (String part : parts) {
             Log.d(TAG, "onClick0: " + part);
-            String[] getFlavorCombinations = part.split(SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0],""));
-            Log.d(TAG, "getStr13: "+SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0],""));
+            String[] getFlavorCombinations = part.split(SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0], ""));
+            Log.d(TAG, "getStr13: " + SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0], ""));
             for (String getFlavorCombination : getFlavorCombinations) {
                 Log.d(TAG, "getStr:10 " + getFlavorCombination);
                 if (getFlavorCombinations.length == 1) {
                     getOneTaste = getFlavorCombination;
                     Log.d(TAG, "getStr:14 " + getOneTaste);
-                }else {
+                } else {
                     Log.d(TAG, "getStr:15 " + getOneTaste);
 
                 }
@@ -2051,10 +2169,10 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             } else {
                 if (getOneTaste.equals("")) {
                     str = SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0], getString(PriceFragment.ProductAbout.defaultName[0]));
-                    Log.d(TAG, "getStr: 16"+str);
+                    Log.d(TAG, "getStr: 16" + str);
                 } else {
                     str = SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0], getString(PriceFragment.ProductAbout.defaultName[0])) + "-" + getOneTaste;
-                    Log.d(TAG, "getStr: 17"+str);
+                    Log.d(TAG, "getStr: 17" + str);
                 }
             }
         }
@@ -2066,7 +2184,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     public void getPromotionSuccess() {
         //直接制作
-        //manualMake();
+        manualMake();
     }
 
     private void getCodeFailed(String data) {
@@ -2095,6 +2213,21 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         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);
+    }
+
     private ZLoadingDialog loadingDialog;
 
     private void showLoading() {
@@ -2123,11 +2256,12 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
         }, 1000);
     }
+
     int number = 0;
 
     private String localOrderSn = UUID.randomUUID().toString().replace("-", "");
 
-    private void saveCoinOrder(String productName, double price, int payType,String Sn, int productNumber) {
+    private void saveCoinOrder(String productName, double price, int payType, String Sn, int productNumber) {
         CoinOrdeBean bean = new CoinOrdeBean();
         String sn = UUID.randomUUID().toString().replace("-", "");
         bean.setClientId(Heartbeat.deviceId);
@@ -2135,7 +2269,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         bean.setPayType(payType);
         bean.setName(productName + "x" + productNumber);
         bean.setProductNumber(productNumber);
-        bean.setPrice(price*productNumber);
+        bean.setPrice(price);
         bean.setCreateDate(getStackCompleteTime());
         bean.setNo(productName + "-" + "I01" + "-" + productNumber);
         Gson gson = new Gson();
@@ -2157,20 +2291,20 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                             new Handler().postDelayed(new Runnable() {
                                 @Override
                                 public void run() {
-                                    LogUtils.logWrite("order e:"+t.getMessage());
+                                    LogUtils.logWrite("order e:" + t.getMessage());
                                     saveCoinOrder(productName, price, payType, sn, productNumber);
                                 }
                             }, 3000);
-                        }else if (Hawk.get(Name.AUTOUPLOADORDER, false)) {
+                        } else if (Hawk.get(Name.AUTOUPLOADORDER, false)) {
                             saveErrorOrder(productName, price, payType, sn, productNumber, getStackCompleteTime());
                         }
                     }
                 });
     }
 
-    public void saveErrorOrder(String productName, double price, int payType, String sn, int productNumber ,String time){
+    public void saveErrorOrder(String productName, double price, int payType, String sn, int productNumber, String time) {
         UpCoinOrderBeanDao upCoinOrderBeanDao = BaseApplication.getBaseApplication().getDaoSession().getUpCoinOrderBeanDao();
-        UpCoinOrderBean upCoinOrderBean=new UpCoinOrderBean();
+        UpCoinOrderBean upCoinOrderBean = new UpCoinOrderBean();
         upCoinOrderBean.setClientId(Heartbeat.deviceId);
         upCoinOrderBean.setSn(sn);
         upCoinOrderBean.setProductNumber(productNumber);
@@ -2309,4 +2443,169 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         }
     }
 
+    private int shoppingNumber = 0;
+
+    public void getDiscountCodeOverseas(String code, int id) {
+        String systemId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
+        if (systemId == null && TextUtils.isEmpty(systemId)) {
+            showToast(UiUtil.getStringRes(R.string.ljsb));
+            return;
+        }
+        HashMap<String, String> params = new HashMap<>();
+        params.put("code", code);
+        params.put("clientId", Heartbeat.deviceId);
+        addSubscription(NoPayOrderStringApi.api.selectCode(params),
+                new HttpResultObserver<String>(mView, getContext()) {
+                    public void onNext(String type) {
+                        Log.d(TAG, "type onNext: " + type);
+                        switch (type) {
+                            case "0":
+                                //成功
+                                getPromotionSuccess();
+                                break;
+                            case "1":
+                                //不存在
+                                showToast(UiUtil.getStringRes(R.string.promotioncode1));
+//                                mView.getPromotionFailure(code+UiUtil.getStringRes(R.string.promotioncode1));
+                                LogUtil.d("优惠码不存在哦", type + "");
+                                break;
+                            case "2":
+                                //已使用
+                                showToast(UiUtil.getStringRes(R.string.promotioncode2));
+//                                mView.getPromotionFailure(code+UiUtil.getStringRes(R.string.promotioncode2));
+                                LogUtil.d("优惠码已使用了哦", type + "");
+                                break;
+                            case "3":
+                                //此优惠码不是这个商家的
+                                showToast(UiUtil.getStringRes(R.string.promotioncode3));
+//                                mView.getPromotionFailure(code+UiUtil.getStringRes(R.string.promotioncode3));
+                                LogUtil.d("此优惠码不是这个商家的哦", type + "");
+                                break;
+                            case "4":
+                                //优惠码过期了哦
+                                showToast(UiUtil.getStringRes(R.string.promotioncode4));
+//                                mView.getPromotionFailure(code+UiUtil.getStringRes(R.string.promotioncode4));
+                                LogUtil.d("优惠码过期了哦!", type + "");
+                                break;
+                            case "success":
+                                if (Global.isVersions==2){
+                                getConfirmCodeOverseas(code, id);
+                                }else {
+                                    getConfirmCodeSuccess(1, id);
+                                }
+                                break;
+
+                        }
+                        Log.d(TAG, "DiscountCodeApionNext: " + type);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+//                        mView.getDiscountCodeOverseasFial();
+                        dismissLoading();
+                        getCodeFailed(t.getMessage());
+                        Log.d(TAG, "getDiscountCodeOverseasFial1 onError: " + t.getMessage());
+
+
+                    }
+                });
+    }
+
+    private double specialPrice = 0;
+
+    public void getConfirmCodeOverseas(String mCodeText, int id) {
+        Map<String, String> params = new HashMap<>();
+        params.put("code", mCodeText);
+        addSubscription(NoPayOrderApi.api.getConfirmCode(params).compose(HttpResultHandler.<String>transformer()),
+                new HttpResultNotActivityObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String data) {
+                        Gson gson = new Gson();
+                        HashMap<String, Object> hashMap = gson.fromJson(data, HashMap.class);
+                        Double discount = (Double) hashMap.get("discount");
+                        String type = (String) hashMap.get("type");
+                        Log.d(TAG, "discount onNext: " + discount + " " + type); // 输出折扣信息
+                        // 处理折扣为负的情况
+                        if (discount != null && Double.valueOf(discount) <= 0) {
+                            type = "0"; // 设置为默认值
+                        }
+                        Log.d(TAG, "onClick:orderHelper:0 " + priceList);
+
+                        double price = priceList.get(shoppingNumber);
+                        double total = 0;
+                        double total1 = 0;
+
+                        if ("0".equals(type)) {
+                            Float data1 = (Float.parseFloat(discount + "")) / 10;
+
+                            double result = (price * (1 - data1) * 100) / 100;
+                            DecimalFormat df = new DecimalFormat("#.##");
+                            df.setRoundingMode(RoundingMode.HALF_UP);
+                            String roundedResult = df.format(result);
+                            roundedResult = roundedResult.replace(",", ".");
+                            total += Double.valueOf(roundedResult);
+                            total1 = Double.valueOf(roundedResult);
+                            Log.d(TAG, "onClick:orderHelper:1 " + total);
+                        } else if ("1".equals(type)) {
+                            total = discount;
+                            total1 = discount;
+                        }
+                        priceList1.add(total1);
+                        specialPrice += total;
+                        Log.d(TAG, "onNextspecialPrice: " + specialPrice);
+                        shoppingNumber++;
+                        if (shoppingNumber < arrayCode.length) {
+                            getDiscountCodeOverseas(arrayCode[shoppingNumber], id);
+                        } else {
+                            Log.d(TAG, "onNext: getConfirmCodeSuccess");
+                            getConfirmCodeSuccess(specialPrice, id);
+                            //然后显示价格弹窗。
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        dismissLoading();
+                        getCodeFailed(t.getMessage());
+                        Log.d(TAG, "getDiscountCodeOverseasFial onError: " + t.getMessage());
+
+                    }
+                });
+    }
+
+    public void getConfirmCodeSuccess(double format, int id) {
+        pri = PriceUtil.getAllDishPriceDouble(orderHelper.getOrderList()) - format;
+        if (id == R.id.iv_qianbi) {
+            showPayMixDialog();
+        } else if (id == R.id.iv_nayax) {
+            showNayaxCreditCard();
+        } else if (id == R.id.iv_w_mdb_xinyongka) {
+            showDialogWMDBCreditCard();
+        }else if (id == R.id.iv_qr_code) {
+            carsPay(str());
+        }
+    }
+
+    public void updateCode(String code) {
+        Map<String, String> map = new HashMap();
+        map.put("code", code);
+        map.put("clientId", Heartbeat.deviceId);
+        addSubscriptionNew(NoPayOrderStringApi.api.updateCode(map), String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        LogUtil.d("updateCode", "onNext: " + o);
+//                        mView.updateCodeSuccess();
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Log.e(TAG, "Throwable: " + t.getMessage());
+                    }
+                }
+        );
+    }
 }

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

@@ -26,6 +26,7 @@ public class SwitchSettingActivity extends BaseScanGunActivity implements View.O
     RadioButton rbAutoUploadYes, rbAutoUploadNo;
     RadioButton rbLanguageYes, rbLanguageNo;
     RadioButton rbCoinCashResetYes, rbCoinCashResetNo;
+    RadioButton rbPromotionCodeYes, rbPromotionCodeNo;
     Spinner spLanguage2;
     private ArrayAdapter<String> language2ArrayAdapter;
 
@@ -96,6 +97,19 @@ public class SwitchSettingActivity extends BaseScanGunActivity implements View.O
             rbCoinCashResetNo.setChecked(true);
         }
 
+        RadioGroup rgPromotionCode = findViewById(R.id.rg_promotion_code);
+        rgPromotionCode.setOnCheckedChangeListener(this);
+
+        rbPromotionCodeYes = findViewById(R.id.rb_promotion_code_yes);
+        rbPromotionCodeNo = findViewById(R.id.rb_promotion_code_no);
+
+        Boolean promotionCode = Hawk.get(Name.PROMOTION_CODE, false);
+        if (promotionCode) {
+            rbPromotionCodeYes.setChecked(true);
+        } else {
+            rbPromotionCodeNo.setChecked(true);
+        }
+
     }
 
     @Override
@@ -112,7 +126,12 @@ public class SwitchSettingActivity extends BaseScanGunActivity implements View.O
             Hawk.put(Name.VALUE_ZERO, true);
         } else if (checkedId == R.id.rb_coin_cash_reset_no) {
             Hawk.put(Name.VALUE_ZERO, false);
+        } else if (checkedId == R.id.rb_promotion_code_yes) {
+            Hawk.put(Name.PROMOTION_CODE, true);
+        } else if (checkedId == R.id.rb_promotion_code_no) {
+            Hawk.put(Name.PROMOTION_CODE, false);
         }
+
     }
 
     @Override

+ 2 - 1
app/src/main/java/com/bgy/autosale/ui/operator/TextSettingActivity.java

@@ -11,6 +11,7 @@ import com.bgy.autosale.R;
 import com.bgy.autosale.ui.base.BaseScanGunActivity;
 import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.UiUtil;
 import com.orhanobut.hawk.Hawk;
 
 /**
@@ -43,7 +44,7 @@ public class TextSettingActivity extends BaseScanGunActivity implements View.OnC
         }else if (Hawk.get(Name.HIBERNATION,"").length()>76){
             etSleepText.setTextSize(19);
         }
-        etSleepText.setText(Hawk.get(Name.HIBERNATION, "休眠中..."));
+        etSleepText.setText(Hawk.get(Name.HIBERNATION, UiUtil.getStringRes(R.string.hibernation_title)));
         etPeopleText.setText(Hawk.get(Name.CONTACTS_NAME,""));
         etPhoneText.setText(Hawk.get(Name.CONTACTS_NUM,""));
         findViewById(R.id.setting_back).setOnClickListener(this);

+ 10 - 2
app/src/main/java/com/bgy/autosale/utils/PriceUtil.java

@@ -64,10 +64,16 @@ public class PriceUtil {
         return p1.divide(p2, BigDecimal.ROUND_HALF_UP).doubleValue();
     }
 
-    public static double getAllDishPriceDouble(List<DishesBean> dishesBeans) {
+    public static double getAllDishPriceDouble(List<DishesBean> dishesBeans/*,String code */) {
+//        String[] split = code.split("");
         //算总计
         double allPrice = 0;
         for (DishesBean item : dishesBeans) {
+//            for (int i = 0; i < item.buyCount; i++) {
+//                // split.length
+//                allPrice+= PriceUtil.getDishPriceOne(item) * 0.1
+//
+//            }
             allPrice += PriceUtil.getDishPriceOne(item) * item.buyCount;
         }
         return allPrice;
@@ -84,9 +90,11 @@ public class PriceUtil {
             //规格菜品列表
             for (SpecBean specBean : dish.selectSpecBeans) {
                 dishPrice = addDouble(specBean.price, dishPrice);
+                Log.d(TAG, "getDishPriceOne: "+dishPrice+":"+dish.price);
             }
+            Log.d(TAG, "getDishPriceOne1: "+dishPrice+":"+dish.price);
         }
-        Log.d(TAG, "getDishPriceOne: "+dish.price);
+        Log.d(TAG, "getDishPriceOne2: "+dishPrice+":"+dish.price);
         return Double.parseDouble(dishPrice);
     }
 

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

@@ -182,6 +182,48 @@
                     android:textSize="@dimen/sp_8" />
             </RadioGroup>
         </LinearLayout>
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:orientation="vertical"
+            tools:ignore="MissingConstraints">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_margin="@dimen/dp_8"
+                android:text="@string/promotion_code"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14"
+                android:textStyle="bold" />
+
+            <RadioGroup
+                android:id="@+id/rg_promotion_code"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal">
+
+                <RadioButton
+                    android:id="@+id/rb_promotion_code_yes"
+                    android:layout_width="@dimen/dp_60"
+                    android:layout_height="@dimen/dp_26"
+                    android:gravity="center"
+                    android:text="@string/setting_switch_on"
+                    android:textColor="#576478"
+                    android:textSize="@dimen/sp_8" />
+
+                <RadioButton
+                    android:id="@+id/rb_promotion_code_no"
+                    android:layout_width="@dimen/dp_60"
+                    android:layout_height="@dimen/dp_26"
+                    android:layout_marginLeft="@dimen/dp_20"
+                    android:gravity="center"
+                    android:text="@string/setting_switch_off"
+                    android:textColor="#576478"
+                    android:textSize="@dimen/sp_8" />
+            </RadioGroup>
+        </LinearLayout>
 
     </LinearLayout>
 

+ 132 - 56
app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml

@@ -12,9 +12,9 @@
             android:layout_width="@dimen/dp_200"
             android:layout_height="wrap_content"
             android:layout_gravity="center"
-            android:paddingBottom="@dimen/dp_10"
+            android:background="@drawable/shape_white_bg"
             android:paddingLeft="@dimen/dp_10"
-            android:background="@drawable/shape_white_bg">
+            android:paddingBottom="@dimen/dp_10">
 
 
             <LinearLayout
@@ -35,62 +35,138 @@
             </LinearLayout>
 
             <LinearLayout
+                android:id="@+id/ll_pay_choose_img"
                 android:layout_width="wrap_content"
-                android:layout_below="@id/ll_pay_choose"
-                android:layout_height="wrap_content">
-
-            <ImageView
-                android:id="@+id/iv_nayax"
-                android:layout_width="@dimen/dp_50"
-                android:layout_height="@dimen/dp_50"
-                android:layout_marginTop="@dimen/dp_16"
-                android:layout_marginRight="@dimen/dp_8"
-                android:padding="@dimen/dp_5"
-                android:layout_toEndOf="@id/iv_qianbi"
-                android:background="@drawable/shape_et_price"
-                android:scaleType="centerInside"
-                android:src="@drawable/icon_xinyongka_pay"
-                android:visibility="gone" />
-            <ImageView
-                android:id="@+id/iv_w_mdb_xinyongka"
-                android:layout_width="@dimen/dp_50"
-                android:layout_height="@dimen/dp_50"
-                android:layout_below="@id/ll_pay_choose"
-                android:layout_marginTop="@dimen/dp_16"
-                android:layout_marginRight="@dimen/dp_8"
-                android:padding="@dimen/dp_5"
-                android:layout_toEndOf="@id/iv_qianbi"
-                android:background="@drawable/shape_et_price"
-                android:scaleType="centerInside"
-                android:src="@drawable/icon_xinyongka_pay"
-                android:visibility="gone" />
-
-
-            <ImageView
-                android:id="@+id/iv_qianbi"
-                android:layout_width="@dimen/dp_50"
-                android:layout_height="@dimen/dp_50"
-                android:layout_below="@id/ll_pay_choose"
-                android:layout_marginLeft="@dimen/dp_8"
-                android:layout_marginTop="@dimen/dp_16"
-                android:background="@drawable/shape_et_price"
-                android:scaleType="centerInside"
-                android:layout_marginRight="@dimen/dp_8"
-                android:src="@drawable/icon_qianbi_pay"
-                android:visibility="visible" />
-
-            <ImageView
-                android:id="@+id/iv_qr_code"
-                android:layout_width="@dimen/dp_50"
-                android:layout_height="@dimen/dp_50"
-                android:layout_below="@id/ll_pay_choose"
-                android:layout_marginLeft="@dimen/dp_8"
-                android:layout_marginTop="@dimen/dp_16"
-                android:background="@drawable/shape_et_price"
+                android:layout_height="wrap_content"
+                android:layout_below="@id/ll_pay_choose">
+
+                <ImageView
+                    android:id="@+id/iv_nayax"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_50"
+                    android:layout_marginTop="@dimen/dp_16"
+                    android:layout_marginRight="@dimen/dp_8"
+                    android:layout_toEndOf="@id/iv_qianbi"
+                    android:background="@drawable/shape_et_price"
+                    android:padding="@dimen/dp_5"
+                    android:scaleType="centerInside"
+                    android:src="@drawable/icon_xinyongka_pay"
+                    android:visibility="gone" />
+
+                <ImageView
+                    android:id="@+id/iv_w_mdb_xinyongka"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_50"
+                    android:layout_below="@id/ll_pay_choose"
+                    android:layout_marginTop="@dimen/dp_16"
+                    android:layout_marginRight="@dimen/dp_8"
+                    android:layout_toEndOf="@id/iv_qianbi"
+                    android:background="@drawable/shape_et_price"
+                    android:padding="@dimen/dp_5"
+                    android:scaleType="centerInside"
+                    android:src="@drawable/icon_xinyongka_pay"
+                    android:visibility="gone" />
+
+
+                <ImageView
+                    android:id="@+id/iv_qianbi"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_50"
+                    android:layout_below="@id/ll_pay_choose"
+                    android:layout_marginLeft="@dimen/dp_8"
+                    android:layout_marginTop="@dimen/dp_16"
+                    android:layout_marginRight="@dimen/dp_8"
+                    android:background="@drawable/shape_et_price"
+                    android:scaleType="centerInside"
+                    android:src="@drawable/icon_qianbi_pay"
+                    android:visibility="visible" />
+
+                <ImageView
+                    android:id="@+id/iv_qr_code"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_50"
+                    android:layout_below="@id/ll_pay_choose"
+                    android:layout_marginLeft="@dimen/dp_8"
+                    android:layout_marginTop="@dimen/dp_16"
+                    android:layout_marginRight="@dimen/dp_8"
+                    android:background="@drawable/shape_et_price"
+                    android:scaleType="centerInside"
+                    android:src="@drawable/quibinary"
+                    android:visibility="gone" />
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_discounts_code"
+                android:layout_width="wrap_content"
+                android:layout_marginTop="@dimen/dp_20"
+                android:layout_height="@dimen/dp_20"
+                android:layout_below="@id/ll_pay_choose_img"
+                android:gravity="center"
+                android:orientation="horizontal"
                 android:scaleType="centerInside"
-                android:layout_marginRight="@dimen/dp_8"
-                android:src="@drawable/quibinary"
-                android:visibility="gone" />
+                android:visibility="gone">
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginRight="@dimen/dp_5"
+                    android:text="@string/discountscode"
+                    android:textColor="@color/colorGray"
+                    android:textSize="@dimen/sp_7" />
+
+                <RelativeLayout
+                    android:layout_width="@dimen/dp_100"
+                    android:layout_height="wrap_content">
+
+                    <EditText
+                        android:id="@+id/et_discounts_code"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:background="@drawable/shape_et_price"
+                        android:hint="@string/inputdiscountscode"
+                        android:inputType="numberDecimal"
+                        android:digits="1234567890#"
+                        android:lines="1"
+                        android:padding="@dimen/dp_2"
+                        android:textColor="@color/colorGray"
+                        android:textColorHint="@color/colorHint"
+                        android:textSize="@dimen/sp_6" />
+
+                    <ImageView
+                        android:id="@+id/iv_discounts_code_clean"
+                        android:layout_width="@dimen/dp_10"
+                        android:layout_height="@dimen/dp_10"
+                        android:layout_alignParentRight="true"
+                        android:layout_centerVertical="true"
+                        android:layout_marginRight="@dimen/dp_5"
+                        android:padding="@dimen/dp_2"
+                        android:src="@drawable/icon_guanbi"
+                        android:visibility="invisible" />
+                </RelativeLayout>
+
+                <Button
+                    android:id="@+id/btn_discounts_code"
+                    android:layout_width="@dimen/dp_20"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_5"
+                    android:background="@drawable/shape_btn_login"
+                    android:padding="@dimen/dp_2"
+                    android:text="@string/confirm"
+                    android:visibility="gone"
+                    android:textColor="@color/white"
+                    android:textSize="@dimen/dp_6" />
+
+                <TextView
+                    android:id="@+id/tv_discounts_code_clean"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_5"
+                    android:text="@string/more_code"
+                    android:textColor="@color/colorHint"
+                    android:textSize="@dimen/sp_6"
+                    android:visibility="visible" />
+
 
             </LinearLayout>
 

+ 1 - 1
config.gradle

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

+ 2 - 2
module_offpay/src/main/java/com/example/offpay/service/OfflinePayService.java

@@ -115,11 +115,11 @@ public class OfflinePayService extends Service {
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
-                    if (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+                    if (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                         SerialPortUtil.getSerialPortUtil().openSerialPort("/dev/" + Hawk.get(Name.MDBSERIALPORT, "ttyS3"), 9600, 0, 1);
                         SerialPortUtil.getSerialPortUtil().sendSerialPort("3E");
                         Log.d(TAG, "run: Name.ICT");
-                    } else if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
+                    } else if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB))) {
                         SerialPortUtil.getSerialPortUtil().openSerialPort("/dev/" + Hawk.get(Name.MDBSERIALPORT, "ttyS3"), 9600, 0, 0);
                         WeaverUtil.billValidatorEscrowPressure();
                     }