Pārlūkot izejas kodu

feat: 蓝钻收益页面、跳转第三方充值页

pengwuliang 1 gadu atpakaļ
vecāks
revīzija
3adda58181
24 mainītis faili ar 416 papildinājumiem un 30 dzēšanām
  1. 1 1
      app/src/main/java/com/adealink/weparty/base/AppBaseConfig.kt
  2. 2 0
      app/src/main/java/com/adealink/weparty/module/wallet/Router.kt
  3. 2 0
      app/src/main/java/com/adealink/weparty/url/UrlConfig.kt
  4. BIN
      app/src/main/res/drawable-xhdpi/common_calendar_black_24_ic.png
  5. BIN
      app/src/main/res/drawable-xhdpi/common_diamond_ic.png
  6. 6 1
      module/profile/src/main/java/com/adealink/weparty/profile/me/MeFragment.kt
  7. 0 4
      module/profile/src/main/java/com/adealink/weparty/profile/me/data/RechargeViewComp.kt
  8. 1 1
      module/wallet/build.gradle
  9. 8 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/data/DiamondListData.kt
  10. 54 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondActivity.kt
  11. 1 1
      module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondFragment.kt
  12. 39 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondRecordFragment.kt
  13. 67 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondStatisticsFragment.kt
  14. 1 1
      module/wallet/src/main/java/com/adealink/weparty/wallet/util/DiamondListItemDiffUtil.kt
  15. 23 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/util/DiamondRecordListItemDiffUtil.kt
  16. 30 0
      module/wallet/src/main/java/com/adealink/weparty/wallet/view/DiamondRecordItemViewBinder.kt
  17. BIN
      module/wallet/src/main/res/drawable-xhdpi/wallet_down_black_24_ic.png
  18. 12 0
      module/wallet/src/main/res/drawable/tab_indicator_custom.xml
  19. 41 20
      module/wallet/src/main/res/layout/activity_diamond.xml
  20. 44 0
      module/wallet/src/main/res/layout/fragment_diamond_record.xml
  21. 44 0
      module/wallet/src/main/res/layout/fragment_diamond_statistics.xml
  22. 37 0
      module/wallet/src/main/res/layout/layout_diamond_record_item.xml
  23. 2 0
      module/wallet/src/main/res/values/strings.xml
  24. 1 1
      module/webview/src/main/java/com/adealink/weparty/webview/WebViewActivity.kt

+ 1 - 1
app/src/main/java/com/adealink/weparty/base/AppBaseConfig.kt

