SmsUtil.java 1.62 KB
package com.infoloop.tianting.utils;

import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.infoloop.tianting.config.SmsConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.MapUtils;

import java.util.Map;

@Slf4j
@RequiredArgsConstructor
public class SmsUtil {

    private final SmsConfig smsConfig;

    private final IAcsClient client;

    public boolean sendSms(String templateId, Map<String, Object> templateParam, String... mobiles) {
        try {
            final var smsRequest = new SendSmsRequest();
            smsRequest.setSysMethod(MethodType.POST);
            smsRequest.setPhoneNumbers(mobiles.length == 1 ? mobiles[0] : String.join(",", mobiles));
            smsRequest.setSignName(smsConfig.getSignName());
            smsRequest.setTemplateCode(templateId);
            if (MapUtils.isNotEmpty(templateParam)) {
                final var templateParamJson = JsonUtil.writeAsJson(templateParam);
                log.info("send sms template param: {}", templateParamJson);
                smsRequest.setTemplateParam(templateParamJson);
            }
            final var sendSmsResponse = client.getAcsResponse(smsRequest);
            log.info("send sms response: {}", JsonUtil.writeAsJson(sendSmsResponse));
            return sendSmsResponse.getCode() != null && sendSmsResponse.getCode().equals("OK");
        } catch (ClientException e) {
            log.error("send sms error", e);
            return false;
        }
    }

}