refactor(orders.manager):调整更新订单状态代码的实现

This commit is contained in:
JIAN 2024-09-10 11:30:22 +08:00
parent 31c36abeaa
commit edc2cbf7ef
2 changed files with 18 additions and 13 deletions

View File

@ -1,6 +1,7 @@
package com.jzo2o.orders.manager.listener;
import com.alibaba.fastjson.JSON;
import com.jzo2o.api.trade.enums.TradingStateEnum;
import com.jzo2o.common.constants.MqConstants;
import com.jzo2o.common.expcetions.DBException;
import com.jzo2o.common.model.msg.TradeStatusMsg;
@ -54,10 +55,10 @@ public class TradeStatusListener {
// 处理当前微服务并且支付成功的订单
List<TradeStatusMsg> tradeStatusMsgList = msgList.stream()
.filter(statusMsg -> ordersCreateService.PRODUCT_APP_ID.equals(statusMsg.getProductAppId())
&& statusMsg.getStatusCode() == OrderPayStatusEnum.PAY_SUCCESS.getStatus())
&& TradingStateEnum.YJS.getCode().equals(statusMsg.getStatusCode()))
.collect(Collectors.toList());
transactionTemplate.execute(status -> {
transactionTemplate.executeWithoutResult(status -> {
for (TradeStatusMsg tradeStatusMsg : tradeStatusMsgList) {
if (!ordersCommonService.updateStatus(OrderUpdateStatusDTO.builder()
.id(tradeStatusMsg.getProductOrderNo())
@ -71,7 +72,6 @@ public class TradeStatusListener {
throw new DBException("更新订单状态失败");
}
}
return true;
});
}
}

View File

@ -21,6 +21,8 @@ import com.jzo2o.orders.base.enums.OrderPayStatusEnum;
import com.jzo2o.orders.base.enums.OrderStatusEnum;
import com.jzo2o.orders.base.mapper.OrdersMapper;
import com.jzo2o.orders.base.model.domain.Orders;
import com.jzo2o.orders.base.model.dto.OrderUpdateStatusDTO;
import com.jzo2o.orders.base.service.IOrdersCommonService;
import com.jzo2o.orders.manager.model.dto.request.OrdersPayReqDTO;
import com.jzo2o.orders.manager.model.dto.request.PlaceOrderReqDTO;
import com.jzo2o.orders.manager.model.dto.response.OrdersPayResDTO;
@ -59,8 +61,8 @@ public class OrdersCreateServiceImpl extends ServiceImpl<OrdersMapper, Orders> i
private TradingApi tradingApi;
@Resource
private TradeProperties tradeProperties;
private final String PRODUCT_APP_ID = "jzo2o.orders";
@Resource
private IOrdersCommonService ordersCommonService;
/**
* 生成订单号(2位年+2位月+2位日+13位序号)
@ -150,7 +152,7 @@ public class OrdersCreateServiceImpl extends ServiceImpl<OrdersMapper, Orders> i
.productAppId(PRODUCT_APP_ID)
.productOrderNo(id)
.tradingChannel(tradingChannel)
.tradingAmount(/*orders.getRealPayAmount() 测试统一使用0.1元*/ new BigDecimal("0.1"))
.tradingAmount(/*orders.getRealPayAmount() 测试统一使用0.01元*/ new BigDecimal("0.01"))
.memo(orders.getServeItemName() + orders.getPurNum() + "")
.changeChannel(tradingChannel.name().equals(orders.getTradingChannel()))
.build();
@ -201,13 +203,16 @@ public class OrdersCreateServiceImpl extends ServiceImpl<OrdersMapper, Orders> i
// 支付成功
if (ObjectUtils.isNotEmpty(tradingResDTO)
&& tradingResDTO.getTradingState() == TradingStateEnum.YJS) {
lambdaUpdate()
.eq(Orders::getId, id)
.set(Orders::getPayTime, LocalDateTime.now())
.set(Orders::getPayStatus, OrderPayStatusEnum.PAY_SUCCESS.getStatus())
.set(Orders::getOrdersStatus, OrderStatusEnum.DISPATCHING.getStatus())
.set(Orders::getTransactionId, tradingResDTO.getTransactionId())
.update();
ordersCommonService.updateStatus(OrderUpdateStatusDTO.builder()
.id(id)
.originStatus(OrderStatusEnum.NO_PAY.getStatus())
.targetStatus(OrderStatusEnum.DISPATCHING.getStatus())
.payStatus(OrderPayStatusEnum.PAY_SUCCESS.getStatus())
.tradingOrderNo(tradingResDTO.getTradingOrderNo())
.transactionId(tradingResDTO.getTransactionId())
.tradingChannel(tradingResDTO.getTradingChannel())
.payTime(LocalDateTime.now()).build());
// 支付成功更新最终响应信息的状态
ordersPayResDTO.setPayStatus(OrderPayStatusEnum.PAY_SUCCESS.getStatus());