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,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> |