From a633841f1d282244e42d45a84aca55533df34229 Mon Sep 17 00:00:00 2001
From: tj <1378534974@qq.com>
Date: 星期二, 01 四月 2025 15:02:18 +0800
Subject: [PATCH] 1.vip续费页面-数据统计及跳转

---
 app/src/main/res/mipmap/overlay2.jpg                                     |    0 
 app/src/main/res/mipmap/overlay.png                                      |    0 
 app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt |   70 +++++++++++++++++++++++
 app/src/main/res/mipmap/avatar_default.png                               |    0 
 app/src/main/res/layout/fragment_dashboard.xml                           |   50 ++++++++++++++++
 app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt  |    6 +
 app/src/main/res/mipmap/vip_crown.png                                    |    0 
 app/src/main/res/drawable/overlay_black_background.xml                   |   17 +++++
 8 files changed, 141 insertions(+), 2 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
index 967a83c..9a7060f 100644
--- a/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/dashboard/DashboardFragment.kt
@@ -21,9 +21,18 @@
 import java.util.*
 import java.text.SimpleDateFormat
 import android.graphics.Color
+import android.widget.Button
 import android.widget.GridLayout
+import android.widget.Toast
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.lifecycleScope
+import com.bumptech.glide.Glide
+import com.example.firstapp.database.response.UserInfo
+import com.example.firstapp.database.service.RetrofitClient
 import com.example.firstapp.model.DailyStat
+import com.example.firstapp.utils.PreferencesManager
 import com.github.mikephil.charting.components.YAxis
+import kotlinx.coroutines.launch
 
 class DashboardFragment : Fragment() {
 
@@ -35,6 +44,9 @@
     private lateinit var barChart: BarChart
     private lateinit var pieChart: PieChart
     private lateinit var heatmapView: View
+    private var currentUserInfo: UserInfo? = null // 确保使用你的实际数据类
+
+
     enum class DateType {
         DAY, WEEK, MONTH, YEAR
     }
@@ -49,6 +61,12 @@
         return binding.root
     }
 
+    override fun onResume() {
+        super.onResume()
+        // 重新加载用户信息
+        loadUserInfo()
+    }
+
     override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
         super.onViewCreated(view, savedInstanceState)
 
@@ -61,7 +79,28 @@
         setupView(view)
         updateDateDisplay()
         loadPackages()
+
+        // 遮罩层
+        loadUserInfo()
+
+        // 遮罩层点击时间
+        binding.viewOverlay.setOnClickListener {
+            // 跳转到vipActivity
+            val intent = android.content.Intent(requireContext(), com.example.firstapp.activity.VipActivity::class.java)
+            startActivity(intent)
+        }
     }
