luotaiqian 2026-07-06 18:06:15 +08:00
parent f6230d6cf7
commit 30127d7735
1 changed files with 26 additions and 5 deletions

View File

@ -162,13 +162,23 @@ public class SmsRemote {
String body = resp.getBody(); String body = resp.getBody();
log.info("助通短信发送响应: status={}, body={}", resp.getStatusCodeValue(), body); log.info("助通短信发送响应: status={}, body={}", resp.getStatusCodeValue(), body);
// 融合云成功返回 HTTP 200且响应 JSON 中 code=200 // 融合云 HTTP 状态码恒为 200真正结果在 body 的 code 字段200 才算成功)
if (resp.getStatusCodeValue() == 200) { if (resp.getStatusCodeValue() != 200) {
response = SingleResponse.of(body); log.warn("助通短信发送失败(HTTP) - mobile={}, body={}", mobile, body);
} else {
log.warn("助通短信发送失败 - mobile={}, body={}", mobile, body);
throw new BizException("SMS_SEND_FAIL", "短信发送失败: " + body); throw new BizException("SMS_SEND_FAIL", "短信发送失败: " + body);
} }
// 解析 body 中的 code 字段判断业务结果
Map<String, Object> bodyMap = parseJson(body);
int code = bodyMap.get("code") instanceof Number
? ((Number) bodyMap.get("code")).intValue() : -1;
if (code != 200) {
String msg = bodyMap.getOrDefault("msg", "未知错误").toString();
log.error("助通短信发送失败(业务) - mobile={}, code={}, msg={}", mobile, code, msg);
throw new BizException("SMS_SEND_FAIL",
"短信发送失败[" + code + "]: " + msg);
}
response = SingleResponse.of(body);
} catch (BizException e) { } catch (BizException e) {
throw e; throw e;
} catch (Exception e) { } catch (Exception e) {
@ -255,6 +265,17 @@ public class SmsRemote {
return sb.toString(); return sb.toString();
} }
/**
* JSON Map hutool JSONUtil
*/
@SuppressWarnings("unchecked")
private Map<String, Object> parseJson(String json) {
if (StringUtils.isBlank(json)) {
return Collections.emptyMap();
}
return JSONUtil.parseObj(json);
}
@ApiOperation("发送短信") @ApiOperation("发送短信")
@PostMapping("/sendMessage") @PostMapping("/sendMessage")