liugl
2020-11-02 080f7b67b66121fb325d777ba066112a2ace6825
app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
@@ -3,21 +3,41 @@
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.xldutils.netstatus.NetUtils
import cn.sinata.xldutils.utils.toast
import com.google.gson.Gson
import com.okgoincar.bean.LocalOrderBean
import com.okgoincar.bean.OrderBean
import com.okgoincar.netUtls.Api
import com.okgoincar.netUtls.callNet
import com.okgoincar.netUtls.getMapByAny
import com.okgoincar.slab.util.DialogUtil
import com.okgoincar.utils.Cache.CacheKey
import io.netty.util.NetUtil
import org.greenrobot.eventbus.EventBus
import java.lang.Exception
/***
 * 为了支持本页面所需的 MyApplication.currentOrderId 所以在订单列表获取处,订单页面,设置了这个常量的值
 *
 * 1:接单后 重车时无网
 *  --车载屏无反应
 *  缓存 订单开始状态
 *  来网后空车时 --》 查看是否有进行中id,是否有缓存
 *
 *
 * 2:接单后 空车时无网
 *
 *
 *
 * 3:接单后 正常状态
 *
 *
 *
 * 4:接单后 都没有网络
 *
 *
 */
class MoneyBroadCastReceiver : BroadcastReceiver() {
    override fun onReceive(contexts: Context?, intent: Intent?) {
        if (intent == null && contexts == null) {
@@ -68,7 +88,6 @@
            }
        }
        fun callOver(contexts: Context, travelFee: Double) {
            if (MyApplication.currentOrderId.isEmpty()) {
                toast("没有进行中的订单,无法结束")
@@ -81,6 +100,7 @@
                    var bean = LocalOrderBean()
                    bean.orderId = MyApplication.currentOrderId
                    bean.endTime = System.currentTimeMillis()
                    bean.money = travelFee
                    CacheKey.saveLocalOrderBean(bean)
                }
            } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单
@@ -93,6 +113,7 @@
                            bean.endTime = System.currentTimeMillis()
                            CacheKey.saveLocalOrderBean(bean)
                        }
//                        callEndOrder(contexts, travelFee)
                        callErrorOrder(contexts)
                    }
                } else {
@@ -116,19 +137,31 @@
        fun callErrorOrder(contexts: Context) {
            var bean = CacheKey.getLocalOrderBean()
            bean?.let {
                if (bean.money <= 0.0) {
                if (bean.endTime <= 0L){
                    return@let
                }
                CacheKey.saveLocalOrderBeanNull()
                val map = getMapByAny()
                map["orderId"] = bean.orderId
                map["orderType"] = bean.orderType
                map["type"] = "1"
                map["travelFee"] = bean.money
                callNet(contexts, "api/order/confirmFees$", map) {
                    toast("上传异常订单成功")
                    EventBus.getDefault().post(BaseEvent(BaseEvent.ERROR_INFO))
                if (bean.startTime <= 0L) {
                    if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
                        CacheKey.saveLocalOrderBeanNull()
                        MyApplication.currentOrderId = ""
                        callEndOrder(contexts,bean.money)
                    }
                }else{
                    if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
                        CacheKey.saveLocalOrderBeanNull()
                        MyApplication.currentOrderId = ""
                        val map = getMapByAny()
                        map["orderId"] = bean.orderId
                        map["orderType"] = bean.orderType
                        map["type"] = "1"
                        map["travelFee"] = bean.money
                        callNet(contexts, "api/order/confirmFees$", map) {
                            toast("上传异常订单成功")
                            EventBus.getDefault().post(BaseEvent(BaseEvent.ERROR_INFO))
                        }
                    }
                }
            }
        }
@@ -144,7 +177,6 @@
            }
        }
        private fun callEndOrder(contexts: Context, travelFee: Double) {
            var map = getMapByAny()
            map["orderId"] = MyApplication.currentOrderId
@@ -154,7 +186,26 @@
            map["lon"] = MyApplication.getLocation().longitude
            map["type"] = 1
            callNet(contexts, Api.confirmFees_, map) {
                EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
                var mapOrder = getMapByAny()
                mapOrder["orderId"] = MyApplication.currentOrderId
                mapOrder["orderType"] = MyApplication.currentOrderType
                callNet(contexts, Api.queryOrderInfo, mapOrder) {
                    var orderBean = Gson().fromJson(it, OrderBean::class.java)
                    if (orderBean.data.orderState == 7){
                        EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
                    }
                    if (orderBean.data.orderState == 2 ||orderBean.data.orderState == 3 || orderBean.data.orderState == 4 ){
                        Handler(Looper.getMainLooper()).postDelayed({
                            toast("发送网约")
                            var intent = Intent();
                            intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
                            intent.action = "wisdom.intent.action.topLight";
                            intent.putExtra("state", 0)
                            contexts.sendBroadcast(intent)
                        },10000)
                    }
                }
            }
        }