记得上下班打卡 | git大法好,push需谨慎

Commit ad45cf00 authored by 姜秀龙's avatar 姜秀龙

mailid、callback 问题修复

parent 3ffd1b5a
......@@ -11,11 +11,11 @@ import java.util.List;
@ApiModel
public class GoblinMailVo implements Serializable, Cloneable {
@ApiModelProperty(value = " 快递单号")
@ApiModelProperty(value = "快递id(系统生成,查物流轨迹请传此字段)")
private String mailId;
@ApiModelProperty(value = " 订单id")
private String orderId;
@ApiModelProperty(value = " 快递单号")
@ApiModelProperty(value = "快递单号(运单号)")
private String mailNo;
@ApiModelProperty(value = " 发货时间")
private String deliveryTime;
......
......@@ -146,6 +146,7 @@ global-auth:
- ${liquidnet.info.context}/app/mix/details
- ${liquidnet.info.context}/wdt/**
- ${liquidnet.info.context}/bracelet/callback
- ${liquidnet.info.context}/callback/kuaidi100/**
# 健康检查
- ${liquidnet.info.context}/health
# 查推荐收钱吧商品
......
......@@ -126,6 +126,8 @@ public class GoblinMailTrackServiceImpl implements IGoblinMailTrackService {
if (mailVo == null) {
return null;
}
// 统一用包裹真实 mailId(兼容误传 mailNo)
mailId = mailVo.getMailId();
GoblinMailTrackCache cache = redisUtils.getMailTrackCache(mailId);
boolean emptyOrUnsubscribed = cache == null
|| cache.getSubscribe() == null
......@@ -133,22 +135,28 @@ public class GoblinMailTrackServiceImpl implements IGoblinMailTrackService {
if (emptyOrUnsubscribed) {
String com = resolveAndPersistCom(orderId, mailVo);
if (cache == null) {
cache = newEmptyCache(orderId, mailId);
}
if (StringUtils.isBlank(com)) {
updateSubscribeFail(cache, "无法识别快递公司编码");
redisUtils.setMailTrackCache(mailId, cache);
return cache;
}
// 未订阅成功时可尝试首次订阅(未超限)
if (cache == null) {
cache = newEmptyCache(orderId, mailId);
}
ensureMonthCounter(cache.getSubscribe());
if (!Boolean.TRUE.equals(cache.getSubscribe().getQuotaExceeded())
&& (cache.getSubscribe().getSubscribeCount() == null || cache.getSubscribe().getSubscribeCount() < MAX_SUBSCRIBE_PER_MONTH)
&& !Boolean.TRUE.equals(cache.getSubscribe().getSubscribed())) {
doSubscribe(orderId, mailId, mailVo.getMailNo(), com, cache);
cache = redisUtils.getMailTrackCache(mailId);
if (cache == null) {
cache = newEmptyCache(orderId, mailId);
}
}
queryAndOverwriteTrack(orderId, mailId, com, mailVo.getMailNo(), "query");
return redisUtils.getMailTrackCache(mailId);
GoblinMailTrackCache latest = redisUtils.getMailTrackCache(mailId);
return latest != null ? latest : cache;
}
GoblinMailTrackSubscribeVo sub = cache.getSubscribe();
......@@ -607,17 +615,22 @@ public class GoblinMailTrackServiceImpl implements IGoblinMailTrackService {
return base + sep + "mailId=" + mailId + "&orderId=" + orderId;
}
private GoblinMailVo findMail(String orderId, String mailId) {
private GoblinMailVo findMail(String orderId, String mailIdOrNo) {
List<GoblinMailVo> list = redisUtils.getGoblinMail(orderId);
if (list == null) {
if (list == null || StringUtils.isBlank(mailIdOrNo)) {
return null;
}
GoblinMailVo byMailNo = null;
for (GoblinMailVo mailVo : list) {
if (mailId.equals(mailVo.getMailId())) {
if (mailIdOrNo.equals(mailVo.getMailId())) {
return mailVo;
}
// 兼容前端把 mailNo 当成 mailId 传入(GoblinMailVo.mailId 文档曾误标为「快递单号」)
if (byMailNo == null && mailIdOrNo.equals(mailVo.getMailNo())) {
byMailNo = mailVo;
}
return null;
}
return byMailNo;
}
private GoblinMailTrackInfoVo fromQueryResp(QueryTrackMapResp resp, String source) {
......
......@@ -966,7 +966,8 @@ public class GoblinOrderAppServiceImpl implements IGoblinOrderAppService {
}
GoblinMailTrackCache cache = goblinMailTrackService.resolveTrackForRead(orderId, mailId);
if (cache == null) {
return ResponseDto.failure("快递信息不存在");
// findMail 未命中:请确认传的是订单详情里的 mailId,不是 mailNo
return ResponseDto.failure("快递信息不存在,请确认 mailId 是否正确");
}
return ResponseDto.success(cache);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment