liusheng
2026-10-10 0afac42fb2e9d6e5291304dd0044ce3042b45d2b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package com.ruoyi.message.sms.provider.nhfy;
 
import com.ruoyi.message.MessageChannel;
import com.ruoyi.message.SendResult;
import com.ruoyi.message.sms.AbstractSmsSender;
import com.ruoyi.message.sms.SmsSendRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
 
import java.util.Map;
 
/**
 * 南华附一短信发送方({@code nhfy} 通道)。
 * <p>
 * 对接特征:REST + 行业汇聚平台 {@code /submitsm},鉴权 {@code HASHHEX = MD5(MD5:账号:密码:时间)},
 * 成功判定为响应 {@code result == "0"}。
 * 代码来源:{@code RyTask.nhfy 分支} + {@code RedisMqReceiver.nhfy 分支} + {@code SmsController} + {@code smsSubTask}。
 */
@Slf4j
@Component
public class NhfySmsSender extends AbstractSmsSender {
 
    /**
     * 渠道 key,与 {@code spring.profiles.active=nhfy} 对应
     */
    public static final String KEY = "nhfy";
 
    private final MtSubmitSmUtil mtSubmitSmUtil;
 
    public NhfySmsSender(MtSubmitSmUtil mtSubmitSmUtil) {
        this.mtSubmitSmUtil = mtSubmitSmUtil;
    }
 
    @Override
    public String key() {
        return KEY;
    }
 
    @Override
    public String description() {
        return "南华附一短信(行业汇聚平台 /submitsm)";
    }
 
    @Override
    protected SendResult doSend(SmsSendRequest request) {
        Map<String, Object> resp = mtSubmitSmUtil.submitSm(request.getPhone(), request.getContent());
        log.info("【{}】南华附一短信发送结果:{}", KEY, resp);
 
        Object result = resp == null ? null : resp.get("result");
        String code = result == null ? null : result.toString();
        if (MtSubmitSmUtil.isSuccess(resp)) {
            return SendResult.success(KEY, MessageChannel.SMS, String.valueOf(resp)).withCode(code);
        }
        return SendResult.fail(KEY, MessageChannel.SMS, "短信发送失败", String.valueOf(resp)).withCode(code);
    }
}