Просмотр исходного кода

商家端 线上预订 发送通知 短信接口优化

qinxuyang 1 месяц назад
Родитель
Сommit
83b7a03396

+ 26 - 0
alien-store/src/main/java/shop/alien/store/controller/StoreReservationController.java

@@ -296,4 +296,30 @@ public class StoreReservationController {
             return R.fail("退款失败:" + e.getMessage());
             return R.fail("退款失败:" + e.getMessage());
         }
         }
     }
     }
+
+    @ApiOperationSupport(order = 10)
+    @ApiOperation("发送订金退款短信和通知")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "reservationId", value = "预约ID", dataType = "Integer", paramType = "query", required = true)
+    })
+    @PostMapping("/sendDepositRefundSmsAndNotice")
+    public R<String> sendDepositRefundSmsAndNotice(@RequestParam Integer reservationId) {
+        log.info("StoreReservationController.sendDepositRefundSmsAndNotice?reservationId={}", reservationId);
+
+        if (reservationId == null) {
+            return R.fail("预约ID不能为空");
+        }
+
+        try {
+            boolean result = storeReservationService.sendDepositRefundSmsAndNotice(reservationId);
+            if (result) {
+                return R.success("发送订金退款短信和通知成功");
+            } else {
+                return R.fail("发送订金退款短信和通知失败");
+            }
+        } catch (Exception e) {
+            log.error("发送订金退款短信和通知失败", e);
+            return R.fail("发送失败:" + e.getMessage());
+        }
+    }
 }
 }

+ 9 - 0
alien-store/src/main/java/shop/alien/store/service/StoreReservationService.java

@@ -103,4 +103,13 @@ public interface StoreReservationService {
      * @return 本次退款成功的订单数
      * @return 本次退款成功的订单数
      */
      */
     int retryRefundFailedOrders();
     int retryRefundFailedOrders();
+
+    /**
+     * 发送订金退款短信和通知
+     * 根据预约ID查询预约和订单信息,然后发送退款短信和通知
+     *
+     * @param reservationId 预约ID
+     * @return 是否成功
+     */
+    boolean sendDepositRefundSmsAndNotice(Integer reservationId);
 }
 }

+ 37 - 5
alien-store/src/main/java/shop/alien/store/service/impl/StoreReservationServiceImpl.java

@@ -214,7 +214,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
                 
                 
                 // 付费订单:再发送订金退款通知和短信
                 // 付费订单:再发送订金退款通知和短信
                 try {
                 try {
-                    sendDepositRefundSmsAndNotice(reservation, order);
+                    sendDepositRefundSmsAndNoticeInternal(reservation, order);
                 } catch (Exception smsEx) {
                 } catch (Exception smsEx) {
                     log.error("商家取消预约后发送退款通知/短信失败,不影响取消结果,reservationId={}", reservationId, smsEx);
                     log.error("商家取消预约后发送退款通知/短信失败,不影响取消结果,reservationId={}", reservationId, smsEx);
                 }
                 }
@@ -353,13 +353,45 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
         }
         }
     }
     }
 
 
+    @Override
+    public boolean sendDepositRefundSmsAndNotice(Integer reservationId) {
+        log.info("StoreReservationServiceImpl.sendDepositRefundSmsAndNotice?reservationId={}", reservationId);
+
+        if (reservationId == null) {
+            throw new RuntimeException("预约ID不能为空");
+        }
+
+        // 查询预约信息
+        UserReservation reservation = this.getById(reservationId);
+        if (reservation == null) {
+            throw new RuntimeException("预约不存在");
+        }
+
+        // 查询关联的订单信息
+        LambdaQueryWrapper<UserReservationOrder> orderWrapper = new LambdaQueryWrapper<>();
+        orderWrapper.eq(UserReservationOrder::getReservationId, reservationId);
+        UserReservationOrder order = userReservationOrderService.getOne(orderWrapper);
+
+        if (order == null) {
+            throw new RuntimeException("预约订单不存在");
+        }
+
+        try {
+            sendDepositRefundSmsAndNoticeInternal(reservation, order);
+            return true;
+        } catch (Exception e) {
+            log.error("发送订金退款短信和通知失败,reservationId={}", reservationId, e);
+            throw new RuntimeException("发送订金退款短信和通知失败:" + e.getMessage());
+        }
+    }
+
     /**
     /**
-     * 发送订金退款短信和通知
+     * 发送订金退款短信和通知(内部方法)
      *
      *
      * @param reservation 预约信息
      * @param reservation 预约信息
      * @param order 订单信息
      * @param order 订单信息
      */
      */
-    private void sendDepositRefundSmsAndNotice(UserReservation reservation, UserReservationOrder order) {
+    private void sendDepositRefundSmsAndNoticeInternal(UserReservation reservation, UserReservationOrder order) {
         try {
         try {
             // 获取用户手机号
             // 获取用户手机号
             String userPhone = reservation.getReservationUserPhone();
             String userPhone = reservation.getReservationUserPhone();
@@ -685,7 +717,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
 
 
         // 核销成功后,发送订金退款短信和通知
         // 核销成功后,发送订金退款短信和通知
         try {
         try {
-            sendDepositRefundSmsAndNotice(reservation, order);
+            sendDepositRefundSmsAndNoticeInternal(reservation, order);
         } catch (Exception e) {
         } catch (Exception e) {
             log.error("核销后发送订金退款短信和通知失败,但不影响核销流程,verificationCode={}, orderId={}, error={}",
             log.error("核销后发送订金退款短信和通知失败,但不影响核销流程,verificationCode={}, orderId={}, error={}",
                     verificationCode, order.getId(), e.getMessage(), e);
                     verificationCode, order.getId(), e.getMessage(), e);
@@ -1388,7 +1420,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
                 }
                 }
                 
                 
                 // 发送短信和通知
                 // 发送短信和通知
-                sendDepositRefundSmsAndNotice(reservation, order);
+                sendDepositRefundSmsAndNoticeInternal(reservation, order);
                 log.info("退款通知和短信发送完成,outTradeNo={}, reservationId={}", outTradeNo, reservationId);
                 log.info("退款通知和短信发送完成,outTradeNo={}, reservationId={}", outTradeNo, reservationId);
             } else {
             } else {
                 log.warn("支付退款失败,不发送通知和短信,outTradeNo={}, result={}", outTradeNo, refundResult);
                 log.warn("支付退款失败,不发送通知和短信,outTradeNo={}, result={}", outTradeNo, refundResult);