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);