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/slab/SlabOrderOverActivity.kt |  320 +++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 247 insertions(+), 73 deletions(-)

diff --git a/app/src/main/java/com/okgoincar/slab/SlabOrderOverActivity.kt b/app/src/main/java/com/okgoincar/slab/SlabOrderOverActivity.kt
index c0daf3b..488b11f 100644
--- a/app/src/main/java/com/okgoincar/slab/SlabOrderOverActivity.kt
+++ b/app/src/main/java/com/okgoincar/slab/SlabOrderOverActivity.kt
@@ -1,9 +1,10 @@
 package com.okgoincar.slab
 
+import android.os.CountDownTimer
+import android.os.Handler
 import android.os.Looper
-import cn.sinata.xldutils.utils.clickDelay
-import cn.sinata.xldutils.utils.gone
-import cn.sinata.xldutils.utils.visible
+import android.view.View
+import cn.sinata.xldutils.utils.*
 import com.okgoincar.netUtls.callNet
 import com.okgoincar.netUtls.getMapByAny
 import com.google.gson.Gson
@@ -11,9 +12,14 @@
 import com.okgoincar.base.MyApplication
 import com.okgoincar.bean.OrderBean
 import com.okgoincar.bean.OrderSimpleData
+import com.okgoincar.bean.OrderStatueBean
 import com.okgoincar.netUtls.Api
+import com.okgoincar.netUtls.timeOver
+import com.okgoincar.slab.util.DialogUtil
 import com.okgoincar.utils.MyUtils
 import kotlinx.android.synthetic.main.activity_order_over.*
+import kotlinx.android.synthetic.main.dialog_sure_and_del_slab.view.*
+import java.lang.Exception
 
 class SlabOrderOverActivity : MySlabBaseActivity() {
 
@@ -25,122 +31,210 @@
         intent.getStringExtra("orderId")
     }
 
