liugl
2021-01-14 40f9ac00ec5e4d6363450d1c8e0b0937cc0b1de4
app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
@@ -3,12 +3,13 @@
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
@@ -16,6 +17,27 @@
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) {
@@ -54,6 +76,7 @@
                if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理
                    callStartOrder(contexts, i)
                } else { //无网络 存本地
                    toast("当前没有网络,订单将保存在本地")
                    var bean = LocalOrderBean()
                    bean.orderId = MyApplication.currentOrderId
                    bean.startTime = System.currentTimeMillis()
@@ -61,11 +84,11 @@
                }
            } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单
                if (NetUtils.isNetworkConnected(MyApplication.getInstance())) {
                    callErrorOrder(contexts)
                    toast("有网络,有异常数据,此次数据不受理")
//                    callErrorOrder(contexts)
                }
            }
        }
        fun callOver(contexts: Context, travelFee: Double) {
            if (MyApplication.currentOrderId.isEmpty()) {
@@ -76,9 +99,11 @@
                if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理
                    callEndOrder(contexts, travelFee)
                } else { //无网络 存本地
                    toast("当前没有网络,订单将保存在本地")
                    var bean = LocalOrderBean()
                    bean.orderId = MyApplication.currentOrderId
                    bean.endTime = System.currentTimeMillis()
                    bean.money = travelFee
                    CacheKey.saveLocalOrderBean(bean)
                }
            } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单
@@ -91,6 +116,7 @@
                            bean.endTime = System.currentTimeMillis()
                            CacheKey.saveLocalOrderBean(bean)
                        }
//                        callEndOrder(contexts, travelFee)
                        callErrorOrder(contexts)
                    }
                } else {
@@ -114,23 +140,38 @@
        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()
                        toast("调用正常结束,在异常订单中")
                        callEndOrder(contexts,bean.money)
                    }
                }else{
                    if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
                        val map = getMapByAny()
                        map["orderId"] = bean.orderId
                        map["orderType"] = bean.orderType
                        map["type"] = "1"
                        map["travelFee"] = bean.money
                        CacheKey.saveLocalOrderBeanNull()
                        toast("调用异常结束,在异常订单中 id==="+bean.orderId)
                        callNet(contexts, "api/order/confirmFees$", map,{
                            MyApplication.currentOrderId = ""
                            toast("上传异常订单成功")
                            EventBus.getDefault().post(BaseEvent(BaseEvent.ERROR_INFO))
                        }) {
                            toast("上传异常订单失败")
                            CacheKey.saveLocalOrderBean(bean)
                        }
                    }
                }
            }
        }
        private fun callStartOrder(contexts: Context, i: Int) {
         fun callStartOrder(contexts: Context, i: Int) {
            var map = getMapByAny()
            map["orderId"] = MyApplication.currentOrderId
            map["orderType"] = MyApplication.currentOrderType
@@ -142,8 +183,13 @@
            }
        }
        private fun callEndOrder(contexts: Context, travelFee: Double) {
            if (MyApplication.getLocation().latitude == 0.0){
                Handler(Looper.getMainLooper()).post {
                    toast("结束时的位置为空,停止结束")
                }
                return
            }
            var map = getMapByAny()
            map["orderId"] = MyApplication.currentOrderId
            map["orderType"] = MyApplication.currentOrderType
@@ -152,7 +198,28 @@
            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)
                    EventBus.getDefault().post(BaseEvent(BaseEvent.UPDATA_MAIN_CAR))
                    if (orderBean.data.orderState == 7){
                        EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
                    }
                    MyApplication.currentOrderId = ""
                    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)
                    }
                }
            }
        }