feat(face): 支持按userFaceId查询单条人脸记录
- FaceDao新增queryByUserFaceId接口,实现按userFaceId精确查询 - FaceApi新增queryByUserFaceId方法,封装Dao查询逻辑 - LoginByFaceActivity插入人脸时,先按userFaceId查询,存在则更新避免重复 - NetViewModelV2同步人脸数据时,优先用userFaceId判重,减少重复入库 - 修正FaceEntity中userId字段数据库列名错误(user_id替代user_idd) - 增加注释说明及代码格式优化,提升代码可读性和健壮性
This commit is contained in:
@@ -1018,7 +1018,17 @@ class LoginByFaceActivity : BaseActivity<ActivityLoginFaceBinding>(),
|
||||
loadLogInfo("collectFace,saveFaceInfo: ----------8,保存人脸取特征数据-----------")
|
||||
val faceDao = FaceDatabase.getInstance(this).faceDao()
|
||||
val faceEntity = faceModel.toFaceEntity()
|
||||
val faceId = faceDao.insert(faceEntity)
|
||||
// 先查后插:按 userFaceId 判重,避免采集入库与增量同步各插一条
|
||||
val userFaceId = faceModel.userFaceId
|
||||
val existing = if (!userFaceId.isNullOrEmpty()) faceDao.queryByUserFaceId(userFaceId) else null
|
||||
val faceId = if (existing != null) {
|
||||
// 已存在记录,更新特征等字段并复用主键,避免重复
|
||||
faceEntity.faceId = existing.faceId
|
||||
faceDao.updateFaceEntity(faceEntity)
|
||||
existing.faceId
|
||||
} else {
|
||||
faceDao.insert(faceEntity)
|
||||
}
|
||||
faceEntity.faceId = faceId
|
||||
loadLogInfo("collectFace,saveFaceInfo: ----------10,人脸数据保存完成-----------")
|
||||
recognizeViewModel.refreshFaceList()
|
||||
|
||||
Reference in New Issue
Block a user