add func of configbiz and wait to finish

This commit is contained in:
zhongchao
2022-09-09 09:41:28 +08:00
parent ab64327b6c
commit 23a648483a
23 changed files with 512 additions and 49 deletions

View File

@@ -11,7 +11,7 @@ import com.mogo.eagle.core.data.deva.scene.SceneModule
import com.mogo.eagle.core.data.deva.scene.SceneTAG
import com.mogo.eagle.core.function.api.devatools.IDevaToolsProvider
import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager
import com.zhjt.mogo_core_function_devatools.funcconfig.BizConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigCenter.Companion.bizConfigCenter
import com.zhjt.mogo_core_function_devatools.logcatch.MogoLogCatchManager
import com.zhjt.mogo_core_function_devatools.monitor.MonitorManager
import com.zhjt.mogo_core_function_devatools.scene.SceneManager.Companion.sceneManager

View File

@@ -1,20 +0,0 @@
package com.zhjt.mogo_core_function_devatools.funcconfig
import android.content.Context
class BizConfigCenter {
companion object {
val bizConfigCenter by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
BizConfigCenter()
}
}
private var mContext: Context? = null
fun init(context: Context) {
mContext = context
}
}

View File

@@ -0,0 +1,79 @@
package com.zhjt.mogo_core_function_devatools.funcconfig
import android.content.Context
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_CLOUD_SHOW
import com.mogo.eagle.core.data.deva.chain.ChainConstant.Companion.CHAIN_LINK_LOG_CONNECT_STATUS
import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsFuncConfigListenerManager
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigConst.Companion.FUNC_CONFIG_TYPE
import com.zhjt.mogo_core_function_devatools.funcconfig.FuncConfigConst.Companion.defaultFuncConfig
import com.zhjt.mogo_core_function_devatools.funcconfig.network.FuncConfigNetWorkModel
import com.zhjt.service.chain.ChainLog
import com.zhjt.service.chain.TracingConstants
import com.zhjt.service_biz.BizManager
import com.zhjt.service_biz.FuncConfig
class FuncConfigCenter : IMogoOnMessageListener<FuncConfig> {
companion object {
val bizConfigCenter by lazy(LazyThreadSafetyMode.SYNCHRONIZED) {
FuncConfigCenter()
}
}
private var mContext: Context? = null
private val funcConfigNetWorkModel = FuncConfigNetWorkModel()
fun init(context: Context) {
mContext = context
MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext)
.registerOnMessageListener(FUNC_CONFIG_TYPE, this)
UiThreadHandler.postDelayed({
funcConfigNetWorkModel.requestFuncConfig({
refreshConfig(it)
}, {
refreshConfig(defaultFuncConfig())
})
}, 2000L)
}
override fun target(): Class<FuncConfig> {
return FuncConfig::class.java
}
override fun onMsgReceived(obj: FuncConfig?) {
obj?.let {
refreshConfig(it)
}
}
@ChainLog(
linkChainLog = CHAIN_LINK_LOG_CONNECT_STATUS,
linkCode = CHAIN_LINK_CLOUD_SHOW,
endpoint = TracingConstants.Endpoint.PAD,
nodeAliasCode = CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED,
paramIndexes = [0],
clientPkFileName = "sn"
)
private fun refreshConfig(funcConfig: FuncConfig) {
BizManager.updateBizConfigData(funcConfig)
funcConfig.business.forEach { business ->
CallerDevaToolsFuncConfigListenerManager.invokeDevaToolsFuncConfigBizUpdate(
business.biz,
business.data
)
}
}
fun onDestroy() {
MogoAiCloudSocketManager.getInstance(AbsMogoApplication.getApp().applicationContext)
.unregisterLifecycleListener(FUNC_CONFIG_TYPE)
mContext = null
}
}

View File

