diff --git a/build.gradle b/build.gradle index 2d52e63827..786ea8b61e 100644 --- a/build.gradle +++ b/build.gradle @@ -32,6 +32,7 @@ buildscript { classpath 'com.tencent.bugly:symtabfileuploader:2.2.1' classpath "com.bytedance.android.byteX:base-plugin:0.3.0" classpath "com.mogo.cloud:hook:${HOOK_LOG_VERSION}" + classpath "com.mogo.cloud:bizconfig:${BIZCONFIG_VERSION}" classpath 'com.volcengine:apm_insight_plugin:1.4.1' classpath 'com.mogo.thread.opt:plg:2.2.12' classpath 'com.mogo.cloud:systrace:1.0.1' diff --git a/config.gradle b/config.gradle index 0341f9f4a2..b2b2ca68d5 100644 --- a/config.gradle +++ b/config.gradle @@ -1,22 +1,6 @@ ext { time = "" kotlin_version = "1.4.31" - android = [ - launcherApplicationId : "com.mogo.launcher", - independentApplicationId : "com.mogo.launcher.app", - fLauncherApplicationId : "com.mogo.launcher.f", - bydautoIndependentApplicationId: "com.mogo.launcher.app.bydauto", - fLauncherAmapApiValue : "ace34d685cc04836c03905e4d1536125", - bydautoIndependentApiValue : "b1e1d527b02a493913c50985827c943a", - commonLauncherAmapApiValue : "a36b9f7b086fa3951bb35338a5a06dd3", - commonIndependentAmapApiValue : "1c3fbc5f5e183619ffb1e7bc01e6751f", - compileSdkVersion : 29, - buildToolsVersion : "29.0.2", - minSdkVersion : 21, - targetSdkVersion : 21, - minSdkVersionPadLenovo : 23, - targetSdkVersionPadLenovo : 23, - ] dependencies = [ // androidx androidxappcompat : "androidx.appcompat:appcompat:1.3.1", @@ -134,6 +118,8 @@ ext { //plugin mogochainbase : "com.mogo.cloud:service-chain:${SERVICE_CHAIN_VERSION}", mogochainplugin : "com.mogo.cloud:hook:${HOOK_LOG_VERSION}", + mogoservicebiz : "com.mogo.cloud:service-biz:${SERVICE_BIZ_VERSION}", + mogobizconfig : "com.mogo.cloud:bizconfig:${BIZCONFIG_VERSION}", //========================= 旧版本架构 Maven 版本管理 ========================= // modules @@ -250,6 +236,22 @@ ext { koomnative : "com.kuaishou.koom:koom-native-leak-static:2.2.0", koomxhook : "com.kuaishou.koom:xhook-static:2.2.0" ] + android = [ + launcherApplicationId : "com.mogo.launcher", + independentApplicationId : "com.mogo.launcher.app", + fLauncherApplicationId : "com.mogo.launcher.f", + bydautoIndependentApplicationId: "com.mogo.launcher.app.bydauto", + fLauncherAmapApiValue : "ace34d685cc04836c03905e4d1536125", + bydautoIndependentApiValue : "b1e1d527b02a493913c50985827c943a", + commonLauncherAmapApiValue : "a36b9f7b086fa3951bb35338a5a06dd3", + commonIndependentAmapApiValue : "1c3fbc5f5e183619ffb1e7bc01e6751f", + compileSdkVersion : 29, + buildToolsVersion : "29.0.2", + minSdkVersion : 21, + targetSdkVersion : 21, + minSdkVersionPadLenovo : 23, + targetSdkVersionPadLenovo : 23, + ] } boolean isM1Chip() { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt index e41ecf8891..72fb167642 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/DevaToolsProvider.kt @@ -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 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/BizConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/BizConfigCenter.kt deleted file mode 100644 index 2bc659b312..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/BizConfigCenter.kt +++ /dev/null @@ -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 - } - - -} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt new file mode 100644 index 0000000000..537098d1c0 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigCenter.kt @@ -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 { + + 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 { + 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 + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt index 2849c42fb6..9737fed782 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/FuncConfigConst.kt @@ -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() + + val v2nSubList = mutableListOf() + 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() + 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() + 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() + 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 + } + } } } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigApiService.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigApiService.kt new file mode 100644 index 0000000000..84fa0cb69c --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigApiService.kt @@ -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): BaseResponse + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigHost.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigHost.kt new file mode 100644 index 0000000000..fde2a2a3d1 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigHost.kt @@ -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 + } + } + } + +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt new file mode 100644 index 0000000000..e34bd791f4 --- /dev/null +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/funcconfig/network/FuncConfigNetWorkModel.kt @@ -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> { + loader { + val map = mutableMapOf() + 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!!) + } + } + + } + } +} \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt index 4bdb0a6522..266a44f367 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/MoGoHmiFragment.kt @@ -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) { - 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) { + context?.let { + if (roadVideoDialog == null) { + roadVideoDialog = RoadVideoDialog(it) + } + roadVideoDialog?.show(infList) + } + } + + @BizConfig(V2I,"", BIZ_RTS) private fun showCameraList(cameraList: List?) { context?.let { if (cameraViewFloat == null) { diff --git a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/collect/MoGoMapDataCollectProvider.kt b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/collect/MoGoMapDataCollectProvider.kt index 6deeeabac3..71daa8d2d2 100644 --- a/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/collect/MoGoMapDataCollectProvider.kt +++ b/core/function-impl/mogo-core-function-map/src/main/java/com/mogo/eagle/core/function/impl/collect/MoGoMapDataCollectProvider.kt @@ -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") diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt index feb8c877d3..66acaf96d6 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/redlightwarning/RedLightWarningManager.kt @@ -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 { diff --git a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt index 7b8c2410c1..c08f0490ba 100644 --- a/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt +++ b/core/function-impl/mogo-core-function-v2x/src/main/java/com/mogo/eagle/core/function/v2x/vip/VipCarManager.kt @@ -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, IMoGoTrafficLightListener, @@ -78,6 +81,7 @@ class VipCarManager : IMogoOnMessageListener, 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 { diff --git a/core/mogo-core-data/build.gradle b/core/mogo-core-data/build.gradle index 8405737a50..d401bf83d2 100644 --- a/core/mogo-core-data/build.gradle +++ b/core/mogo-core-data/build.gradle @@ -65,6 +65,7 @@ dependencies { implementation rootProject.ext.dependencies.mogo_core_res } else { implementation project(':core:mogo-core-res') + implementation project(':core:mogo-core-data') api project(":libraries:mogo-adas-data") } } diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt new file mode 100644 index 0000000000..36f6ec63a2 --- /dev/null +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/bizconfig/FuncBizConfig.kt @@ -0,0 +1,46 @@ +package com.mogo.eagle.core.data.deva.bizconfig + +class FuncBizConfig { + + companion object{ + const val V2N = "V2N" + const val V2I = "V2I" + const val V2V = "V2V" + const val FOUNDATION = "FOUNDATION" + + // V2N + const val BIZ_VIP = "BIZ_VIP" // vip变灯 + const val BIZ_OPT_LINE = "BIZ_OPT_LINE" // 最优车道 todo + const val BIZ_VRU = "BIZ_VRU" // 弱势交通 todo + const val BIZ_VRU_RI = "BIZ_VRU_RI" // 弱势交通逆行 todo + const val BIZ_HLW = "BIZ_HLW" // 道路提示 todo + // V2I + const val BIZ_IVP_GREEN = "BIZ_IVP_GREEN" // 绿波通行 + const val BIZ_IVP = "BIZ_IVP" // 闯红灯预警 + const val BIZ_RTS = "BIZ_RTS" // 查看视频流 + const val BIZ_SLW = "BIZ_SLW" // 限速提醒 todo + const val BIZ_IVS = "BIZ_IVS" // 车内标识 todo + const val BIZ_TJW = "BIZ_TJW" // 道路拥堵 todo + // V2V + const val BIZ_AVW = "BIZ_AVW" // 异常车辆提醒 + const val BIZ_LCW = "BIZ_LCW" // 变道碰撞预警 + const val BIZ_BSW = "BIZ_BSW" // 盲区碰撞预警 + const val BIZ_EBW = "BIZ_EBW" // 前车急刹预警 + const val BIZ_FCW = "BIZ_FCW" // 前向碰撞预警 + const val BIZ_LTA = "BIZ_LTA" // 左转辅助预警 + const val BIZ_CLW = "BIZ_CLW" // 车辆失控预警 + const val BIZ_DNPW = "BIZ_DNPW" // 逆向超车预警 + // Foundation + const val BIZ_BEAUTY_MODE = "BIZ_BEAUTY_MODE" // 美化模式 + const val BIZ_RAIN_MODE = "BIZ_RAIN_MODE" // 雨天模式 + const val BIZ_FULL_LOG = "BIZ_FULL_LOG" // 全量日志 + const val BIZ_TRACE_LOG = "BIZ_TRACE_LOG" // 链路日志 + const val BIZ_BAG_RECORD = "BIZ_BAG_RECORD" // Bag录制 + const val BIZ_WARNING_UPLOAD = "BIZ_WARNING_UPLOAD" // 异常上报 + const val BIZ_LIMIT_SPEED_SET = "BIZ_LIMIT_SPEED_SET" // 限速设置 + const val BIZ_BYPASS = "BIZ_BYPASS" // 绕障 + const val BIZ_AUTOPILOT_LANE_SELECTION = "BIZ_AUTOPILOT_LANE_SELECTION" // 择机变道 + + + } +} \ No newline at end of file diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt index bf710b77f2..f5fb8b59b9 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/deva/chain/ChainConstant.kt @@ -59,6 +59,7 @@ class ChainConstant { const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_LOST" const val CHAIN_ALIAS_CODE_CLOUD_CONNECT_ERROR = "CHAIN_ALIAS_CODE_CLOUD_CONNECT_ERROR" const val CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED = "CHAIN_ALIAS_CODE_HTTP_DNS_CHANGED" + const val CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED = "CHAIN_ALIAS_CODE_FUNC_CONFIG_CHANGED" const val CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED = "CHAIN_ALIAS_CODE_INIT_ON_MAP_LOADED" const val CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT = "CHAIN_ALIAS_CODE_INIT_ON_MAP_INIT" diff --git a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/WarningDirectionEnum.kt b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/WarningDirectionEnum.kt index c1b1229f40..a492e75343 100644 --- a/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/WarningDirectionEnum.kt +++ b/core/mogo-core-data/src/main/java/com/mogo/eagle/core/data/enums/WarningDirectionEnum.kt @@ -1,5 +1,18 @@ package com.mogo.eagle.core.data.enums + +fun WarningDirectionEnum.isLeft():Boolean{ + return this.direction == WarningDirectionEnum.ALERT_WARNING_LEFT.direction + || this.direction == WarningDirectionEnum.ALERT_WARNING_TOP_LEFT.direction + || this.direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_LEFT.direction +} + +fun WarningDirectionEnum.isRight():Boolean{ + return this.direction == WarningDirectionEnum.ALERT_WARNING_RIGHT.direction + || this.direction == WarningDirectionEnum.ALERT_WARNING_TOP_RIGHT.direction + || this.direction == WarningDirectionEnum.ALERT_WARNING_BOTTOM_RIGHT.direction +} + /** *@author xiaoyuzhou *@date 2021/9/10 8:48 下午 diff --git a/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt new file mode 100644 index 0000000000..f600e1b437 --- /dev/null +++ b/core/mogo-core-function-api/src/main/java/com/mogo/eagle/core/function/api/devatools/IMoGoDevaToolsFuncConfigListener.kt @@ -0,0 +1,14 @@ +package com.mogo.eagle.core.function.api.devatools + +/** + * FuncConfig 功能配置业务回调 + */ +interface IMoGoDevaToolsFuncConfigListener { + + /** + * 更新业务数据,注意⚠️:需要由业务方判断具体type,业务聚合 + * type : biz类型 (FuncBizConfig) + * data : json + */ + fun updateBizData(type: String, data: String?) +} \ No newline at end of file diff --git a/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt new file mode 100644 index 0000000000..56915703c9 --- /dev/null +++ b/core/mogo-core-function-call/src/main/java/com/mogo/eagle/core/function/call/devatools/CallerDevaToolsFuncConfigListenerManager.kt @@ -0,0 +1,70 @@ +package com.mogo.eagle.core.function.call.devatools + +import androidx.annotation.Nullable +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsFuncConfigListener +import com.zhjt.service_biz.SubBiz +import java.util.concurrent.ConcurrentHashMap + +object CallerDevaToolsFuncConfigListenerManager { + + private val M_DEVA_TOOLS_FUNC_CONFIG_LISTENER: ConcurrentHashMap = + ConcurrentHashMap() + + /** + * 添加监听 + * @param tag 标记,用来注销监听使用 + * @param listener 监听回调 + */ + fun registerDevaToolsFuncConfigListener( + @Nullable biz: String, + @Nullable tag: String, + @Nullable listener: IMoGoDevaToolsFuncConfigListener + ) { + if (M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsKey("$biz'_'$tag")) { + return + } + M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener + } + + /** + * 删除监听 + * @param tag 标记,用来注销监听使用 + */ + fun unRegisterDevaToolsFuncConfigListener(@Nullable biz: String, @Nullable tag: String) { + if (!M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsKey("$biz'_'$tag")) { + return + } + M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.remove("$biz'_'$tag") + } + + /** + * 删除监听 + * @param listener 要删除的监听对象 + */ + fun unRegisterDevaToolsFuncConfigListener(@Nullable listener: IMoGoDevaToolsFuncConfigListener) { + if (!M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsValue(listener)) { + return + } + M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.forEach { + if (it.value == listener) { + M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.remove(it.key) + } + } + } + + /** + * 由订阅方判断Type类型,聚合一些 + */ + fun invokeDevaToolsFuncConfigBizUpdate(biz: String, list: MutableList) { + M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.forEach { + val key = it.key + if (key.contains(biz)) { + list.forEach { subBiz -> + val listener = it.value + listener.updateBizData(subBiz.type, subBiz.data) + } + } + } + } + +} \ No newline at end of file diff --git a/core/mogo-core-utils/build.gradle b/core/mogo-core-utils/build.gradle index 45d9d9af7e..692a87bf80 100644 --- a/core/mogo-core-utils/build.gradle +++ b/core/mogo-core-utils/build.gradle @@ -78,6 +78,7 @@ dependencies { api rootProject.ext.dependencies.life_cycle_java8 api rootProject.ext.dependencies.mogochainbase + api rootProject.ext.dependencies.mogoservicebiz } apply from: new File(rootProject.rootDir, "gradle/upload.gradle").toString() diff --git a/gradle.properties b/gradle.properties index 349da26c0a..ab9b6e8ea8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -58,6 +58,9 @@ bytex.ASM_API=ASM7 HOOK_LOG_VERSION=1.6.1 SERVICE_CHAIN_VERSION=1.1.0 + +BIZCONFIG_VERSION=1.1.4 +SERVICE_BIZ_VERSION=1.1.12 ################ 外部依赖引用 ################ # loglib LOGLIB_VERSION=1.3.38 diff --git a/libraries/mogo-adas/build.gradle b/libraries/mogo-adas/build.gradle index 153ecfbe94..d862918df2 100644 --- a/libraries/mogo-adas/build.gradle +++ b/libraries/mogo-adas/build.gradle @@ -68,6 +68,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation rootProject.ext.dependencies.androidxappcompat implementation rootProject.ext.dependencies.mogochainbase + implementation rootProject.ext.dependencies.mogoservicebiz //okhttp3的依赖 implementation 'com.squareup.okhttp3:okhttp:3.12.3' // parser diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeHelper.kt b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeHelper.kt new file mode 100644 index 0000000000..69ea587db8 --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/enums/EventTypeHelper.kt @@ -0,0 +1,45 @@ +package com.mogo.module.common.enums + +import com.mogo.eagle.core.data.enums.WarningDirectionEnum +import com.mogo.eagle.core.data.enums.isLeft +import com.mogo.eagle.core.data.enums.isRight + +class EventTypeHelper { + + companion object { + + fun getLCW( + direction: WarningDirectionEnum, + data: ((alertContent: String, ttsContent: String) -> Unit) + ) { + when { + direction.isLeft() -> { + data.invoke( + EventTypeEnum.getWarningContent(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType + "左"), + EventTypeEnum.getWarningTts(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType + "左") + ) + } + direction.isRight() -> { + data.invoke( + EventTypeEnum.getWarningContent(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType + "右"), + EventTypeEnum.getWarningTts(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType + "右") + ) + } + else -> { + data.invoke( + EventTypeEnum.getWarningContent(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType), + EventTypeEnum.getWarningTts(EventTypeEnum.TYPE_USECASE_ID_LCW.poiType) + ) + } + } + } + + fun getCLW( + direction: WarningDirectionEnum, + data: ((alertContent: String, ttsContent: String) -> Unit) + ){ + data.invoke(EventTypeEnum.getWarningContent(EventTypeEnum.TYPE_USECASE_ID_CLW.poiType + direction.desc) + ,EventTypeEnum.getWarningContent(EventTypeEnum.TYPE_USECASE_ID_CLW.poiType + direction.desc)) + } + } +} \ No newline at end of file