From c0245d37fb3170cf788a6b8d9b2b76148a856a41 Mon Sep 17 00:00:00 2001 From: Peanut Date: Sun, 19 Jul 2026 23:56:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=B6=E8=97=8F=20toggle=20=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E9=87=8D=E6=96=B0=E6=94=B6=E8=97=8F=EF=BC=88=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E9=80=BB=E8=BE=91=E5=88=A0=E9=99=A4=E4=B8=8E=20unique?= =?UTF-8?q?=20key=20=E5=86=B2=E7=AA=81=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/EventFavoriteServiceImpl.java | 21 +++++++++++++++---- .../impl/ScriptFavoriteServiceImpl.java | 21 +++++++++++++++---- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/server/src/main/java/com/emotion/service/impl/EventFavoriteServiceImpl.java b/server/src/main/java/com/emotion/service/impl/EventFavoriteServiceImpl.java index 80657d3..5aa03d3 100644 --- a/server/src/main/java/com/emotion/service/impl/EventFavoriteServiceImpl.java +++ b/server/src/main/java/com/emotion/service/impl/EventFavoriteServiceImpl.java @@ -56,15 +56,28 @@ public class EventFavoriteServiceImpl extends ServiceImpl w = new LambdaQueryWrapper<>(); w.eq(EventFavorite::getUserId, userId) - .eq(EventFavorite::getEventId, eventId) - .eq(EventFavorite::getIsDeleted, 0); + .eq(EventFavorite::getEventId, eventId); EventFavorite existing = this.getOne(w); if (existing != null) { - this.removeById(existing.getId()); - r.setIsFavorited(false); + if (existing.getIsDeleted() != null && existing.getIsDeleted() == 0) { + // 已收藏 -> 物理删除(取消收藏) + this.removeById(existing.getId()); + r.setIsFavorited(false); + } else { + // 历史逻辑删除记录 -> 恢复为已收藏 + this.lambdaUpdate() + .set(EventFavorite::getIsDeleted, 0) + .eq(EventFavorite::getId, existing.getId()) + .update(); + r.setIsFavorited(true); + if (existing.getCreateTime() != null) { + r.setFavoriteTime(existing.getCreateTime().format(FMT)); + } + } } else { EventFavorite fav = new EventFavorite(); fav.setUserId(userId); diff --git a/server/src/main/java/com/emotion/service/impl/ScriptFavoriteServiceImpl.java b/server/src/main/java/com/emotion/service/impl/ScriptFavoriteServiceImpl.java index 4b5c63a..e0885ad 100644 --- a/server/src/main/java/com/emotion/service/impl/ScriptFavoriteServiceImpl.java +++ b/server/src/main/java/com/emotion/service/impl/ScriptFavoriteServiceImpl.java @@ -56,15 +56,28 @@ public class ScriptFavoriteServiceImpl extends ServiceImpl w = new LambdaQueryWrapper<>(); w.eq(ScriptFavorite::getUserId, userId) - .eq(ScriptFavorite::getScriptId, scriptId) - .eq(ScriptFavorite::getIsDeleted, 0); + .eq(ScriptFavorite::getScriptId, scriptId); ScriptFavorite existing = this.getOne(w); if (existing != null) { - this.removeById(existing.getId()); - r.setIsFavorited(false); + if (existing.getIsDeleted() != null && existing.getIsDeleted() == 0) { + // 已收藏 -> 物理删除(取消收藏) + this.removeById(existing.getId()); + r.setIsFavorited(false); + } else { + // 历史逻辑删除记录 -> 恢复为已收藏 + this.lambdaUpdate() + .set(ScriptFavorite::getIsDeleted, 0) + .eq(ScriptFavorite::getId, existing.getId()) + .update(); + r.setIsFavorited(true); + if (existing.getCreateTime() != null) { + r.setFavoriteTime(existing.getCreateTime().format(FMT)); + } + } } else { ScriptFavorite fav = new ScriptFavorite(); fav.setUserId(userId);