From 747e24312211a4147dbea7954a25f5c7876ef7e1 Mon Sep 17 00:00:00 2001 From: mazengfei <331023091@qq.com> Date: Wed, 12 Aug 2026 14:43:29 +0800 Subject: [PATCH] =?UTF-8?q?feat(face):=20=E6=8C=89=20userFaceId=20?= =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=8D=95=E6=9D=A1=E4=BA=BA=E8=84=B8=E8=AE=B0?= =?UTF-8?q?=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 FaceDao 中新增按 userFaceId 删除人脸记录的SQL语句 - 在 FaceApi 类中新增 deleteByUserFaceId 方法调用该DAO方法 - 在 NetViewModelV2 中删除人脸时改为按 userFaceId 删除,避免误删所有同用户特征 --- .../java/com/sw/platecabinet/viewmodel/NetViewModelV2.kt | 6 +++++- .../src/main/java/com/sw/plate/utils/arcface/FaceApi.java | 7 +++++++ .../com/sw/plate/utils/arcface/facedb/dao/FaceDao.java | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) 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); + /** * 删除所有已注册的人脸 *