@@ -1,9 +1,108 @@
package com.zhjt.mogo_core_function_devatools.funcconfig
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_AUTOPILOT_LANE_SELECTION
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_AVW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BAG_RECORD
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BEAUTY_MODE
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BSW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_BYPASS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_CLW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_DNPW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_EBW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_FCW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_FULL_LOG
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_HLW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP_GREEN
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LCW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LIMIT_SPEED_SET
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_LTA
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_OPT_LINE
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RAIN_MODE
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_SLW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_TJW
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_TRACE_LOG
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VIP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VRU
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VRU_RI
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_WARNING_UPLOAD
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.FOUNDATION
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2V
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.eagle.core.utilcode.util.AppUtils
import com.zhjt.service_biz.Business
import com.zhjt.service_biz.FuncConfig
import com.zhjt.service_biz.SubBiz
class FuncConfigConst {
companion object{
const val FUNC_CONFIG_TYPE = 500001
fun defaultFuncConfig(): FuncConfig {
val businessList = mutableListOf<Business>()
val v2nSubList = mutableListOf<SubBiz>()
v2nSubList.add(SubBiz(BIZ_VIP, lock = false, state = true, dependNode = "", data = ""))
v2nSubList.add(SubBiz(BIZ_OPT_LINE, lock = false, state = false, dependNode = "", data = ""))
v2nSubList.add(SubBiz(BIZ_VRU, lock = false, state = true, dependNode = "", data = ""))
v2nSubList.add(SubBiz(BIZ_VRU_RI, lock = false, state = true, dependNode = "", data = ""))
v2nSubList.add(SubBiz(BIZ_HLW, lock = false, state = true, dependNode = "", data = ""))
businessList.add(Business(V2N, v2nSubList))
val v2iSubList = mutableListOf<SubBiz>()
v2iSubList.add(SubBiz(BIZ_IVP_GREEN, lock = false, state = true, dependNode = "", data = ""))
v2iSubList.add(SubBiz(BIZ_IVP, lock = false, state = true, dependNode = "", data = ""))
v2iSubList.add(SubBiz(BIZ_RTS, lock = false, state = true, dependNode = "", data = ""))
v2iSubList.add(SubBiz(BIZ_SLW, lock = false, state = true, dependNode = "", data = ""))
v2iSubList.add(SubBiz(BIZ_IVS, lock = false, state = true, dependNode = "", data = ""))
v2iSubList.add(SubBiz(BIZ_TJW, lock = false, state = true, dependNode = "", data = ""))
businessList.add(Business(V2I,v2iSubList))
val v2vSubList = mutableListOf<SubBiz>()
v2vSubList.add(SubBiz(BIZ_AVW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_LCW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_BSW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_EBW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_FCW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_LTA, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_CLW, lock = false, state = true, dependNode = "", data = ""))
v2vSubList.add(SubBiz(BIZ_DNPW, lock = false, state = true, dependNode = "", data = ""))
businessList.add(Business(V2V,v2vSubList))
val foundationSubList = mutableListOf<SubBiz>()
foundationSubList.add(SubBiz(BIZ_BEAUTY_MODE, lock = false, state = false, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_RAIN_MODE, lock = false, state = false, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_FULL_LOG, lock = false, state = false, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_TRACE_LOG, lock = false, state = true, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_BAG_RECORD, lock = false, state = true, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_WARNING_UPLOAD, lock = false, state = true, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_LIMIT_SPEED_SET, lock = false, state = true, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_BYPASS, lock = false, state = true, dependNode = "", data = ""))
foundationSubList.add(SubBiz(BIZ_AUTOPILOT_LANE_SELECTION, lock = false, state = true, dependNode = "", data = ""))
businessList.add(Business(FOUNDATION,foundationSubList))
return FuncConfig(0, AppUtils.getAppVersionCode(), getChannel(), AppUtils.getAppVersionCode(), businessList)
}
private fun getChannel(): Int{
return when{
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> 1
AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)
&& AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) -> 2
AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
&& AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode) -> 3
AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
&& AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode) -> 4
else -> 0
}
}
}
}

