Commit 5037436ec498bfa669e3ccf752e3adbabd3d1754
1 parent
eb7b1af0
feat scan callback
Showing
7 changed files
with
41 additions
and
18 deletions
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> | ... | ... |