+    var time: CountDownTimer? = null
+
     lateinit var orderBean: OrderBean
 
     override fun setContentView() {
         setContentView(R.layout.activity_order_over)
         MyApplication.currentOrderType = ""
         MyApplication.currentOrderId = ""
-        ll_pay_result.gone()
         showHeader(false)
         showTitle(false)
+
+    }
+
+    override fun onPause() {
+        super.onPause()
+        if (time != null) {
+            time!!.cancel()
+        }
     }
 
     override fun setBlackMode(b: Boolean?) {
         super.setBlackMode(b)
-        if(b!!){
-            rl_main_bg.setBackgroundResource(R.color.black_191919)
+        if (b!!) { //晚上
+            rl_main_bg.setBackgroundResource(R.color.black)
             ll_content_web.setBackgroundResource(R.drawable.bg_slab_main_8_black)
-            ll_order_top.setBackgroundResource(R.color.black_191919)
-            ll_pay_result.setBackgroundResource(R.drawable.bg_slab_main_8_shen_black)
-        }else{
-            rl_main_bg.setBackgroundResource(R.drawable.bg_slab_main)
-            ll_content_web.setBackgroundResource(R.drawable.bg_slab_main_8)
-            ll_order_top.setBackgroundResource(R.drawable.bg_slab_main_8_bottom)
-            ll_pay_result.setBackgroundResource(R.drawable.bg_slab_main_8_shen)
+            ll_order_top.setBackgroundResource(R.drawable.bg_slab_main_8_black_bottom)
+//            ll_pay_result.setBackgroundResource(R.drawable.bg_slab_main_8_shen_black)
+            iv_back_slab.setImageResource(R.mipmap.icon_back_slab)
+            tv_title_slab.textColor(this, R.color.write)
+            tv_name.textColor(this, R.color.write)
+            tv_car_num.textColor(this, R.color.write)
+            tv_phone.textColor(this, R.color.write)
+            tv_time.textColor(this, R.color.write)
+            tv_time.setDrawableLeft(R.mipmap.icon_time_gray)
+            tv_start_address.textColor(this, R.color.write)
+            tv_end_address.textColor(this, R.color.write)
+            tv_red_money.textColor(this, R.color.write)
+            tv_pay_result_title.textColor(this, R.color.write)
+            tv_order_type.textColor(this, R.color.write)
+            tv_hive_small_money.textColor(this, R.color.write)
+            tv_phone.setDrawableLeft(R.mipmap.icon_dial_slab)
+        } else {
+            rl_main_bg.setBackgroundResource(R.color.write)
+            ll_content_web.setBackgroundResource(R.drawable.write_top_10)
+            ll_order_top.setBackgroundResource(R.drawable.write_bottom_10)
+//            ll_pay_result.setBackgroundResource(R.drawable.bg_white_round5)
+            iv_back_slab.setImageResource(R.mipmap.icon_back_black)
+            tv_title_slab.textColor(this, R.color.black)
+            tv_name.textColor(this, R.color.black)
+            tv_car_num.textColor(this, R.color.black)
+            tv_phone.textColor(this, R.color.black)
+            tv_time.textColor(this, R.color.black)
+            tv_time.setDrawableLeft(R.mipmap.icon_time_xiao)
+            tv_start_address.textColor(this, R.color.black)
+            tv_end_address.textColor(this, R.color.black)
+            tv_red_money.textColor(this, R.color.black)
+            tv_pay_result_title.textColor(this, R.color.black)
+            tv_order_type.textColor(this, R.color.black)
+            tv_hive_small_money.textColor(this, R.color.black)
+            tv_phone.setDrawableLeft(R.mipmap.icon_dial)
         }
     }
 
     override fun initView() {
-
         var map = getMapByAny()
         map["orderId"] = orderId
         map["orderType"] = orderType
         callNet(this, Api.queryOrderInfo, map) {
             orderBean = gson.fromJson(it, OrderBean::class.java)
             showUi(orderBean)
+//            addSocketLisener(orderBean)
+            checkOrderStatue()
         }
     }
+
+
 
     private fun showUi(orderBean: OrderBean?) {
         orderBean?.let {
+            MyApplication.getTTsManager()
+                .setVideoText("请确认乘客车内付款后,再点击返回首页")
+            time = timeOver(60000 * 6) {
+                tv_title_slab.text = "待支付($it)"
+                if (it == 0) {
+                    if (time != null) {
+                        time!!.cancel()
+                    }
+                    try {
+                        finish()
+                    } catch (e: Exception) {
+                    }
+                }
+            }
+            tv_title_slab.text = "待支付"
             tv_name.text = it.data.nickName
             tv_car_num.text = it.data.historyNum.toString() + "次乘车"
+            tv_phone.text = it.data.phone
+
             tv_phone.clickDelay {
                 MyUtils.getInstans().CallPhone(this, it.data.phone.toString())
             }
+            tv_pay_result_money.text = "¥" + it.data.orderMoney.toString()
+            tv_pay_result_small_money.text = "¥" + it.data.tipMoney.toString()
             tv_time.text = it.data.travelTime
             tv_start_address.text = it.data.startAddress
             tv_end_address.text = it.data.endAddress
+            tv_end_address.visibility = if (it.data.endAddress.isNullOrEmpty()) View.GONE else View.VISIBLE
             tv_red_money.text = it.data.tipMoney.toString() + "元小费"
-            when (orderBean.data.orderState) {
-                10, 11 -> {
-                    ll_pay_result.gone()
-                    setTitleText("已取消")
-                }
-                6, 7 -> {
-                    if (it.data.payManner == 2) {
-                        ll_pay_result.gone()
-                        setTitleText("已完成")
-                    } else {
-                        addSocketLisener()
-                        showPayResultText(it, it.data.orderState)
-                    }
-                }
-                8, 9 -> {
-                    if (it.data.payManner == 2) {
-                        ll_pay_result.gone()
-                        setTitleText("已完成")
-                    } else {
-                        showPayResultText(it, it.data.orderState)
-                    }
-                }
+//            when (orderBean.data.orderState) {
+//                10, 11 -> {
+//                    ll_pay_result.gone()
+//                    setTitleText("已取消")
+//                }
+//                6, 7 -> {
+//                    if (it.data.payManner == 2) {
+//                        ll_pay_result.gone()
+//                        setTitleText("已完成")
+//                    } else {
+//                        addSocketLisener()
+//                        showPayResultText(it, it.data.orderState)
+//                    }
+//                }
+//                8, 9 -> {
+//                    if (it.data.payManner == 2) {
+//                        ll_pay_result.gone()
+//                        setTitleText("已完成")
+//                    } else {
+//                        showPayResultText(it, it.data.orderState)
+//                    }
+//                }
+//            }
+        }
+    }
+
+    fun overOrder(){
+        callComplete() {
+            Handler(Looper.getMainLooper()).post {
+                time?.cancel()
+                time?.onFinish()
+                finish()
             }
         }
     }
 
-    private fun addSocketLisener() {
-        MyApplication.addOrderView(object : MyApplication.OrderStatueView {
-            override fun orderInfo(data: OrderSimpleData?) {
-                data?.let {
-                    if (it.status == 8) {
-                        android.os.Handler(Looper.getMainLooper()).post {
-                            orderBean.data.orderState = 8
-                            showUi(orderBean)
+    var handler: Handler? = null
+    var isPlay = false
+
+    fun checkOrderStatue() {
+        if (handler == null) {
+            handler = Handler(mainLooper)
+        }
+        handler!!.postDelayed({
+            checkOrderStatue()
+        }, 3000)
+        var map = getMapByAny()
+//        map["orderId"] = orderId
+//        map["orderType"] = orderType
+        callNet(false, Api.orderStateSocket, map) {
+            val orderSimpleData =
+                Gson().fromJson(
+                    it,
+                    OrderStatueBean::class.java
+                )
+            orderSimpleData?.data?.let {
+                var currentBean: OrderStatueBean.DataBean? = null
+                for (item in it) {
+                    if (item.orderId == orderBean.data?.orderId) {
+                        currentBean = item
+                    }
+                }
+                if (it.size == 0 || currentBean == null) {
+                    return@callNet
+                }
+                if (currentBean.state == 8) {
+                    tv_pay_result_money.textColor(
+                        this@SlabOrderOverActivity,
+                        R.color.slab_green_over
+                    )
+                    Handler(Looper.getMainLooper()).post {
+                        if (isPlay) {
+                            return@post
+                        }
+                        isPlay = true
+                        tv_complete.gone()
+                        tv_to_main.visible()
+                        MyApplication.getTTsManager()
+                            .setVideoText("乘客已支付" + orderBean.data?.orderMoney.toString() + "元")
+                        time?.cancel()
+                        time = timeOver(20000) {
+                            tv_title_slab.text = "已完成($it)"
+                            if (it == 0) {
+                                if (time != null) {
+                                    time!!.cancel()
+                                }
+                                try {
+                                    finish()
+                                } catch (e: Exception) {
+                                }
+                            }
                         }
                     }
                 }
             }
-        })
-
-//        if (handler == null) {
-//            handler = android.os.Handler(mainLooper)
-//            handler!!.postDelayed({
-//                checkOrderStatue()
-//            }, 3000)
-//        }
-    }
-
-    var handler: android.os.Handler? = null
-
-    fun checkOrderStatue() {
-        var map = getMapByAny()
-        map["orderId"] = orderId
-        map["orderType"] = orderType
-        callNet(false,Api.orderStateSocket, map) {
-            val orderSimpleData =
-                Gson().fromJson(
-                    it,
-                    OrderSimpleData::class.java
-                )
-            orderSimpleData?.let {
-                if (orderSimpleData.status == 8) {
-                    orderBean.data.orderState = 8
-                    showUi(orderBean)
-                }
-            }
         }
-        handler?.postDelayed({ checkOrderStatue() }, 3000)
     }
 
     override fun onDestroy() {
@@ -171,5 +265,85 @@
         iv_back_slab.clickDelay {
             onBackPressed()
         }
+
+        tv_to_main.clickDelay {
+            onBackPressed()
+        }
+
+        tv_complete.clickDelay {
+           var pop = DialogUtil.getSlabDelAndSurePopWindow(this,"请确认是否收到乘客线下付款",{}){
+                overOrder()
+            }
+            pop.contentView.tv_close_base.text = "未收款"
+            pop.contentView.tv_sure_base.text = "已收款"
+            pop.showCenter(window.decorView)
+
+        }
     }
+
+    override fun onBackPressed() {
+        overOrder()
+    }
+
+    private fun callComplete(function: () -> Unit) {
+        var map = getMapByAny()
+        map["orderId"] = orderId
+        map["orderType"] = orderType
+        callNet(Api.completeOrder,map,{
+            function()
+        }){
+            function()
+        }
+    }
+
+
+
+    private fun addSocketLisener(orderBean: OrderBean?) {
+        MyApplication.addOrderView(object : MyApplication.OrderStatueView {
+            override fun orderInfo(data: OrderSimpleData?) {
+                data?.let {
+                    if (it.status == 8 || it.status == 7) {
+                        tv_pay_result_money.textColor(
+                            this@SlabOrderOverActivity,
+                            R.color.slab_green_over
+                        )
+                        Handler(Looper.getMainLooper()).post {
+                            if (isPlay) {
+                                return@post
+                            }
+                            isPlay = true
+                            MyApplication.getTTsManager()
+                                .setVideoText("乘客已支付" + orderBean?.data?.orderMoney.toString() + "元")
+                            time = timeOver(20000) {
+                                tv_title_slab.text = "已完成($it)"
+                                if (it == 0) {
+                                    if (time != null) {
+                                        time!!.cancel()
+                                    }
+                                    try {
+                                        finish()
+                                    } catch (e: Exception) {
+                                    }
+                                }
+                            }
+                        }
+
+//                        android.os.Handler(Looper.getMainLooper()).post {
+//                            orderBean.data.orderState = 8
+//                            showUi(orderBean)
+//                        }
+                    }
+                }
+            }
+        })
+
+
+//        if (handler == null) {
+//            handler = android.os.Handler(mainLooper)
+//            handler!!.postDelayed({
+//                checkOrderStatue()
+//            }, 3000)
+//        }
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.7.1