@@ -10,7 +10,7 @@ class AppBaseConfig : IAppBaseConfig {
     override val debugLog: Boolean
         get() = BuildConfig.DEBUG
     override val isRelease: Boolean
-        get() = BuildConfig.IS_RELEASE
+        get() = false
     override val platform: String
         get() = "android"
     override val deeplinkScheme: String

+ 2 - 0
app/src/main/java/com/adealink/weparty/module/wallet/Router.kt

@@ -30,6 +30,8 @@ interface Wallet {
     interface Diamond {
         companion object {
             const val PATH = "/diamond"
+            const val TAB_RECORD = 0
+            const val TAB_STATISTICS = 1
         }
     }
 

+ 2 - 0
app/src/main/java/com/adealink/weparty/url/UrlConfig.kt

@@ -260,4 +260,6 @@ object UrlConfig {
         isProdEnv -> "https://web.wenext.chat/web/lama-ludo-rule"
         else -> "http://web-test.wenext.chat/web/lama-ludo-rule"
     }
+
+    val thirdPartyRecharge = "http://web-test.yoki.chat/index/?projectname=yoki-payment&hideAppBar=true#/third-party-recharge"
 }

BIN
app/src/main/res/drawable-xhdpi/common_calendar_black_24_ic.png


BIN
app/src/main/res/drawable-xhdpi/common_diamond_ic.png


+ 6 - 1
module/profile/src/main/java/com/adealink/weparty/profile/me/MeFragment.kt

@@ -150,7 +150,12 @@ class MeFragment : BaseFragment(R.layout.fragment_me) {
             Router.build(activity, Profile.UserProfile.PATH)
                 .putExtra(Profile.Common.EXTRA_UID, ProfileModule.getMyUid()).start()
         }
-
+        binding.clMoneyLayout.setOnClickListener {
+            Router.build(activity, Web.FullScreen.PATH)
+                .putExtra(Web.Common.EXTRA_URL, UrlConfig.thirdPartyRecharge)
+                .start()
+            //Router.build(activity, Wallet.Recharge.PATH).start()
+        }
 
         activity.let {
             val itemHeight = 52.dp()

+ 0 - 4
module/profile/src/main/java/com/adealink/weparty/profile/me/data/RechargeViewComp.kt

@@ -30,10 +30,6 @@ class RechargeViewComp(
     override fun onCreate() {
         super.onCreate()
         binding.tvIncome.setOnClickListener {
-            //Router.getRouterInstance<BaseDialogFragment>(Wallet.WalletGoogleRechargeDialog.PATH)?.show(requireActivity().supportFragmentManager)
-            Router.build(requireActivity(), Wallet.Recharge.PATH).start()
-        }
-        binding.tvTask.setOnClickListener {
             Router.build(requireActivity(), Wallet.Diamond.PATH).start()
         }
         walletViewModel?.myCoinCount?.observe(viewLifecycleOwner) {

+ 1 - 1
module/wallet/build.gradle

@@ -41,7 +41,7 @@ dependencies {
     //billing
     implementation libs.google.billing.library
     implementation libs.google.billing.library.ktx
-
+    implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
     //frame
     kapt libs.frame.router.compiler
 

+ 8 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/data/DiamondListData.kt

@@ -0,0 +1,8 @@
+package com.adealink.weparty.wallet.data
+
+/**
+ * Created by PengWuLiang on 2025/3/8
+ */
+sealed class DiamondListData
+data class DiamondListItemData(val diamond: Int): DiamondListData()
+data class DiamondListErrorEmptyData(val emptyType: Int): DiamondListData()

+ 54 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondActivity.kt

@@ -2,12 +2,20 @@ package com.adealink.weparty.wallet.diamond
 
 import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.core.view.updateLayoutParams
+import androidx.fragment.app.Fragment
+import com.adealink.frame.aab.util.getCompatString
 import com.adealink.frame.mvvm.view.viewBinding
 import com.adealink.frame.router.annotation.RouterUri
 import com.adealink.frame.util.DisplayUtil
 import com.adealink.weparty.commonui.BaseActivity
+import com.adealink.weparty.commonui.BaseFragment
+import com.adealink.weparty.commonui.recycleview.adapter.BaseActivityTabFragmentStateAdapter
+import com.adealink.weparty.commonui.widget.EmptyFragment
 import com.adealink.weparty.module.wallet.Wallet
+import com.adealink.weparty.wallet.R
 import com.adealink.weparty.wallet.databinding.ActivityDiamondBinding
+import com.google.android.material.tabs.TabLayout
+import com.google.android.material.tabs.TabLayoutMediator
 import com.qmuiteam.qmui.widget.util.QMUIStatusBarHelper
 
 /**
@@ -20,9 +28,55 @@ class DiamondActivity: BaseActivity() {
     override fun initViews() {
         QMUIStatusBarHelper.setStatusBarDarkMode(this)
         setContentView(binding.root)
+        val adapter = DiamondPageAdapter()
         binding.topBar.updateLayoutParams<ConstraintLayout.LayoutParams> {
             topMargin = DisplayUtil.getStatusBarHeight(this@DiamondActivity)
         }
+        binding.vpContent.offscreenPageLimit = 1
+        binding.vpContent.adapter = adapter
+        binding.vpContent.isSaveEnabled = false
+        binding.vpContent.isUserInputEnabled = false
+        TabLayoutMediator(
+            binding.tabLayout,
+            binding.vpContent,
+            true,
+            false
+        ){ tab: TabLayout.Tab, position: Int ->
+            tab.setText(adapter.getTabName(position))
+        }.attach()
     }
 
+    internal inner class DiamondPageAdapter : BaseActivityTabFragmentStateAdapter(this) {
+
+        override fun getTabName(pos: Int): String {
+            return when (pos) {
+                Wallet.Diamond.TAB_RECORD -> getCompatString(R.string.wallet_diamond_record)
+                Wallet.Diamond.TAB_STATISTICS -> getCompatString(R.string.wallet_diamond_statistics)
+                else -> getCompatString(R.string.wallet_diamond_record)
+            }
+        }
+
+        override fun getItemCount(): Int {
+            return TABS.size
+        }
+
+        override fun createFragment(position: Int): Fragment {
+            return when (position) {
+                Wallet.Diamond.TAB_RECORD -> DiamondRecordFragment()
+                Wallet.Diamond.TAB_STATISTICS -> DiamondStatisticsFragment()
+                else -> EmptyFragment()
+            }
+        }
+
+        fun getFragmentByPos(position: Int): BaseFragment? {
+            return supportFragmentManager.findFragmentByTag("f$position") as BaseFragment?
+        }
+    }
+
+    companion object {
+        val TABS = listOf(
+            Wallet.Diamond.TAB_RECORD,
+            Wallet.Diamond.TAB_STATISTICS,
+        )
+    }
 }

+ 1 - 1
module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondFragment.kt

@@ -38,7 +38,7 @@ class DiamondFragment : BaseFragment(R.layout.fragment_diamond),
 
     override fun initViews() {
         super.initViews()
-        listAdapter.register(DiamondItemViewBinder(this))
+        //listAdapter.register(DiamondRecordItemViewBinder(this))
         listAdapter.register(DiamondErrorEmptyViewBinder())
         activity?.let {
             binding.rvDiamondList.apply {

+ 39 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondRecordFragment.kt

@@ -0,0 +1,39 @@
+package com.adealink.weparty.wallet.diamond
+
+import com.adealink.frame.base.fastLazy
+import com.adealink.frame.mvvm.view.viewBinding
+import com.adealink.weparty.commonui.BaseFragment
+import com.adealink.weparty.commonui.dialogfragment.WheelDatePickerDialogFragment
+import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
+import com.adealink.weparty.wallet.R
+import com.adealink.weparty.wallet.databinding.FragmentDiamondRecordBinding
+import com.adealink.weparty.wallet.util.DiamondRecordListItemDiffUtil
+
+/**
+ * Created by PengWuLiang on 2025/3/7
+ */
+class DiamondRecordFragment: BaseFragment(R.layout.fragment_diamond_record) {
+
+    private val binding by viewBinding(FragmentDiamondRecordBinding::bind)
+    private val listAdapter by fastLazy { MultiTypeListAdapter(DiamondRecordListItemDiffUtil()) }
+
+    override fun initViews() {
+        binding.tvTime.setOnClickListener {
+            showWheelDatePicker()
+        }
+        binding.ivFilter.setOnClickListener {
+
+        }
+
+    }
+
+    private fun showWheelDatePicker() {
+        val dialog = WheelDatePickerDialogFragment.newInstance()
+        dialog.selectBirthdayCallback = object : WheelDatePickerDialogFragment.ISelectDateCallback {
+            override fun onSelectComplete(timestamp: Long, timeStr: String) {
+                binding.tvTime.text = timeStr
+            }
+        }
+        dialog.show(childFragmentManager, WheelDatePickerDialogFragment.SIMPLE_NAME)
+    }
+}

+ 67 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/diamond/DiamondStatisticsFragment.kt

@@ -0,0 +1,67 @@
+package com.adealink.weparty.wallet.diamond
+
+import android.graphics.Color
+import com.adealink.frame.base.fastLazy
+import com.adealink.frame.mvvm.view.viewBinding
+import com.adealink.weparty.commonui.BaseFragment
+import com.adealink.weparty.commonui.dialogfragment.WheelDatePickerDialogFragment
+import com.adealink.weparty.commonui.recycleview.adapter.MultiTypeListAdapter
+import com.adealink.weparty.wallet.R
+import com.adealink.weparty.wallet.databinding.FragmentDiamondStatisticsBinding
+import com.adealink.weparty.wallet.util.RechargeListItemDiffUtil
+import com.github.mikephil.charting.data.PieData
+import com.github.mikephil.charting.data.PieDataSet
+import com.github.mikephil.charting.data.PieEntry
+
+/**
+ * Created by PengWuLiang on 2025/3/7
+ */
+class DiamondStatisticsFragment: BaseFragment(R.layout.fragment_diamond_statistics) {
+
+    private val binding by viewBinding(FragmentDiamondStatisticsBinding::bind)
+    private val listAdapter by fastLazy { MultiTypeListAdapter(RechargeListItemDiffUtil()) }
+
+    override fun initViews() {
+        binding.ivCalendar.setOnClickListener {
+            showWheelDatePicker()
+        }
+        val entries = listOf(
+            PieEntry(20f, "Type1"),
+            PieEntry(10f, "Type2"),
+            PieEntry(40f, "Type3"),
+            PieEntry(15f, "Type4"),
+            PieEntry(15f, "Type5")
+        )
+
+        val dataSet = PieDataSet(entries, "").apply {
+            colors = listOf(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW, Color.CYAN)
+            valueTextColor = Color.BLACK
+            valueTextSize = 12f
+            valueLinePart1Length = 0.4f
+            valueLinePart2Length = 0.4f
+        }
+        binding.vPieChart.apply {
+            holeRadius = 30f
+            description.isEnabled = false
+            legend.isEnabled = false
+            isRotationEnabled = true
+            setUsePercentValues(true)
+            setDrawEntryLabels(false)
+            setHoleColor(Color.WHITE)
+            setTransparentCircleAlpha(0)
+            isHighlightPerTapEnabled = false
+        }
+        binding.vPieChart.data = PieData(dataSet)
+        binding.vPieChart.invalidate()
+    }
+
+    private fun showWheelDatePicker() {
+        val dialog = WheelDatePickerDialogFragment.newInstance()
+        dialog.selectBirthdayCallback = object : WheelDatePickerDialogFragment.ISelectDateCallback {
+            override fun onSelectComplete(timestamp: Long, timeStr: String) {
+                binding.tvTime.text = timeStr
+            }
+        }
+        dialog.show(childFragmentManager, WheelDatePickerDialogFragment.SIMPLE_NAME)
+    }
+}

+ 1 - 1
module/wallet/src/main/java/com/adealink/weparty/wallet/util/DiamondListItemDiffUtil.kt

@@ -12,7 +12,7 @@ class DiamondListItemDiffUtil: DiffUtil.ItemCallback<ExchangeListData>() {
 
     override fun areContentsTheSame(oldItem: ExchangeListData, newItem: ExchangeListData): Boolean {
         val oldRechargeData = oldItem as? ExchangeListItemData
-        val newRechargeData = oldItem as? ExchangeListItemData
+        val newRechargeData = newItem as? ExchangeListItemData
         if (oldRechargeData == null || newRechargeData == null) {
             return false
         }

+ 23 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/util/DiamondRecordListItemDiffUtil.kt

@@ -0,0 +1,23 @@
+package com.adealink.weparty.wallet.util
+
+import androidx.recyclerview.widget.DiffUtil
+import com.adealink.weparty.wallet.data.DiamondListData
+import com.adealink.weparty.wallet.data.DiamondListItemData
+
+/**
+ * Created by PengWuLiang on 2025/3/8
+ */
+class DiamondRecordListItemDiffUtil: DiffUtil.ItemCallback<DiamondListData>()  {
+    override fun areItemsTheSame(oldItem: DiamondListData, newItem: DiamondListData): Boolean {
+        return oldItem == newItem
+    }
+
+    override fun areContentsTheSame(oldItem: DiamondListData, newItem: DiamondListData): Boolean {
+        val oldData = oldItem as? DiamondListItemData
+        val newData = newItem as? DiamondListItemData
+        if (oldData == null || newData == null) {
+            return false
+        }
+        return oldData.diamond == newData.diamond
+    }
+}

+ 30 - 0
module/wallet/src/main/java/com/adealink/weparty/wallet/view/DiamondRecordItemViewBinder.kt

@@ -0,0 +1,30 @@
+package com.adealink.weparty.wallet.view
+
+import android.view.LayoutInflater
+import android.view.ViewGroup
+import com.adealink.weparty.commonui.recycleview.adapter.BindingViewHolder
+import com.adealink.weparty.commonui.recycleview.adapter.multitype.ItemViewBinder
+import com.adealink.weparty.wallet.data.DiamondListItemData
+import com.adealink.weparty.wallet.databinding.LayoutDiamondRecordItemBinding
+
+/**
+ * Created by PengWuLiang on 2025/3/8
+ */
+//class DiamondRecordItemViewBinder:
+//    ItemViewBinder<DiamondListItemData, BindingViewHolder<LayoutDiamondRecordItemBinding>>()  {
+//    override fun onCreateViewHolder(
+//        inflater: LayoutInflater,
+//        parent: ViewGroup
+//    ): BindingViewHolder<LayoutDiamondRecordItemBinding> {
+//        return BindingViewHolder(
+//
+//        )
+//    }
+//
+//    override fun onBindViewHolder(
+//        holder: BindingViewHolder<LayoutDiamondRecordItemBinding>,
+//        item: DiamondListItemData
+//    ) {
+//
+//    }
+//}

BIN
module/wallet/src/main/res/drawable-xhdpi/wallet_down_black_24_ic.png


+ 12 - 0
module/wallet/src/main/res/drawable/tab_indicator_custom.xml

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:width="12dp"
+        android:height="3dp"
+        android:gravity="center">
+        <shape android:shape="rectangle">
+            <corners android:radius="3dp"/>
+            <solid android:color="@color/color_222222"/>
+        </shape>
+    </item>
+</layer-list>

+ 41 - 20
module/wallet/src/main/res/layout/activity_diamond.xml

@@ -7,7 +7,7 @@
 
     <View
         android:layout_width="match_parent"
-        android:layout_height="250dp"
+        android:layout_height="280dp"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
@@ -22,14 +22,13 @@
         app:title_color="@color/white"
         app:back_drawable="@drawable/commonui_back_white_48_ic"/>
 
-
     <!-- 钻石余额卡片 -->
     <androidx.cardview.widget.CardView
-        android:id="@+id/cardBalance"
+        android:id="@+id/balance_card"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_marginStart="16dp"
-        android:layout_marginTop="16dp"
+        android:layout_marginTop="8dp"
         android:layout_marginEnd="16dp"
         app:cardCornerRadius="12dp"
         app:cardElevation="4dp"
@@ -38,13 +37,15 @@
         <androidx.constraintlayout.widget.ConstraintLayout
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:padding="16dp">
+            android:paddingTop="16dp"
+            android:paddingBottom="12dp"
+            android:paddingHorizontal="10dp">
 
             <TextView
                 android:id="@+id/tv_balance_label"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="My diamond balance"
+                android:text="My Diamond Balance"
                 android:textSize="13sp"
                 android:textColor="@color/color_AAAAAA"
                 app:layout_constraintStart_toStartOf="parent"
@@ -54,15 +55,17 @@
                 android:id="@+id/tv_balance"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="1000 💎"
-                android:textColor="#000000"
+                android:text="1000"
+                android:textColor="@color/color_222222"
                 android:textSize="18sp"
                 android:textStyle="bold"
+                android:drawableEnd="@drawable/common_diamond_ic"
+                android:drawablePadding="4dp"
                 android:layout_marginTop="8dp"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@id/tv_balance_label" />
 
-            <Button
+            <TextView
                 android:id="@+id/btn_withdrawal"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -70,8 +73,7 @@
                 android:textColor="@color/color_FF9352FC"
                 app:layout_constraintTop_toTopOf="@id/tv_balance_label"
                 app:layout_constraintBottom_toBottomOf="@id/tv_balance"
-                app:layout_constraintEnd_toEndOf="parent"
-                android:background="@color/transparent"/>
+                app:layout_constraintEnd_toEndOf="parent"/>
 
             <View
                 android:id="@+id/today_diamond_bg"
@@ -98,9 +100,12 @@
                 android:id="@+id/today_diamond"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
-                android:text="200 💎"
+                android:layout_marginEnd="8dp"
+                android:text="200"
                 android:textColor="@color/color_222222"
                 android:textSize="15sp"
+                android:drawableEnd="@drawable/common_diamond_ic"
+                android:drawablePadding="4dp"
                 app:layout_constraintTop_toTopOf="@id/today_diamond_bg"
                 app:layout_constraintBottom_toBottomOf="@id/today_diamond_bg"
                 app:layout_constraintEnd_toEndOf="@id/today_diamond_bg"
@@ -111,23 +116,39 @@
 
     <com.google.android.material.tabs.TabLayout
         android:id="@+id/tab_layout"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="30dp"
-        android:background="@drawable/tuicallkit_tab_selector"
+        android:background="@color/transparent"
         android:layout_marginTop="8dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/cardBalance"
-        app:tabBackground="@drawable/tuicallkit_tab_item_selector"
-        app:tabIndicatorHeight="0dp"
-        app:tabMinWidth="76dp"
+        app:layout_constraintTop_toBottomOf="@id/balance_card"
+        app:tabTextColor="@color/color_777777"
+        app:tabSelectedTextColor="@color/color_222222"
+        app:tabIndicatorColor="@color/color_222222"
+        app:tabIndicatorGravity="bottom"
+        app:tabIndicatorFullWidth="false"
+        app:tabIndicator="@drawable/tab_indicator_custom"
         app:tabRippleColor="@null"
-        app:tabTextAppearance="@style/TUICallTabLayoutStyle"/>
+        app:tabMode="fixed"
+        app:tabTextAppearance="@style/TUICallTabLayoutStyle">
+
+        <com.google.android.material.tabs.TabItem
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Diamond Record" />
+
+        <com.google.android.material.tabs.TabItem
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="Drilling Statistics" />
+    </com.google.android.material.tabs.TabLayout>
 
     <androidx.viewpager2.widget.ViewPager2
         android:id="@+id/vp_content"
         android:layout_width="match_parent"
         android:layout_height="0dp"
+        app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintTop_toBottomOf="@id/tab_layout"
-        app:layout_constraintBottom_toBottomOf="parent"/>
+        android:layout_marginTop="12dp"/>
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 44 - 0
module/wallet/src/main/res/layout/fragment_diamond_record.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <View
+        android:id="@+id/v_time_bg"
+        android:layout_width="match_parent"
+        android:layout_height="36dp"
+        app:layout_constraintTop_toTopOf="parent"
+        android:background="@color/color_F5F7FA" />
+
+    <TextView
+        android:id="@+id/tv_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="2025.03.03"
+        android:textColor="@color/color_222222"
+        android:textSize="14sp"
+        android:drawableEnd="@drawable/wallet_down_black_24_ic"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@id/v_time_bg"
+        app:layout_constraintBottom_toBottomOf="@id/v_time_bg"
+        android:layout_marginStart="16dp" />
+
+    <ImageView
+        android:id="@+id/iv_filter"
+        android:layout_width="24dp"
+        android:layout_height="24dp"
+        android:src="@drawable/common_ic_filter"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:layout_marginEnd="16dp"
+        android:layout_marginTop="6dp"/>
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/rv_record"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        app:layout_constraintTop_toBottomOf="@id/v_time_bg"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:visibility="gone"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 44 - 0
module/wallet/src/main/res/layout/fragment_diamond_statistics.xml

@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    xmlns:app="http://schemas.android.com/apk/res-auto">
+
+    <View
+        android:id="@+id/v_time_bg"
+        android:layout_width="match_parent"
+        android:layout_height="36dp"
+        app:layout_constraintTop_toTopOf="parent"
+        android:background="@color/color_F5F7FA" />
+
+    <TextView
+        android:id="@+id/tv_time"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Drilling in month"
+        android:textColor="@color/color_222222"
+        android:textSize="14sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@id/v_time_bg"
+        app:layout_constraintBottom_toBottomOf="@id/v_time_bg"
+        android:layout_marginStart="16dp" />
+
+    <ImageView
+        android:id="@+id/iv_calendar"
+        android:layout_width="24dp"
+        android:layout_height="24dp"
+        android:src="@drawable/common_calendar_black_24_ic"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        android:layout_marginEnd="16dp"
+        android:layout_marginTop="6dp"/>
+
+    <com.github.mikephil.charting.charts.PieChart
+        android:id="@+id/v_pie_chart"
+        android:layout_width="150dp"
+        android:layout_height="150dp"
+        app:layout_constraintTop_toBottomOf="@id/v_time_bg"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 37 - 0
module/wallet/src/main/res/layout/layout_diamond_record_item.xml

@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="60dp">
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:id="@+id/tv_category"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="Task reward"
+        android:textColor="@color/color_222222"
+        android:textSize="14sp"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:layout_marginStart="16dp"
+        android:layout_marginTop="12dp" />
+
+    <androidx.appcompat.widget.AppCompatTextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:text="2025.03.03 15:00"
+        android:textColor="@color/color_AAAAAA"
+        android:textSize="12sp"
+        app:layout_constraintTop_toBottomOf="@id/tv_category"
+        app:layout_constraintStart_toStartOf="parent"
+        android:layout_marginTop="4dp"
+        android:layout_marginStart="16dp"/>
+
+    
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="0.5dp"
+        android:background="@color/color_AAAAAA"
+        app:layout_constraintBottom_toBottomOf="parent"/>
+</androidx.constraintlayout.widget.ConstraintLayout>

+ 2 - 0
module/wallet/src/main/res/values/strings.xml

@@ -43,4 +43,6 @@
     <string name="wallet_game_coins_exchange_confirm_tip">Sure to exchange gold coins to game coins?</string>
     <string name="wallet_game_coins_tip">More game coins, more popular</string>
     <string name="wallet_game_coins_balance">Game Coin Balance:%1$s->%2$s</string>
+    <string name="wallet_diamond_record">Diamond Record</string>
+    <string name="wallet_diamond_statistics">Drilling Statistics</string>
 </resources>

+ 1 - 1
module/webview/src/main/java/com/adealink/weparty/webview/WebViewActivity.kt

@@ -178,7 +178,7 @@ class WebViewActivity : BaseActivity(), IWebViewCallback {
         super.hideNavigationBar()
         binding.topBar.visibility = View.GONE
         val webViewLp = binding.webView.layoutParams as ConstraintLayout.LayoutParams
-        webViewLp.topMargin = DisplayUtil.dp2px(0f)
+        webViewLp.topMargin = DisplayUtil.dp2px(44f)
         binding.root.fitsSystemWindows = false
     }