refactor(api): 更新净菜包和餐品净菜包接口支持分页请求

- 使用 POST 请求和 JSON Body 替换 GET 请求,支持分页参数传递
- 更新接口返回类型为分页结构 PageData
- 在对应数据模型中新增分页请求参数类 PageOptionsReq 引入
- 增加 CleanPackageOption 和 MealPackageOption 模型字段以支持新需求
- 调整 NetViewModelV2 中调用接口逻辑,传递分页参数
- 修改 ShelfV2Activity 中数据处理逻辑,适配分页返回数据结构
- 更新全局常量 PROD_BASE_URL 地址
This commit is contained in:
mazengfei
2026-08-09 17:07:13 +08:00
parent e902f2869f
commit c3682d1ed3
6 changed files with 31 additions and 11 deletions
@@ -20,7 +20,7 @@ object GlobalData {
// const val LOCAL_BASE_URL = "http://192.168.1.201:14801"
const val LOCAL_BASE_URL = "http://192.168.10.101:24801"
const val TEST_BASE_URL = "https://dev.yixiong-tech.com:8081"
const val PROD_BASE_URL = "https://api.dm.yixiong-tech.com:8443"
const val PROD_BASE_URL = "https://platform-api.uat.shuziweidao.com"
}
@@ -21,6 +21,7 @@ import com.shuwei.intelligent.shelves.base.BaseActivity
import com.shuwei.intelligent.shelves.databinding.ActivityShelfV2Binding
import com.shuwei.intelligent.shelves.model.CleanPackageOption
import com.shuwei.intelligent.shelves.model.MealPackageOption
import com.shuwei.intelligent.shelves.model.PageData
import com.shuwei.intelligent.shelves.model.ShelfModelV2
import com.shuwei.intelligent.shelves.model.SendWeightEvent
import com.shuwei.intelligent.shelves.net.Loading
@@ -280,7 +281,7 @@ class ShelfV2Activity : BaseActivity() {
binding.include?.root?.gone()
binding.root.postDelayed({ Loading.dismiss() }, 200)
@Suppress("UNCHECKED_CAST")
val items = data.data as? List<CleanPackageOption>
val items = (data.data as? PageData<*>)?.list as? List<CleanPackageOption>
if (items.isNullOrEmpty()) {
loadEmptyView(); return
}
@@ -295,7 +296,7 @@ class ShelfV2Activity : BaseActivity() {
binding.include?.root?.gone()
binding.root.postDelayed({ Loading.dismiss() }, 200)
@Suppress("UNCHECKED_CAST")
val items = data.data as? List<MealPackageOption>
val items = (data.data as? PageData<*>)?.list as? List<MealPackageOption>
if (items.isNullOrEmpty()) {
loadEmptyView(); return
}
@@ -21,6 +21,14 @@ data class CleanPackageOption(
val needQtyKg: BigDecimal? = null,
/** 保质期至,格式 yyyy-MM-dd */
val expiryDate: String? = null,
/** 申领时间,格式 yyyy-MM-dd HH:mm:ss,仅订单有 */
val applyTime: String? = null,
/** 数据来源:1=净菜订单,2=食材库 */
val source: Short? = null,
/** 净菜类型 id,仅订单有 */
val vegTypeId: Long? = null,
/** 食材库 idsource=2 时有值,sync 时回传 materId */
val materId: Long? = null,
var isSelected: Boolean = false
) {
/** 将净菜包选项转换为格口记录 */
@@ -21,6 +21,8 @@ data class MealPackageOption(
val needQtyKg: BigDecimal? = null,
/** 保质期至,格式 yyyy-MM-dd(包装完成后有值) */
val expiryDate: String? = null,
/** 数据来源:1=净菜订单,2=餐品库 */
val source: Short? = null,
var isSelected: Boolean = false
) {
/** 将餐品净菜包选项转换为格口记录 */
@@ -3,6 +3,8 @@ package com.shuwei.intelligent.shelves.net
import com.shuwei.intelligent.shelves.model.CabinetInitResult
import com.shuwei.intelligent.shelves.model.CleanPackageOption
import com.shuwei.intelligent.shelves.model.MealPackageOption
import com.shuwei.intelligent.shelves.model.PageData
import com.shuwei.intelligent.shelves.model.PageOptionsReq
import com.shuwei.intelligent.shelves.model.SyncBody
import retrofit2.http.Body
import retrofit2.http.GET
@@ -24,21 +26,23 @@ interface ApiServiceV2 {
/**
* 4.2.1 净菜包下拉列表(itemType=1
* POST + JSON Body 分页请求,返回分页结构 PageData
*/
@GET
@POST
suspend fun getCleanPackageOptions(
@Url url: String = UrlConfig.CLEAN_PACKAGE_OPTIONS,
@Query("keyword") keyword: String? = null
): RespData<List<CleanPackageOption>>
@Body body: PageOptionsReq
): RespData<PageData<CleanPackageOption>>
/**
* 4.2.2 餐品净菜包下拉列表(itemType=2)
* POST + JSON Body 分页请求,返回分页结构 PageData
*/
@GET
@POST
suspend fun getMealPackageOptions(
@Url url: String = UrlConfig.MEAL_PACKAGE_OPTIONS,
@Query("keyword") keyword: String? = null
): RespData<List<MealPackageOption>>
@Body body: PageOptionsReq
): RespData<PageData<MealPackageOption>>
/**
* 4.3 全量同步整柜数据(定时上报)
@@ -6,6 +6,7 @@ import androidx.lifecycle.viewModelScope
import com.shuwei.intelligent.shelves.model.CabinetInitResult
import com.shuwei.intelligent.shelves.model.CleanPackageOption
import com.shuwei.intelligent.shelves.model.MealPackageOption
import com.shuwei.intelligent.shelves.model.PageOptionsReq
import com.shuwei.intelligent.shelves.model.SyncBody
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
@@ -47,7 +48,9 @@ class NetViewModelV2 : ViewModel() {
viewModelScope.launch {
_cleanPackageOptionsUiState.value = UiState.Loading
runCatching {
val response = apiServiceV2.getCleanPackageOptions(keyword = keyword)
val response = apiServiceV2.getCleanPackageOptions(
body = PageOptionsReq(pageNum = 1, pageSize = 50, keyword = keyword)
)
if (response.isSuccess()) {
_cleanPackageOptionsUiState.value = UiState.Success(response)
} else {
@@ -64,7 +67,9 @@ class NetViewModelV2 : ViewModel() {
viewModelScope.launch {
_mealPackageOptionsUiState.value = UiState.Loading
runCatching {
val response = apiServiceV2.getMealPackageOptions(keyword = keyword)
val response = apiServiceV2.getMealPackageOptions(
body = PageOptionsReq(pageNum = 1, pageSize = 50, keyword = keyword)
)
if (response.isSuccess()) {
_mealPackageOptionsUiState.value = UiState.Success(response)
} else {