From 3a3a7c10bd018130d3b78ddfe05da95b0feac82c Mon Sep 17 00:00:00 2001 From: renhaoting <370797079@qq.com> Date: Wed, 24 Dec 2025 14:30:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=89=E7=A7=8D=E8=AE=B0=E5=BD=95manager=20?= =?UTF-8?q?=E5=AE=9A=E4=B9=89=E5=8F=8A=E5=AD=98=E5=8F=96=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gamedog/vididin/beans/RecordCash.kt | 4 +- .../com/gamedog/vididin/beans/RecordGold.kt | 3 +- .../com/gamedog/vididin/beans/RecordZero.kt | 11 ++ .../withdrawrecord/RecordCashRvAdapter.kt | 4 +- .../withdrawrecord/RecordGoldRvAdapter.kt | 3 +- .../gamedog/vididin/manager/RecordsManager.kt | 150 ++++++++++++++++++ .../ama/core/architecture/util/AndroidUtil.kt | 32 +++- .../com/ama/core/architecture/util/SpUtil.kt | 6 +- 8 files changed, 198 insertions(+), 15 deletions(-) create mode 100644 app/src/main/java/com/gamedog/vididin/beans/RecordZero.kt create mode 100644 app/src/main/java/com/gamedog/vididin/manager/RecordsManager.kt diff --git a/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt index dfce400..0cef1d9 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordCash.kt @@ -2,14 +2,14 @@ package com.gamedog.vididin.beans data class RecordCash( val id: Long, - val dateTime: String, + val dateTime: Long, val status: TransactionStatus, val statusText: String, val description: String, val amount: String, - val amountColor: Int ) + enum class TransactionStatus { SUCCESS, FAILED, PROCESSING, REDEEM } \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt index dd81f46..bb41458 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordGold.kt @@ -2,11 +2,10 @@ package com.gamedog.vididin.beans data class RecordGold( val id: Long, - val dateTime: String, + val dateTime: Long, val status: TransactionStatus, val statusText: String, val description: String, val amount: String, - val amountColor: Int ) diff --git a/app/src/main/java/com/gamedog/vididin/beans/RecordZero.kt b/app/src/main/java/com/gamedog/vididin/beans/RecordZero.kt new file mode 100644 index 0000000..9fbe785 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/beans/RecordZero.kt @@ -0,0 +1,11 @@ +package com.gamedog.vididin.beans + +data class RecordZero( + val id: Long, + val dateTime: Long, + val status: TransactionStatus, + val statusText: String, + val description: String, + val amount: String, +) + diff --git a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt index 3624646..16d968d 100644 --- a/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt +++ b/app/src/main/java/com/gamedog/vididin/features/withdrawrecord/RecordCashRvAdapter.kt @@ -7,6 +7,7 @@ import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView import com.gamedog.vididin.beans.RecordCash +import java.text.SimpleDateFormat import com.vididin.real.money.game.databinding.FragmentWithdrawRecordCashItemBinding as ViewBinding class RecordCashRvAdapter : ListAdapter(DiffCallback()) { @@ -22,12 +23,11 @@ class RecordCashRvAdapter : ListAdapter(DiffCallback()) { @@ -22,7 +23,7 @@ class RecordGoldRvAdapter : ListAdapter { + return mCashHelper.getRecordList() + } + + fun getGoldRecords() : List { + return mGoldHelper.getRecordList() + } + + fun getZeroRecords() : List { + return mZeroHelper.getRecordList() + } + +} + + + + + +class CashRecordHelper() : BaseRecordHelper() { + override val mSpKey = SpUtil.KEY_RECORD_CASH + override suspend fun loadRecordsFromSp(): List { + return SpUtil.instance().getList(mSpKey) + } + + companion object { + // Record 类型 + const val RECORD_CASH_PLUS_GOLD_CONVERT: Int = 1 + const val RECORD_CASH_PLUS_NEWBIE_GIFT: Int = 2 + const val RECORD_CASH_PLUS_BOX_TASK: Int = 3 + const val RECORD_CASH_MINUS_WITHDRAW_SMALL: Int = 4 + const val RECORD_CASH_MINUS_WITHDRAW_BIG: Int = 5 + } +} + +class GoldRecordHelper() : BaseRecordHelper() { + override val mSpKey = SpUtil.KEY_RECORD_GOLD + override suspend fun loadRecordsFromSp(): List { + return SpUtil.instance().getList(mSpKey) + } + + companion object { + // Record 类型 + const val RECORD_GOLD_PLUS_WATCH_VIDEO: Int = 1 + const val RECORD_GOLD_PLUS_WATCH_REWARD_AD: Int = 2 + const val RECORD_GOLD_PLUS_TASK_NEWBIE: Int = 3 + const val RECORD_GOLD_PLUS_TASK_DAILY: Int = 3 + const val RECORD_GOLD_PLUS_TASK_BOX: Int = 3 + const val RECORD_GOLD_MINUS_CONVERT_2_CASH: Int = 4 + } +} + +class ZeroRecordHelper() : BaseRecordHelper() { + override val mSpKey = SpUtil.KEY_RECORD_ZERO + override suspend fun loadRecordsFromSp(): List { + return SpUtil.instance().getList(mSpKey) + } +} + + +abstract class BaseRecordHelper { + abstract val mSpKey: String + private val mbgScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) + private val mRecordLocker = ReentrantLock() + private lateinit var mRecordList: MutableList + + + init { + mbgScope.launch { + mRecordList = loadRecordsFromSp().toMutableList() + } + } + + abstract suspend fun loadRecordsFromSp() : List + + + fun getRecordList(): List { + return mRecordList.toList() + } + + private fun saveRecordList() { + mbgScope.launch { + try { + mRecordLocker.lock() + SpUtil.instance().putList(mSpKey, mRecordList) + } finally { + mRecordLocker.unlock() + } + + } + } + + fun addRecord(dataBean: T) { + mbgScope.launch { + try { + mRecordLocker.lock() + mRecordList.add(dataBean) + saveRecordList() + } finally { + mRecordLocker.unlock() + } + + } + } + +} + diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt index eb5ab47..62f9b28 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/AndroidUtil.kt @@ -1,27 +1,27 @@ package com.ama.core.architecture.util -import android.app.Activity import android.content.Intent import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.Canvas +import android.graphics.Rect import android.net.Uri import android.os.Build -import android.os.Bundle +import android.os.Handler +import android.os.Looper import android.provider.Settings -import android.util.Base64 import android.view.Gravity +import android.view.PixelCopy import android.view.View +import android.view.Window import android.widget.Toast -import androidx.annotation.GravityInt import androidx.core.app.NotificationManagerCompat -import com.ama.core.architecture.BaseApp -import kotlin.random.Random import androidx.core.graphics.createBitmap +import com.ama.core.architecture.BaseApp import com.google.gson.Gson import com.google.gson.reflect.TypeToken -import java.nio.charset.Charset +import kotlin.random.Random class AndroidUtil private constructor() { @@ -126,6 +126,24 @@ class AndroidUtil private constructor() { } + fun captureView(window: Window, targetView: View, callback: (Bitmap?) -> Unit) { + val location = IntArray(2) + targetView.getLocationInWindow(location) + val (x, y) = location + val rect = Rect(x, y, x + targetView.width, y + targetView.height) + + val destBitmap = Bitmap.createBitmap(targetView.width, targetView.height, Bitmap.Config.ARGB_8888) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + PixelCopy.request(window, rect, destBitmap, { copyResult -> + if (copyResult == PixelCopy.SUCCESS) { + callback(destBitmap) + } else { + callback(null) + } + }, Handler(Looper.getMainLooper())) + } + } fun getThumbOfView2(targetView: View): Bitmap { if (targetView.width <= 0 || targetView.height <= 0) { diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt index 2a26372..ba0988e 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt @@ -44,9 +44,13 @@ class SpUtil private constructor(spFileName: String) { const val KEY_HAS_REQUEST_NOTIFICATION_PERMISSION = "KEY_HAS_REQUEST_NOTIFICATION_PERMISSION" + const val KEY_RECORD_CASH = "KEY_RECORD_CASH" + const val KEY_RECORD_GOLD = "KEY_RECORD_GOLD" + const val KEY_RECORD_ZERO = "KEY_RECORD_ZERO" - @Volatile + + @Volatile private var instance: SpUtil? = null fun instance(prefName: String = DEFAULT_SP_NAME): SpUtil { return instance ?: synchronized(this) {