diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index ab19413d..f8f8a35e 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -60,11 +60,6 @@ public class GoodsMessageListener implements RocketMQListener { */ @Autowired private EsGoodsIndexService goodsIndexService; - /** - * 店铺 - */ - @Autowired - private StoreService storeService; /** * 商品 */ @@ -202,7 +197,6 @@ public class GoodsMessageListener implements RocketMQListener { //审核商品 case GOODS_AUDIT: Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); - updateGoodsNum(goods); updateGoodsIndex(goods); break; //删除商品 @@ -213,7 +207,6 @@ public class GoodsMessageListener implements RocketMQListener { Goods goodsById = this.goodsService.getById(goodsId); if (goodsById != null) { this.deleteGoods(goodsById); - this.updateGoodsNum(goodsById); goodsIndexService.deleteIndex(MapUtil.builder(new HashMap()).put("goodsId", goodsId).build()); } } @@ -458,22 +451,6 @@ public class GoodsMessageListener implements RocketMQListener { distributionGoodsService.removeById(distributionGoods.getId()); } } - - /** - * 修改商品数量 - * - * @param goods 信息体 - */ - private void updateGoodsNum(Goods goods) { - try { - //更新店铺商品数量 - assert goods != null; - storeService.updateStoreGoodsNum(goods.getStoreId()); - } catch (Exception e) { - log.error("修改商品数量错误"); - } - } - /** * 商品购买完成 * 1.更新商品购买数量 diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreExecute.java new file mode 100644 index 00000000..283a1552 --- /dev/null +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreExecute.java @@ -0,0 +1,49 @@ +package cn.lili.timetask.handler.impl.store; + +import cn.lili.modules.goods.service.GoodsSkuService; +import cn.lili.modules.store.entity.dos.Store; +import cn.lili.modules.store.entity.enums.StoreStatusEnum; +import cn.lili.modules.store.service.StoreService; +import cn.lili.timetask.handler.EveryDayExecute; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 店铺信息更新 + * + * @author Chopper + * @since 2021/3/15 5:30 下午 + */ +@Component +@Slf4j +public class StoreExecute implements EveryDayExecute { + /** + * 店铺 + */ + @Autowired + private StoreService storeService; + + @Autowired + private GoodsSkuService goodsSkuService; + + @Override + public void execute() { + //获取所有开启的店铺 + List storeList = storeService.list(new LambdaQueryWrapper().eq(Store::getStoreDisable, StoreStatusEnum.OPEN.name())); + + for (Store store : storeList) { + try { + Long num = goodsSkuService.countSkuNum(store.getId()); + storeService.updateStoreGoodsNum(store.getId(), num); + } catch (Exception e) { + log.error("店铺id为{},更新商品数量失败", store.getId(), e); + } + } + + + } +} diff --git a/consumer/src/main/java/cn/lili/timetask/handler/impl/storerating/StoreRatingExecute.java b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java similarity index 97% rename from consumer/src/main/java/cn/lili/timetask/handler/impl/storerating/StoreRatingExecute.java rename to consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java index 90ba815e..269ab947 100644 --- a/consumer/src/main/java/cn/lili/timetask/handler/impl/storerating/StoreRatingExecute.java +++ b/consumer/src/main/java/cn/lili/timetask/handler/impl/store/StoreRatingExecute.java @@ -1,4 +1,4 @@ -package cn.lili.timetask.handler.impl.storerating; +package cn.lili.timetask.handler.impl.store; import cn.lili.common.enums.SwitchEnum; import cn.lili.modules.member.entity.dos.MemberEvaluation; diff --git a/framework/src/main/java/cn/lili/cache/CachePrefix.java b/framework/src/main/java/cn/lili/cache/CachePrefix.java index 43423d64..52592ba6 100644 --- a/framework/src/main/java/cn/lili/cache/CachePrefix.java +++ b/framework/src/main/java/cn/lili/cache/CachePrefix.java @@ -465,6 +465,10 @@ public enum CachePrefix { */ INIT_INDEX_FLAG, + /** + * 店铺 + */ + STORE, /** * 店铺分类 */ diff --git a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java index a1462bca..0fc10b04 100644 --- a/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java +++ b/framework/src/main/java/cn/lili/modules/goods/service/GoodsSkuService.java @@ -212,5 +212,19 @@ public interface GoodsSkuService extends IService { */ List getSkuIdsByGoodsId(String goodsId); + /** + * 删除并且新增sku,即覆盖之前信息 + * + * @param goodsSkus + * @return + */ boolean deleteAndInsertGoodsSkus(List goodsSkus); + + /** + * 统计sku总数 + * + * @param storeId + * @return + */ + Long countSkuNum(String storeId); } \ 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 fbbbf6a3..7d7fa570 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 @@ -469,11 +469,23 @@ public class GoodsServiceImpl extends ServiceImpl implements return this.count( new LambdaQueryWrapper() .eq(Goods::getStoreId, storeId) + .eq(Goods::getDeleteFlag, Boolean.FALSE) .eq(Goods::getAuthFlag, GoodsAuthEnum.PASS.name()) .eq(Goods::getMarketEnable, GoodsStatusEnum.UPPER.name())); } + + /** + * 更新店铺商品数量 + * + * @param storeId 信息体 + */ + void updateGoodsNum(String storeId) { + Long num = goodsSkuService.countSkuNum(storeId); + storeService.updateStoreGoodsNum(storeId, num); + } + /** * 更新商品状态 * diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index f80087ae..72e32930 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -601,6 +601,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl i return count > 0; } + @Override + public Long countSkuNum(String storeId) { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + + queryWrapper + .eq(GoodsSku::getStoreId, storeId) + .eq(GoodsSku::getDeleteFlag, Boolean.FALSE) + .eq(GoodsSku::getAuthFlag, GoodsAuthEnum.PASS.name()) + .eq(GoodsSku::getMarketEnable, GoodsStatusEnum.UPPER.name()); + return this.count(queryWrapper); + } + /** * 修改库存 * 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 95632b0d..28693e53 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 @@ -106,8 +106,9 @@ public interface StoreService extends IService { * 更新店铺商品数量 * * @param storeId 店铺ID + * @param num 商品数量 */ - void updateStoreGoodsNum(String storeId); + void updateStoreGoodsNum(String storeId, Long num); /** * 更新店铺收藏数量 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 50ff1703..c932f659 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 @@ -3,6 +3,8 @@ package cn.lili.modules.store.serviceimpl; import cn.hutool.core.date.DateTime; import cn.hutool.core.map.MapUtil; import cn.hutool.json.JSONUtil; +import cn.lili.cache.Cache; +import cn.lili.cache.CachePrefix; import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.AuthUser; import cn.lili.common.security.context.UserContext; @@ -64,9 +66,17 @@ public class StoreDetailServiceImpl extends ServiceImpl implements } @Override - public void updateStoreGoodsNum(String storeId) { - //获取店铺已上架已审核通过商品数量 - long goodsNum = goodsService.countStoreGoodsNum(storeId); + public void updateStoreGoodsNum(String storeId, Long num) { //修改店铺商品数量 this.update(new LambdaUpdateWrapper() - .set(Store::getGoodsNum, goodsNum) + .set(Store::getGoodsNum, num) .eq(Store::getId, storeId)); }