Explorar el Código

更新反查订单反查接口

liu hace 3 meses
padre
commit
5cc2090f79

+ 1 - 1
src/main/java/com/sqx/modules/order/service/AppOrderService.java

@@ -114,7 +114,7 @@ public interface AppOrderService extends IService<TbOrder> {
      * 支付成功后更新订单
      * @param order 订单信息
      */
-    void updateOrderAfterPaySuccess(TbOrder order);
+    void updateOrderAfterPaySuccess(TbOrder order,String payTime);
 
     /**
      * 查询订单商品

+ 86 - 55
src/main/java/com/sqx/modules/order/service/impl/AppAppOrderServiceImpl.java

@@ -129,6 +129,7 @@ import java.math.RoundingMode;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.LocalTime;
+import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
@@ -483,7 +484,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         if (shopList.contains(parentOrder.getShopId())) {
             if (ObjectUtils.isEmpty(payOrderDTO.getIdCard())) {
                 throw new SqxException("请输入身份证号");
-            }else {
+            } else {
                 //        将身份证号设置到订单里
                 parentOrder.setIdCard(payOrderDTO.getIdCard());
             }
@@ -709,7 +710,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
     }
 
     @Override
-    public void updateOrderAfterPaySuccess(TbOrder order) {
+    public void updateOrderAfterPaySuccess(TbOrder order, String payTime) {
         String currentTimeStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
         order.setOrderCode(generateOrderCode());
         order.setIsPay(1);
@@ -799,27 +800,45 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
         // 订单已接单或者当前订单为预约订单时打印小票
         if (order.getStatus() == 6 || reservationFlag) {
-            // 打印小票
-            if (StringUtils.isNotEmpty(goodsShop.getSnCode())) {
-                MyGlobalThreadPool.execute(() -> {
-                    try {
-                        // 判断打印状态
-                        if (order.getIsPrint() == null || order.getIsPrint() == 0) {
-                            // 设置订单商品
-                            List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", order.getOrderId()));
-                            order.setOrderGoodsList(orderGoodsList);
-
-                            // 设置店铺名称
-                            order.setShopName(goodsShop.getShopName());
-
-                            FeiYunUtils.print(goodsShop.getSnCode(), null, order, null);
-                        } else {
-                            log.warn("订单:{},小票未打印,小票打印状态:{}", order.getOrderId(), order.getIsPrint());
-                        }
-                    } catch (Exception e) {
-                        log.error("订单:{},小票打印失败,失败原因:{}", order.getOrderId(), e);
+            if (ObjectUtils.isNotEmpty(payTime)) {
+                // 1. 定义时间格式(根据你的字符串格式改这里)
+                DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+                // 2. 字符串转时间
+                LocalDateTime targetTime = LocalDateTime.parse(payTime, formatter);
+
+                // 3. 当前时间
+                LocalDateTime now = LocalDateTime.now();
+
+                // 4. 计算两个时间相差 小时/天数
+                long hours = ChronoUnit.HOURS.between(targetTime, now);
+
+                // 5. 不超过 48 小时 则可以打印
+                if (hours < 48) {
+
+                    // 打印小票
+                    if (StringUtils.isNotEmpty(goodsShop.getSnCode())) {
+                        MyGlobalThreadPool.execute(() -> {
+                            try {
+                                // 判断打印状态
+                                if (order.getIsPrint() == null || order.getIsPrint() == 0) {
+                                    // 设置订单商品
+                                    List<OrderGoods> orderGoodsList = orderGoodsDao.selectList(new QueryWrapper<OrderGoods>().eq("order_id", order.getOrderId()));
+                                    order.setOrderGoodsList(orderGoodsList);
+
+                                    // 设置店铺名称
+                                    order.setShopName(goodsShop.getShopName());
+
+                                    FeiYunUtils.print(goodsShop.getSnCode(), null, order, null);
+                                } else {
+                                    log.warn("订单:{},小票未打印,小票打印状态:{}", order.getOrderId(), order.getIsPrint());
+                                }
+                            } catch (Exception e) {
+                                log.error("订单:{},小票打印失败,失败原因:{}", order.getOrderId(), e);
+                            }
+                        });
                     }
-                });
+                }
             }
         }
     }
@@ -1092,25 +1111,25 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         BigDecimal shopMoney = sumMoney.multiply(shopRate);
 
         BigDecimal rider = new BigDecimal(0);
-        if (ObjectUtils.isNotEmpty(order.getOrderTypeExtra())&&order.getOrderTypeExtra()==2) {
+        if (ObjectUtils.isNotEmpty(order.getOrderTypeExtra()) && order.getOrderTypeExtra() == 2) {
             //        获取骑手额外配送费
             //        配送费大于等于1.5就不需要骑手额外配送费
 //            if (order.getErrandMoney().doubleValue()<1.5) {
-                CommonInfo commonInfo = commonInfoService.findOne(443);
-                if (ObjectUtils.isNotEmpty(commonInfo)) {
-                    rider =rider.add(new BigDecimal(commonInfo.getValue()));
-                    shopMoney=shopMoney.subtract(rider);
-                }
-                order.setShopIncomeMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
-                log.info("preOrder==>[{}],订单计算店铺预计收益,商家佣金比例[{}],本单用户应付金额[{}],本单店铺预计收益[{}],骑手额外配送费[{}]",
-                        order.getOrderId(), shopRate, sumMoney, order.getShopIncomeMoney(),rider);
+            CommonInfo commonInfo = commonInfoService.findOne(443);
+            if (ObjectUtils.isNotEmpty(commonInfo)) {
+                rider = rider.add(new BigDecimal(commonInfo.getValue()));
+                shopMoney = shopMoney.subtract(rider);
+            }
+            order.setShopIncomeMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
+            log.info("preOrder==>[{}],订单计算店铺预计收益,商家佣金比例[{}],本单用户应付金额[{}],本单店铺预计收益[{}],骑手额外配送费[{}]",
+                    order.getOrderId(), shopRate, sumMoney, order.getShopIncomeMoney(), rider);
 //            }else {
 //                order.setShopIncomeMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
 //                log.info("preOrder==>[{}],订单计算店铺预计收益,商家佣金比例[{}],本单用户应付金额[{}],本单店铺预计收益[{}]",
 //                        order.getOrderId(), shopRate, sumMoney, order.getShopIncomeMoney());
 //            }
 
-        }else {
+        } else {
             order.setShopIncomeMoney(shopMoney.setScale(2, BigDecimal.ROUND_DOWN));
             log.info("preOrder==>[{}],订单计算店铺预计收益,商家佣金比例[{}],本单用户应付金额[{}],本单店铺预计收益[{}]",
                     order.getOrderId(), shopRate, sumMoney, order.getShopIncomeMoney());
@@ -1525,7 +1544,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             row.add(order.getAvatar());
             if (ObjectUtils.isNotEmpty(order.getPhone())) {
                 row.add(order.getPhone().replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"));
-            }else {
+            } else {
                 row.add(order.getPhone());
             }
             StringBuffer stringBuffer = new StringBuffer();
@@ -1853,15 +1872,15 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             BigDecimal shopMoney = sumMoney.multiply(shopRate);
 
             BigDecimal rider = new BigDecimal(0);
-            if (ObjectUtils.isNotEmpty(order.getOrderTypeExtra())&&order.getOrderTypeExtra()==2) {
+            if (ObjectUtils.isNotEmpty(order.getOrderTypeExtra()) && order.getOrderTypeExtra() == 2) {
                 //        获取骑手额外配送费
                 //        配送费大于等于1.5就不需要骑手额外配送费
 //                if (order.getErrandMoney().doubleValue()<1.5) {
-                    CommonInfo commonInfo = commonInfoService.findOne(443);
-                    if (ObjectUtils.isNotEmpty(commonInfo)) {
-                        rider =rider.add(new BigDecimal(commonInfo.getValue()));
-                        shopMoney=shopMoney.subtract(rider);
-                    }
+                CommonInfo commonInfo = commonInfoService.findOne(443);
+                if (ObjectUtils.isNotEmpty(commonInfo)) {
+                    rider = rider.add(new BigDecimal(commonInfo.getValue()));
+                    shopMoney = shopMoney.subtract(rider);
+                }
 //                }
 
             }
@@ -2228,17 +2247,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
         StringBuffer contentBuffer = new StringBuffer();
         BigDecimal rider = new BigDecimal(0);
-        if (ObjectUtils.isNotEmpty(tbOrder.getOrderTypeExtra())&&tbOrder.getOrderTypeExtra()==2) {
+        if (ObjectUtils.isNotEmpty(tbOrder.getOrderTypeExtra()) && tbOrder.getOrderTypeExtra() == 2) {
             //        获取骑手额外配送费
             //        配送费大于等于1.5就不需要骑手额外配送费
 //            if (tbOrder.getErrandMoney().doubleValue()<1.5) {
-                CommonInfo commonInfo = commonInfoService.findOne(443);
-                if (ObjectUtils.isNotEmpty(commonInfo)) {
-                    rider = rider.add(new BigDecimal(commonInfo.getValue()));
-                    shopMoney = shopMoney.subtract(rider);
-                }
+            CommonInfo commonInfo = commonInfoService.findOne(443);
+            if (ObjectUtils.isNotEmpty(commonInfo)) {
+                rider = rider.add(new BigDecimal(commonInfo.getValue()));
+                shopMoney = shopMoney.subtract(rider);
+            }
 //            }
-            log.info("订单id【{}】,骑手额外配送费【{}】", orderId,rider);
+            log.info("订单id【{}】,骑手额外配送费【{}】", orderId, rider);
         }
 
         tbOrder.setShopIncomeMoney(shopMoney);
@@ -2271,7 +2290,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
         contentBuffer.append("特殊地址跑腿费:").append(tbOrder.getInsideDeliveryFee().setScale(2, BigDecimal.ROUND_DOWN)).append(",");
         contentBuffer.append("平台服务费:").append(pingRate.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
         contentBuffer.append("短信服务费:").append(smsSendMoney.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
-        if (ObjectUtils.isNotEmpty(tbOrder.getOrderTypeExtra())&&tbOrder.getOrderTypeExtra()==2) {
+        if (ObjectUtils.isNotEmpty(tbOrder.getOrderTypeExtra()) && tbOrder.getOrderTypeExtra() == 2) {
             contentBuffer.append("骑手额外配送费:").append(rider.setScale(2, BigDecimal.ROUND_DOWN)).append(",");
         }
 
@@ -2392,14 +2411,14 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 //        判断该订单是否已评论
         TbOrder order = appOrderDao.selectOne(new QueryWrapper<TbOrder>().eq("order_number", evaluate.getOrderNumber()));
         Integer commentFlag = order.getCommentFlag();
-        if (ObjectUtils.isNotEmpty(commentFlag)&&commentFlag==1) {
+        if (ObjectUtils.isNotEmpty(commentFlag) && commentFlag == 1) {
             return Result.error("请勿重复评价");
         }
         TbOrder tbOrder = new TbOrder();
         tbOrder.setCommentFlag(1);
         appOrderDao.update(tbOrder, new QueryWrapper<TbOrder>().eq("order_number", evaluate.getOrderNumber()));
 //        判断是否有评价商家字段
-        if (ObjectUtils.isNotEmpty(evaluate.getEvaluateMessage())&&ObjectUtils.isNotEmpty(evaluate.getScore())) {
+        if (ObjectUtils.isNotEmpty(evaluate.getEvaluateMessage()) && ObjectUtils.isNotEmpty(evaluate.getScore())) {
             evaluate.setCreateTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
             evaluateDao.insert(evaluate);
             //重新计算并修改该商铺评分
@@ -2411,7 +2430,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             goodsShopDao.updateById(goodsShop);
         }
 //        判断是否有评价骑手字段
-        if (ObjectUtils.isNotEmpty(evaluate.getEvaluateRiderMessage())&&ObjectUtils.isNotEmpty(evaluate.getRiderScore())) {
+        if (ObjectUtils.isNotEmpty(evaluate.getEvaluateRiderMessage()) && ObjectUtils.isNotEmpty(evaluate.getRiderScore())) {
 //        添加骑手评价
             EvaluateRider evaluateRider = new EvaluateRider();
             evaluateRider.setUserId(evaluate.getUserId());
@@ -2852,7 +2871,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
             PayDetails pd = payDetailsService.getByOrderNo(tbOrder.getOrderNumber());
             if (pd != null) {
                 Integer state = pd.getState();
-                if(0 == state){
+                if (0 == state) {
                     //                    状态为待支付需要调用支付系统订单查询接口判断支付系统对应的订单状态
                     Map<String, String> data = new HashMap<>();
                     String orderNumber = tbOrder.getOrderNumber();
@@ -2866,7 +2885,17 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                             tbOrder.setStatus(5);
                         } else if ("SUCCESS".equals(trade_state)) {
                             tbOrder.setPayType(1);
-                            updateOrderAfterPaySuccess(tbOrder);
+
+                            // 获取微信支付成功时间
+                            String success_time = response.get("success_time");
+                            // 解析 RFC3339
+                            OffsetDateTime offsetDateTime = OffsetDateTime.parse(success_time);
+                            // 格式化输出
+                            DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+                            // 转换时间格式
+                            String payTime = offsetDateTime.format(df);
+                            // 设置为支付时间
+                            updateOrderAfterPaySuccess(tbOrder,payTime);
                         }
                     } else {
                         RhtQrcodePayApi qrcodePay = new RhtQrcodePayApi(wechatMchConfig.getMchId(), wechatMchConfig.getMchKey(), RHT_PAY_BASE_URL);
@@ -2892,7 +2921,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
                             }
                             tbOrder.setPayType(1);
                             tbOrder.setPayTime(payTime);
-                            updateOrderAfterPaySuccess(tbOrder);
+                            updateOrderAfterPaySuccess(tbOrder,payTime);
                         }
 
                     }
@@ -3059,6 +3088,7 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
     /**
      * 检查订单商品信息是否有效,填充订单商品信息
+     *
      * @param order 订单信息
      * @return 订单信息
      */
@@ -3115,9 +3145,10 @@ public class AppAppOrderServiceImpl extends ServiceImpl<AppOrderDao, TbOrder> im
 
     /**
      * 校验是否参与vip优惠
-     * @param order 订单信息
+     *
+     * @param order     订单信息
      * @param goodsShop 店铺信息
-     * @param userId 用户id
+     * @param userId    用户id
      */
     private void checkVipPromotion(TbOrder order, GoodsShop goodsShop, Long userId) {
         UserEntity user = userService.getById(userId);

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

@@ -297,7 +297,7 @@ public class NewPayServiceImpl implements NewPayService {
         order.setPayType(1);
         order.setPayTime(payDetails.getPayTime());
         // 订单支付成功,修改订单状态
-        appOrderService.updateOrderAfterPaySuccess(order);
+        appOrderService.updateOrderAfterPaySuccess(order,payDetails.getPayTime());
     }
 
     /**

+ 7 - 2
src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java

@@ -51,6 +51,8 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
@@ -145,8 +147,11 @@ public class WxServiceImpl implements WxService {
         // 设置订单支付方式 2为余额支付
         tbOrder.setPayType(2);
 
+//        将当前时间设置成支付时间
+        String nowStr = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+        tbOrder.setPayTime(nowStr);
         // 订单支付成功
-        appOrderService.updateOrderAfterPaySuccess(tbOrder);
+        appOrderService.updateOrderAfterPaySuccess(tbOrder,nowStr);
 
         return Result.success();
     }
@@ -782,7 +787,7 @@ public class WxServiceImpl implements WxService {
             TbOrder tbOrder = appOrderService.selectOrderByNum(payDetails.getOrderId());
 
             // 订单支付成功,修改订单状态
-            appOrderService.updateOrderAfterPaySuccess(tbOrder);
+            appOrderService.updateOrderAfterPaySuccess(tbOrder,payDetails.getPayTime());
         }else if(payDetails.getClassify()==3){
             //商户交保证金
             goodsShopService.updateCashDeposit(payDetails.getMoney(), payDetails.getShopId(), payDetails.getOrderId());

+ 1 - 1
src/main/java/com/sqx/scheduler/order/OrderScheduler.java

@@ -257,7 +257,7 @@ public class OrderScheduler {
                         }
                         tbOrder.setPayTime(payTime);
                         tbOrder.setPayType(1);
-                        orderService.updateOrderAfterPaySuccess(tbOrder);
+                        orderService.updateOrderAfterPaySuccess(tbOrder,payTime);
                     } else {
                         tbOrder.setStatus(5);
                         orders.add(tbOrder);