fix:【system 系统功能】腾讯云短信回调没有 logId 需要 serialNo 来更新本地记录

pull/206/head
YunaiV 2025-08-17 17:01:06 +08:00
parent a980c09d01
commit 49572b2994
4 changed files with 15 additions and 12 deletions

View File

@ -22,4 +22,8 @@ public interface SmsLogMapper extends BaseMapperX<SmsLogDO> {
.orderByDesc(SmsLogDO::getId)); .orderByDesc(SmsLogDO::getId));
} }
default SmsLogDO selectByApiSerialNo(String apiSerialNo) {
return selectOne(SmsLogDO::getApiSerialNo, apiSerialNo);
}
} }

View File

@ -12,7 +12,7 @@ import java.util.Map;
* Service * Service
* *
* @author zzf * @author zzf
* @date 13:48 2021/3/2 * @since 13:48 2021/3/2
*/ */
public interface SmsLogService { public interface SmsLogService {
@ -49,13 +49,13 @@ public interface SmsLogService {
* *
* *
* @param id * @param id
* @param serialNo * @param apiSerialNo
* @param success * @param success
* @param receiveTime * @param receiveTime
* @param apiReceiveCode API * @param apiReceiveCode API
* @param apiReceiveMsg API * @param apiReceiveMsg API
*/ */
void updateSmsReceiveResult(Long id, String serialNo, Boolean success, void updateSmsReceiveResult(Long id, String apiSerialNo, Boolean success,
LocalDateTime receiveTime, String apiReceiveCode, String apiReceiveMsg); LocalDateTime receiveTime, String apiReceiveCode, String apiReceiveMsg);
/** /**

View File

@ -64,19 +64,18 @@ public class SmsLogServiceImpl implements SmsLogService {
} }
@Override @Override
public void updateSmsReceiveResult(Long id, String serialNo, Boolean success, LocalDateTime receiveTime, public void updateSmsReceiveResult(Long id, String apiSerialNo, Boolean success, LocalDateTime receiveTime,
String apiReceiveCode, String apiReceiveMsg) { String apiReceiveCode, String apiReceiveMsg) {
SmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ? SmsReceiveStatusEnum receiveStatus = Objects.equals(success, true) ?
SmsReceiveStatusEnum.SUCCESS : SmsReceiveStatusEnum.FAILURE; SmsReceiveStatusEnum.SUCCESS : SmsReceiveStatusEnum.FAILURE;
Long logId = id; if (id == null || id == 0) {
if (logId == null || logId == 0) { SmsLogDO log = smsLogMapper.selectByApiSerialNo(apiSerialNo);
SmsLogDO log = smsLogMapper.selectOne(SmsLogDO::getApiSerialNo, serialNo); if (log == null) {
if (log == null) { // 这里查不到,有可能短信不是在本系统发送,故不抛异常
return; return;
} }
logId = log.getId(); id = log.getId();
} }
smsLogMapper.updateById(SmsLogDO.builder().id(logId).receiveStatus(receiveStatus.getStatus()) smsLogMapper.updateById(SmsLogDO.builder().id(id).receiveStatus(receiveStatus.getStatus())
.receiveTime(receiveTime).apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build()); .receiveTime(receiveTime).apiReceiveCode(apiReceiveCode).apiReceiveMsg(apiReceiveMsg).build());
} }

View File

@ -153,14 +153,14 @@ public class SmsLogServiceImplTest extends BaseDbUnitTest {
smsLogMapper.insert(dbSmsLog); smsLogMapper.insert(dbSmsLog);
// 准备参数 // 准备参数
Long id = dbSmsLog.getId(); Long id = dbSmsLog.getId();
String serialNo = dbSmsLog.getApiSerialNo(); String apiSerialNo = dbSmsLog.getApiSerialNo();
Boolean success = randomBoolean(); Boolean success = randomBoolean();
LocalDateTime receiveTime = randomLocalDateTime(); LocalDateTime receiveTime = randomLocalDateTime();
String apiReceiveCode = randomString(); String apiReceiveCode = randomString();
String apiReceiveMsg = randomString(); String apiReceiveMsg = randomString();
// 调用 // 调用
smsLogService.updateSmsReceiveResult(id, serialNo, success, receiveTime, apiReceiveCode, apiReceiveMsg); smsLogService.updateSmsReceiveResult(id, apiSerialNo, success, receiveTime, apiReceiveCode, apiReceiveMsg);
// 断言 // 断言
dbSmsLog = smsLogMapper.selectById(id); dbSmsLog = smsLogMapper.selectById(id);
assertEquals(success ? SmsReceiveStatusEnum.SUCCESS.getStatus() assertEquals(success ? SmsReceiveStatusEnum.SUCCESS.getStatus()