8.7
liugl
2020-08-07 386c12bc80d17252ea05b7bf1cb2e85db2e46767
app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt
@@ -12,6 +12,7 @@
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
@@ -38,104 +39,133 @@
                        var mileage = intent.getDoubleExtra("mileage", 0.0) //里程,单位为km
                        callOver(contexts!!, price)
                    }
                    ConnectivityManager.CONNECTIVITY_ACTION -> {
                        if (NetUtils.isNetworkConnected(MyApplication.getInstance())){
                            callErrorOrder()
                    "android.net.conn.CONNECTIVITY_SUCCESS", "android.net.conn.CONNECTIVITY_FAILURE", "android.net.conn.CONNECTIVITY_CHANGE" -> {
                        toast("收到网络变化")
                        if (NetUtils.isNetworkConnected(MyApplication.getInstance())) {
                            callErrorOrder(contexts!!)
                        }
                    }
                }
            }
        } catch (e: Exception) {
        }
    }
    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)
    companion object {
        fun callStatue(contexts: Context, i: Int) {
            if (MyApplication.currentOrderId.isEmpty()) {
                toast("没有进行中的订单,无法开始")
                return
            }
        } 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
            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(contexts)
                }
            }
        }
    }
    /***
     * 上传异常订单
     */
    private fun callErrorOrder() {
    }
    fun callStartOrder(contexts: Context, i: Int) {
        var map = getMapByAny()
        map["orderId"] = MyApplication.currentOrderId
        map["orderType"] = MyApplication.currentOrderType
        map["state"] = i
        map["lat"] = MyApplication.getLocation().latitude
        map["lon"] = MyApplication.getLocation().longitude
        callNet(contexts, Api.process, map) {
            EventBus.getDefault().post(BaseEvent(BaseEvent.UP_TRIP))
        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())) {
                    var bean = CacheKey.getLocalOrderBean()
                    bean?.let {
                        if (bean.money <= 0.0) {
                            bean.money = travelFee
                            bean.orderId = MyApplication.currentOrderId
                            bean.endTime = System.currentTimeMillis()
                            CacheKey.saveLocalOrderBean(bean)
                        }
                        callErrorOrder(contexts)
                    }
                } else {
                    val bean = CacheKey.getLocalOrderBean()
                    bean?.let {
                        if (bean.money >= 0.0) {
                            return@callOver
                        }
                        bean.endTime = System.currentTimeMillis()
                        bean.money = travelFee
                        bean.orderId = MyApplication.currentOrderId
                        CacheKey.saveLocalOrderBean(bean)
                    }
                }
            }
        }
    }
        /***
         * 上传异常订单
         */
        private fun callErrorOrder(contexts: Context) {
            var bean = CacheKey.getLocalOrderBean()
            bean?.let {
                if (bean.money <= 0.0) {
                    return@let
                }
                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))
                }
            }
    fun callEndOrder(contexts: Context, travelFee: Double) {
        var map = getMapByAny()
        map["orderId"] = MyApplication.currentOrderId
        map["orderType"] = MyApplication.currentOrderType
        map["travelFee"] = travelFee
        map["lat"] = MyApplication.getLocation().latitude
        map["lon"] = MyApplication.getLocation().longitude
        map["type"] = 1
        callNet(contexts, Api.confirmFees_, map) {
            EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
        }
        private fun callStartOrder(contexts: Context, i: Int) {
            var map = getMapByAny()
            map["orderId"] = MyApplication.currentOrderId
            map["orderType"] = MyApplication.currentOrderType
            map["state"] = i
            map["lat"] = MyApplication.getLocation().latitude
            map["lon"] = MyApplication.getLocation().longitude
            callNet(contexts, Api.process, map) {
                EventBus.getDefault().post(BaseEvent(BaseEvent.UP_TRIP))
            }
        }
        private fun callEndOrder(contexts: Context, travelFee: Double) {
            var map = getMapByAny()
            map["orderId"] = MyApplication.currentOrderId
            map["orderType"] = MyApplication.currentOrderType
            map["travelFee"] = travelFee
            map["lat"] = MyApplication.getLocation().latitude
            map["lon"] = MyApplication.getLocation().longitude
            map["type"] = 1
            callNet(contexts, Api.confirmFees_, map) {
                EventBus.getDefault().post(BaseEvent(BaseEvent.SURE_MONEY))
            }
        }
    }
}