修复下架商品没有删除商品索引问题。修复下单使用优惠券使金额变为0元时消费服务获取数据不正确导致没有及时更新订单状态问题。

This commit is contained in:
paulGao
2021-12-27 18:01:58 +08:00
parent e7563203fe
commit 168c630a13
10 changed files with 119 additions and 38 deletions

View File

@@ -8,7 +8,6 @@ import cn.lili.modules.order.order.entity.dos.Receipt;
import cn.lili.modules.order.order.entity.vo.OrderVO;
import cn.lili.modules.order.order.entity.vo.ReceiptVO;
import cn.lili.modules.order.order.service.ReceiptService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -34,25 +33,23 @@ public class OrderCreateReceiptExecute implements TradeEvent {
//获取发票信息
ReceiptVO receiptVO = tradeDTO.getReceiptVO();
//如果需要获取发票则保存发票信息
if (tradeDTO.getNeedReceipt()) {
if (orderList.size() > 0) {
List<Receipt> receipts = new ArrayList<>();
for (OrderVO orderVO : orderList) {
Receipt receipt = new Receipt();
BeanUtil.copyProperties(receiptVO, receipt);
receipt.setMemberId(orderVO.getMemberId());
receipt.setMemberName(orderVO.getMemberName());
receipt.setStoreId(orderVO.getStoreId());
receipt.setStoreName(orderVO.getStoreName());
receipt.setOrderSn(orderVO.getSn());
receipt.setReceiptDetail(JSONUtil.toJsonStr(orderVO.getOrderItems()));
receipt.setReceiptPrice(orderVO.getFlowPrice());
receipt.setReceiptStatus(0);
receipts.add(receipt);
}
//保存发票
receiptService.saveBatch(receipts);
if (Boolean.TRUE.equals(tradeDTO.getNeedReceipt()) && !orderList.isEmpty()) {
List<Receipt> receipts = new ArrayList<>();
for (OrderVO orderVO : orderList) {
Receipt receipt = new Receipt();
BeanUtil.copyProperties(receiptVO, receipt);
receipt.setMemberId(orderVO.getMemberId());
receipt.setMemberName(orderVO.getMemberName());
receipt.setStoreId(orderVO.getStoreId());
receipt.setStoreName(orderVO.getStoreName());
receipt.setOrderSn(orderVO.getSn());
receipt.setReceiptDetail(JSONUtil.toJsonStr(orderVO.getOrderItems()));
receipt.setReceiptPrice(orderVO.getFlowPrice());
receipt.setReceiptStatus(0);
receipts.add(receipt);
}
//保存发票
receiptService.saveBatch(receipts);
}
}
}

View File

@@ -186,12 +186,28 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
break;
//审核商品
case GOODS_AUDIT:
updateGoodsNum(messageExt);
Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class);
updateGoodsNum(goods);
break;
//删除商品
case GOODS_DELETE:
deleteGoods(messageExt);
updateGoodsNum(messageExt);
try {
String goodsIdsJsonStr = new String(messageExt.getBody());
for (String goodsId : JSONUtil.toList(goodsIdsJsonStr, String.class)) {
Goods goodsById = this.goodsService.getById(goodsId);
if (goodsById != null) {
this.deleteGoods(goodsById);
this.updateGoodsNum(goodsById);
List<String> skuIdsByGoodsId = this.goodsSkuService.getSkuIdsByGoodsId(goodsId);
if (skuIdsByGoodsId != null && !skuIdsByGoodsId.isEmpty()) {
this.goodsIndexService.deleteIndexByIds(skuIdsByGoodsId);
}
}
}
} catch (Exception e) {
log.error("删除商品索引事件执行异常,商品信息 {}", new String(messageExt.getBody()));
}
break;
//规格删除
case SKU_DELETE:
@@ -380,10 +396,9 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
* 2.删除分销员-分销商品绑定关系
* 3.删除分销商品
*
* @param messageExt 消息
* @param goods 消息
*/
private void deleteGoods(MessageExt messageExt) {
Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class);
private void deleteGoods(Goods goods) {
DistributionGoodsSearchParams searchParams = new DistributionGoodsSearchParams();
searchParams.setGoodsId(goods.getId());
@@ -403,17 +418,15 @@ public class GoodsMessageListener implements RocketMQListener<MessageExt> {
/**
* 修改商品数量
*
* @param messageExt 信息体
* @param goods 信息体
*/
private void updateGoodsNum(MessageExt messageExt) {
private void updateGoodsNum(Goods goods) {
try {
Goods goods = JSONUtil.toBean(new String(messageExt.getBody()), Goods.class);
//更新店铺商品数量
assert goods != null;
storeService.updateStoreGoodsNum(goods.getStoreId());
} catch (Exception e) {
log.error("商品MQ信息错误{}", messageExt.toString());
log.error("修改商品数量错误");
}
}

View File

@@ -62,7 +62,7 @@ public class OrderMessageListener implements RocketMQListener<MessageExt> {
//订单创建
case ORDER_CREATE:
String key = new String(messageExt.getBody());
TradeDTO tradeDTO = (TradeDTO) cache.get(key);
TradeDTO tradeDTO = JSONUtil.toBean(cache.getString(key), TradeDTO.class);
boolean result = true;
for (TradeEvent event : tradeEvent) {
try {