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