店铺收藏/商品收藏问题处理优化

This commit is contained in:
Chopper 2021-11-30 15:00:30 +08:00
parent 71e51b3b6f
commit 0e7665f59d
9 changed files with 58 additions and 19 deletions

View File

@ -25,6 +25,7 @@ import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.member.entity.dos.FootPrint; import cn.lili.modules.member.entity.dos.FootPrint;
import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.member.service.FootprintService; import cn.lili.modules.member.service.FootprintService;
import cn.lili.modules.member.service.GoodsCollectionService; import cn.lili.modules.member.service.GoodsCollectionService;
import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dos.EsGoodsIndex;
@ -198,10 +199,6 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
List<String> skuIds = JSONUtil.toList(message, String.class); List<String> skuIds = JSONUtil.toList(message, String.class);
goodsCollectionService.deleteSkuCollection(skuIds); goodsCollectionService.deleteSkuCollection(skuIds);
break; break;
//收藏商品
case GOODS_COLLECTION:
storeService.updateStoreCollectionNum(new String(messageExt.getBody()));
break;
//商品评价 //商品评价
case GOODS_COMMENT_COMPLETE: case GOODS_COMMENT_COMPLETE:
MemberEvaluation memberEvaluation = JSONUtil.toBean(new String(messageExt.getBody()), MemberEvaluation.class); MemberEvaluation memberEvaluation = JSONUtil.toBean(new String(messageExt.getBody()), MemberEvaluation.class);

View File

@ -6,6 +6,7 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams;
import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum;
import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum;
import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.entity.vos.GoodsVO;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.Store;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -155,4 +156,5 @@ public interface GoodsService extends IService<Goods> {
* @param store * @param store
*/ */
void updateStoreDetail(Store store); void updateStoreDetail(Store store);
} }

View File

@ -27,6 +27,7 @@ import cn.lili.modules.goods.entity.vos.GoodsVO;
import cn.lili.modules.goods.mapper.GoodsMapper; import cn.lili.modules.goods.mapper.GoodsMapper;
import cn.lili.modules.goods.service.*; import cn.lili.modules.goods.service.*;
import cn.lili.modules.member.entity.dos.MemberEvaluation; import cn.lili.modules.member.entity.dos.MemberEvaluation;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.member.entity.enums.EvaluationGradeEnum; import cn.lili.modules.member.entity.enums.EvaluationGradeEnum;
import cn.lili.modules.member.service.MemberEvaluationService; import cn.lili.modules.member.service.MemberEvaluationService;
import cn.lili.modules.store.entity.dos.FreightTemplate; import cn.lili.modules.store.entity.dos.FreightTemplate;

View File

@ -0,0 +1,28 @@
package cn.lili.modules.member.entity.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* 收藏数量变化DTO
*
* @author Chopper
* @version v1.0
* 2021-11-30 10:14
*/
@Data
@AllArgsConstructor
public class CollectionDTO {
/**
* 变化的模型id
* 商品id/店铺id
*/
private String id;
/**
* 变化的数量
* -1 减少1 / +1 增加1
*/
private Integer num;
}

View File

@ -3,6 +3,7 @@ package cn.lili.modules.member.serviceimpl;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.RocketmqSendCallbackBuilder;
import cn.lili.rocketmq.tags.GoodsTagsEnum; import cn.lili.rocketmq.tags.GoodsTagsEnum;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
@ -73,10 +74,6 @@ public class GoodsCollectionServiceImpl extends ServiceImpl<GoodsCollectionMappe
goodsCollection = new GoodsCollection(UserContext.getCurrentUser().getId(), skuId); goodsCollection = new GoodsCollection(UserContext.getCurrentUser().getId(), skuId);
this.save(goodsCollection); this.save(goodsCollection);
//商品收藏消息
String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GOODS_COLLECTION.name();
//发送mq消息
rocketMQTemplate.asyncSend(destination, JSONUtil.toJsonStr(skuId), RocketmqSendCallbackBuilder.commonCallback());
return goodsCollection; return goodsCollection;
} }
throw new ServiceException(ResultCode.USER_COLLECTION_EXIST); throw new ServiceException(ResultCode.USER_COLLECTION_EXIST);

View File

