| package com.ruoyi.web.controller.tool; | 
|   | 
| import com.aliyun.dysmsapi20170525.models.SendSmsRequest; | 
| import com.aliyun.dysmsapi20170525.models.SendSmsResponse; | 
| import com.aliyun.tea.TeaException; | 
| import com.aliyun.teaopenapi.models.Config; | 
| import com.aliyun.teautil.models.RuntimeOptions; | 
| import com.ruoyi.system.model.TSysMessageConfig; | 
| import com.ruoyi.system.service.TSysMessageConfigService; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.stereotype.Component; | 
| import org.springframework.util.CollectionUtils; | 
|   | 
| import java.util.Map; | 
|   | 
| @Component | 
| @Slf4j | 
| public class MsgUtils { | 
|   | 
|     @Autowired | 
|     private TSysMessageConfigService messageConfigService; | 
|   | 
|     /** | 
|      * 使用AK&SK初始化账号Client | 
|      * @param accessKeyId | 
|      * @param accessKeySecret | 
|      * @return Client | 
|      * @throws Exception | 
|      */ | 
|     public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { | 
|         Config config = new Config() | 
|                 // 您的 AccessKey ID | 
|                 .setAccessKeyId(accessKeyId) | 
|                 // 您的 AccessKey Secret | 
|                 .setAccessKeySecret(accessKeySecret); | 
|         // 访问的域名 | 
|         config.endpoint = "dysmsapi.aliyuncs.com"; | 
|         return new com.aliyun.dysmsapi20170525.Client(config); | 
|     } | 
|   | 
|     public void sendMsg(String phone, Map<String,String> params, String templateCode) throws Exception { | 
|         TSysMessageConfig sysMessageConfig = messageConfigService.getById(1); | 
|         com.aliyun.dysmsapi20170525.Client client = MsgUtils.createClient(sysMessageConfig.getAccessKeyId(),sysMessageConfig.getAccessKeySecret()); | 
|         SendSmsRequest sendSmsRequest = new SendSmsRequest() | 
|                 .setSignName(sysMessageConfig.getSignName()) | 
|                 .setTemplateCode(templateCode) | 
|                 .setPhoneNumbers(phone); | 
|         if(!CollectionUtils.isEmpty(params)){ | 
|             StringBuilder builder = new StringBuilder(); | 
|             params.forEach((key,value)->{ | 
|                 builder.append("\""+key+"\":\""+value+"\""); | 
|                 builder.append(","); | 
|             }); | 
|             builder.deleteCharAt(builder.length()-1); | 
|             sendSmsRequest.setTemplateParam("{"+builder.toString()+"}"); | 
|         } | 
|         RuntimeOptions runtime = new RuntimeOptions(); | 
|         try { | 
|             // 复制代码运行请自行打印 API 的返回值 | 
|             SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime); | 
|             log.info("短信发送成功:{},{}",sendSmsResponse.getBody().getMessage(),sendSmsResponse.getStatusCode()); | 
|         } catch (TeaException error) { | 
|             // 如有需要,请打印 error | 
|             com.aliyun.teautil.Common.assertAsString(error.message); | 
|             log.info("短信发送失败:{}",error.message); | 
|         } catch (Exception _error) { | 
|             TeaException error = new TeaException(_error.getMessage(), _error); | 
|             // 如有需要,请打印 error | 
|             com.aliyun.teautil.Common.assertAsString(error.message); | 
|             log.info("短信发送失败:{}",error.message); | 
|         } | 
|     } | 
|   | 
| } |