refactor(network): 重构网络请求配置和API接口实现
- 将BASE_URL改为使用GlobalData.PROD_BASE_URL常量 - 更新ApiClient中的URL匹配规则以支持新的营养模块接口 - 将ApiServiceV2中的接口路径从/neglect/booth改为/nutrition/neglect/booth - 使用@Url注解动态传入完整URL地址 - 在CollectedFoodActivity中切换到NetViewModelV2和新API模型 - 更新采集功能的数据模型和接口调用方式 - 调整人脸数据获取逻辑以支持增量和全量同步 - 优化文件上传和删除操作的参数传递方式
This commit is contained in:
@@ -48,7 +48,7 @@ import com.sw.dualscreen.model.response.FoodOrder
|
||||
import com.sw.dualscreen.model.response.PaySuccessEvent
|
||||
import com.sw.dualscreen.model.response.ResetRecognizeEvent
|
||||
import com.sw.dualscreen.model.response.UpdateRefreshEvent
|
||||
import com.sw.dualscreen.model.response.UserFaceModel
|
||||
import com.sw.dualscreen.model.response.v2.FaceVO
|
||||
import com.sw.dualscreen.objbox.Food
|
||||
import com.sw.dualscreen.objbox.FoodModule
|
||||
import com.sw.dualscreen.objbox.FoodModule.IdNameScore
|
||||
@@ -67,7 +67,7 @@ import com.sw.dualscreen.utils.SPUtil
|
||||
import com.sw.dualscreen.utils.SpTool
|
||||
import com.sw.dualscreen.view.CustomBottomSheetDialog
|
||||
import com.sw.dualscreen.viewmodel.BaseViewModel
|
||||
import com.sw.dualscreen.viewmodel.UserViewModel
|
||||
import com.sw.dualscreen.viewmodel.NetViewModelV2
|
||||
import com.sw.plate.utils.Base64
|
||||
import com.sw.plate.utils.LightManager
|
||||
import com.sw.plate.utils.ToastUtils
|
||||
@@ -81,8 +81,6 @@ import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import okhttp3.RequestBody
|
||||
import okhttp3.RequestBody.Companion.toRequestBody
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
import org.json.JSONObject
|
||||
@@ -109,7 +107,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
const val WEIGHT_RESET_RECOGNIZE = 10
|
||||
}
|
||||
|
||||
private val viewModel by viewModels<UserViewModel>()
|
||||
private val viewModel by viewModels<NetViewModelV2>()
|
||||
private var imageCapture: ImageCapture? = null
|
||||
var isAnalyzing = true // 控制是否进行图像分析
|
||||
|
||||
@@ -208,7 +206,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
addBackEventListener()
|
||||
initView()
|
||||
if (SpTool.firstGetFace) {
|
||||
viewModel.getUserFaceCache(pageNo = 1)
|
||||
viewModel.getFacePage(pageNum = 1)
|
||||
}
|
||||
setupCamera()
|
||||
initData()
|
||||
@@ -273,7 +271,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
userViewModel = viewModel,
|
||||
lifecycleScope = lifecycleScope,
|
||||
successBlock = {
|
||||
viewModel.getUserFaceCache(pageNo = 1)
|
||||
hideWaitingDialog()
|
||||
},
|
||||
failureBlock = {
|
||||
hideWaitingDialog()
|
||||
@@ -281,7 +279,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
}
|
||||
)
|
||||
}
|
||||
viewModel.getUserFaceCache(pageNo = 1, onSuccess = {
|
||||
viewModel.getFacePage(pageNum = 1, onSuccess = {
|
||||
recognizeViewModel.refreshFaceList()
|
||||
hideWaitingDialog()
|
||||
ToastUtils.showToast("人脸数据已更新")
|
||||
@@ -1111,14 +1109,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
log("是否null判断,imageFile == null:${imageFile == null},imageVector == null:${imageVector == null}")
|
||||
return
|
||||
}
|
||||
val foodId = foodInfo.foodId
|
||||
val foodId = foodInfo.foodId.toLongOrNull() ?: run {
|
||||
loadRemindDialog("foodId 格式错误: ${foodInfo.foodId}")
|
||||
return
|
||||
}
|
||||
val foodName = foodInfo.foodName ?: ""
|
||||
val foodModelVersion = GlobalData.foodModelVersion
|
||||
val params = HashMap<String, RequestBody>()
|
||||
params["foodId"] = foodId.toRequestBody()
|
||||
params["foodName"] = foodName.toRequestBody()
|
||||
params["version"] = foodModelVersion.toRequestBody()
|
||||
val files = listOf(imageFile)
|
||||
val vectors = listOf(imageVector)
|
||||
val foodVectorList = vectors.map {
|
||||
it.joinToString(
|
||||
@@ -1128,8 +1124,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
val foodVectorJson =
|
||||
foodVectorList.joinToString(separator = ",", prefix = "[", postfix = "]")
|
||||
log("json=$foodVectorJson")
|
||||
params["foodVector"] = foodVectorJson.toRequestBody()
|
||||
val idList = viewModel.uploadCollectFoodPics(files, params)
|
||||
val idList = viewModel.uploadCollect(
|
||||
foodId = foodId,
|
||||
foodName = foodName,
|
||||
version = foodModelVersion,
|
||||
foodVector = foodVectorJson,
|
||||
fileList = listOf(imageFile)
|
||||
)
|
||||
if (idList.isNullOrEmpty()) {
|
||||
loadRemindDialog("上传失败,未返回向量数据id")
|
||||
log("idList为空")
|
||||
@@ -1146,7 +1147,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
ObjectBox.put(
|
||||
Food(
|
||||
collectId = idList[0],
|
||||
foodId = foodId,
|
||||
foodId = "$foodId",
|
||||
foodName = foodName,
|
||||
foodVector = imageVector,
|
||||
version = foodModelVersion
|
||||
@@ -1204,7 +1205,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
//if (timestamp == 0L) {
|
||||
// return@startIntervalTaskWithInitialDelay
|
||||
//}
|
||||
viewModel.getFaceIncrementList(
|
||||
viewModel.getFaceIncrement(
|
||||
// pageNo = taskPageNo,
|
||||
timestamp = timestamp,
|
||||
onAllQueryFinished = {
|
||||
@@ -1223,21 +1224,21 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateFaceData(list: List<UserFaceModel>) {
|
||||
private fun updateFaceData(list: List<FaceVO>) {
|
||||
val faceList = mutableListOf<FaceEntity>()
|
||||
try {
|
||||
list.forEach { model ->
|
||||
if (model.faceDeleted == true) {
|
||||
list.forEach { vo ->
|
||||
if (vo.faceDeleted == true) {
|
||||
//删除数据
|
||||
FaceDatabase.getInstance(this).faceDao().deleteFaceById(model.userId)
|
||||
FaceDatabase.getInstance(this).faceDao().deleteFaceById(vo.userId)
|
||||
} else {
|
||||
//保存数据
|
||||
val faceEntity = FaceEntity(
|
||||
model.userId, null, Base64.decode(model.faceFeatureStr)
|
||||
vo.userId, null, Base64.decode(vo.faceFeature)
|
||||
).also {
|
||||
//1-会员、2-临时用户
|
||||
it.userType = if (model.member) "1" else "2"
|
||||
it.cardNo = model.cardNo
|
||||
it.userType = if (vo.member == true) "1" else "2"
|
||||
it.cardNo = vo.cardNo
|
||||
}
|
||||
faceList.add(faceEntity)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user