From a0b3598842d57f5dfb5736e8a4fff5a9d70191a5 Mon Sep 17 00:00:00 2001
From: liugl <liugl@sinata.cn>
Date: 星期四, 06 八月 2020 20:55:52 +0800
Subject: [PATCH] 8.6

---
 app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt |  106 +++++++++++++++-----
 app/src/main/res/drawable/mode_write_and_black.xml             |    5 +
 app/src/main/java/com/okgoincar/utils/UtilKt.kt                |   38 +++++--
 app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt       |   16 +++
 app/src/main/res/layout/slab_activity_main.xml                 |   20 +++
 app/src/main/java/com/okgoincar/bean/LocalOrderBean.java       |   50 ++++++++++
 app/src/main/java/com/okgoincar/utils/Cache/CacheKey.kt        |   16 +++
 app/src/main/res/drawable/mode_write.xml                       |   23 ++++
 8 files changed, 235 insertions(+), 39 deletions(-)

diff --git a/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt b/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
index e6a05ce..47b49a2 100644
--- a/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
+++ b/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
@@ -3,60 +3,115 @@
 import android.content.BroadcastReceiver
 import android.content.Context
 import android.content.Intent
+import android.net.ConnectivityManager
 import android.os.Handler
 import android.os.Looper
-import cn.sinata.rxnetty.netStatus.NetUtils
+import cn.sinata.xldutils.netstatus.NetUtils
 import cn.sinata.xldutils.utils.toast
-import com.google.gson.Gson
-import com.okgoincar.bean.LoginBean
+import com.okgoincar.bean.LocalOrderBean
 import com.okgoincar.netUtls.Api
 import com.okgoincar.netUtls.callNet
 import com.okgoincar.netUtls.getMapByAny
-import com.okgoincar.netUtls.getToken
-import com.okgoincar.slab.SlabLoginActivity
-import com.okgoincar.slab.SlabMainActivity
 import com.okgoincar.utils.Cache.CacheKey
-import com.okgoincar.utils.Cache.CacheUtil
+import io.netty.util.NetUtil
 import org.greenrobot.eventbus.EventBus
