From b648aa94b386ba526f65e56167390089c429cc6a Mon Sep 17 00:00:00 2001 From: paulGao Date: Fri, 24 Dec 2021 14:59:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A6=96=E6=AC=A1=E5=8F=91?= =?UTF-8?q?=E5=B8=83=E5=95=86=E5=93=81=E4=B8=8D=E4=BC=9A=E7=94=9F=E6=88=90?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95=E9=97=AE=E9=A2=98=EF=BC=9B?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=EF=BC=9B=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?bug=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/listener/GoodsMessageListener.java | 34 +++++++++++-------- .../dto/DistributionGoodsSearchParams.java | 12 +++++++ .../service/DistributionGoodsService.java | 26 +++++++++++++- .../DistributionSelectedGoodsService.java | 7 ++++ .../DistributionGoodsServiceImpl.java | 32 +++++++++++++++++ .../DistributionSelectedGoodsServiceImpl.java | 12 +++++++ .../goods/entity/dto/GoodsSearchParams.java | 12 +++++-- .../modules/goods/service/GoodsService.java | 10 +++++- .../goods/serviceimpl/GoodsServiceImpl.java | 13 +++++++ .../serviceimpl/GoodsSkuServiceImpl.java | 16 +++++++-- .../modules/store/entity/dos/StoreDetail.java | 1 - .../store/entity/dto/AdminStoreApplyDTO.java | 1 - .../store/entity/dto/StoreEditDTO.java | 1 - .../goods/GoodsStoreController.java | 2 +- 14 files changed, 152 insertions(+), 27 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index b86dbe59..3c1095e1 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -8,7 +8,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.lili.event.GoodsCommentCompleteEvent; import cn.lili.modules.distribution.entity.dos.DistributionGoods; -import cn.lili.modules.distribution.entity.dos.DistributionSelectedGoods; +import cn.lili.modules.distribution.entity.dto.DistributionGoodsSearchParams; import cn.lili.modules.distribution.service.DistributionGoodsService; import cn.lili.modules.distribution.service.DistributionSelectedGoodsService; import cn.lili.modules.goods.entity.dos.*; @@ -31,8 +31,6 @@ import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.service.EsGoodsIndexService; import cn.lili.modules.store.service.StoreService; import cn.lili.rocketmq.tags.GoodsTagsEnum; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.spring.annotation.RocketMQMessageListener; @@ -258,7 +256,10 @@ public class GoodsMessageListener implements RocketMQListener { List goodsIndices = new ArrayList<>(); for (Goods goods : goodsList) { //如果商品通过审核&&并且已上架 - List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId()).gt(GoodsSku::getQuantity, 0)); + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); + searchParams.setGeQuantity(0); + List goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams); if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { @@ -287,7 +288,9 @@ public class GoodsMessageListener implements RocketMQListener { */ private void updateGoodsIndex(Goods goods) { //如果商品通过审核&&并且已上架 - List goodsSkuList = this.goodsSkuService.list(new LambdaQueryWrapper().eq(GoodsSku::getGoodsId, goods.getId())); + GoodsSearchParams searchParams = new GoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); + List goodsSkuList = this.goodsSkuService.getGoodsSkuByList(searchParams); if (goods.getAuthFlag().equals(GoodsAuthEnum.PASS.name()) && goods.getMarketEnable().equals(GoodsStatusEnum.UPPER.name()) && Boolean.FALSE.equals(goods.getDeleteFlag())) { @@ -373,16 +376,19 @@ public class GoodsMessageListener implements RocketMQListener { private void deleteGoods(MessageExt messageExt) { Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class); + DistributionGoodsSearchParams searchParams = new DistributionGoodsSearchParams(); + searchParams.setGoodsId(goods.getId()); //删除获取分销商品 - DistributionGoods distributionGoods = distributionGoodsService.getOne(new LambdaQueryWrapper() - .eq(DistributionGoods::getGoodsId, goods.getId())); + DistributionGoods distributionGoods = distributionGoodsService.getDistributionGoods(searchParams); - //删除分销商品绑定关系 - distributionSelectedGoodsService.remove(new LambdaQueryWrapper() - .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoods.getId())); + if (distributionGoods != null) { - //删除分销商品 - distributionGoodsService.removeById(distributionGoods.getId()); + //删除分销商品绑定关系 + distributionSelectedGoodsService.deleteByDistributionGoodsId(distributionGoods.getId()); + + //删除分销商品 + distributionGoodsService.removeById(distributionGoods.getId()); + } } /** @@ -421,9 +427,7 @@ public class GoodsMessageListener implements RocketMQListener { goods.setBuyCount(0); } int buyCount = goods.getBuyCount() + goodsCompleteMessage.getBuyNum(); - goodsService.update(new LambdaUpdateWrapper() - .eq(Goods::getId, goodsCompleteMessage.getGoodsId()) - .set(Goods::getBuyCount, buyCount)); + this.goodsService.updateGoodsBuyCount(goodsCompleteMessage.getGoodsId(), buyCount); } else { log.error("商品Id为[" + goodsCompleteMessage.getGoodsId() + "的商品不存在,更新商品失败!"); } diff --git a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java index d47a0d36..4f895f69 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/distribution/entity/dto/DistributionGoodsSearchParams.java @@ -1,11 +1,13 @@ package cn.lili.modules.distribution.entity.dto; +import cn.hutool.core.text.CharSequenceUtil; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import lombok.EqualsAndHashCode; /** * 分销员商品查询条件 @@ -13,15 +15,25 @@ import lombok.Data; * @author pikachu * @since 2020-03-14 23:04:56 */ +@EqualsAndHashCode(callSuper = true) @Data public class DistributionGoodsSearchParams extends PageVO { + @ApiModelProperty(value = "商品ID") + private String goodsId; + @ApiModelProperty(value = "商品名称") private String goodsName; @ApiModelProperty(value = "是否已选择") private boolean isChecked; + public QueryWrapper queryWrapper() { + QueryWrapper queryWrapper = this.distributionQueryWrapper(); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(goodsId), "goods_id", goodsId); + queryWrapper.eq(CharSequenceUtil.isNotEmpty(goodsName), "goods_name", goodsId); + return queryWrapper; + } public QueryWrapper storeQueryWrapper() { QueryWrapper queryWrapper = this.distributionQueryWrapper(); diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java index 4ec1478c..08df403a 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionGoodsService.java @@ -21,10 +21,34 @@ public interface DistributionGoodsService extends IService { * 根据条件分页查询分销商品信息 * * @param distributionGoodsSearchParams 商品条件 - * @return + * @return 分页分销商品信息 */ IPage goodsPage(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件查询分销商品信息列表 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息列表 + */ + List getDistributionGoodsList(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件查询分销商品信息 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息 + */ + DistributionGoods getDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams); + + /** + * 根据条件删除分销商品 + * + * @param distributionGoodsSearchParams 条件 + */ + boolean deleteDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams); + /** * 获取分销商品 * diff --git a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java index 86534f3b..733475f9 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/distribution/service/DistributionSelectedGoodsService.java @@ -23,4 +23,11 @@ public interface DistributionSelectedGoodsService extends IService getDistributionGoodsList(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.list(distributionGoodsSearchParams.queryWrapper()); + } + + /** + * 根据条件查询分销商品信息 + * + * @param distributionGoodsSearchParams 条件 + * @return 分销商品信息 + */ + @Override + public DistributionGoods getDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.getOne(distributionGoodsSearchParams.queryWrapper(), false); + } + + /** + * 根据条件删除分销商品 + * + * @param distributionGoodsSearchParams 条件 + */ + @Override + public boolean deleteDistributionGoods(DistributionGoodsSearchParams distributionGoodsSearchParams) { + return this.remove(distributionGoodsSearchParams.queryWrapper()); + } + @Override public DistributionGoods distributionGoodsVO(String id) { diff --git a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java index 972bc944..c9411725 100644 --- a/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/distribution/serviceimpl/DistributionSelectedGoodsServiceImpl.java @@ -46,4 +46,16 @@ public class DistributionSelectedGoodsServiceImpl extends ServiceImpl() + .eq(DistributionSelectedGoods::getDistributionGoodsId, distributionGoodsId)); + } } diff --git a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java index 17d5090b..76370098 100644 --- a/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java +++ b/framework/src/main/java/cn/lili/modules/goods/entity/dto/GoodsSearchParams.java @@ -63,7 +63,10 @@ public class GoodsSearchParams extends PageVO { private String authFlag; @ApiModelProperty(value = "库存数量") - private Integer quantity; + private Integer leQuantity; + + @ApiModelProperty(value = "库存数量") + private Integer geQuantity; @ApiModelProperty(value = "是否为推荐商品") private Boolean recommend; @@ -106,8 +109,11 @@ public class GoodsSearchParams extends PageVO { if (CharSequenceUtil.isNotEmpty(authFlag)) { queryWrapper.eq("auth_flag", authFlag); } - if (quantity != null) { - queryWrapper.le("quantity", quantity); + if (leQuantity != null) { + queryWrapper.le("quantity", leQuantity); + } + if (geQuantity != null) { + queryWrapper.ge("quantity", geQuantity); } if (recommend != null) { queryWrapper.le("recommend", recommend); 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 3b76f5e5..16ac93e4 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 @@ -147,12 +147,20 @@ public interface GoodsService extends IService { void updateStock(String goodsId, Integer quantity); /** - * 更新SKU评价数量 + * 更新商品评价数量 * * @param goodsId 商品ID */ void updateGoodsCommentNum(String goodsId); + /** + * 更新商品的购买数量 + * + * @param goodsId 商品ID + * @param buyCount 购买数量 + */ + void updateGoodsBuyCount(String goodsId, int buyCount); + /** * 批量更新商品的店铺信息 * @param store 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 da2f7b69..a8887da8 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 @@ -406,6 +406,19 @@ public class GoodsServiceImpl extends ServiceImpl implements this.updateById(goods); } + /** + * 更新商品的购买数量 + * + * @param goodsId 商品ID + * @param buyCount 购买数量 + */ + @Override + public void updateGoodsBuyCount(String goodsId, int buyCount) { + this.update(new LambdaUpdateWrapper() + .eq(Goods::getId, goodsId) + .set(Goods::getBuyCount, buyCount)); + } + @Override public void updateStoreDetail(Store store) { UpdateWrapper updateWrapper = new UpdateWrapper<>() 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 8715aa04..30bcd611 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 @@ -2,6 +2,7 @@ package cn.lili.modules.goods.serviceimpl; import cn.hutool.core.convert.Convert; import cn.hutool.core.map.MapUtil; +import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; @@ -538,9 +539,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl i */ @Override public void generateEs(Goods goods) { - String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); - //发送mq消息 - rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); + ThreadUtil.execAsync(() -> { + try { + // 延时执行,防止商品未保存完成就去生成商品索引导致生成索引时找不到商品问题 + Thread.sleep(2000); + String destination = rocketmqCustomProperties.getGoodsTopic() + ":" + GoodsTagsEnum.GENERATOR_GOODS_INDEX.name(); + //发送mq消息 + rocketMQTemplate.asyncSend(destination, goods.getId(), RocketmqSendCallbackBuilder.commonCallback()); + } catch (InterruptedException e) { + log.error("发送商品索引信息失败!", e); + Thread.currentThread().interrupt(); + } + }); } /** diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java index 11a21162..ed8d8d37 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java @@ -92,7 +92,6 @@ public class StoreDetail extends BaseIdEntity { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java b/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java index 8b9ac536..40020336 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dto/AdminStoreApplyDTO.java @@ -99,7 +99,6 @@ public class AdminStoreApplyDTO { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java b/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java index 6efbaea1..0400c246 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dto/StoreEditDTO.java @@ -78,7 +78,6 @@ public class StoreEditDTO { @ApiModelProperty(value = "营业执照号") private String licenseNum; - @Size(min = 1, max = 200, message = "法定经营范围长度为1-200位字符") @ApiModelProperty(value = "法定经营范围") private String scope; diff --git a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java index 8ea0ed5e..55f1af36 100644 --- a/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java +++ b/seller-api/src/main/java/cn/lili/controller/goods/GoodsStoreController.java @@ -84,7 +84,7 @@ public class GoodsStoreController { StoreDetail storeDetail = OperationalJudgment.judgment(storeDetailService.getStoreDetail(storeId)); Integer stockWarnNum = storeDetail.getStockWarning(); goodsSearchParams.setStoreId(storeId); - goodsSearchParams.setQuantity(stockWarnNum); + goodsSearchParams.setLeQuantity(stockWarnNum); goodsSearchParams.setMarketEnable(GoodsStatusEnum.UPPER.name()); IPage goodsSku = goodsSkuService.getGoodsSkuByPage(goodsSearchParams); StockWarningVO stockWarning = new StockWarningVO(stockWarnNum, goodsSku);