diff --git a/app/src/main/java/com/sw/platecabinet/viewmodel/NetViewModelV2.kt b/app/src/main/java/com/sw/platecabinet/viewmodel/NetViewModelV2.kt index 2714020..a23d938 100644 --- a/app/src/main/java/com/sw/platecabinet/viewmodel/NetViewModelV2.kt +++ b/app/src/main/java/com/sw/platecabinet/viewmodel/NetViewModelV2.kt @@ -226,7 +226,11 @@ class NetViewModelV2 : ViewModel() { list.forEach { model -> if (model.faceDeleted == true) { //删除数据 - faceApi.deleteByUserName(model.userId) + // 仅删除 userFaceId 对应的单条人脸记录,避免误删该用户名下所有特征 + val userFaceId = model.userFaceId + if (!userFaceId.isNullOrEmpty()) { + faceApi.deleteByUserFaceId(userFaceId) + } } else { // 获取该用户所有已存特征,判断当前特征是否已存在 val existList = faceApi.queryAllByUserName(model.userId) diff --git a/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java b/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java index 353cdc1..b8fd28a 100644 --- a/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java +++ b/lib_face/src/main/java/com/sw/plate/utils/arcface/FaceApi.java @@ -91,6 +91,13 @@ public class FaceApi { getFaceDao().deleteFaceById(userName); } + /** + * 按 userFaceId 删除单条人脸记录 + */ + public void deleteByUserFaceId(String userFaceId) { + getFaceDao().deleteFaceByUserFaceId(userFaceId); + } + public Long insert(FaceEntity entity) { if (entity == null) { return 0L; diff --git a/lib_face/src/main/java/com/sw/plate/utils/arcface/facedb/dao/FaceDao.java b/lib_face/src/main/java/com/sw/plate/utils/arcface/facedb/dao/FaceDao.java index 2926276..c02ee40 100644 --- a/lib_face/src/main/java/com/sw/plate/utils/arcface/facedb/dao/FaceDao.java +++ b/lib_face/src/main/java/com/sw/plate/utils/arcface/facedb/dao/FaceDao.java @@ -55,6 +55,12 @@ public interface FaceDao { @Query("DELETE from face WHERE user_name = :userName") int deleteFaceById(String userName); + /** + * 按 userFaceId 删除单条人脸记录 + */ + @Query("DELETE from face WHERE user_face_id = :userFaceId") + int deleteFaceByUserFaceId(String userFaceId); + /** * 删除所有已注册的人脸 *