From 7b7cc2f730c1b6ae161205ad0fcbf7b0f43ff70e Mon Sep 17 00:00:00 2001 From: renwj Date: Wed, 16 Mar 2022 21:57:58 +0800 Subject: [PATCH] =?UTF-8?q?[BadCase]=E4=BC=98=E5=8C=96=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=90=8E=E5=86=97=E4=BD=99=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../badcase/BadCaseManager.kt | 4 +- .../badcase/mvp/BadCasePresenter.kt | 54 ------ .../badcase/mvp/BadCaseView.kt | 182 ------------------ .../badcase/mvp/biz/IBadCasePresenter.kt | 24 --- 4 files changed, 2 insertions(+), 262 deletions(-) delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCasePresenter.kt delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCaseView.kt delete mode 100644 core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/biz/IBadCasePresenter.kt 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 c83b4db0c7..2bf4e937eb 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 @@ -19,8 +19,8 @@ import com.mogo.eagle.core.utilcode.kotlin.onClick import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.utilcode.util.Utils import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason -import com.zhjt.mogo_core_function_devatools.badcase.mvp.BadCasePresenter -import com.zhjt.mogo_core_function_devatools.badcase.mvp.BadCaseView +import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCasePresenter +import com.zhjt.mogo_core_function_devatools.badcase.biz.BadCaseView import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord import kotlinx.coroutines.* import kotlinx.coroutines.channels.Channel diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCasePresenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCasePresenter.kt deleted file mode 100644 index 857b814f8a..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCasePresenter.kt +++ /dev/null @@ -1,54 +0,0 @@ -package com.zhjt.mogo_core_function_devatools.badcase.mvp - -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_DEVA -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.zhjt.mogo_core_function_devatools.badcase.BadCaseManager -import com.zhjt.mogo_core_function_devatools.badcase.api.entity.UploadResult -import com.zhjt.mogo_core_function_devatools.badcase.mvp.biz.IBadCasePresenter -import com.zhjt.mogo_core_function_devatools.badcase.repository.Repository -import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord - -internal class BadCasePresenter : IBadCasePresenter { - - private val repository by lazy { - Repository() - } - - override suspend fun loadBadCases() = repository.loadBadCases() - - override suspend fun insertRecord(record: AutoPilotRecord) { - try { - repository.insert(record) - } catch (t: Throwable) { - CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 插入数据失败 -- msg: $t") - } - } - - override suspend fun getUnConsumedRecords(): List { - return try { - repository.getAllUnConsumedRecord() ?: emptyList() - } catch (t: Throwable) { - CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 获取所有未消费的数据失败 -- msg: $t") - emptyList() - } - } - - override suspend fun deleteRecord(record: AutoPilotRecord) { - try { - repository.deleteRecord(record) - } catch (t: Throwable) { - CallerLogger.e("$M_DEVA${BadCaseManager.TAG}", "-- 删除某条记录失败 -- msg: $t") - } - } - - override suspend fun upload(map: Map): UploadResult? = repository.upload(map) - - override suspend fun updateLastModified(timestamp: Long) { - repository.uploadLastModified(timestamp) - } - - override suspend fun getLastModified(): Long { - CallerLogger.d("$M_DEVA${BadCaseManager.TAG}", " --- 2 ----") - return repository.getLastModified() - } -} \ 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/mvp/BadCaseView.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCaseView.kt deleted file mode 100644 index 5b1520531d..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/BadCaseView.kt +++ /dev/null @@ -1,182 +0,0 @@ -package com.zhjt.mogo_core_function_devatools.badcase.mvp - -import android.annotation.SuppressLint -import android.content.Context -import android.graphics.Color -import android.graphics.drawable.ColorDrawable -import android.graphics.drawable.GradientDrawable -import android.graphics.drawable.StateListDrawable -import android.util.AttributeSet -import android.util.StateSet -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.ImageView -import android.widget.TextView -import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.content.ContextCompat -import androidx.lifecycle.lifecycleScope -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.mogo.eagle.core.data.autopilot.AutoPilotRecordResult -import com.mogo.eagle.core.utilcode.kotlin.* -import com.mogo.eagle.core.utilcode.rv.divider.CommonDividerItemDecoration -import com.zhjt.mogo_core_function_devatools.R -import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason -import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord -import kotlinx.android.synthetic.main.layout_badcase_collect.view.* -import kotlinx.coroutines.launch -import java.text.SimpleDateFormat -import java.util.* - -internal class BadCaseView: ConstraintLayout { - - @Volatile - private var selectCase: Reason? = null - - @Volatile - private var cases: List? = null - - private val presenter by lazy { - BadCasePresenter() - } - - private var onDismiss: (() -> Unit)? = null - private var onSelect:(suspend (reason: Reason) -> Unit)? = null - - private val scope by lazy { - lifecycleOwner.lifecycleScope - } - - private var record: AutoPilotRecord? = null - - constructor(context: Context) : this(context, null) - - constructor(context: Context, attrs: AttributeSet?) : this(context, attrs, 0) - - @SuppressLint("SetTextI18n") constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { - LayoutInflater.from(context).inflate(R.layout.layout_badcase_collect, this, true) - background = ColorDrawable(Color.parseColor("#F0151D41")) - isClickable = true - layoutParams = ViewGroup.LayoutParams(960.toPixels().toInt(), 1528.toPixels().toInt()) - close?.onClick { - onDismiss?.invoke() - } - cancel?.also { - it.background = shape(solid = Color.parseColor("#3B4577"), radius = 16) - it.onClick { - onDismiss?.invoke() - } - } - ok?.also { - val enabled = gradient(radius = 16.toPixels().toInt(), orientation = GradientDrawable.Orientation.LEFT_RIGHT, centerX = 0.06f, startColor = Color.rgb(35, 146, 252), endColor = Color.rgb(28, 75, 252)) - val disabled = gradient(radius = 16.toPixels().toInt(), orientation = GradientDrawable.Orientation.LEFT_RIGHT, centerX = 0.06f, startColor = Color.rgb(24, 71, 129), endColor = Color.rgb(21, 46, 129)) - it.background = object : StateListDrawable() {}.also { itx -> - itx.addState(intArrayOf(android.R.attr.state_enabled), enabled) - itx.addState(StateSet.WILD_CARD, disabled) - } - it.onClick { - selectCase?.run { - scope.launch { - onSelect?.invoke(this@run) - } - } - } - } - scope.launchWhenCreated { - time_of_take_over?.text = "接管时间:${SimpleDateFormat("yyyy.MM.dd HH:mm", Locale.getDefault()).format(record?.toLongTime() ?: System.currentTimeMillis())}" - showLoading() - presenter.loadBadCases().also { - cases = it - refresh(it) - } - hideLoading() - } - } - - private fun refresh(causes: List) { - cases = causes - rv_take_over?.let { - it.layoutManager = LinearLayoutManager(it.context, LinearLayoutManager.VERTICAL, false) - it.addItemDecoration( - CommonDividerItemDecoration - .Builder() - .verticalInnerSpace(50.toPixels().toInt()) - .build()) - it.adapter = object : RecyclerView.Adapter() { - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BadCaseViewHolder = BadCaseViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.layout_badcase_item, parent, false)) - override fun onBindViewHolder(holder: BadCaseViewHolder, position: Int) { - val cases = cases - if (cases == null || cases.isEmpty()) { - return - } - if (position >= cases.size) { - return - } - val case = cases[position] - holder.bindData(case) - } - override fun getItemCount(): Int = cases?.size ?: 0 - } - } - } - - private fun showLoading() { - pb?.let { - it.visibility = View.VISIBLE - } - } - - private fun hideLoading() { - pb?.let { - it.visibility = View.INVISIBLE - } - } - - private inner class BadCaseViewHolder(item: View) : RecyclerView.ViewHolder(item) { - - private val check: ImageView = item.findViewById(R.id.check) - private val reason: TextView = item.findViewById(R.id.reason) - - init { - check.background = StateListDrawable().also { - it.addState(intArrayOf(android.R.attr.state_selected), ContextCompat.getDrawable(itemView.context, R.drawable.icon_ap_badcase_check)) - it.addState(StateSet.WILD_CARD, ContextCompat.getDrawable(itemView.context, R.drawable.icon_ap_badcase_default)) - } - } - - @SuppressLint("NotifyDataSetChanged") - fun bindData(case: Reason) { - check.isSelected = case.isChecked - reason.text = case.reason ?: "" - if (case.isChecked) { - ok?.isSelected = true - } - itemView.onClick { - case.isChecked = !case.isChecked - selectCase = case - cancelOtherChecked(case) - ok?.isEnabled = hasCheckedItem() - rv_take_over?.adapter?.notifyDataSetChanged() - } - } - - private fun hasCheckedItem(): Boolean = cases?.find { it.isChecked } != null - - private fun cancelOtherChecked(case: Reason) { - val cases = cases - if (cases == null || cases.isEmpty()) { - return - } - cases.filterNot { it == case }.forEach { - it.isChecked = false - } - } - } - - fun register(record: AutoPilotRecord?, onDismiss: () -> Unit, onSelect:suspend (reason: Reason) -> Unit) { - this.record = record - this.onDismiss = onDismiss - this.onSelect = onSelect - } -} \ 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/mvp/biz/IBadCasePresenter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/biz/IBadCasePresenter.kt deleted file mode 100644 index 4652dc9f60..0000000000 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/badcase/mvp/biz/IBadCasePresenter.kt +++ /dev/null @@ -1,24 +0,0 @@ -package com.zhjt.mogo_core_function_devatools.badcase.mvp.biz - -import com.zhjt.mogo_core_function_devatools.badcase.api.entity.BadCaseResponse.Reason -import com.zhjt.mogo_core_function_devatools.badcase.api.entity.UploadResult -import com.zhjt.mogo_core_function_devatools.badcase.repository.db.entity.AutoPilotRecord -import kotlinx.coroutines.flow.Flow - - -internal interface IBadCasePresenter { - - suspend fun loadBadCases(): List - - suspend fun updateLastModified(timestamp: Long) - - suspend fun getLastModified(): Long - - suspend fun upload(map: Map): UploadResult? - - suspend fun insertRecord(record: AutoPilotRecord) - - suspend fun getUnConsumedRecords(): List - - suspend fun deleteRecord(record: AutoPilotRecord) -} \ No newline at end of file