ソースを参照

用户收藏商户代码调整

wangzhijun 1 週間 前
コミット
a822b6c3cf

+ 20 - 7
nightFragrance-massage/src/main/java/com/ylx/collect/service/impl/CollectServiceImpl.java

@@ -1,6 +1,7 @@
 package com.ylx.collect.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.base.BaseServiceImpl;
@@ -9,6 +10,7 @@ import com.ylx.collect.domain.dto.CollectOperateDTO;
 import com.ylx.collect.domain.vo.CollectPageVO;
 import com.ylx.collect.mapper.CollectMapper;
 import com.ylx.collect.service.CollectService;
+import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.DateUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -30,16 +32,27 @@ public class CollectServiceImpl extends BaseServiceImpl<CollectMapper, Collect>
         // 1. 直接调用基类方法获取用户ID,无需再手动校验登录状态
         Long userId = getCurrentUserId();
 
-        // 2. 幂等性检查:防止重复收藏
-        LambdaQueryWrapper<Collect> wrapper = new LambdaQueryWrapper<>();
-        wrapper.eq(Collect::getUserId, userId)
-                .eq(Collect::getIsDelete, NOT_DELETE)
+        // 2. 检查是否已存在记录(包括逻辑删除的记录)
+        LambdaQueryWrapper<Collect> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Collect::getUserId, userId)
                 .eq(Collect::getMerchantId, dto.getMerchantId());
-        if (this.count(wrapper) > 0) {
-            return true;
+
+        Collect existCollect = this.getOne(queryWrapper);
+
+        if (ObjectUtil.isNotNull(existCollect)) {
+            // 3. 如果存在,判断状态
+            if (ObjectUtil.equals(NOT_DELETE, existCollect.getIsDelete())) {
+                return true;
+            } else {
+                // 4. 如果是之前取消收藏过的(逻辑删除状态),则恢复(更新)
+                existCollect.setIsDelete(NOT_DELETE);
+                existCollect.setUpdateTime(DateUtils.getNowDate());
+                existCollect.setUpdateBy(getCurrentUserNickName());
+                return this.updateById(existCollect);
+            }
         }
 
-        // 3. 执行新增
+        // 5. 执行新增
         Collect collect = new Collect();
         collect.setUserId(userId);
         collect.setMerchantId(dto.getMerchantId());