View File

@@ -0,0 +1,16 @@
package com.zhjt.mogo_core_function_devatools.funcconfig.network
import com.mogo.eagle.core.data.BaseResponse
import com.zhjt.service_biz.FuncConfig
import retrofit2.http.Body
import retrofit2.http.Headers
import retrofit2.http.POST
interface FuncConfigApiService {
//FuncConfig
@Headers("Content-Type:application/json;charset=UTF-8")
@POST("/test")
suspend fun funcConfig(@Body map: MutableMap<String, Any>): BaseResponse<FuncConfig>
}

View File

@@ -0,0 +1,22 @@
package com.zhjt.mogo_core_function_devatools.funcconfig.network
import com.mogo.commons.debug.DebugConfig
class FuncConfigHost {
companion object{
private const val HOST_DEV = "http://dzt-test.zhidaozhixing.com/"
private const val HOST_RELEASE = "http://dzt.zhidaozhixing.com/"
fun get(): String{
return when (DebugConfig.getNetMode()) {
DebugConfig.NET_MODE_DEV -> HOST_DEV
DebugConfig.NET_MODE_QA -> HOST_DEV
DebugConfig.NET_MODE_DEMO -> HOST_RELEASE
DebugConfig.NET_MODE_RELEASE -> HOST_RELEASE
else -> HOST_RELEASE
}
}
}
}

View File

@@ -0,0 +1,52 @@
package com.zhjt.mogo_core_function_devatools.funcconfig.network
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseResponse
import com.mogo.eagle.core.data.app.AppConfigInfo
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.request
import com.zhjt.service_biz.FuncConfig
class FuncConfigNetWorkModel {
private fun getNetWorkApi(baseUrl: String = FuncConfigHost.get()): FuncConfigApiService {
return MoGoRetrofitFactory.getInstanceNoCallAdapter(baseUrl)
.create(FuncConfigApiService::class.java)
}
private var retryTime = 0
fun requestFuncConfig(onSuccess: ((FuncConfig) -> Unit), onError: ((String) -> Unit)) {
request<BaseResponse<FuncConfig>> {
loader {
val map = mutableMapOf<String, Any>()
map["sn"] = MoGoAiCloudClientConfig.getInstance().sn
map["env"] = DebugConfig.getNetMode()
map["appVersionCode"] = AppConfigInfo.appVersionCode
getNetWorkApi().funcConfig(map)
}
onSuccess {
if (it.result != null) {
onSuccess.invoke(it.result)
} else {
if (retryTime <= 3) {
retryTime += 1
requestFuncConfig(onSuccess, onError)
} else {
onError.invoke("manualControl result is null")
}
}
}
onError {
if (retryTime <= 3) {
retryTime += 1
requestFuncConfig(onSuccess, onError)
} else if (it.message != null) {
onError.invoke(it.message!!)
}
}
}
}
}

View File

