Przeglądaj źródła

售后和订单模块添加消息发送

wangzhijun 2 tygodni temu
rodzic
commit
1c2721f097

+ 10 - 4
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/AfterSalesServiceServiceImpl.java

@@ -9,6 +9,8 @@ import com.ylx.common.core.domain.model.WxLoginUser;
 import com.ylx.common.exception.ServiceException;
 import com.ylx.common.utils.DateUtils;
 import com.ylx.common.utils.SecurityUtils;
+import com.ylx.message.enums.TriggerEventEnum;
+import com.ylx.message.service.IMessageService;
 import com.ylx.order.domain.AfterSalesService;
 import com.ylx.order.domain.RefundRuleDetail;
 import com.ylx.order.domain.TOrder;
@@ -34,10 +36,7 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.time.Duration;
 import java.time.LocalDateTime;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * 售后单服务实现
@@ -55,6 +54,8 @@ public class AfterSalesServiceServiceImpl extends ServiceImpl<AfterSalesServiceM
     private RefundRuleDetailService refundRuleDetailService;
     @Resource
     private RegulationService regulationService;
+    @Resource
+    private IMessageService messageService;
 
     // ===================== 业务常量 =====================
     /**
@@ -100,6 +101,11 @@ public class AfterSalesServiceServiceImpl extends ServiceImpl<AfterSalesServiceM
             throw new ServiceException("创建售后单失败,请稍后重试");
         }
 
+        // 6. 发送消息
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("refundId", afterSalesService.getId());
+        this.messageService.sendMessage(currentUserId, TriggerEventEnum.REFUND_PROCESSING.getDesc(), variables);
+
         log.info("售后提交成功,orderId={},serviceNo={},退款金额={}",
                 orderId, afterSalesService.getServiceNo(), refundResult.getRefundAmount());
     }

+ 21 - 2
nightFragrance-massage/src/main/java/com/ylx/order/service/impl/TOrderServiceImpl.java

@@ -32,6 +32,8 @@ import com.ylx.massage.service.IMaTechnicianService;
 import com.ylx.massage.service.TAddressService;
 import com.ylx.massage.service.TWxUserService;
 import com.ylx.massage.utils.OrderNumberGenerator;
+import com.ylx.message.enums.TriggerEventEnum;
+import com.ylx.message.service.IMessageService;
 import com.ylx.order.domain.AfterSalesService;
 import com.ylx.order.domain.OrderStatusFlow;
 import com.ylx.order.domain.TOrder;
@@ -113,6 +115,8 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
     private IAfterSalesServiceService afterSalesServiceService;
     private static final String DICT_TYPE = "unit_type";
     private static final int BUFFER_MINUTES = 30; // 30分钟缓冲期
+    @Resource
+    private IMessageService messageService;
 
     @Override
     public TOrder addOrder(TOrder order) {
@@ -318,12 +322,19 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
             this.couponService.useCoupon(dto.getCouponId(), openId, order.getId(), 1);
         }
 
+        // 发送消息
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("amount", order.getFinalAmount());
+        variables.put("orderId", order.getId());
+
         // 11. 处理余额支付逻辑
         if (ObjectUtil.equals(PaymentMethodEnum.BALANCE.getCode(), dto.getPaymentMethod())) {
+            this.messageService.sendMessage(userId, TriggerEventEnum.ORDER_PAY_SUCCESS.getDesc(), variables);
             handleBalancePayment(userId, finalAmount, order);
             map.put("orderId", order.getId());
             return map;
         } else {
+            this.messageService.sendMessage(userId, TriggerEventEnum.ORDER_PENDING_PAYMENT.getDesc(), variables);
             return createWxPayOrder(order, wxLoginUser);
         }
     }
@@ -417,6 +428,12 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         dto.setOrderId(order.getId());
         dto.setStatus(OrderStatusEnum.PENDING_DISPATCH.getCode());
         this.updateOrderStatus(dto);
+
+        // 发送消息
+        Map<String, Object> variables = new HashMap<>();
+        variables.put("amount", order.getFinalAmount());
+        variables.put("orderId", order.getId());
+        this.messageService.sendMessage(Long.parseLong(wxUser.getId()), TriggerEventEnum.ORDER_PAY_SUCCESS.getDesc(), variables);
     }
 
     /**
@@ -438,9 +455,11 @@ public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> impleme
         Integer oldStatus = order.getStatus();
 
         // 2. 更新订单状态
-        order.setStatus(newStatus);
+        TOrder updateOrder = new TOrder();
+        updateOrder.setId(orderId);
+        updateOrder.setStatus(newStatus);
         // 可根据状态同步更新对应时间字段(例如:支付完成时间、接单时间等),此处省略具体业务逻辑
-        int updateCount = this.baseMapper.updateById(order);
+        int updateCount = this.baseMapper.updateById(updateOrder);
         if (updateCount == 0) {
             throw new ServiceException("更新订单状态失败");
         }