feat(wechat): 抽象通知发送器并完善自定义下单相关接口测试

This commit is contained in:
irving
2025-11-01 23:55:51 -04:00
parent 9f83103189
commit d01c8a4c6a
7 changed files with 172 additions and 15 deletions

View File

@@ -0,0 +1,45 @@
package com.starry.admin.modules.weichat.service;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReviewInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderComplaintInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
import javax.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Slf4j
@Component
@Profile("!apitest")
public class DefaultNotificationSender implements NotificationSender {
@Resource
private WxCustomMpService wxCustomMpService;
@Override
public void sendOrderMessageAsync(PlayOrderInfoEntity orderInfo) {
wxCustomMpService.sendOrderMessageAsync(orderInfo);
}
@Override
public void sendOrderFinishMessageAsync(PlayOrderInfoEntity order) {
wxCustomMpService.sendOrderFinishMessageAsync(order);
}
@Override
public void sendOrderCancelMessageAsync(PlayOrderInfoEntity orderInfo, String refundReason) {
wxCustomMpService.sendOrderCancelMessageAsync(orderInfo, refundReason);
}
@Override
public void sendComplaintMessage(PlayOrderComplaintInfoEntity info, PlayOrderInfoEntity orderInfo) {
wxCustomMpService.sendComplaintMessage(info, orderInfo);
}
@Override
public void sendCheckMessage(PlayClerkUserReviewInfoEntity entity, PlayClerkUserInfoEntity userInfo,
String reviewState) {
wxCustomMpService.sendCheckMessage(entity, userInfo, reviewState);
}
}

View File

@@ -0,0 +1,43 @@
package com.starry.admin.modules.weichat.service;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReviewInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderComplaintInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Primary;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Slf4j
@Primary
@Component
@Profile("apitest")
public class MockNotificationSender implements NotificationSender {
@Override
public void sendOrderMessageAsync(PlayOrderInfoEntity orderInfo) {
log.debug("[wechat-mock] skip sendOrderMessageAsync orderId={}", orderInfo.getId());
}
@Override
public void sendOrderFinishMessageAsync(PlayOrderInfoEntity order) {
log.debug("[wechat-mock] skip sendOrderFinishMessageAsync orderId={}", order.getId());
}
@Override
public void sendOrderCancelMessageAsync(PlayOrderInfoEntity orderInfo, String refundReason) {
log.debug("[wechat-mock] skip sendOrderCancelMessageAsync orderId={}", orderInfo.getId());
}
@Override
public void sendComplaintMessage(PlayOrderComplaintInfoEntity info, PlayOrderInfoEntity orderInfo) {
log.debug("[wechat-mock] skip sendComplaintMessage orderId={}", orderInfo.getId());
}
@Override
public void sendCheckMessage(PlayClerkUserReviewInfoEntity entity, PlayClerkUserInfoEntity userInfo,
String reviewState) {
log.debug("[wechat-mock] skip sendCheckMessage clerkId={}", userInfo == null ? null : userInfo.getId());
}
}

View File

@@ -0,0 +1,22 @@
package com.starry.admin.modules.weichat.service;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserInfoEntity;
import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReviewInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderComplaintInfoEntity;
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
/**
* 抽象出发送微信通知的接口,便于在测试环境下替换为 Mock 实现。
*/
public interface NotificationSender {
void sendOrderMessageAsync(PlayOrderInfoEntity orderInfo);
void sendOrderFinishMessageAsync(PlayOrderInfoEntity order);
void sendOrderCancelMessageAsync(PlayOrderInfoEntity orderInfo, String refundReason);
void sendComplaintMessage(PlayOrderComplaintInfoEntity info, PlayOrderInfoEntity orderInfo);
void sendCheckMessage(PlayClerkUserReviewInfoEntity entity, PlayClerkUserInfoEntity userInfo, String reviewState);
}

View File

@@ -37,6 +37,7 @@ import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;
import me.chanjar.weixin.mp.config.impl.WxMpMapConfigImpl;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
@@ -61,6 +62,7 @@ public class WxCustomMpService {
@Resource
private ThreadPoolTaskExecutor executor;
/**
* 支付成功回调地址
*/