@@ -29,6 +29,9 @@ import com.mogo.eagle.core.data.camera.CameraEntity
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.config.HmiBuildConfig
import com.mogo.eagle.core.data.constants.MoGoFragmentPaths
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_RTS
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.data.enums.SidePattern
import com.mogo.eagle.core.data.enums.SidePattern.*
import com.mogo.eagle.core.data.enums.WarningDirectionEnum
@@ -88,6 +91,7 @@ import com.mogo.eagle.core.utilcode.util.TimeUtils.millis2String
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.module.common.enums.*
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
import com.zhjt.service_biz.BizConfig
import kotlinx.android.synthetic.main.fragment_hmi.*
import kotlinx.android.synthetic.main.view_auto_pilot_check.view.*
import kotlinx.android.synthetic.main.view_och_bus_operation.view.*
@@ -328,14 +332,6 @@ import java.util.*
mViewNotificationProvider = provider
}
override fun showVideoDialog(infList: List<Infrastructure>) {
context?.let {
if (roadVideoDialog == null) {
roadVideoDialog = RoadVideoDialog(it)
}
roadVideoDialog?.show(infList)
}
}
override fun changeBusOperationStatus(isOut: Boolean) {
busOperationStatus?.changerOperationStatus(isOut)
@@ -1034,6 +1030,17 @@ import java.util.*
dismissToolsFloatView()
}
@BizConfig(V2I,"",BIZ_RTS)
override fun showVideoDialog(infList: List<Infrastructure>) {
context?.let {
if (roadVideoDialog == null) {
roadVideoDialog = RoadVideoDialog(it)
}
roadVideoDialog?.show(infList)
}
}
@BizConfig(V2I,"", BIZ_RTS)
private fun showCameraList(cameraList: List<CameraEntity>?) {
context?.let {
if (cameraViewFloat == null) {

View File

@@ -153,7 +153,7 @@ class MoGoMapDataCollectProvider : IMoGoMapDataCollectProvider, OnTaskListener,
executor.get()?.updateLocation(
location.longitude,
location.latitude,
location.altitude,
location.altitude,
location.bearing,
location.speed,
location.provider == "GPS_RTK")

View File

@@ -1,6 +1,9 @@
package com.mogo.eagle.core.function.v2x.redlightwarning
import android.location.Location
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_IVP_GREEN
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2I
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.data.map.MogoLatLng
import com.mogo.eagle.core.data.trafficlight.*
@@ -16,6 +19,7 @@ import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.module.common.MogoApisHandler
import com.mogo.module.common.enums.EventTypeEnum
import com.zhjt.service_biz.BizConfig
import kotlin.math.abs
import kotlin.math.ceil
import kotlin.math.floor
@@ -162,6 +166,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
/**
* 闯红灯预警
*/
@BizConfig(V2I,"",BIZ_IVP)
private fun redLightWarning() {
CallerLogger.d("$M_V2X$TAG", "=====闯红灯预警=====")
ThreadUtils.runOnUiThread {
@@ -172,6 +177,7 @@ class RedLightWarningManager : IMoGoTrafficLightListener, IMoGoVipSetListener,
/**
* 绿灯通行提示
*/
@BizConfig(V2I,"",BIZ_IVP_GREEN)
private fun greenLightWarning(speed: String = "50") {
CallerLogger.d("$M_V2X$TAG", "=====绿灯通行预警=====")
ThreadUtils.runOnUiThread {

View File

@@ -5,23 +5,26 @@ import android.location.Location
import android.os.Handler
import android.os.Looper
import android.os.Message
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager
import com.mogo.cloud.commons.utils.CoordinateUtils
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.BIZ_VIP
import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig.Companion.V2N
import com.mogo.eagle.core.data.trafficlight.*
import com.mogo.eagle.core.data.v2x.VipMessage
import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
import com.mogo.eagle.core.function.api.trafficlight.IMoGoTrafficLightListener
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.function.call.trafficlight.CallerTrafficLightListenerManager
import com.mogo.eagle.core.function.call.vip.CallVipSetListenerManager
import com.mogo.eagle.core.function.v2x.trafficlight.core.MogoTrafficLightManager
import com.mogo.eagle.core.function.v2x.vip.network.VipNetWorkModel
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_V2X
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.module.common.enums.EventTypeEnum
import com.mogo.aicloud.services.socket.IMogoOnMessageListener
import com.zhjt.service_biz.BizConfig
import kotlin.math.abs
class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListener,
@@ -78,6 +81,7 @@ class VipCarManager : IMogoOnMessageListener<VipMessage>, IMoGoTrafficLightListe
return VipMessage::class.java
}
@BizConfig(V2N, "", BIZ_VIP)
override fun onMsgReceived(vipMessage: VipMessage?) {
CallerLogger.d("$M_V2X$TAG", "onMsgReceived vipMessage : ${vipMessage.toString()}")
vipMessage?.let {