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

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

mailid、callback 问题修复

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