feat:换货发货,发送短信提醒
This commit is contained in:
@@ -31,20 +31,13 @@ import com.ruoyi.jysystem.utils.FeeSettlementExcelExporter;
|
|||||||
import com.ruoyi.jysystem.utils.FeeSettlementExportHelper;
|
import com.ruoyi.jysystem.utils.FeeSettlementExportHelper;
|
||||||
import com.ruoyi.jysystem.utils.FeeSettlementPdfExporter;
|
import com.ruoyi.jysystem.utils.FeeSettlementPdfExporter;
|
||||||
import com.ruoyi.jysystem.utils.IdUtil;
|
import com.ruoyi.jysystem.utils.IdUtil;
|
||||||
|
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
|
||||||
import com.ruoyi.jysystem.vo.FeeSettlementCheckVO;
|
import com.ruoyi.jysystem.vo.FeeSettlementCheckVO;
|
||||||
import com.ruoyi.jysystem.vo.FeeSettlementDetailVO;
|
import com.ruoyi.jysystem.vo.FeeSettlementDetailVO;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
public class JySysFeeSettlementServiceImpl implements IJySysFeeSettlementService
|
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
|
@Resource
|
||||||
private JySysFeeSettlementMapper feeSettlementMapper;
|
private JySysFeeSettlementMapper feeSettlementMapper;
|
||||||
|
|
||||||
@@ -436,19 +429,7 @@ public class JySysFeeSettlementServiceImpl implements IJySysFeeSettlementService
|
|||||||
|
|
||||||
private boolean isExchangeOrder(JySysOrder order)
|
private boolean isExchangeOrder(JySysOrder order)
|
||||||
{
|
{
|
||||||
if (order == null)
|
return OrderExchangeHelper.isExchangeOrder(order);
|
||||||
{
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import com.ruoyi.jysystem.mapper.JySysTenantMapper;
|
|||||||
import com.ruoyi.jysystem.service.IJySysOrderService;
|
import com.ruoyi.jysystem.service.IJySysOrderService;
|
||||||
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
|
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
|
||||||
import com.ruoyi.jysystem.utils.JySysOrderListPdfExporter;
|
import com.ruoyi.jysystem.utils.JySysOrderListPdfExporter;
|
||||||
|
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
|
||||||
import com.ruoyi.jysystem.utils.TenantTypeHelper;
|
import com.ruoyi.jysystem.utils.TenantTypeHelper;
|
||||||
import com.ruoyi.jysystem.vo.JySysTenantLensVO;
|
import com.ruoyi.jysystem.vo.JySysTenantLensVO;
|
||||||
import com.ruoyi.jysystem.vo.OrderAssignPriceVO;
|
import com.ruoyi.jysystem.vo.OrderAssignPriceVO;
|
||||||
@@ -1091,14 +1092,19 @@ public class JySysOrderServiceImpl extends ServiceImpl<JySysOrderMapper, JySysOr
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
JySysOrder order = jySysOrderMapper.selectJySysOrderById(orderId);
|
||||||
|
if (OrderExchangeHelper.isExchangeOrder(order))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
List<JySysOrderStatusLog> logs = jySysOrderStatusLogMapper.selectJySysOrderStatusLogByOrderId(orderId);
|
List<JySysOrderStatusLog> logs = jySysOrderStatusLogMapper.selectJySysOrderStatusLogByOrderId(orderId);
|
||||||
if (logs == null || logs.isEmpty())
|
if (logs == null || logs.isEmpty())
|
||||||
{
|
{
|
||||||
return false;
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ import com.ruoyi.jysystem.mapper.JySysTenantMessageMapper;
|
|||||||
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
|
import com.ruoyi.jysystem.service.IJySysTenantMessageService;
|
||||||
import com.ruoyi.jysystem.service.IJySysTenantService;
|
import com.ruoyi.jysystem.service.IJySysTenantService;
|
||||||
import com.ruoyi.jysystem.service.SmsNotificationService;
|
import com.ruoyi.jysystem.service.SmsNotificationService;
|
||||||
|
import com.ruoyi.jysystem.utils.OrderExchangeHelper;
|
||||||
import com.ruoyi.jysystem.utils.TenantTypeHelper;
|
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_ASSIGNED = "3";
|
||||||
|
|
||||||
private static final String ORDER_STATUS_SHIPPED = "8";
|
|
||||||
|
|
||||||
private static final String ORDER_STATUS_EXCHANGE_LOGISTICS = "15";
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private JySysTenantMessageMapper jySysTenantMessageMapper;
|
private JySysTenantMessageMapper jySysTenantMessageMapper;
|
||||||
|
|
||||||
@@ -108,23 +105,12 @@ public class JySysTenantMessageServiceImpl implements IJySysTenantMessageService
|
|||||||
}
|
}
|
||||||
insertMessage(order.getBrandTenantId(), order.getId(), orderNo,
|
insertMessage(order.getBrandTenantId(), order.getId(), orderNo,
|
||||||
JySysTenantMessage.TYPE_STATUS_CHANGE, "订单状态变更", content, orderStatus);
|
JySysTenantMessage.TYPE_STATUS_CHANGE, "订单状态变更", content, orderStatus);
|
||||||
if (ORDER_STATUS_SHIPPED.equals(orderStatus)
|
if (shouldSendShipNotifySms(orderStatus, order))
|
||||||
|| ORDER_STATUS_EXCHANGE_LOGISTICS.equals(orderStatus))
|
|
||||||
{
|
{
|
||||||
log.info("[发货短信] 触发检查: orderId={}, orderNo={}, orderStatus={}, expressCompany={}, brandTenantId={}, brandPhone={}, receiverPhone={}",
|
log.info("[发货短信] 触发检查: orderId={}, orderNo={}, orderStatus={}, exchange={}, expressCompany={}, brandTenantId={}, brandPhone={}, receiverPhone={}",
|
||||||
orderId, orderNo, orderStatus, expressCompany, brandTenant.getId(), brandTenant.getPhone(), order.getReceiverPhone());
|
orderId, orderNo, orderStatus, OrderExchangeHelper.isExchangeOrder(order), expressCompany,
|
||||||
String smsPhone = resolveShipNotifyPhone(brandTenant.getPhone(), order.getReceiverPhone());
|
brandTenant.getId(), brandTenant.getPhone(), order.getReceiverPhone());
|
||||||
if (StringUtils.isNotEmpty(smsPhone))
|
sendShipNotifySms(orderNo, expressCompany, brandTenant.getPhone(), order.getReceiverPhone());
|
||||||
{
|
|
||||||
log.info("[发货短信] 准备发送: orderNo={}, smsPhone={}, expressCompany={}", orderNo, smsPhone, expressCompany);
|
|
||||||
smsNotificationService.trySendOrderShippedNotify(
|
|
||||||
smsPhone, orderNo, expressCompany);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
log.warn("[发货短信] 跳过: 无有效手机号, orderNo={}, brandPhone={}, receiverPhone={}",
|
|
||||||
orderNo, brandTenant.getPhone(), order.getReceiverPhone());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -190,6 +176,24 @@ public class JySysTenantMessageServiceImpl implements IJySysTenantMessageService
|
|||||||
return tenant;
|
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)
|
private String resolveShipNotifyPhone(String brandPhone, String receiverPhone)
|
||||||
{
|
{
|
||||||
if (isValidMobile(brandPhone))
|
if (isValidMobile(brandPhone))
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user