From bd6a8872438a35d47821c5d5da7fe149e5fed3ab Mon Sep 17 00:00:00 2001 From: lmw <125975490@qq.com> Date: 星期三, 21 六月 2023 09:53:36 +0800 Subject: [PATCH] 处理收不到广播 --- app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt | 249 +++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 197 insertions(+), 52 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..e98e7f3 100644 --- a/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt +++ b/app/src/main/java/com/okgoincar/base/MoneyBroadCastReceiver.kt @@ -5,85 +5,230 @@ import android.content.Intent import android.os.Handler import android.os.Looper -import cn.sinata.rxnetty.netStatus.NetUtils +import android.util.Log +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.bean.OrderBean 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 org.greenrobot.eventbus.EventBus -import org.jetbrains.anko.startActivity 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){ + MyApplication.upLog("收到广播,Action:${intent?.action}") + Log.e("MoneyBroadCastReceiver","收到广播,Action:${intent?.action}") + 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) + MyApplication.upLog("广播内容,isHeavy:${isHeavy}") + 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) + } + } + } + } catch (e: Exception) { + + } + } + + companion object { + fun callStatue(contexts: Context, i: Int) { + if (MyApplication.currentOrderId.isEmpty()) { + MyApplication.upLog("callStatue error,MyApplication.currentOrderId.isEmpty") + toast("没有进行中的订单,无法开始") + return + } + if (CacheKey.getLocalOrderBean() == null) { //没有数据 代表没有异常订单 + if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { //有网络直接处理 + callStartOrder(contexts, i) + } else { //无网络 存本地 + toast("当前没有网络,订单将保存在本地") + var bean = LocalOrderBean() + bean.orderId = MyApplication.currentOrderId + bean.startTime = System.currentTimeMillis() + CacheKey.saveLocalOrderBean(bean) + } + } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单 + if (NetUtils.isNetworkConnected(MyApplication.getInstance())) { + toast("有网络,有异常数据,此次数据不受理") +// callErrorOrder(contexts) + } + } + } + + 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 { //无网络 存本地 + toast("当前没有网络,订单将保存在本地") + var bean = LocalOrderBean() + bean.orderId = MyApplication.currentOrderId + bean.endTime = System.currentTimeMillis() + bean.money = travelFee + 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) + } +// callEndOrder(contexts, travelFee) + 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) + } + } + } + } + + /*** + * 上传异常订单 + */ + fun callErrorOrder(contexts: Context) { + var bean = CacheKey.getLocalOrderBean() + bean?.let { + if (bean.endTime <= 0L){ + return@let + } + 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) { + 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) { + if (MyApplication.getLocation().latitude == 0.0){ + Handler(Looper.getMainLooper()).post { + toast("结束时的位置为空,停止结束") + } + return + } + 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) { + 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) } } - } - }catch (e:Exception){ - } } - private fun callStatue(contexts: Context,i: Int) { - if (MyApplication.currentOrderId.isEmpty()){ - toast("没有进行中的订单,无法开始") - return - } - 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 callOver(contexts: Context,travelFee:Double){ - if (MyApplication.currentOrderId.isEmpty()){ - toast("没有进行中的订单,无法结束") - return - } - 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)) - } - - } } \ No newline at end of file -- Gitblit v1.7.1