Quellcode durchsuchen

退款成功加入通知

zhangchen vor 3 Monaten
Ursprung
Commit
fd9825810e

+ 71 - 0
alien-lawyer/src/main/java/shop/alien/lawyer/service/impl/AiUserAuditTaskServiceImpl.java

@@ -281,6 +281,8 @@ public class AiUserAuditTaskServiceImpl implements AiUserAuditTaskService {
 
             if ("调用成功".equals(refundResult)) {
                 log.info("订单退款成功,订单号:{},退款金额:{}元", orderNumber, refundAmount.toString());
+                // 退款成功后,发送退款成功通知和退款到账通知
+                sendRefundSuccessNotifications(order);
             } else {
                 log.error("订单退款失败,订单号:{},退款结果:{}", orderNumber, refundResult);
                 // 退款失败时抛出异常,触发事务回滚
@@ -616,5 +618,74 @@ public class AiUserAuditTaskServiceImpl implements AiUserAuditTaskService {
             log.error("发送WebSocket消息异常,接收人ID:{},异常信息:{}", receiverId, e.getMessage(), e);
         }
     }
+
+    /**
+     * 发送退款成功通知和退款到账通知
+     * <p>
+     * 当退款成功后,向订单用户发送退款成功通知和退款到账通知
+     * </p>
+     *
+     * @param order 订单信息
+     */
+    private void sendRefundSuccessNotifications(LawyerConsultationOrder order) {
+        try {
+            // 获取订单用户的接收人ID
+            String receiverId = getOrderUserReceiverId(order);
+            if (!StringUtils.hasText(receiverId)) {
+                log.warn("获取订单用户接收ID失败,订单号:{}", order.getOrderNumber());
+                return;
+            }
+
+            // 构建通知内容
+            String message = String.format("您的编号为%s的订单,订单金额已原路返还至您的支付渠道,请查收。",
+                    order.getOrderNumber());
+
+            // 发送退款成功通知
+            LifeNotice refundSuccessNotice = createLifeNotice(order.getId(), receiverId, "退款成功通知", message);
+            lifeNoticeMapper.insert(refundSuccessNotice);
+            sendWebSocketMessage(receiverId, refundSuccessNotice);
+
+            // 发送退款到账通知
+            LifeNotice refundArrivalNotice = createLifeNotice(order.getId(), receiverId, "退款到账通知", message);
+            lifeNoticeMapper.insert(refundArrivalNotice);
+            sendWebSocketMessage(receiverId, refundArrivalNotice);
+
+            log.info("退款成功通知和退款到账通知发送成功,订单号:{},接收人ID:{}", order.getOrderNumber(), receiverId);
+
+        } catch (Exception e) {
+            log.error("发送退款成功通知异常,订单号:{},异常信息:{}", order.getOrderNumber(), e.getMessage(), e);
+        }
+    }
+
+    /**
+     * 获取订单用户的接收人ID
+     * <p>
+     * 根据订单的客户端用户ID获取用户信息,返回接收人ID
+     * </p>
+     *
+     * @param order 订单信息
+     * @return 接收人ID,格式:user_ + 手机号
+     */
+    private String getOrderUserReceiverId(LawyerConsultationOrder order) {
+        if (order == null || order.getClientUserId() == null) {
+            log.warn("订单或客户端用户ID为空");
+            return null;
+        }
+
+        try {
+            // 查询普通用户信息
+            LifeUser lifeUser = lifeUserMapper.selectById(order.getClientUserId());
+            if (lifeUser != null && StringUtils.hasText(lifeUser.getUserPhone())) {
+                return "user_" + lifeUser.getUserPhone();
+            }
+
+            log.warn("获取订单用户手机号失败,订单号:{},客户端用户ID:{}", order.getOrderNumber(), order.getClientUserId());
+            return null;
+        } catch (Exception e) {
+            log.error("获取订单用户接收ID异常,订单号:{},客户端用户ID:{},异常信息:{}",
+                    order.getOrderNumber(), order.getClientUserId(), e.getMessage(), e);
+            return null;
+        }
+    }
 }