diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt index 1d6a1531e9..74ab25a390 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/BadCaseManager.kt @@ -14,6 +14,7 @@ import androidx.lifecycle.lifecycleScope import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +import com.mogo.eagle.core.utilcode.kotlin.PX import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.kotlin.lifecycleOwner import com.mogo.eagle.core.utilcode.kotlin.onClick @@ -251,7 +252,12 @@ internal object BadCaseManager : LifecycleEventObserver { val context = viewHolder?.get()?.context ?: Utils.getApp() BadCaseView(context).also { itx -> itx.register(record, onDismiss, onSelect) - hideFloat = CallerHmiManager.showFloatWindow("BadCaseFloat", floatView = itx, WindowManager.LayoutParams().also { it.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE}) + CallerHmiManager.showFloatWindow("BadCaseFloat", floatView = itx, WindowManager.LayoutParams().also { + it.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE + } + ).also { + hideFloat = it + } } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseView.kt index 732f057f5c..9447dd82c2 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/biz/BadCaseView.kt @@ -58,7 +58,7 @@ internal class BadCaseView: ConstraintLayout { LayoutInflater.from(context).inflate(R.layout.layout_badcase_collect, this, true) background = ColorDrawable(Color.parseColor("#F0151D41")) isClickable = true - layoutParams = ViewGroup.LayoutParams(960.PX, 1528.PX) + layoutParams = ViewGroup.LayoutParams(960.PX, 1600.PX) close?.onClick { onDismiss?.invoke() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/Repository.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/Repository.kt index 99604fe8bf..c559052c76 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/Repository.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/Repository.kt @@ -26,7 +26,21 @@ internal class Repository { } suspend fun loadBadCases(isDriven: Boolean): List { - return net.get()?.data?.takeIf { it.isNotEmpty() }?.also { store.updateRecords(it, isDriven) } ?: store.records(isDriven).takeIf { it.isNotEmpty() } ?: getBuildIn(isDriven) + return mutableListOf().also { itx -> + net.get(if (isDriven) "被动" else "主动", itx, 1) + itx + .takeIf { it.isNotEmpty() } + ?.also { + store.updateRecords(it, isDriven) + } + ?: + store + .records(isDriven) + .takeIf { + it.isNotEmpty() + } + ?: getBuildIn(isDriven) + } } suspend fun uploadLastModified(timestamp: Long) { @@ -34,7 +48,6 @@ internal class Repository { } suspend fun getLastModified(): Long { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", " --- 3 ----") return store.getLastModified() } @@ -45,37 +58,84 @@ internal class Repository { data += Reason().also { it.id = "1" it.reason = "变道有干扰" + it.channel = "被动" } data += Reason().also { it.id = "2" it.reason = "遇红绿灯未停车" + it.channel = "被动" } data += Reason().also { it.id = "3" it.reason = "遇障碍物未停车" + it.channel = "被动" } data += Reason().also { it.id = "4" it.reason = "无法绕行" + it.channel = "被动" } data += Reason().also { it.id = "5" it.reason = "画龙" + it.channel = "被动" } data += Reason().also { it.id = "6" it.reason = "转弯过于靠近路侧" + it.channel = "被动" } data += Reason().also { it.id = "7" it.reason = "无故退出自动驾驶" + it.channel = "被动" } data += Reason().also { it.id = "8" it.reason = "其它" + it.channel = "被动" } } else { - TODO() + data += Reason().also { + it.id = "1" + it.reason = "定位异常" + it.channel = "主动" + } + data += Reason().also { + it.id = "2" + it.reason = "画龙" + it.channel = "主动" + } + data += Reason().also { + it.id = "3" + it.reason = "红绿灯不识别" + it.channel = "主动" + } + data += Reason().also { + it.id = "4" + it.reason = "地图异常" + it.channel = "主动" + } + data += Reason().also { + it.id = "5" + it.reason = "感知异常" + it.channel = "主动" + } + data += Reason().also { + it.id = "6" + it.reason = "业务异常" + it.channel = "主动" + } + data += Reason().also { + it.id = "7" + it.reason = "显示异常" + it.channel = "主动" + } + data += Reason().also { + it.id = "8" + it.reason = "其它" + it.channel = "主动" + } } return data } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt index 40702a3b3c..4065bfabb5 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/BadCaseNetModel.kt @@ -5,28 +5,37 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.network.MoGoRetrofitFactory import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.BadCaseApi -import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.UploadResult import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseHost +import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse.Reason +import kotlinx.coroutines.withContext +import kotlin.coroutines.coroutineContext internal class BadCaseNetModel { - suspend fun get(): BadCaseResponse? = try { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from net -- 1 --") - MoGoRetrofitFactory - .getInstance(BadCaseHost.getHost()) - .create(BadCaseApi::class.java) - .get() - .takeIf { - val body = it.body() - it.isSuccessful && body != null && (body.code == 0 || body.code == 200) - } - ?.body()?.also { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from net -- 2 --") - } - } catch (t: Throwable) { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from net -- 3 --") - null + suspend fun get(channel: String?, result: MutableList, pageNo: Int) { + try { + MoGoRetrofitFactory + .getInstance(BadCaseHost.getHost()) + .create(BadCaseApi::class.java) + .get(channel ?: "", pageNo) + .takeIf { + val body = it.body() + it.isSuccessful && body != null && (body.code == 0 || body.code == 200) + } + ?.body()?.also { + val data = it.data + if (data == null || it.total <= result.size) { + return@also + } + result += data + withContext(coroutineContext) { + get(channel, result, pageNo + 1) + } + } + } catch (t: Throwable) { + CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "-- load cases from net error: $t") + } } suspend fun upload(map: Map): UploadResult? = try { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt index 989a46e1ad..44cfad5226 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/BadCaseApi.kt @@ -3,10 +3,7 @@ package com.zhjt.mogo_core_function_devatools.badcase.repository.net.api import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.BadCaseResponse import com.zhjt.mogo_core_function_devatools.badcase.repository.net.api.entity.UploadResult import retrofit2.Response -import retrofit2.http.FieldMap -import retrofit2.http.FormUrlEncoded -import retrofit2.http.GET -import retrofit2.http.POST +import retrofit2.http.* internal interface BadCaseApi { @@ -15,5 +12,5 @@ internal interface BadCaseApi { suspend fun post(@FieldMap map: Map): Response @GET("/yycp-vehicle-management-service/tool/badcase/reasons") - suspend fun get(): Response + suspend fun get(@Query("channel", encoded = true) channel: String, @Query("pageNo") pageNo: Int): Response } \ 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/badcase/repository/net/api/entity/BadCaseResponse.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/entity/BadCaseResponse.kt index 27dfff91ca..7829a4d9a9 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/entity/BadCaseResponse.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/net/api/entity/BadCaseResponse.kt @@ -8,16 +8,13 @@ internal class BadCaseResponse { var code: Int = -1 var data: List? = null var msg: String? = null - var success: Boolean = false var total: Int = -1 - @Expose(serialize = false, deserialize = false) - var isBuildIn: Boolean = false - @Keep class Reason { var id: String? = null var reason: String? = null + var channel: String? = null /** * 业务字段,不参与序列化和反序列化 @@ -25,21 +22,8 @@ internal class BadCaseResponse { @Expose(deserialize = false, serialize = false) var isChecked: Boolean = false - - override fun equals(other: Any?): Boolean { - if (javaClass != other?.javaClass) return false - other as Reason - if (id != other.id) return false - if (reason != other.reason) return false - if (isChecked != other.isChecked) return false - return true - } - - override fun hashCode(): Int { - var result = id?.hashCode() ?: 0 - result = 31 * result + (reason?.hashCode() ?: 0) - result = 31 * result + isChecked.hashCode() - return result + override fun toString(): String { + return "Reason(id=$id, reason=$reason, channel=$channel, isChecked=$isChecked)" } } } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/store/BadCaseStore.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/store/BadCaseStore.kt index 6eaf12a945..5b9c397444 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/store/BadCaseStore.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/repository/store/BadCaseStore.kt @@ -28,7 +28,6 @@ internal object BadCaseStore { get() = BadCauses.getDefaultInstance() override suspend fun readFrom(input: InputStream): BadCauses = suspendCancellableCoroutine { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "--- readFrom ---") it.invokeOnCancellation { Thread.currentThread().interrupt() } @@ -65,6 +64,7 @@ internal object BadCaseStore { data += Cause.newBuilder().let { it.id = itx.id it.reason = itx.reason + it.channel = itx.channel it.build() } } @@ -78,14 +78,12 @@ internal object BadCaseStore { } suspend fun updateLastModified(timestamp: Long): BadCauses { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", "--- updateLastModified ---") return store.updateData { itx -> itx.toBuilder().setLastModified(timestamp).build() } } suspend fun getLastModified(): Long { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", " --- 4 ----") return store .data .catch { @@ -107,6 +105,7 @@ internal object BadCaseStore { Reason().also { itx -> itx.id = it.id itx.reason = it.reason + itx.channel = it.channel } }?.fold(mutableListOf()) { acc, reason -> acc += reason diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt index 0cc37542ba..c7b61477cc 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/FeedbackManager.kt @@ -3,6 +3,7 @@ package com.zhjt.mogo_core_function_devatools.feedback import android.content.Context import android.text.TextUtils import android.util.Log +import android.view.ViewGroup import android.view.WindowManager import android.widget.TextView import com.mogo.cloud.passport.MoGoAiCloudClientConfig @@ -11,10 +12,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotIdentifyListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager import com.mogo.eagle.core.function.call.hmi.CallerHmiManager -import com.mogo.eagle.core.utilcode.kotlin.onDetach -import com.mogo.eagle.core.utilcode.kotlin.safeCancel -import com.mogo.eagle.core.utilcode.kotlin.scope -import com.mogo.eagle.core.utilcode.kotlin.toast +import com.mogo.eagle.core.utilcode.kotlin.* import com.mogo.eagle.core.utilcode.mogo.toast.TipToast import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.zhjt.mogo_core_function_devatools.R @@ -47,7 +45,7 @@ internal object FeedbackManager { fun showFeedbackWindow(ctx: Context) { - CallerHmiManager.showFloatWindow("FeedbackWindow", FeedBackView(ctx).also { itx -> + CallerHmiManager.showFloatWindow("Feedback", FeedBackView(ctx).also { itx -> itx.registerCallback(object : IFeedbackCallback { override fun onClose() { hideFloat?.invoke() @@ -130,7 +128,10 @@ internal object FeedbackManager { } } }) - }, WindowManager.LayoutParams().also { it.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN }).also { hideFloat = it } + }, WindowManager.LayoutParams().also { + it.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN + } + ).also { hideFloat = it } } private fun startRecordLog(record: AutoPilotRecord) { diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/FeedBackView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/FeedBackView.kt index 290c2ab5c9..2daa603a7f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/FeedBackView.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/FeedBackView.kt @@ -47,7 +47,7 @@ internal class FeedBackView : ConstraintLayout { } } } - layoutParams = ViewGroup.LayoutParams(960.PX, 1528.PX) + layoutParams = ViewGroup.LayoutParams(960.PX, 1600.PX) close.onClick { cb?.onClose() } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt index 335d25039d..23e49b641f 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/feedback/biz/adapter/vh/BadCaseFBViewHolder.kt @@ -108,7 +108,7 @@ internal class BadCaseFBViewHolder(cb: IFeedbackCallback?, parent: ViewGroup): F view.onClick { cb?.onBadCaseItemClicked(itx) } - view.layoutParams = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.MATCH_PARENT, FlexboxLayout.LayoutParams.WRAP_CONTENT).also { + view.layoutParams = FlexboxLayout.LayoutParams(FlexboxLayout.LayoutParams.WRAP_CONTENT, FlexboxLayout.LayoutParams.WRAP_CONTENT).also { it.flexBasisPercent = 0.5f } addView(view) diff --git a/core/function-impl/mogo-core-function-devatools/src/main/proto/badcase.proto b/core/function-impl/mogo-core-function-devatools/src/main/proto/badcase.proto index da39b611a9..d3b6edaf65 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/proto/badcase.proto +++ b/core/function-impl/mogo-core-function-devatools/src/main/proto/badcase.proto @@ -14,6 +14,7 @@ message BadCauses { message Cause { string id = 1; string reason = 2; + string channel = 3; } diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb.xml index 64cd7e29e5..8de9952e92 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/layout_fb.xml @@ -13,8 +13,7 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintBottom_toBottomOf="parent" - android:layout_marginBottom="120px"/> + app:layout_constraintBottom_toBottomOf="parent" /> ${it.animatedValue}, ${it.animatedFraction}, $value") } catch (e: Exception) { + Log.d("XXX", "exception ---> $e") cancel() } } 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 d7d8f7a213..7d319d46b7 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 @@ -242,7 +242,7 @@ class MoGoHmiFragment : MvpFragment .setAnimator(object : DefaultAnimator() { override fun enterAnim( view: View, - params: WindowManager.LayoutParams, + params:LayoutParams, windowManager: WindowManager, sidePattern: SidePattern ): Animator? = diff --git a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt index 9e17dc7e6a..8e86914b76 100644 --- a/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt +++ b/core/mogo-core-utils/src/main/java/com/mogo/eagle/core/utilcode/kotlin/Extensions.kt @@ -255,8 +255,12 @@ private class GestureConflictFixer(private val ids: List) : RecyclerView.On private fun computeIntercepted(x: Int, y: Int, rv: RecyclerView, ids: List): Boolean { return ids.takeIf { it.isNotEmpty() }?.find { val out = Rect() - rv.findViewById(it).getGlobalVisibleRect(out) - out.contains(x, y) + rv.findViewById(it)?.getGlobalVisibleRect(out) + if (!out.isEmpty) { + out.contains(x, y) + } else { + false + } }?.let { it != View.NO_ID } ?: false }