From 661a264fef5d1a23ba850c9f65ac79c0127b3d1d Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期二, 01 四月 2025 15:59:10 +0800
Subject: [PATCH] fix : 样式

---
 app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt |  178 ++++++++++++++++++++++++++---------------------------------
 1 files changed, 78 insertions(+), 100 deletions(-)

diff --git a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
index d8c92f2..9699b1e 100644
--- a/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/com/example/firstapp/ui/home/HomeViewModel.kt
@@ -14,6 +14,8 @@
 import com.example.firstapp.model.ExpressPackage
 import com.example.firstapp.model.FinanceGroup
 import com.example.firstapp.model.FinancePackage
+import com.example.firstapp.model.IncomeGroup
+import com.example.firstapp.model.IncomePackage
 import com.example.firstapp.util.SecureStorage
 import kotlinx.coroutines.launch
 
@@ -21,22 +23,21 @@
 
     private val _expressItems = MutableLiveData<List<ExpressGroup>>()
     private val _financeItems = MutableLiveData<List<FinanceGroup>>()
-    private val _incomeItems = MutableLiveData<List<FinanceGroup>>()
+    private val _incomeItems = MutableLiveData<List<IncomeGroup>>()
     private val _flightItems = MutableLiveData<List<FinanceGroup>>()
     private val _trainItems = MutableLiveData<List<FinanceGroup>>()
     
     val expressItems: LiveData<List<ExpressGroup>> = _expressItems
     val financeItems: LiveData<List<FinanceGroup>> = _financeItems
-    val incomeItems: LiveData<List<FinanceGroup>> = _incomeItems
+    val incomeItems: LiveData<List<IncomeGroup>> = _incomeItems
     val flightItems: LiveData<List<FinanceGroup>> = _flightItems
     val trainItems: LiveData<List<FinanceGroup>> = _trainItems
 
     private val _categories = MutableLiveData<List<CategoryConfig>>()
     val categories: LiveData<List<CategoryConfig>> = _categories
 
-    // 添加可见分类的 LiveData
-    private val _visibleCategories = MutableLiveData<List<String>>()
-    val visibleCategories: LiveData<List<String>> = _visibleCategories
+    private val _visibleCategories = MutableLiveData<List<CategoryConfig>>()
+    val visibleCategories: LiveData<List<CategoryConfig>> = _visibleCategories
 
     private lateinit var secureStorage: SecureStorage
     private lateinit var currentUserId: String
@@ -56,106 +57,90 @@
         _categories.value?.let { updateVisibleCategories(it) }
     }
 