@ -3,6 +3,8 @@ package cn.lili.modules.member.serviceimpl;
import cn.lili.common.enums.ResultCode; import cn.lili.common.enums.ResultCode;
import cn.lili.common.exception.ServiceException; import cn.lili.common.exception.ServiceException;
import cn.lili.common.security.context.UserContext; import cn.lili.common.security.context.UserContext;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.store.service.StoreService;
import cn.lili.mybatis.util.PageUtil; import cn.lili.mybatis.util.PageUtil;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.member.entity.dos.StoreCollection; import cn.lili.modules.member.entity.dos.StoreCollection;
@ -13,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Optional; import java.util.Optional;
@ -26,6 +29,10 @@ import java.util.Optional;
@Service @Service
public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMapper, StoreCollection> implements StoreCollectionService { public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMapper, StoreCollection> implements StoreCollectionService {
@Autowired
private StoreService storeService;
@Override @Override
public IPage<StoreCollectionVO> storeCollection(PageVO pageVo) { public IPage<StoreCollectionVO> storeCollection(PageVO pageVo) {
QueryWrapper<StoreCollectionVO> queryWrapper = new QueryWrapper(); QueryWrapper<StoreCollectionVO> queryWrapper = new QueryWrapper();
@ -49,6 +56,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMappe
.eq(StoreCollection::getStoreId, storeId)) == null) { .eq(StoreCollection::getStoreId, storeId)) == null) {
StoreCollection storeCollection = new StoreCollection(UserContext.getCurrentUser().getId(), storeId); StoreCollection storeCollection = new StoreCollection(UserContext.getCurrentUser().getId(), storeId);
this.save(storeCollection); this.save(storeCollection);
storeService.updateStoreCollectionNum(new CollectionDTO(storeId, 1));
return storeCollection; return storeCollection;
} }
throw new ServiceException(ResultCode.USER_COLLECTION_EXIST); throw new ServiceException(ResultCode.USER_COLLECTION_EXIST);
@ -59,6 +67,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl<StoreCollectionMappe
QueryWrapper<StoreCollection> queryWrapper = new QueryWrapper(); QueryWrapper<StoreCollection> queryWrapper = new QueryWrapper();
queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); queryWrapper.eq("member_id", UserContext.getCurrentUser().getId());
queryWrapper.eq("store_id", storeId); queryWrapper.eq("store_id", storeId);
storeService.updateStoreCollectionNum(new CollectionDTO(storeId, -1));
return this.remove(queryWrapper); return this.remove(queryWrapper);
} }
} }

View File

@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants; import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
/** /**
* 店铺数据处理层 * 店铺数据处理层
@ -37,4 +38,13 @@ public interface StoreMapper extends BaseMapper<Store> {
IPage<StoreVO> getStoreList(IPage<StoreVO> page, @Param(Constants.WRAPPER) Wrapper<StoreVO> queryWrapper); IPage<StoreVO> getStoreList(IPage<StoreVO> page, @Param(Constants.WRAPPER) Wrapper<StoreVO> queryWrapper);
/**
* 修改店铺收藏数据
*
* @param storeId 店铺id
* @param num 收藏数量
*/
@Update("update li_store set collection_num = collection_num + #{num} where id = #{storeId}")
void updateCollection(String storeId, Integer num);
} }

View File

@ -1,6 +1,7 @@
package cn.lili.modules.store.service; package cn.lili.modules.store.service;
import cn.lili.common.vo.PageVO; import cn.lili.common.vo.PageVO;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.dos.Store;
import cn.lili.modules.store.entity.dto.*; import cn.lili.modules.store.entity.dto.*;
import cn.lili.modules.store.entity.vos.StoreSearchParams; import cn.lili.modules.store.entity.vos.StoreSearchParams;
@ -132,7 +133,7 @@ public interface StoreService extends IService<Store> {
/** /**
* 更新店铺收藏数量 * 更新店铺收藏数量
* *
* @param goodsId 店铺ID * @param collectionDTO 收藏信息
*/ */
void updateStoreCollectionNum(String goodsId); void updateStoreCollectionNum(CollectionDTO collectionDTO);
} }

View File

@ -16,6 +16,7 @@ import cn.lili.modules.goods.service.GoodsService;
import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.goods.service.GoodsSkuService;
import cn.lili.modules.member.entity.dos.Member; import cn.lili.modules.member.entity.dos.Member;
import cn.lili.modules.member.entity.dos.StoreCollection; import cn.lili.modules.member.entity.dos.StoreCollection;
import cn.lili.modules.member.entity.dto.CollectionDTO;
import cn.lili.modules.member.service.MemberService; import cn.lili.modules.member.service.MemberService;
import cn.lili.modules.member.service.StoreCollectionService; import cn.lili.modules.member.service.StoreCollectionService;
import cn.lili.modules.page.service.PageDataService; import cn.lili.modules.page.service.PageDataService;
@ -319,15 +320,8 @@ public class StoreServiceImpl extends ServiceImpl<StoreMapper, Store> implements
} }
@Override @Override
public void updateStoreCollectionNum(String goodsId) { public void updateStoreCollectionNum(CollectionDTO collectionDTO) {
String storeId = goodsSkuService.getById(goodsId).getStoreId(); baseMapper.updateCollection(collectionDTO.getId(), collectionDTO.getNum());
//获取店铺收藏数量
Integer collectionNum = storeCollectionService.count(new LambdaQueryWrapper<StoreCollection>()
.eq(StoreCollection::getStoreId, storeId));
//修改店铺收藏数量
this.update(new LambdaUpdateWrapper<Store>()
.set(Store::getCollectionNum, collectionNum)
.eq(Store::getId, storeId));
} }
/** /**