package foundation.send.sms; import java.util.concurrent.CompletableFuture; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.aliyun.auth.credentials.Credential; import com.aliyun.auth.credentials.provider.StaticCredentialProvider; import com.aliyun.sdk.service.dysmsapi20170525.AsyncClient; import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsRequest; import com.aliyun.sdk.service.dysmsapi20170525.models.SendSmsResponse; import com.google.gson.Gson; import darabonba.core.client.ClientOverrideConfiguration; import foundation.action.ActionProvider; import foundation.dao.Filter; import foundation.data.entity.Entity; import foundation.persist.NamedSQL; import foundation.persist.SQLRunner; import foundation.util.Util; public class MessageHandler extends ActionProvider { protected static Logger logger; static { logger = LogManager.getLogger(MessageHandler.class); } @Override protected void publishMethod() { //1. 发送短信 addMethod("sendMessage"); } public void sendMessage() throws Exception { String userName = dataReader.getString("userName"); String businessCode = dataReader.getString("businessCode"); NamedSQL namedSQL = NamedSQL.getInstance("getEmployeeInfo"); namedSQL.setParam("userName", userName); namedSQL.setParam("is_active", "T"); Entity employeeInfoEntity = SQLRunner.getEntity(namedSQL); if (employeeInfoEntity == null || Util.isEmpty(employeeInfoEntity.getString("phone"))) { dataWriter.reportOneError("sendMessage", "用户不存在"); return; } String phone = employeeInfoEntity.getString("phone"); // 获取模板配置信息 NamedSQL configNameSQL = null; Entity templateEntity = null; SmsBuilderDetail smsBuilderDetail = new SmsBuilderDetail(); configNameSQL = NamedSQL.getInstance("getSendConfigDetail"); Filter templateFilter = new Filter(); templateFilter.add("type", "sms"); templateFilter.add("business_code",businessCode); configNameSQL.setFilter(templateFilter); templateEntity = SQLRunner.getEntity(configNameSQL); if (templateEntity == null || templateEntity.isEmpty()) { return; } smsBuilderDetail = smsBuilderDetail.load(templateEntity); StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder() .accessKeyId("LTAI5tGBmUuYAaYnGnTVMfww") .accessKeySecret("zxgmJWb1Nt5mKaAn61G5ecHm4cQ8xo") .build()); AsyncClient client = AsyncClient.builder() .region("cn-hangzhou") .credentialsProvider(provider) .overrideConfiguration(ClientOverrideConfiguration.create() .setEndpointOverride("dysmsapi.aliyuncs.com")) .build(); SendSmsRequest sendSmsRequest = SendSmsRequest.builder() .signName(smsBuilderDetail.getSignName()) .templateCode(smsBuilderDetail.getTemplateCode()) .phoneNumbers(phone) .templateParam("{\"code\":\"03521\"}") .build(); CompletableFuture response = client.sendSms(sendSmsRequest); SendSmsResponse resp = response.get(); System.out.println(new Gson().toJson(resp)); client.close(); dataWriter.addValue("data", new Gson().toJson(resp)); } }