fix:【system 系统功能】腾讯云短信回调没有 logId 需要 serialNo 来更新本地记录
parent
a980c09d01
commit
49572b2994
|
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Reference in New Issue