-import org.jetbrains.anko.startActivity
 import java.lang.Exception
 
 class MoneyBroadCastReceiver : BroadcastReceiver() {
     override fun onReceive(contexts: Context?, intent: Intent?) {
-        if (intent == null && contexts == null){
+        if (intent == null && contexts == null) {
             toast("内容获取为空,广播接收消息错误")
             return
         }
         try {
             Handler(Looper.getMainLooper()).post {
-                when(intent!!.action){
-                    "wisdom.intent.action.ledLight" ->{
-                        val isHeavy = intent!!.getBooleanExtra("isHeavy",true)
-                        if (isHeavy){
-                            callStatue(contexts!!,5) //代表让订单到进行中
+                when (intent!!.action) {
+                    "wisdom.intent.action.ledLight" -> {
+                        val isHeavy = intent!!.getBooleanExtra("isHeavy", true)
+                        if (isHeavy) {
+                            callStatue(contexts!!, 5) //代表让订单到进行中
                         }
                     }
 
                     "wisdom.intent.action.priceDevice" -> {
-                        var price = intent.getDoubleExtra("price",0.0) //计价器价格,单位为元
-                        var mileage = intent.getDoubleExtra("mileage",0.0) //里程,单位为km
-                        callOver(contexts!!,price)
+                        var price = intent.getDoubleExtra("price", 0.0) //计价器价格,单位为元
+                        var mileage = intent.getDoubleExtra("mileage", 0.0) //里程,单位为km
+                        callOver(contexts!!, price)
+                    }
+                    ConnectivityManager.CONNECTIVITY_ACTION -> {
+                        if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
+                            callErrorOrder()
+                        }
                     }
                 }
 
 
             }
-        }catch (e:Exception){
+        } catch (e: Exception) {
 
         }
 
     }
 
-    private fun callStatue(contexts: Context,i: Int) {
-        if (MyApplication.currentOrderId.isEmpty()){
+    private fun callStatue(contexts: Context, i: Int) {
+        if (MyApplication.currentOrderId.isEmpty()) {
             toast("没有进行中的订单,无法开始")
             return
         }
+        if (CacheKey.getLocalOrderBean() == null) { //没有数据 代表没有异常订单
+            if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理
+                callStartOrder(contexts, i)
+            } else { //无网络 存本地
+                var bean = LocalOrderBean()
+                bean.orderId = MyApplication.currentOrderId
+                bean.startTime = System.currentTimeMillis()
+                CacheKey.saveLocalOrderBean(bean)
+            }
+        } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单
+            if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
+                callErrorOrder()
+            }
+        }
+    }
+
+
+    private fun callOver(contexts: Context, travelFee: Double) {
+        if (MyApplication.currentOrderId.isEmpty()) {
+            toast("没有进行中的订单,无法结束")
+            return
+        }
+        if (CacheKey.getLocalOrderBean() == null) { //没有数据 代表没有异常订单
+            if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理
+                callEndOrder(contexts, travelFee)
+            } else { //无网络 存本地
+                var bean = LocalOrderBean()
+                bean.orderId = MyApplication.currentOrderId
+                bean.endTime = System.currentTimeMillis()
+                CacheKey.saveLocalOrderBean(bean)
+            }
+        } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单
+            if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
+                callErrorOrder()
+            }else{
+               val bean =  CacheKey.getLocalOrderBean()
+                bean?.let {
+                    bean.endTime = System.currentTimeMillis()
+                    bean.money = travelFee
+                    bean.orderId = MyApplication.currentOrderId
+                    CacheKey.saveLocalOrderBean(bean)
+                }
+            }
+        }
+    }
+
+    /***
+     * 上传异常订单
+     */
+    private fun callErrorOrder() {
+
+    }
+
+    fun callStartOrder(contexts: Context, i: Int) {
         var map = getMapByAny()
         map["orderId"] = MyApplication.currentOrderId
         map["orderType"] = MyApplication.currentOrderType
@@ -68,11 +123,9 @@
         }
     }
 