+
+    private fun showOverlay() {
+        binding.viewOverlay.visibility = View.VISIBLE
+        binding.overlayContent.visibility = View.VISIBLE
+    }
+
+    private fun hiddleOverlay() {
+        binding.viewOverlay.visibility = View.GONE
+        binding.overlayContent.visibility = View.GONE
+    }
+
 
     private fun setupRecyclerView() {
         binding.recyclerPackages.apply {
@@ -554,4 +593,35 @@
         super.onDestroyView()
         _binding = null
     }
+    private fun loadUserInfo() {
+
+        lifecycleScope.launch {
+            try {
+                // 从本地获取保存的手机号
+                val savedPhone = PreferencesManager.getPhone()
+                if (savedPhone.isNullOrEmpty()) {
+                    Toast.makeText(context, "用户未登录", Toast.LENGTH_SHORT).show()
+                    return@launch
+                }
+
+                val response = RetrofitClient.apiService.getUserInfo(savedPhone)
+                if (response.code == "0" && response.data != null) {
+                    // 保存用户信息
+                    currentUserInfo = response.data
+                    val userInfo = response.data
+                    if(userInfo.isMember){
+                        hiddleOverlay()
+                    }else{
+                        // 显示遮罩层
+                        showOverlay()
+                    }
+
+                }
+            } catch (e: Exception) {
+                e.printStackTrace()
+                Toast.makeText(context, "获取用户信息失败", Toast.LENGTH_SHORT).show()
+            }
+        }
+
+    }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt b/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
index eb1c203..0d3247e 100644
--- a/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
+++ b/app/src/main/java/com/example/firstapp/ui/vip/MemberInfoCardFragment.kt
@@ -54,7 +54,8 @@
         Glide.with(this)
             .load(viewModel.cover)
             .transform(RoundedCorners(100))  // 设置圆角
-            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+//            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+            .error(R.mipmap.avatar_default)
             .listener(object : RequestListener<Drawable> {
                 override fun onResourceReady(
                     resource: Drawable?,
@@ -85,7 +86,8 @@
         Glide.with(this)
             .load(viewModel.vipCover)
             .transform(RoundedCorners(100))  // 设置圆角
-            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+//            .error(R.drawable.error_placeholder) // 如果加载失败,显示占位图
+            .error(R.mipmap.vip_no)
             .listener(object : RequestListener<Drawable> {
                 override fun onResourceReady(
                     resource: Drawable?,
diff --git a/app/src/main/res/drawable/overlay_black_background.xml b/app/src/main/res/drawable/overlay_black_background.xml
new file mode 100644
index 0000000..5afeda5
--- /dev/null
+++ b/app/src/main/res/drawable/overlay_black_background.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <!-- 圆角 10dp -->
+    <corners android:radius="100dp" />
+
+    <!-- 背景色:黑色 -->
+<!--    <solid android:color="#FFFFFF" />-->
+    <solid android:color="#000000" />
+
+    <!-- 内边距 -->
+    <padding android:left="10dp"
+        android:top="10dp"
+        android:right="10dp"
+        android:bottom="10dp"/>
+
+    <stroke android:width="0dp" android:color="#FFFFFF"/>
+</shape>
diff --git a/app/src/main/res/layout/fragment_dashboard.xml b/app/src/main/res/layout/fragment_dashboard.xml
index ad51843..78a1d79 100644
--- a/app/src/main/res/layout/fragment_dashboard.xml
+++ b/app/src/main/res/layout/fragment_dashboard.xml
@@ -159,4 +159,54 @@
         </ViewFlipper>
     </androidx.core.widget.NestedScrollView>
 
+    <!-- 🔹 遮罩层 -->
+    <View
+        android:id="@+id/view_overlay"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:background="@mipmap/overlay2"
+        android:elevation="10dp"
+        android:visibility="gone"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent" />
+
+    <!-- 🔹 遮罩层上的按钮 -->
+    <!-- 🔹 遮罩层上的内容容器(LinearLayout) -->
+    <LinearLayout
+        android:id="@+id/overlay_content"
+        android:layout_width="300dp"
+        android:layout_height="wrap_content"
+        android:gravity="center"
+        android:orientation="horizontal"
+        android:padding="10dp"
+        android:background="@drawable/overlay_black_background"
+        android:elevation="20dp"
+        android:translationZ="20dp"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent">
+
+
+        <ImageView
+            android:id="@+id/overlay_content_vip_image"
+            android:layout_width="40dp"
+            android:layout_height="40dp"
+            android:layout_marginLeft="10dp"
+            android:layout_marginRight="10dp"
+            android:scaleType="centerCrop"
+            android:src="@mipmap/vip_crown"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
+        <!-- 🔹 示例内容:标题 -->
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="免费查看统计数据"
+            android:textSize="18sp"
+            android:textColor="#EEBC93" />
+
+    </LinearLayout>
+
 </androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/mipmap/avatar_default.png b/app/src/main/res/mipmap/avatar_default.png
new file mode 100644
index 0000000..6b95b68
--- /dev/null
+++ b/app/src/main/res/mipmap/avatar_default.png
Binary files differ
diff --git a/app/src/main/res/mipmap/overlay.png b/app/src/main/res/mipmap/overlay.png
new file mode 100644
index 0000000..9905124
--- /dev/null
+++ b/app/src/main/res/mipmap/overlay.png
Binary files differ
diff --git a/app/src/main/res/mipmap/overlay2.jpg b/app/src/main/res/mipmap/overlay2.jpg
new file mode 100644
index 0000000..0dc91e8
--- /dev/null
+++ b/app/src/main/res/mipmap/overlay2.jpg
Binary files differ
diff --git a/app/src/main/res/mipmap/vip_crown.png b/app/src/main/res/mipmap/vip_crown.png
new file mode 100644
index 0000000..c86537f
--- /dev/null
+++ b/app/src/main/res/mipmap/vip_crown.png
Binary files differ

--
Gitblit v1.9.3