-    fun loadExpressData() {
+    private fun loadDataByType(type: String) {
         viewModelScope.launch {
-            // 1. 获取所有驿站类型的提醒设置
-            val stations = Core.reminder.getByType("快递")
-
-            // 2. 按驿站分组获取包裹信息
-            val groups = stations.map { station ->
-                val packages = Core.code.getByKeyword(station.nickname).map { code ->
-                    ExpressPackage(
-                        id = code.id, //ID
-                        company = code.secondLevel, //快递公司
-                        trackingNumber = code.code, // 取件码
-                        createTime = code.createTime  //快递时间
-                    )
+            try {
+                // 获取该类型下的所有站点分组
+                val stations = Core.code.getStationsByType(type)
+                
+                when (type) {
+                    "快递" -> {
+                        // 处理快递类型
+                        val groups = stations.map { station ->
+                            val packages = Core.code.getPackagesByTypeAndStation(type, station.stationName).map { code ->
+                                ExpressPackage(
+                                    id = code.id,
+                                    company = code.secondLevel,
+                                    trackingNumber = code.code,
+                                    createTime = code.createTime
+                                )
+                            }
+                            ExpressGroup(stationName = station.stationName, packages = packages)
+                        }
+                        _expressItems.postValue(groups)
+                    }
+                    "收入" -> {
+                        // 特殊处理收入类型
+                        val groups = stations.map { station ->
+                            val packages = Core.code.getPackagesByTypeAndStation(type, station.stationName).map { code ->
+                                IncomePackage(
+                                    id = code.id,
+                                    company = code.secondLevel,  // 交易对方
+                                    trackingNumber = code.code,  // 金额
+                                    createTime = code.createTime,
+                                    balance = code.remarks.replace("余额", "") // 去掉"余额"前缀
+                                )
+                            }
+                            IncomeGroup(stationName = station.stationName, packages = packages)
+                        }
+                        _incomeItems.postValue(groups)
+                    }
+                    else -> {
+                        // 处理其他类型(还款、航班、火车票)
+                        val groups = stations.map { station ->
+                            val packages = Core.code.getPackagesByTypeAndStation(type, station.stationName).map { code ->
+                                FinancePackage(
+                                    id = code.id,
+                                    company = code.secondLevel,
+                                    trackingNumber = code.code,
+                                    createTime = code.createTime
+                                )
+                            }
+                            FinanceGroup(stationName = station.stationName, packages = packages)
+                        }
+                        
+                        // 根据类型更新对应的 LiveData
+                        when (type) {
+                            "还款" -> _financeItems.postValue(groups)
+                            "航班" -> _flightItems.postValue(groups)
+                            "火车票" -> _trainItems.postValue(groups)
+                        }
+                    }
                 }
-                ExpressGroup(
-                    stationName = station.nickname, packages = packages
-                )
+            } catch (e: Exception) {
+                Log.e("HomeViewModel", "Failed to load $type data: ${e.message}")
             }
-
-            _expressItems.postValue(groups)
         }
+    }
+
+    fun loadExpressData() {
+        loadDataByType("快递")
     }
 
     fun loadFinanceData() {
-        viewModelScope.launch {
-            // 1. 获取所有驿站类型的提醒设置
-            val stations = Core.reminder.getByType("还款")
-
-            // 2. 按驿站分组获取包裹信息
-            val groups = stations.map { station ->
-                val packages = Core.code.getByKeyword(station.nickname).map { code ->
-                    FinancePackage(
-                        id = code.id, //ID
-                        company = code.secondLevel, //快递公司
-                        trackingNumber = code.code, // 取件码
-                        createTime = code.createTime  //快递时间
-                    )
-                }
-                FinanceGroup(
-                    stationName = station.nickname, packages = packages
-                )
-            }
-
-            _financeItems.postValue(groups)
-        }
+        loadDataByType("还款")
     }
 
     fun loadIncomeData() {
-        viewModelScope.launch {
-            val stations = Core.reminder.getByType("收入")
-            val groups = stations.map { station ->
-                val packages = Core.code.getByKeyword(station.nickname).map { code ->
-                    FinancePackage(
-                        id = code.id,
-                        company = code.secondLevel,
-                        trackingNumber = code.code,
-                        createTime = code.createTime
-                    )
-                }
-                FinanceGroup(stationName = station.nickname, packages = packages)
-            }
-            _incomeItems.postValue(groups)
-        }
+        loadDataByType("收入")
     }
 
     fun loadFlightData() {
-        viewModelScope.launch {
-            val stations = Core.reminder.getByType("航班")
-            val groups = stations.map { station ->
-                val packages = Core.code.getByKeyword(station.nickname).map { code ->
-                    FinancePackage(
-                        id = code.id,
-                        company = code.secondLevel,
-                        trackingNumber = code.code,
-                        createTime = code.createTime
-                    )
-                }
-                FinanceGroup(stationName = station.nickname, packages = packages)
-            }
-            _flightItems.postValue(groups)
-        }
+        loadDataByType("航班")
     }
 
     fun loadTrainData() {
-        viewModelScope.launch {
-            val stations = Core.reminder.getByType("火车票")
-            val groups = stations.map { station ->
-                val packages = Core.code.getByKeyword(station.nickname).map { code ->
-                    FinancePackage(
-                        id = code.id,
-                        company = code.secondLevel,
-                        trackingNumber = code.code,
-                        createTime = code.createTime
-                    )
-                }
-                FinanceGroup(stationName = station.nickname, packages = packages)
-            }
-            _trainItems.postValue(groups)
-        }
+        loadDataByType("火车票")
     }
 
     fun loadCategories() {
@@ -215,16 +200,9 @@
     }
 
     fun saveCategories(categories: List<CategoryConfig>) {
-        viewModelScope.launch {
-            // 保存到本地
-            secureStorage.saveCategories(currentUserId, categories)
-            // 同步到服务器
-            syncCategoriesToServer(categories)
-            _categories.value = categories
-            
-            // 更新可见分类
-            updateVisibleCategories(categories)
-        }
+        _categories.value = categories
+        // 更新可见分类
+        _visibleCategories.value = categories.filter { it.isEnabled }
     }
 
     private fun updateVisibleCategories(categories: List<CategoryConfig>) {
@@ -233,7 +211,7 @@
             .sortedBy { it.order }
             .map { it.name }
         
-        _visibleCategories.value = visibleNames
+        _visibleCategories.value = categories.filter { it.isEnabled }
     }
 
     // 登出时不再清除本地数据

--
Gitblit v1.9.3