|
|
@@ -209,8 +209,16 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
|
|
|
|
|
|
log.info("商家端取消预约成功(付费订单),reservationId={}, orderId={}", reservationId, order.getId());
|
|
|
|
|
|
- // 发送短信通知
|
|
|
+ // 先发送取消通知和短信
|
|
|
sendCancelReservationSms(reservation, cancelReason);
|
|
|
+
|
|
|
+ // 付费订单:再发送订金退款通知和短信
|
|
|
+ try {
|
|
|
+ sendDepositRefundSmsAndNoticeInternal(reservation, order);
|
|
|
+ } catch (Exception smsEx) {
|
|
|
+ log.error("商家取消预约后发送退款通知/短信失败,不影响取消结果,reservationId={}", reservationId, smsEx);
|
|
|
+ }
|
|
|
+
|
|
|
return true;
|
|
|
} catch (Exception e) {
|
|
|
log.error("付费订单取消退款失败,reservationId={}, orderId={}, error={}",
|
|
|
@@ -345,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 order 订单信息
|
|
|
*/
|
|
|
- private void sendDepositRefundSmsAndNotice(UserReservation reservation, UserReservationOrder order) {
|
|
|
+ private void sendDepositRefundSmsAndNoticeInternal(UserReservation reservation, UserReservationOrder order) {
|
|
|
try {
|
|
|
// 获取用户手机号
|
|
|
String userPhone = reservation.getReservationUserPhone();
|
|
|
@@ -677,7 +717,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
|
|
|
|
|
|
// 核销成功后,发送订金退款短信和通知
|
|
|
try {
|
|
|
- sendDepositRefundSmsAndNotice(reservation, order);
|
|
|
+ sendDepositRefundSmsAndNoticeInternal(reservation, order);
|
|
|
} catch (Exception e) {
|
|
|
log.error("核销后发送订金退款短信和通知失败,但不影响核销流程,verificationCode={}, orderId={}, error={}",
|
|
|
verificationCode, order.getId(), e.getMessage(), e);
|
|
|
@@ -1380,7 +1420,7 @@ public class StoreReservationServiceImpl extends ServiceImpl<StoreReservationMap
|
|
|
}
|
|
|
|
|
|
// 发送短信和通知
|
|
|
- sendDepositRefundSmsAndNotice(reservation, order);
|
|
|
+ sendDepositRefundSmsAndNoticeInternal(reservation, order);
|
|
|
log.info("退款通知和短信发送完成,outTradeNo={}, reservationId={}", outTradeNo, reservationId);
|
|
|
} else {
|
|
|
log.warn("支付退款失败,不发送通知和短信,outTradeNo={}, result={}", outTradeNo, refundResult);
|