feat(face): 支持按userFaceId查询单条人脸记录

- FaceDao新增queryByUserFaceId接口,实现按userFaceId精确查询
- FaceApi新增queryByUserFaceId方法,封装Dao查询逻辑
- LoginByFaceActivity插入人脸时,先按userFaceId查询,存在则更新避免重复
- NetViewModelV2同步人脸数据时,优先用userFaceId判重,减少重复入库
- 修正FaceEntity中userId字段数据库列名错误(user_id替代user_idd)
- 增加注释说明及代码格式优化,提升代码可读性和健壮性
This commit is contained in:
mazengfei
2026-08-18 09:12:40 +08:00
parent 747e243122
commit 524837ec20
6 changed files with 1312 additions and 7 deletions
@@ -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()