Browse Source

修改已支付订单在次唤起会报错的问题,并添加回调日志

liu 2 months ago
parent
commit
01da173d42

+ 13 - 1
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -721,12 +721,14 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
         // 店铺信息
         GoodsShop goodsShop = shopMessageService.getShopInfoById(order.getShopId());
+        log.info("获取店铺id为【{}】的信息",order.getShopId());
 
         // 是否自动接单
         boolean autoAccept = goodsShop.getAutoAcceptOrder() != null && goodsShop.getAutoAcceptOrder() == 0;
+        log.info("是否自动接单【{}】",autoAccept);
         // 是否预约订单
         boolean reservationFlag = StrUtil.equals(order.getReservationFlag(), Constant.YES);
-
+        log.info("是否预约订单【{}】",reservationFlag);
         // 店铺自动接单且当前订单不是预约订单
         if (autoAccept && !reservationFlag) {
             // 6制作中
@@ -736,6 +738,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             // 7商家待接单
             order.setStatus(7);
         }
+        log.info("订单状态【{}】",order.getStatus());
 
         RLock lock = redissonClient.getLock(String.format(RedisKey.UPDATE_ORDER_LOCK, order.getOrderId()));
         lock.lock(20, TimeUnit.SECONDS);
@@ -746,14 +749,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
             // 更新订单状态及订单序号
             updateOrderStatusAndSequence(order);
+            log.info("订单【{}】完成订单状态及订单序号的更新",order.getOrderId());
 
             // 如果是支付宝或者微信支付,用户钱包新增消费记录
             addConsumeRecordInUserMoneyDetail(order);
+            log.info("订单【{}】新增用户钱包消费记录",order.getOrderId());
 
             // 已接单状态的订单生成跑腿订单
             if (order.getStatus() == 6) {
                 // 如果是外卖订单,则生成一个跑腿的订单
                 tbIndentService.insertIndent(order);
+                log.info("订单【{}】生成跑腿订单",order.getOrderId());
             }
 
             // 在锁中提交事务
@@ -779,6 +785,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             // 扣减库存,允许部分超卖,后续再优化超卖问题
             try {
                 this.subStock(order);
+                log.info("订单【{}】扣减库存",order.getOrderId());
             } catch (Exception e) {
                 log.error("订单:{},扣减库存失败,失败原因:{}", order.getOrderId(), e);
             }
@@ -791,6 +798,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             // 发送商家接单通知
             try {
                 sendOrderAcceptMessage(order, goodsShop, mpPushConfig, userEntity);
+                log.info("订单【{}】发送接单通知",order.getOrderId());
             } catch (Exception e) {
                 log.error("订单:{},商家接单通知发送失败,失败原因:{}", order.getOrderId(), e);
             }
@@ -798,6 +806,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             // 添加消息记录并且进行推送
             try {
                 addOrderMessageAndPush(order, goodsShop, mpPushConfig, userEntity);
+                log.info("订单【{}】添加通知记录",order.getOrderId());
             } catch (Exception e) {
                 log.error("订单:{},订单支付成功通知发送失败,失败原因:{}", order.getOrderId(), e);
             }
@@ -827,6 +836,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                             try {
                                 // 判断打印状态
                                 if (order.getIsPrint() == null || order.getIsPrint() == 0) {
+                                    log.info("订单:{},开始打印小票",order.getOrderId());
                                     // 设置订单商品
                                     List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", order.getOrderId()));
                                     order.setOrderGoodsList(orderGoodsList);
@@ -835,6 +845,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                                     order.setShopName(goodsShop.getShopName());
 
                                     FeiYunUtils.print(goodsShop.getSnCode(), null, order, null);
+                                    log.info("订单:{},打印小票完成",order.getOrderId());
                                 } else {
                                     log.warn("订单:{},小票未打印,小票打印状态:{}", order.getOrderId(), order.getIsPrint());
                                 }
@@ -1072,6 +1083,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             tbCouponUser.setId(order.getCouponId());
             tbCouponUser.setStatus(1);
             tbCouponUserDao.updateById(tbCouponUser);
+            log.info("订单【{}】优惠券状态变更",order.getOrderId());
         }
     }
 

+ 7 - 0
src/main/java/com/sqx/modules/pay/service/impl/NewPayServiceImpl.java

@@ -85,6 +85,13 @@ public class NewPayServiceImpl implements NewPayService {
                 throw new SqxException("支付金额检验失败,请清空购车后重试!");
             }
 
+            // 先拿到remark
+            String remark = payDetails.getRemark();
+            // 关键:判断是不是JSON格式(必须以 { 开头 )
+            if (remark == null || !remark.trim().startsWith("{")) {
+                throw new SqxException("订单已支付或支付参数异常!");
+            }
+
             return JSONUtil.toBean(payDetails.getRemark(), WechatTransactionsParamVO.class);
         }
 

+ 1 - 1
src/test/java/OrderTest.java

@@ -325,7 +325,7 @@ public class OrderTest {
         RhtQrcodePayApi qrcodePay = new RhtQrcodePayApi(wechatMchConfig.getMchId(), wechatMchConfig.getMchKey(), "https://api.ekbuyclub.com");
 
         String orderNumberStr =
-                "118702260413005915377980"
+                "118702260324005741285823"
                 ;
         for (String orderNumber : orderNumberStr.split(",")) {
             QrcodeQueryRequestBean qqrb = new QrcodeQueryRequestBean();