app/src/main/AndroidManifest.xml
@@ -92,6 +92,9 @@ <action android:name="wisdom.intent.action.ledLight" /> <!-- //计价器--> <action android:name="wisdom.intent.action.priceDevice" /> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <action android:name="android.net.conn.CONNECTIVITY_SUCCESS" /> <action android:name="android.net.conn.CONNECTIVITY_FAILURE" /> </intent-filter> </receiver> app/src/main/java/com/okgoincar/base/AMapKit.kt
@@ -33,6 +33,7 @@ //设置为高精度定位模式 // mLocationOption.isNeedAddress = true mLocationOption.interval = 5000 // mLocationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Hight_Accuracy mLocationOption.locationMode = AMapLocationClientOption.AMapLocationMode.Device_Sensors //设置定位参数 mlocationClient.setLocationOption(mLocationOption) app/src/main/java/com/okgoincar/base/BaseEvent.java
@@ -35,6 +35,9 @@ public static final int UP_TRIP = 11025; //收到重车指令 刷新出行页面 public static final int SURE_MONEY= 11026; //收到价格 结束行程 public static final int ERROR_INFO= 11027; //上传了错误订单 private String msg; private int code; private int type; app/src/main/java/com/okgoincar/base/MainBroadCastReceiver.kt
@@ -66,6 +66,7 @@ callNet(context!!,Api.loginByIdentification,map){ toast("登录成功") var bean = Gson().fromJson<LoginBean>(it, LoginBean::class.java) CacheKey.putKeyStr("identification",driverCertificate!!) CacheKey.putKeyStr("appid", bean.data.appid) CacheKey.putKeyStr("token", bean.data.token) CacheKey.putKeyStr("userId", bean.data.id.toString()) 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,22 +39,22 @@ var mileage = intent.getDoubleExtra("mileage", 0.0) //里程,单位为km callOver(contexts!!, price) } ConnectivityManager.CONNECTIVITY_ACTION -> { "android.net.conn.CONNECTIVITY_SUCCESS", "android.net.conn.CONNECTIVITY_FAILURE", "android.net.conn.CONNECTIVITY_CHANGE" -> { toast("收到网络变化") if (NetUtils.isNetworkConnected(MyApplication.getInstance())){ callErrorOrder() callErrorOrder(contexts!!) } } } } } catch (e: Exception) { } } private fun callStatue(contexts: Context, i: Int) { companion object { fun callStatue(contexts: Context, i: Int) { if (MyApplication.currentOrderId.isEmpty()) { toast("没有进行中的订单,无法开始") return @@ -69,13 +70,13 @@ } } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单 if (NetUtils.isNetworkConnected(MyApplication.getInstance())){ callErrorOrder() callErrorOrder(contexts) } } } private fun callOver(contexts: Context, travelFee: Double) { fun callOver(contexts: Context, travelFee: Double) { if (MyApplication.currentOrderId.isEmpty()) { toast("没有进行中的订单,无法结束") return @@ -91,10 +92,22 @@ } } else { //有数据存着,并且有网络上传异常订单 如果没有网络就不处理,这个肯定是线下的单 if (NetUtils.isNetworkConnected(MyApplication.getInstance())){ callErrorOrder() 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 @@ -107,11 +120,26 @@ /*** * 上传异常订单 */ private fun callErrorOrder() { 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 callStartOrder(contexts: Context, i: Int) { private fun callStartOrder(contexts: Context, i: Int) { var map = getMapByAny() map["orderId"] = MyApplication.currentOrderId map["orderType"] = MyApplication.currentOrderType @@ -124,8 +152,7 @@ } fun callEndOrder(contexts: Context, travelFee: Double) { private fun callEndOrder(contexts: Context, travelFee: Double) { var map = getMapByAny() map["orderId"] = MyApplication.currentOrderId map["orderType"] = MyApplication.currentOrderType @@ -139,3 +166,6 @@ } } } app/src/main/java/com/okgoincar/bean/LocalOrderBean.java
@@ -6,7 +6,7 @@ private Long endTime; private String orderId; private String orderType = "2"; private double money; private double money = 0.0; public Long getStartTime() { return startTime; app/src/main/java/com/okgoincar/netUtls/Api.java
@@ -62,6 +62,7 @@ public static String confirmFees = "api/order/confirmFees"; //api/order/confirmFees 司机确认费用 public static String orderStateSocket = "api/netty/orderStateSocket"; ///api/netty/orderStateSocket 主动调用获取订单状态 public static String confirmFees_ = "api/order/confirmFees_"; ///api/order/confirmFees_ 司机确认费用(车载端) public static String confirmFees$ = "api/order/confirmFees$"; ///api/order/confirmFees$ 司机确认费用(车载端)不管之前数据状态直接修改到待支付(流程断网情况的处理流程) /*** * 消息 app/src/main/java/com/okgoincar/slab/SlabLoginActivity.kt
@@ -38,6 +38,7 @@ callNet(true, Api.loginByJobNumber, map) { toast("登录成功") var bean = gson.fromJson<LoginBean>(it, LoginBean::class.java) CacheKey.putKeyStr("jobNum",et_number.getContent().trim()) CacheKey.putKeyStr("appid", bean.data.appid) CacheKey.putKeyStr("token", bean.data.token) CacheKey.putKeyStr("userId", bean.data.id.toString()) app/src/main/java/com/okgoincar/slab/SlabMainActivity.kt
@@ -10,10 +10,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import cn.sinata.rxnetty.NettyClient import cn.sinata.xldutils.utils.Utils import cn.sinata.xldutils.utils.clickDelay import cn.sinata.xldutils.utils.getNowTimeBlack import cn.sinata.xldutils.utils.textColor import cn.sinata.xldutils.utils.* import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationListener import com.okgoincar.netUtls.callNet @@ -33,10 +30,13 @@ import com.okgoincar.utils.DateUtil import com.okgoincar.utils.download.DownloadUtil import com.okgoincar.utils.glide.GlideUtil import kotlinx.android.synthetic.main.slab_activity_login.* import kotlinx.android.synthetic.main.slab_activity_main.* import kotlinx.android.synthetic.main.slab_activity_main.tv_name import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast import java.lang.Exception class SlabMainActivity : MySlabBaseActivity(), AMapLocationListener { @@ -91,6 +91,8 @@ setTitleText("OK出行司机") showHeader(false) showTitle(false) callLogin { view_mode.isSelected = !getNowTimeBlack() addFragment(mainFragment, R.id.rl_container) AMapKit.initLocation(this, this) initCall() @@ -98,7 +100,8 @@ callPersion() // showOrder("2221", "2", 100, 2) callVersion() view_mode.isSelected = !getNowTimeBlack() } //重重新登录 用来上线 } @@ -112,7 +115,11 @@ override fun onResume() { super.onResume() try { mainFragment.refresh() }catch (e:Exception){ } } private fun showUI(data: UserInfoBean?) { @@ -256,8 +263,6 @@ } private var mBackAppTime: Long = 0 @@ -280,6 +285,13 @@ BaseEvent.REQUEST_CAR_INFO -> { Handler(Looper.getMainLooper()).post { toast("收到显示屏信息") } } BaseEvent.ERROR_INFO -> { try { mainFragment.refresh() }catch (e:Exception){ } } } @@ -307,12 +319,18 @@ var bean = gson.fromJson<VersionBean>(it, VersionBean::class.java) if (bean.data.version != "" && bean.data.version != Utils.getAppVersion(this)) { if (bean.data.mandatory == 0) { var pop = DialogUtil.getSlabDelAndSurePopWindow(this, "确定" ,"取消","有新版本是否更新", {}) { var pop = DialogUtil.getSlabDelAndSurePopWindow(this, "确定", "取消", "有新版本是否更新", {}) { DownloadUtil(this).downloadAPK(bean.data.url, "ok出行车载端") } pop.showCenter(window.decorView) } else { var pop = DialogUtil.getSlabDelAndSurePopWindow(this,"确定" ,"取消","版本已过时,是否强制升级?", {}) { var pop = DialogUtil.getSlabDelAndSurePopWindow( this, "确定", "取消", "版本已过时,是否强制升级?", {}) { DownloadUtil(this).downloadAPK(bean.data.url, "ok出行车载端") toast("后台开始下载,请等待") } @@ -324,4 +342,39 @@ } } } private fun callLogin(ok: () -> Unit) { var jobNum = CacheKey.getKeyStr("jobNum") var identification = CacheKey.getKeyStr("identification") if (jobNum.isNotEmpty()) { var map = getMapByAny() map["jobNum"] = jobNum callNet(true, Api.loginByJobNumber, map) { var bean = gson.fromJson<LoginBean>(it, LoginBean::class.java) CacheKey.putKeyStr("jobNum", jobNum) CacheKey.putKeyStr("appid", bean.data.appid) CacheKey.putKeyStr("token", bean.data.token) CacheKey.putKeyStr("userId", bean.data.id.toString()) CacheKey.putKeyStr("serverId", bean.data.serverId.toString()) CacheKey.putKeyStr("terminalName", bean.data.terminalId.toString()) ok() } } else if (identification.isNotEmpty()) { var map = getMapByAny() map["identification"] = identification callNet(true, Api.loginByIdentification, map) { var bean = Gson().fromJson<LoginBean>(it, LoginBean::class.java) CacheKey.putKeyStr("identification", identification) CacheKey.putKeyStr("appid", bean.data.appid) CacheKey.putKeyStr("token", bean.data.token) CacheKey.putKeyStr("userId", bean.data.id.toString()) CacheKey.putKeyStr("serverId", bean.data.serverId.toString()) CacheKey.putKeyStr("terminalName", bean.data.terminalId.toString()) ok() } } else { ok() } } } app/src/main/java/com/okgoincar/slab/SlabOrderOverActivity.kt
@@ -1,6 +1,7 @@ package com.okgoincar.slab import android.os.CountDownTimer import android.os.Handler import android.os.Looper import cn.sinata.xldutils.utils.* import com.okgoincar.netUtls.callNet @@ -96,17 +97,14 @@ callNet(this, Api.queryOrderInfo, map) { orderBean = gson.fromJson(it, OrderBean::class.java) showUi(orderBean) time = timeOver (5000){ tv_title_slab.text = "已完成($it)" if (it == 0){ onBackPressed() } } addSocketLisener() } } private fun showUi(orderBean: OrderBean?) { orderBean?.let { tv_title_slab.text = "待支付" tv_name.text = it.data.nickName tv_car_num.text = it.data.historyNum.toString() + "次乘车" tv_phone.clickDelay { @@ -147,13 +145,23 @@ 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) if (it.status == 8||it.status == 7) { tv_pay_result_money.textColor(this@SlabOrderOverActivity,R.color.slab_green_over) Handler(Looper.getMainLooper()).post { time = timeOver (5000){ tv_title_slab.text = "已完成($it)" if (it == 0){ onBackPressed() } } } // android.os.Handler(Looper.getMainLooper()).post { // orderBean.data.orderState = 8 // showUi(orderBean) // } } } } }) app/src/main/java/com/okgoincar/slab/SlabTripActivity.kt
@@ -26,6 +26,7 @@ import com.okgoincar.base.AMapKit.initMap import com.okgoincar.base.AMapKit.moveCamera import com.okgoincar.base.BaseEvent import com.okgoincar.base.MoneyBroadCastReceiver import com.okgoincar.base.MyApplication import com.okgoincar.base.gpsnav.GPSNaviActivity import com.okgoincar.bean.OrderBean @@ -47,43 +48,18 @@ import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast import java.lang.Exception import java.util.concurrent.TimeUnit class SlabTripActivity : MySlabBaseActivity() { private fun callOver(contexts: Context, travelFee:Double){ if (MyApplication.currentOrderId.isEmpty()){ cn.sinata.xldutils.utils.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)) } MoneyBroadCastReceiver.callOver(contexts, travelFee) } private fun callStatue(contexts: Context, i: Int) { if (MyApplication.currentOrderId.isEmpty()){ cn.sinata.xldutils.utils.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)) } MoneyBroadCastReceiver.callStatue(contexts, i) } @@ -186,6 +162,7 @@ if (it.status == 10 || it.status == 12) { Handler(Looper.getMainLooper()).post { toast("用户已取消订单") MyApplication.getTTsManager().setVideoText("用户已取消订单") MyApplication.currentOrderType = "" MyApplication.currentOrderId = "" finish() @@ -215,7 +192,6 @@ tv_change.setBackgroundResource(R.drawable.bg_login) } } private fun onclick() { @@ -697,9 +673,15 @@ } BaseEvent.SURE_MONEY -> { startActivity<SlabOrderOverActivity>("orderId" to orderBean.data.orderId.toString() , "orderType" to "2") startActivity<SlabOrderOverActivity>( "orderId" to orderBean.data.orderId.toString(), "orderType" to "2" ) finish() } BaseEvent.ERROR_INFO -> { onBackPressed() } } } } app/src/main/res/drawable/mode_write_and_black.xml
@@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@mipmap/close_big" android:state_selected="true" /> <item android:drawable="@mipmap/close_write_c" android:state_selected="false" /> <item android:drawable="@mipmap/mode_black_config" android:state_selected="true" /> <item android:drawable="@mipmap/mode_write_config" android:state_selected="false" /> </selector> app/src/main/res/layout/activity_trip_slab.xml
@@ -16,14 +16,12 @@ android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_marginStart="150dp" android:visibility="gone" android:text="开始行程" android:layout_height="match_parent"/> <Button android:id="@+id/btn_end" android:layout_width="wrap_content" android:visibility="gone" android:layout_marginStart="300dp" android:text="结束行程" android:layout_height="match_parent"/> app/src/main/res/mipmap-xxhdpi/mode_black_config.png
app/src/main/res/mipmap-xxhdpi/mode_write_config.png
app/src/main/res/values/colors.xml
@@ -89,6 +89,7 @@ <color name="yellow_FFA72D">#FFA72D</color> <color name="slab_yellow_zhong">#ED5F08</color> <color name="slab_green_over">#7FC015</color> <color name="black_mode_383838">#383838</color> <color name="black_191919">#191919</color>