diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 4f7afc51..5ff352ef 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -25,6 +25,7 @@ import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.FootPrint; 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.GoodsCollectionService; import cn.lili.modules.search.entity.dos.EsGoodsIndex; @@ -198,10 +199,6 @@ public class GoodsMessageListener implements RocketMQListener { List skuIds = JSONUtil.toList(message, String.class); goodsCollectionService.deleteSkuCollection(skuIds); break; - //收藏商品 - case GOODS_COLLECTION: - storeService.updateStoreCollectionNum(new String(messageExt.getBody())); - break; //商品评价 case GOODS_COMMENT_COMPLETE: MemberEvaluation memberEvaluation = JSONUtil.toBean(new String(messageExt.getBody()), MemberEvaluation.class); @@ -369,9 +366,8 @@ public class GoodsMessageListener implements RocketMQListener { */ private void updateGoodsNum(MessageExt messageExt) { - Goods goods; try { - goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); //更新店铺商品数量 assert goods != null; storeService.updateStoreGoodsNum(goods.getStoreId()); diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java index dbf17a60..61013c54 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsService.java @@ -6,6 +6,8 @@ import cn.lili.modules.goods.entity.dto.GoodsSearchParams; import cn.lili.modules.goods.entity.enums.GoodsAuthEnum; import cn.lili.modules.goods.entity.enums.GoodsStatusEnum; 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 com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; @@ -148,4 +150,11 @@ public interface GoodsService extends IService { * @param goodsId 商品ID */ void updateGoodsCommentNum(String goodsId); + + /** + * 批量更新商品的店铺信息 + * @param store + */ + void updateStoreDetail(Store store); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java index 08cb2a2d..8e34532d 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsServiceImpl.java @@ -16,6 +16,7 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.modules.goods.entity.dos.Category; import cn.lili.modules.goods.entity.dos.Goods; import cn.lili.modules.goods.entity.dos.GoodsGallery; +import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.dto.GoodsParamsDTO; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -26,9 +27,11 @@ import cn.lili.modules.goods.entity.vos.GoodsVO; import cn.lili.modules.goods.mapper.GoodsMapper; import cn.lili.modules.goods.service.*; 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.service.MemberEvaluationService; import cn.lili.modules.store.entity.dos.FreightTemplate; +import cn.lili.modules.store.entity.dos.Store; import cn.lili.modules.store.entity.vos.StoreVO; import cn.lili.modules.store.service.FreightTemplateService; import cn.lili.modules.store.service.StoreService; @@ -42,6 +45,7 @@ import cn.lili.rocketmq.tags.GoodsTagsEnum; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -121,8 +125,8 @@ public class GoodsServiceImpl extends ServiceImpl implements @Override public List getByBrandIds(List brandIds) { - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper (); - lambdaQueryWrapper.in(Goods::getBrandId,brandIds); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.in(Goods::getBrandId, brandIds); return list(lambdaQueryWrapper); } @@ -396,6 +400,16 @@ public class GoodsServiceImpl extends ServiceImpl implements this.updateById(goods); } + @Override + public void updateStoreDetail(Store store) { + UpdateWrapper updateWrapper = new UpdateWrapper<>() + .eq("store_id", store.getId()) + .set("store_name", store.getStoreName()) + .set("self_operated", store.getSelfOperated()); + this.update(updateWrapper); + goodsSkuService.update(updateWrapper); + } + /** * 添加商品默认图片 * diff --git a/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java b/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java new file mode 100644 index 00000000..0ec661e0 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/member/entity/dto/CollectionDTO.java @@ -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; +} diff --git a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java index 692a4b74..35ffb902 100644 --- a/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/member/serviceimpl/GoodsCollectionServiceImpl.java @@ -3,6 +3,7 @@ package cn.lili.modules.member.serviceimpl; import cn.hutool.json.JSONUtil; import cn.lili.common.enums.ResultCode; import cn.lili.common.exception.ServiceException; +import cn.lili.modules.member.entity.dto.CollectionDTO; import cn.lili.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.rocketmq.tags.GoodsTagsEnum; import cn.lili.common.security.context.UserContext; @@ -73,10 +74,6 @@ public class GoodsCollectionServiceImpl extends ServiceImpl implements StoreCollectionService { + + @Autowired + private StoreService storeService; + @Override public IPage storeCollection(PageVO pageVo) { QueryWrapper queryWrapper = new QueryWrapper(); @@ -49,6 +56,7 @@ public class StoreCollectionServiceImpl extends ServiceImpl queryWrapper = new QueryWrapper(); queryWrapper.eq("member_id", UserContext.getCurrentUser().getId()); queryWrapper.eq("store_id", storeId); + storeService.updateStoreCollectionNum(new CollectionDTO(storeId, -1)); return this.remove(queryWrapper); } } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java b/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java index ab9594f0..7d115b53 100644 --- a/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java +++ b/framework/src/main/java/cn/lili/modules/store/mapper/StoreMapper.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Constants; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; /** * 店铺数据处理层 @@ -37,4 +38,13 @@ public interface StoreMapper extends BaseMapper { IPage getStoreList(IPage page, @Param(Constants.WRAPPER) Wrapper 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); + } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java index 0fa2ab0b..578fd291 100644 --- a/framework/src/main/java/cn/lili/modules/store/service/StoreService.java +++ b/framework/src/main/java/cn/lili/modules/store/service/StoreService.java @@ -1,6 +1,7 @@ package cn.lili.modules.store.service; 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.dto.*; import cn.lili.modules.store.entity.vos.StoreSearchParams; @@ -132,7 +133,7 @@ public interface StoreService extends IService { /** * 更新店铺收藏数量 * - * @param goodsId 店铺ID + * @param collectionDTO 收藏信息 */ - void updateStoreCollectionNum(String goodsId); + void updateStoreCollectionNum(CollectionDTO collectionDTO); } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index 5c752d51..66e3bb74 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -64,9 +64,6 @@ public class StoreDetailServiceImpl extends ServiceImpl() - .eq(Goods::getStoreId, store.getId()) - .set(Goods::getStoreName, store.getStoreName()) - .set(Goods::getSelfOperated, store.getSelfOperated())); - goodsSkuService.update(new LambdaUpdateWrapper() - .eq(GoodsSku::getStoreId, store.getId()) - .set(GoodsSku::getStoreName, store.getStoreName()) - .set(GoodsSku::getSelfOperated, store.getSelfOperated())); + goodsService.updateStoreDetail(store); Map updateIndexFieldsMap = EsIndexUtil.getUpdateIndexFieldsMap( MapUtil.builder().put("storeId", store.getId()).build(), diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java index 81ddc417..065a2313 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreServiceImpl.java @@ -16,6 +16,7 @@ import cn.lili.modules.goods.service.GoodsService; import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.member.entity.dos.Member; 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.StoreCollectionService; import cn.lili.modules.page.service.PageDataService; @@ -319,15 +320,8 @@ public class StoreServiceImpl extends ServiceImpl implements } @Override - public void updateStoreCollectionNum(String goodsId) { - String storeId = goodsSkuService.getById(goodsId).getStoreId(); - //获取店铺收藏数量 - Integer collectionNum = storeCollectionService.count(new LambdaQueryWrapper() - .eq(StoreCollection::getStoreId, storeId)); - //修改店铺收藏数量 - this.update(new LambdaUpdateWrapper() - .set(Store::getCollectionNum, collectionNum) - .eq(Store::getId, storeId)); + public void updateStoreCollectionNum(CollectionDTO collectionDTO) { + baseMapper.updateCollection(collectionDTO.getId(), collectionDTO.getNum()); } /**