Commit 5037436ec498bfa669e3ccf752e3adbabd3d1754

Authored by dengwei
1 parent eb7b1af0

feat scan callback

cashier-mall/src/main/java/com/diligrp/cashier/mall/api/RtMallScanOrderApi.java
... ... @@ -68,12 +68,10 @@ public class RtMallScanOrderApi {
68 68 @PostMapping("/order/v1/callback")
69 69 @ParamLogPrint(outPrint = true)
70 70 @Sign(sign = RtMallSign.class)
71   - @RepeatSubmit(prefix = "payment_allocate_callback:", value = {
72   - "#req['trade_list'].![trade_id].![#root + #this]",}, duplicationSubmit = SpelDuplicationSubmit.class)
73 71 public RtMarkMessage<?> handlePaymentAllocate(@Valid @RequestBody Object req) {
74   - PaymentAllocateCO allocateCO = JsonUtils.convertValue(req, PaymentAllocateCO.class);
75   - RtMallValidateUtils.valid(allocateCO);
76   - mallBizPaymentService.handlePaymentAllocate(allocateCO);
  72 + PaymentAllocateCO allocateCo = JsonUtils.convertValue(req, PaymentAllocateCO.class);
  73 + RtMallValidateUtils.valid(allocateCo);
  74 + mallBizPaymentService.handlePaymentAllocate(allocateCo);
77 75 return RtMarkMessage.success();
78 76 }
79 77  
... ...
cashier-mall/src/main/java/com/diligrp/cashier/mall/dao/MallBizPaymentDao.java
... ... @@ -24,5 +24,5 @@ public interface MallBizPaymentDao extends MybatisMapperSupport {
24 24  
25 25 MallBizPayment getByPayTradeId(@Param("tradeId") String tradeId);
26 26  
27   - MallBizPayment findByOrderIdAndTradeId(String orderId, String tradeId);
  27 + MallBizPayment findByOrderIdAndTradeId(@Param("orderId") String orderId, @Param("tradeId") String tradeId);
28 28 }
... ...
cashier-mall/src/main/java/com/diligrp/cashier/mall/model/MallBizOrderItem.java
... ... @@ -19,6 +19,11 @@ public class MallBizOrderItem extends BaseDO {
19 19 private String orderId;
20 20  
21 21 /**
  22 + * 交易id
  23 + */
  24 + private String tradeId;
  25 +
  26 + /**
22 27 * 业务侧子订单号
23 28 */
24 29 private Long subOrderId;
... ... @@ -99,6 +104,14 @@ public class MallBizOrderItem extends BaseDO {
99 104 this.orderId = orderId == null ? null : orderId.trim();
100 105 }
101 106  
  107 + public String getTradeId() {
  108 + return tradeId;
  109 + }
  110 +
  111 + public void setTradeId(String tradeId) {
  112 + this.tradeId = tradeId;
  113 + }
  114 +
102 115 public Long getSubOrderId() {
103 116 return subOrderId;
104 117 }
... ...
cashier-mall/src/main/java/com/diligrp/cashier/mall/model/MallBizRefund.java
... ... @@ -366,7 +366,7 @@ public class MallBizRefund extends BaseDO {
366 366 mallBizRefund.setPayTradeNo(mallBizPaymentOrder.getPayTradeNo());
367 367 mallBizRefund.setPayTradeId(mallBizPaymentOrder.getPayTradeId());
368 368 mallBizRefund.setCreaterName(refundCo.getUserCode());
369   - mallBizRefund.setRefundFee(ObjectUtils.defaultIfNull(refundCo.getRefundFee(), mallBizRefund.getRefundFee()));
  369 + mallBizRefund.setRefundFee(ObjectUtils.defaultIfNull(refundCo.getRefundFee(), mallBizPaymentOrder.getPayFee()));
370 370  
371 371 // 回调地址
372 372 RtMallDynamicProperty rtMallDynamicProperty = SpringContextUtils.getBean(RtMallDynamicProperty.class);
... ...
cashier-mall/src/main/java/com/diligrp/cashier/mall/service/biz/impl/MallBizPaymentServiceImpl.java
... ... @@ -295,20 +295,21 @@ public class MallBizPaymentServiceImpl implements MallBizPaymentService {
295 295 }
296 296  
297 297 //查询订单
298   - MallBizOrder order = mallBizOrderDao.findByOrderIdAndTradeId(trade.getOrderId(), trade.getTradeId());
299   - if (order == null) {
  298 + MallBizPaymentOrder mallBizPaymentOrder = mallBizPaymentOrderDao.getMallBizPaymentOrder(new MallBizPaymentOrder(trade.getOrderId(), trade.getTradeId()));
  299 + if (mallBizPaymentOrder == null) {
300 300 LOG.error("找不到订单: order_id={}, trade_id={}", trade.getOrderId(), trade.getTradeId());
301 301 throw new RtMartMallException(RtMarkErrorCode.E5000);
302 302 }
303 303  
304   - //更新订单状态
305   - updateOrderState(order, orderDetail);
  304 + // 更新订单状态
  305 + // updateOrderState(mallBizPaymentOrder, orderDetail);
306 306  
307   - //更新支付记录
308   - updatePaymentInfo(trade.getOrderId(), trade.getTradeId(), orderDetail);
  307 + // 更新支付记录
  308 + // updatePaymentInfo(trade.getOrderId(), trade.getTradeId(), orderDetail);
309 309  
310   - //插入商品明细
311   - insertOrderItems(order, orderDetail.getItemList());
  310 + // 插入商品明细
  311 + MallBizOrder mallBizOrder = mallBizOrderDao.selectByPrimaryKey(mallBizPaymentOrder.getBizOrderId());
  312 + insertOrderItems(mallBizOrder, orderDetail);
312 313  
313 314 LOG.info("支付分摊处理成功: trade_id={}, item_count={}", trade.getTradeId(), orderDetail.getItemList().size());
314 315 }
... ... @@ -364,14 +365,15 @@ public class MallBizPaymentServiceImpl implements MallBizPaymentService {
364 365 /**
365 366 * 插入商品明细
366 367 */
367   - private void insertOrderItems(MallBizOrder order, List<OrderDetailResponseVO.OrderItem> items) {
  368 + private void insertOrderItems(MallBizOrder order, OrderDetailResponseVO.OrderDetailData orderDetailData) {
368 369 List<MallBizOrderItem> orderItems = new ArrayList<>();
369 370  
370   - for (OrderDetailResponseVO.OrderItem item : items) {
  371 + for (OrderDetailResponseVO.OrderItem item : orderDetailData.getItemList()) {
371 372 MallBizOrderItem orderItem = new MallBizOrderItem();
372 373 orderItem.setId(mallSnowflakeKeyManager.nextId(SnowflakeKey.MALL_BIZ_ORDER_ID));
373 374 orderItem.setBizOrderId(order.getId());
374   - orderItem.setOrderId(order.getOrderId());
  375 + orderItem.setOrderId(orderDetailData.getOrderId());
  376 + orderItem.setTradeId(orderDetailData.getTradeId());
375 377 orderItem.setSubOrderId(item.getSubOrderId() != null ? Long.parseLong(item.getSubOrderId()) : null);
376 378 orderItem.setShopCode(order.getShopCode());
377 379 orderItem.setShopName(order.getShopName());
... ...
cashier-mall/src/main/resources/com/diligrp/cashier/dao/mapper/MallBizOrderItemDao.xml
... ... @@ -217,6 +217,7 @@
217 217 id,
218 218 biz_order_id,
219 219 order_id,
  220 + trade_id,
220 221 sub_order_id,
221 222 shop_code,
222 223 shop_name,
... ... @@ -235,6 +236,7 @@
235 236 (#{item.id,jdbcType=BIGINT},
236 237 #{item.bizOrderId,jdbcType=BIGINT},
237 238 #{item.orderId,jdbcType=VARCHAR},
  239 + #{item.tradeId,jdbcType=VARCHAR},
238 240 #{item.subOrderId,jdbcType=VARCHAR},
239 241 #{item.shopCode,jdbcType=VARCHAR},
240 242 #{item.shopName,jdbcType=VARCHAR},
... ...
cashier-mall/src/main/resources/com/diligrp/cashier/dao/mapper/MallBizPaymentDao.xml
... ... @@ -311,4 +311,12 @@
311 311 where pay_trade_id = #{tradeId,jdbcType=VARCHAR}
312 312 </select>
313 313  
  314 + <select id="findByOrderIdAndTradeId" resultType="com.diligrp.cashier.mall.model.MallBizPayment">
  315 + select
  316 + <include refid="Base_Column_List" />
  317 + from mall_biz_payment
  318 + where order_id = #{orderId,jdbcType=VARCHAR}
  319 + and trade_id = #{tradeId,jdbcType=VARCHAR}
  320 + </select>
  321 +
314 322 </mapper>
... ...