-    private fun callOver(contexts: Context,travelFee:Double){
-        if (MyApplication.currentOrderId.isEmpty()){
-            toast("没有进行中的订单,无法结束")
-            return
-        }
+
+
+    fun callEndOrder(contexts: Context, travelFee: Double) {
         var map = getMapByAny()
         map["orderId"] = MyApplication.currentOrderId
         map["orderType"] = MyApplication.currentOrderType
@@ -80,10 +133,9 @@
         map["lat"] = MyApplication.getLocation().latitude
         map["lon"] = MyApplication.getLocation().longitude
         map["type"] = 1
-        callNet(contexts,Api.confirmFees_,map){
+        callNet(contexts, Api.confirmFees_, map) {
             EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
         }
-
     }
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/okgoincar/bean/LocalOrderBean.java b/app/src/main/java/com/okgoincar/bean/LocalOrderBean.java
new file mode 100644
index 0000000..8ca6d36
--- /dev/null
+++ b/app/src/main/java/com/okgoincar/bean/LocalOrderBean.java
@@ -0,0 +1,50 @@
+package com.okgoincar.bean;
+
+public class LocalOrderBean {
+    public static String LOCAL_ORDER_INFO = "LOCAL_ORDER_INFO";
+    private Long startTime;
+    private Long endTime;
+    private String orderId;
+    private String orderType = "2";
+    private double money;
+
+    public Long getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Long startTime) {
+        this.startTime = startTime;
+    }
+
+    public Long getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Long endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getOrderId() {
+        return orderId;
+    }
+
+    public void setOrderId(String orderId) {
+        this.orderId = orderId;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public void setOrderType(String orderType) {
+        this.orderType = orderType;
+    }
+
+    public double getMoney() {
+        return money;
+    }
+
+    public void setMoney(double money) {
+        this.money = money;
+    }
+}
diff --git a/app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt b/app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt
index 533aa97..24dd4d8 100644
--- a/app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt
+++ b/app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt
@@ -98,6 +98,7 @@
         callPersion()
 //        showOrder("2221", "2", 100, 2)
         callVersion()
+        view_mode.isSelected = !getNowTimeBlack()
     }
 
 
@@ -218,6 +219,21 @@
         tv_title_top.clickDelay {
         }
 
+        view_mode.clickDelay {
+            view_mode.isSelected = !view_mode.isSelected
+            if (getNowTimeBlack()){
+                CacheKey.putKeyStr("date_mode",System.currentTimeMillis().toString())
+                CacheKey.putKeyStr("mode_now_time","1")//记录为点击切换的颜色 1 白色 2 黑色
+                setBlackMode(false)
+            }else{
+                CacheKey.putKeyStr("date_mode",System.currentTimeMillis().toString())
+                CacheKey.putKeyStr("mode_now_time","2")
+                setBlackMode(true)
+            }
+
+
+        }
+
         tv_car.clickDelay {
 
             //            if (homeDataBean?.data?.work == 1) {
diff --git a/app/src/main/java/com/okgoincar/utils/Cache/CacheKey.kt b/app/src/main/java/com/okgoincar/utils/Cache/CacheKey.kt
index d10fde2..a53f8a4 100644
--- a/app/src/main/java/com/okgoincar/utils/Cache/CacheKey.kt
+++ b/app/src/main/java/com/okgoincar/utils/Cache/CacheKey.kt
@@ -3,6 +3,7 @@
 import cn.sinata.xldutils.utils.Md5
 import com.google.gson.Gson
 import com.google.gson.reflect.TypeToken
+import com.okgoincar.bean.LocalOrderBean
 import com.okgoincar.bean.UserInfoBean
 import com.okgoincar.utils.Cache.CacheUtil
 
@@ -66,4 +67,19 @@
     fun getTerminalName():String{
         return getKeyStr("terminalName")
     }
+
+    fun getLocalOrderBean():LocalOrderBean?{
+        var str = getKeyStr(LocalOrderBean.LOCAL_ORDER_INFO)
+        if (str.isEmpty()){
+            return null
+        }else{
+            return Gson().fromJson<LocalOrderBean>(str,LocalOrderBean::class.java)
+        }
+    }
+
+    fun saveLocalOrderBean(bean: LocalOrderBean){
+        putKeyStr(LocalOrderBean.LOCAL_ORDER_INFO,Gson().toJson(bean))
+    }
+
+
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/okgoincar/utils/UtilKt.kt b/app/src/main/java/com/okgoincar/utils/UtilKt.kt
index 39ebe61..be8d1f9 100644
--- a/app/src/main/java/com/okgoincar/utils/UtilKt.kt
+++ b/app/src/main/java/com/okgoincar/utils/UtilKt.kt
@@ -24,6 +24,7 @@
 import cn.sinata.xldutils.utils.ViewClickDelay.lastClickTime
 import cn.sinata.xldutils.xldUtils
 import com.okgoincar.base.MyApplication
+import com.okgoincar.utils.Cache.CacheKey
 import org.jetbrains.anko.internals.AnkoInternals
 import java.lang.NumberFormatException
 import java.util.*
@@ -293,11 +294,12 @@
     Log.e("OkTrip----trip", "--------" + msg)
 }
 
-fun getFormatOne(value:Double?):String{
-    return  Formatter().format("%.1f",value).toString()
+fun getFormatOne(value: Double?): String {
+    return Formatter().format("%.1f", value).toString()
 }
-fun getFormatTwo(value:Double?):String{
-    return  Formatter().format("%.2f",value).toString()
+
+fun getFormatTwo(value: Double?): String {
+    return Formatter().format("%.2f", value).toString()
 }
 
 //多个参数
@@ -308,15 +310,31 @@
 //})
 
 
+fun getNowTimeBlack(): Boolean {
+    var hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) //此时的小时
+    var dayNow = Calendar.getInstance().get(Calendar.DAY_OF_MONTH)//此时的天数
+    var date = CacheKey.getKeyStr("date_mode") //记录为点击切换的时间Long
+    var mode = CacheKey.getKeyStr("mode_now_time") ///记录为点击切换的颜色 1 白色 2 黑色
 
-fun getNowTimeBlack():Boolean{
-    var hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY)
-    if (hour < 7 || hour >= 18){
+    if (date.isEmpty()) {
+        if (hour < 7 || hour >= 18) {
             return true
+        }
+        return false
+    } else {
+        var time: Long = date.toLong()
+        var calendar = Calendar.getInstance()
+        calendar.timeInMillis = time
+        var day = calendar.get(Calendar.DAY_OF_MONTH)
+        if (day != dayNow) {
+            CacheKey.putKeyStr("date_mode", "")
+            return getNowTimeBlack()
+        } else {
+            return mode != "1"
+        }
     }
-    return false
 }
 
-fun toast(s:String){
-    Toast.makeText(MyApplication.appContext,s,Toast.LENGTH_SHORT).show()
+fun toast(s: String) {
+    Toast.makeText(MyApplication.appContext, s, Toast.LENGTH_SHORT).show()
 }
\ No newline at end of file
diff --git a/app/src/main/res/drawable/mode_write.xml b/app/src/main/res/drawable/mode_write.xml
new file mode 100644
index 0000000..90159fb
--- /dev/null
+++ b/app/src/main/res/drawable/mode_write.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="oval">
+            <stroke
+                android:width="1dp"
+                android:color="@color/main_yellow" />
+            <size
+                android:width="64dp"
+                android:height="64dp" />
+        </shape>
+    </item>
+    <item>
+        <shape
+            android:shape="line"
+            android:useLevel="true">
+            <stroke
+                android:width="1dp"
+                android:color="@color/main_yellow" />
+            <size android:height="64dp" />
+        </shape>
+    </item>
+</layer-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/mode_write_and_black.xml b/app/src/main/res/drawable/mode_write_and_black.xml
new file mode 100644
index 0000000..b2cbb1d
--- /dev/null
+++ b/app/src/main/res/drawable/mode_write_and_black.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@mipmap/close_big" android:state_selected="true" />
+    <item android:drawable="@mipmap/close_write_c" android:state_selected="false" />
+</selector>
\ No newline at end of file
diff --git a/app/src/main/res/layout/slab_activity_main.xml b/app/src/main/res/layout/slab_activity_main.xml
index 85feee2..76bac7b 100644
--- a/app/src/main/res/layout/slab_activity_main.xml
+++ b/app/src/main/res/layout/slab_activity_main.xml
@@ -100,6 +100,8 @@
         app:layout_constraintStart_toEndOf="@+id/ll_top"
         app:layout_constraintTop_toTopOf="parent" />
 
+
+
     <View
         android:layout_width="0dp"
         android:layout_height="1px"
@@ -199,8 +201,8 @@
 
     <ImageView
         android:id="@+id/iv_head"
-        android:layout_width="180dp"
-        android:layout_height="180dp"
+        android:layout_width="170dp"
+        android:layout_height="170dp"
         android:layout_marginTop="75dp"
         android:layout_marginEnd="26dp"
         android:elevation="5dp"
@@ -281,6 +283,20 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="@+id/rl_container" />
 
+    <View
+        android:id="@+id/view_mode"
+        android:layout_width="64dp"
+        android:layout_height="64dp"
+        android:background="@drawable/mode_write_and_black"
+        android:gravity="center"
+        android:textSize="40sp"
+        android:textColor="#F28105"
+        android:textStyle="bold"
+        android:layout_marginStart="38dp"
+        android:layout_marginBottom="31dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent" />
+
     <TextView
         android:id="@+id/ll_task"
         android:layout_width="260dp"

--
Gitblit v1.7.1