import com.alibaba.fastjson.JSON;import com.aliyuncs.CommonRequest;import com.aliyuncs.CommonResponse;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.IAcsClient;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.exceptions.ServerException;import com.aliyuncs.http.MethodType;import com.aliyuncs.profile.DefaultProfile;import com.mega.framework.amqp.config.action.SmsProperties;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Service;import java.util.HashMap;import java.util.Map;@Slf4j@Servicepublic class SmsService { private static final String SYS_DOMAIN = "dysmsapi.aliyuncs.com"; private static final String SYS_VERSION = "2017-05-25"; private static final String SYS_ACTION = "SendSms"; private static final String REGION_ID = "RegionId"; private static final String PHONE_NUMBERS = "PhoneNumbers"; private static final String SIGN_NAME = "SignName"; private static final String TEMPLATE_CODE = "TemplateCode"; private static final String TEMPLATE_PARAM = "TemplateParam"; private static final String OUT_ID = "OutId"; private SmsProperties smsProperties; private CommonRequest commonRequest; public SmsService(SmsProperties smsProperties) { this.smsProperties = smsProperties; CommonRequest request = new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain(SYS_DOMAIN); request.setSysVersion(SYS_VERSION); request.setSysAction(SYS_ACTION); request.putQueryParameter(REGION_ID, smsProperties.getRegionId()); request.putQueryParameter(SIGN_NAME, smsProperties.getSignName()); request.putQueryParameter(OUT_ID, smsProperties.getOutId()); commonRequest = request; } /** * 发送通用短信 * * @param telNumber 手机号 * @return 短信接口返回信息 */ public String sendComCms(String telNumber) { Map<String, String> templateParamsMap = new HashMap<>(); int code = (int) ((Math.random() * 9 + 1) * 100000); templateParamsMap.put("code", String.valueOf(code)); return sendSms(telNumber, JSON.toJSONString(templateParamsMap), smsProperties.getTemplateCode()); } /** * 发送短信 * * @param telNumber 手机号 * @param templateParamsJson {'code':'255232'} * @param templateCode 模板编号 * @return response.data */ private String sendSms(String telNumber, String templateParamsJson, String templateCode) { DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", smsProperties.getAccessKeyId(), smsProperties.getAccessSecret()); IAcsClient client = new DefaultAcsClient(profile); try { commonRequest.putQueryParameter(PHONE_NUMBERS, telNumber); commonRequest.putQueryParameter(TEMPLATE_CODE, templateCode); commonRequest.putQueryParameter(TEMPLATE_PARAM, templateParamsJson); CommonResponse response = client.getCommonResponse(commonRequest); log.info(response.getData()); return response.getData(); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } return "error"; }}
import lombok.Getter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Configuration;@Getter@Configuration@ConfigurationProperties(prefix = "application.sms")public class SmsProperties { private String accessKeyId = "xx"; private String accessSecret = "xx"; private String regionId = "cn-hangzhou"; private String signName = "达智绿洲工业云平台"; private String templateCode = "xxx"; private String outId = "34";}
sms: accessKeyId: xx accessSecret: xx regionId: cn-hangzhou signName: 达智绿洲工业云平台 templateCode: xx outId: 34