|
@@ -1,6 +1,7 @@
|
|
|
package com.ylx.collect.service.impl;
|
|
package com.ylx.collect.service.impl;
|
|
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.ylx.base.BaseServiceImpl;
|
|
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.domain.vo.CollectPageVO;
|
|
|
import com.ylx.collect.mapper.CollectMapper;
|
|
import com.ylx.collect.mapper.CollectMapper;
|
|
|
import com.ylx.collect.service.CollectService;
|
|
import com.ylx.collect.service.CollectService;
|
|
|
|
|
+import com.ylx.common.exception.ServiceException;
|
|
|
import com.ylx.common.utils.DateUtils;
|
|
import com.ylx.common.utils.DateUtils;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
@@ -30,16 +32,27 @@ public class CollectServiceImpl extends BaseServiceImpl<CollectMapper, Collect>
|
|
|
// 1. 直接调用基类方法获取用户ID,无需再手动校验登录状态
|
|
// 1. 直接调用基类方法获取用户ID,无需再手动校验登录状态
|
|
|
Long userId = getCurrentUserId();
|
|
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());
|
|
.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 collect = new Collect();
|
|
|
collect.setUserId(userId);
|
|
collect.setUserId(userId);
|
|
|
collect.setMerchantId(dto.getMerchantId());
|
|
collect.setMerchantId(dto.getMerchantId());
|