feat:换货发货,发送短信提醒

This commit is contained in:
一休哥哥6666
2026-06-15 14:41:04 +08:00
parent 2991dd88bb
commit ddae147aef
4 changed files with 84 additions and 43 deletions

View File

@@ -31,20 +31,13 @@ import com.ruoyi.jysystem.utils.FeeSettlementExcelExporter;
import com.ruoyi.jysystem.utils.FeeSettlementExportHelper;
import com.ruoyi.jysystem.utils.FeeSettlementPdfExporter;
import com.ruoyi.jysystem.utils.IdUtil;
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
import com.ruoyi.jysystem.vo.FeeSettlementCheckVO;
import com.ruoyi.jysystem.vo.FeeSettlementDetailVO;
@Service
public class JySysFeeSettlementServiceImpl implements IJySysFeeSettlementService
{
private static final String ORDER_STATUS_EXCHANGE_APPLY = "12";
private static final String ORDER_STATUS_EXCHANGE_AGREED = "13";
private static final String ORDER_STATUS_EXCHANGE_LOGISTICS = "15";
private static final String ORDER_STATUS_EXCHANGE_COMPLETED = "17";
@Resource
private JySysFeeSettlementMapper feeSettlementMapper;
@@ -436,19 +429,7 @@ public class JySysFeeSettlementServiceImpl implements IJySysFeeSettlementService
private boolean isExchangeOrder(JySysOrder order)
{
if (order == null)
{
return false;
}
if (StringUtils.isNotEmpty(order.getOrderNo()) && order.getOrderNo().startsWith("HH"))
{
return true;
}
String status = order.getOrderStatus();
return ORDER_STATUS_EXCHANGE_APPLY.equals(status)
|| ORDER_STATUS_EXCHANGE_AGREED.equals(status)
|| ORDER_STATUS_EXCHANGE_LOGISTICS.equals(status)
|| ORDER_STATUS_EXCHANGE_COMPLETED.equals(status);
return OrderExchangeHelper.isExchangeOrder(order);
}
@Override

View File

@@ -16,6 +16,7 @@ import com.ruoyi.jysystem.mapper.JySysTenantMapper;
import com.ruoyi.jysystem.service.IJySysOrderService;
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
import com.ruoyi.jysystem.utils.JySysOrderListPdfExporter;
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
import com.ruoyi.jysystem.utils.TenantTypeHelper;
import com.ruoyi.jysystem.vo.JySysTenantLensVO;
import com.ruoyi.jysystem.vo.OrderAssignPriceVO;
@@ -1091,14 +1092,19 @@ public class JySysOrderServiceImpl extends ServiceImpl<JySysOrderMapper, JySysOr
{
return false;
}
JySysOrder order = jySysOrderMapper.selectJySysOrderById(orderId);
if (OrderExchangeHelper.isExchangeOrder(order))
{
return true;
}
List<JySysOrderStatusLog> logs = jySysOrderStatusLogMapper.selectJySysOrderStatusLogByOrderId(orderId);
if (logs == null || logs.isEmpty())
{
return false;
}
for (JySysOrderStatusLog log : logs)
for (JySysOrderStatusLog statusLog : logs)
{
if (log != null && ORDER_STATUS_EXCHANGE_APPLY.equals(log.getOrderStatus()))
if (statusLog != null && ORDER_STATUS_EXCHANGE_APPLY.equals(statusLog.getOrderStatus()))
{
return true;
}

View File

@@ -17,6 +17,7 @@ import com.ruoyi.jysystem.mapper.JySysTenantMessageMapper;
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
import com.ruoyi.jysystem.service.IJySysTenantService;
import com.ruoyi.jysystem.service.SmsNotificationService;
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
import com.ruoyi.jysystem.utils.TenantTypeHelper;
/**
@@ -31,10 +32,6 @@ public class JySysTenantMessageServiceImpl implements IJySysTenantMessageService
private static final String ORDER_STATUS_ASSIGNED = "3";
private static final String ORDER_STATUS_SHIPPED = "8";
private static final String ORDER_STATUS_EXCHANGE_LOGISTICS = "15";
@Resource
private JySysTenantMessageMapper jySysTenantMessageMapper;
@@ -108,23 +105,12 @@ public class JySysTenantMessageServiceImpl implements IJySysTenantMessageService
}
insertMessage(order.getBrandTenantId(), order.getId(), orderNo,
JySysTenantMessage.TYPE_STATUS_CHANGE, "订单状态变更", content, orderStatus);
if (ORDER_STATUS_SHIPPED.equals(orderStatus)
|| ORDER_STATUS_EXCHANGE_LOGISTICS.equals(orderStatus))
if (shouldSendShipNotifySms(orderStatus, order))
{
log.info("[发货短信] 触发检查: orderId={}, orderNo={}, orderStatus={}, expressCompany={}, brandTenantId={}, brandPhone={}, receiverPhone={}",
orderId, orderNo, orderStatus, expressCompany, brandTenant.getId(), brandTenant.getPhone(), order.getReceiverPhone());
String smsPhone = resolveShipNotifyPhone(brandTenant.getPhone(), order.getReceiverPhone());
if (StringUtils.isNotEmpty(smsPhone))
{
log.info("[发货短信] 准备发送: orderNo={}, smsPhone={}, expressCompany={}", orderNo, smsPhone, expressCompany);
smsNotificationService.trySendOrderShippedNotify(
smsPhone, orderNo, expressCompany);
}
else
{
log.warn("[发货短信] 跳过: 无有效手机号, orderNo={}, brandPhone={}, receiverPhone={}",
orderNo, brandTenant.getPhone(), order.getReceiverPhone());
}
log.info("[发货短信] 触发检查: orderId={}, orderNo={}, orderStatus={}, exchange={}, expressCompany={}, brandTenantId={}, brandPhone={}, receiverPhone={}",
orderId, orderNo, orderStatus, OrderExchangeHelper.isExchangeOrder(order), expressCompany,
brandTenant.getId(), brandTenant.getPhone(), order.getReceiverPhone());
sendShipNotifySms(orderNo, expressCompany, brandTenant.getPhone(), order.getReceiverPhone());
}
}
else
@@ -190,6 +176,24 @@ public class JySysTenantMessageServiceImpl implements IJySysTenantMessageService
return tenant;
}
private void sendShipNotifySms(String orderNo, String expressCompany, String brandPhone, String receiverPhone)
{
String smsPhone = resolveShipNotifyPhone(brandPhone, receiverPhone);
if (StringUtils.isNotEmpty(smsPhone))
{
log.info("[发货短信] 准备发送: orderNo={}, smsPhone={}, expressCompany={}", orderNo, smsPhone, expressCompany);
smsNotificationService.trySendOrderShippedNotify(smsPhone, orderNo, expressCompany);
return;
}
log.warn("[发货短信] 跳过: 无有效手机号, orderNo={}, brandPhone={}, receiverPhone={}",
orderNo, brandPhone, receiverPhone);
}
private boolean shouldSendShipNotifySms(String orderStatus, JySysOrder order)
{
return OrderExchangeHelper.isShipNotifyStatus(orderStatus);
}
private String resolveShipNotifyPhone(String brandPhone, String receiverPhone)
{
if (isValidMobile(brandPhone))

View File

@@ -0,0 +1,50 @@
package com.ruoyi.jysystem.utils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.jysystem.domain.JySysOrder;
/**
* 换货单识别(与前端 isExchangeOrder 一致)
*/
public final class OrderExchangeHelper
{
private static final String ORDER_STATUS_EXCHANGE_APPLY = "12";
private static final String ORDER_STATUS_EXCHANGE_AGREED = "13";
private static final String ORDER_STATUS_EXCHANGE_LOGISTICS = "15";
private static final String ORDER_STATUS_EXCHANGE_COMPLETED = "17";
private static final String ORDER_STATUS_SHIPPED = "8";
private OrderExchangeHelper()
{
}
public static boolean isExchangeOrder(JySysOrder order)
{
if (order == null)
{
return false;
}
if (StringUtils.isNotEmpty(order.getOrderNo()) && order.getOrderNo().startsWith("HH"))
{
return true;
}
String status = order.getOrderStatus();
return ORDER_STATUS_EXCHANGE_APPLY.equals(status)
|| ORDER_STATUS_EXCHANGE_AGREED.equals(status)
|| ORDER_STATUS_EXCHANGE_LOGISTICS.equals(status)
|| ORDER_STATUS_EXCHANGE_COMPLETED.equals(status);
}
/**
* 订单进入发货/换货物流状态时发送短信
*/
public static boolean isShipNotifyStatus(String orderStatus)
{
return ORDER_STATUS_SHIPPED.equals(orderStatus)
|| ORDER_STATUS_EXCHANGE_LOGISTICS.equals(orderStatus);
}
}