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,12 +68,10 @@ public class RtMallScanOrderApi {
68 @PostMapping("/order/v1/callback") 68 @PostMapping("/order/v1/callback")
69 @ParamLogPrint(outPrint = true) 69 @ParamLogPrint(outPrint = true)
70 @Sign(sign = RtMallSign.class) 70 @Sign(sign = RtMallSign.class)
71 - @RepeatSubmit(prefix = "payment_allocate_callback:", value = {  
72 - "#req['trade_list'].![trade_id].![#root + #this]",}, duplicationSubmit = SpelDuplicationSubmit.class)  
73 public RtMarkMessage<?> handlePaymentAllocate(@Valid @RequestBody Object req) { 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 return RtMarkMessage.success(); 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,5 +24,5 @@ public interface MallBizPaymentDao extends MybatisMapperSupport {
24 24
25 MallBizPayment getByPayTradeId(@Param("tradeId") String tradeId); 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,6 +19,11 @@ public class MallBizOrderItem extends BaseDO {
19 private String orderId; 19 private String orderId;
20 20
21 /** 21 /**
  22 + * 交易id
  23 + */
  24 + private String tradeId;
  25 +
  26 + /**
22 * 业务侧子订单号 27 * 业务侧子订单号
23 */ 28 */
24 private Long subOrderId; 29 private Long subOrderId;
@@ -99,6 +104,14 @@ public class MallBizOrderItem extends BaseDO { @@ -99,6 +104,14 @@ public class MallBizOrderItem extends BaseDO {
99 this.orderId = orderId == null ? null : orderId.trim(); 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 public Long getSubOrderId() { 115 public Long getSubOrderId() {
103 return subOrderId; 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,7 +366,7 @@ public class MallBizRefund extends BaseDO {
366 mallBizRefund.setPayTradeNo(mallBizPaymentOrder.getPayTradeNo()); 366 mallBizRefund.setPayTradeNo(mallBizPaymentOrder.getPayTradeNo());
367 mallBizRefund.setPayTradeId(mallBizPaymentOrder.getPayTradeId()); 367 mallBizRefund.setPayTradeId(mallBizPaymentOrder.getPayTradeId());
368 mallBizRefund.setCreaterName(refundCo.getUserCode()); 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 RtMallDynamicProperty rtMallDynamicProperty = SpringContextUtils.getBean(RtMallDynamicProperty.class); 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,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 LOG.error("找不到订单: order_id={}, trade_id={}", trade.getOrderId(), trade.getTradeId()); 300 LOG.error("找不到订单: order_id={}, trade_id={}", trade.getOrderId(), trade.getTradeId());
301 throw new RtMartMallException(RtMarkErrorCode.E5000); 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 LOG.info("支付分摊处理成功: trade_id={}, item_count={}", trade.getTradeId(), orderDetail.getItemList().size()); 314 LOG.info("支付分摊处理成功: trade_id={}, item_count={}", trade.getTradeId(), orderDetail.getItemList().size());
314 } 315 }
@@ -364,14 +365,15 @@ public class MallBizPaymentServiceImpl implements MallBizPaymentService { @@ -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 List<MallBizOrderItem> orderItems = new ArrayList<>(); 369 List<MallBizOrderItem> orderItems = new ArrayList<>();
369 370
370 - for (OrderDetailResponseVO.OrderItem item : items) { 371 + for (OrderDetailResponseVO.OrderItem item : orderDetailData.getItemList()) {
371 MallBizOrderItem orderItem = new MallBizOrderItem(); 372 MallBizOrderItem orderItem = new MallBizOrderItem();
372 orderItem.setId(mallSnowflakeKeyManager.nextId(SnowflakeKey.MALL_BIZ_ORDER_ID)); 373 orderItem.setId(mallSnowflakeKeyManager.nextId(SnowflakeKey.MALL_BIZ_ORDER_ID));
373 orderItem.setBizOrderId(order.getId()); 374 orderItem.setBizOrderId(order.getId());
374 - orderItem.setOrderId(order.getOrderId()); 375 + orderItem.setOrderId(orderDetailData.getOrderId());
  376 + orderItem.setTradeId(orderDetailData.getTradeId());
375 orderItem.setSubOrderId(item.getSubOrderId() != null ? Long.parseLong(item.getSubOrderId()) : null); 377 orderItem.setSubOrderId(item.getSubOrderId() != null ? Long.parseLong(item.getSubOrderId()) : null);
376 orderItem.setShopCode(order.getShopCode()); 378 orderItem.setShopCode(order.getShopCode());
377 orderItem.setShopName(order.getShopName()); 379 orderItem.setShopName(order.getShopName());
cashier-mall/src/main/resources/com/diligrp/cashier/dao/mapper/MallBizOrderItemDao.xml
@@ -217,6 +217,7 @@ @@ -217,6 +217,7 @@
217 id, 217 id,
218 biz_order_id, 218 biz_order_id,
219 order_id, 219 order_id,
  220 + trade_id,
220 sub_order_id, 221 sub_order_id,
221 shop_code, 222 shop_code,
222 shop_name, 223 shop_name,
@@ -235,6 +236,7 @@ @@ -235,6 +236,7 @@
235 (#{item.id,jdbcType=BIGINT}, 236 (#{item.id,jdbcType=BIGINT},
236 #{item.bizOrderId,jdbcType=BIGINT}, 237 #{item.bizOrderId,jdbcType=BIGINT},
237 #{item.orderId,jdbcType=VARCHAR}, 238 #{item.orderId,jdbcType=VARCHAR},
  239 + #{item.tradeId,jdbcType=VARCHAR},
238 #{item.subOrderId,jdbcType=VARCHAR}, 240 #{item.subOrderId,jdbcType=VARCHAR},
239 #{item.shopCode,jdbcType=VARCHAR}, 241 #{item.shopCode,jdbcType=VARCHAR},
240 #{item.shopName,jdbcType=VARCHAR}, 242 #{item.shopName,jdbcType=VARCHAR},
cashier-mall/src/main/resources/com/diligrp/cashier/dao/mapper/MallBizPaymentDao.xml
@@ -311,4 +311,12 @@ @@ -311,4 +311,12 @@
311 where pay_trade_id = #{tradeId,jdbcType=VARCHAR} 311 where pay_trade_id = #{tradeId,jdbcType=VARCHAR}
312 </select> 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 </mapper> 322 </mapper>