xuhy
2025-02-27 84d4cc4e0a186ff352bb395dab85a3b6c3c521ac
Merge branch 'xizang-changyun' of https://gitee.com/xiaochen991015/xizang
1个文件已修改
41 ■■■■ 已修改文件
ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java
@@ -1,8 +1,12 @@
package com.ruoyi.common.utils;
import com.alibaba.fastjson2.JSON;
import com.ruoyi.common.config.SmsProperties;
import com.ruoyi.common.exception.ServiceException;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20190711.SmsClient;
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
@@ -19,15 +23,29 @@
    @Resource
    SmsProperties smsProperties;
    @Resource
    SmsClient smsClient;
    static SmsClient smsClient;
    public SmsClient createSmsClient(SmsProperties properties) {
        // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId,SecretKey。
        // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考凭证管理 https://github.com/TencentCloud/tencentcloud-sdk-java?tab=readme-ov-file#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86。
        // 硬编码密钥到代码中有可能随代码泄露而暴露,有安全隐患,并不推荐。
        // SecretId、SecretKey 查询: https://console.cloud.tencent.com/cam/capi
        // Credential cred = new Credential("SecretId", "SecretKey");
    public SmsProperties getPro(){
        return smsProperties;
        Credential cred = new Credential(properties.getSecretid(), properties.getSecretkey());
        // 实例化一个http选项,可选的,没有特殊需求可以跳过
        HttpProfile httpProfile = new HttpProfile();
        // 指定接入地域域名,默认就近地域接入域名为 sms.tencentcloudapi.com ,也支持指定地域域名访问,例如广州地域的域名为 sms.ap-guangzhou.tencentcloudapi.com
        httpProfile.setEndpoint("sms.tencentcloudapi.com");
        // 实例化一个客户端配置对象
        ClientProfile clientProfile = new ClientProfile();
        clientProfile.setHttpProfile(httpProfile);
        // 实例化要请求产品(sms)的client对象,第二个参数是地域信息,可以直接填写字符串ap-guangzhou,支持的地域列表参考 https://cloud.tencent.com/document/api/382/52071#.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8
        return new SmsClient(cred, "ap-guangzhou", clientProfile);
    }
    public boolean sendSms(String phone,String templateId,String[] param){
        phone = phone.startsWith("+86")?phone:("+86"+phone);
        SendSmsRequest req = new SendSmsRequest();
        req.setSmsSdkAppid(smsProperties.getAppId());
        req.setPhoneNumberSet(new String[]{phone});
@@ -38,7 +56,8 @@
        req.setSessionContext("");
        req.setExtendCode("");
        try {
            smsClient.SendSms(req);
            SendSmsResponse sendSmsResponse = smsClient.SendSms(req);
            System.out.println(JSON.toJSONString(sendSmsResponse));
            return true;
        } catch (TencentCloudSDKException e) {
            log.error("发送短信失败,{},{}",phone,param,e);
@@ -49,5 +68,17 @@
        }
    }
    public static void main(String[] args) {
        SmsProperties properties = new SmsProperties();
        properties.setAppId("1400957506");
        properties.setSign("畅云出行");
        properties.setSecretid("AKIDCF5EF2c0DE1e5JK8r4EGJF4mNsMgp26x");
        properties.setSecretkey("lLl184rUyFOOE0d5KNGC3kmfNsCWk4GU");
        SmsUtil smsUtil = new SmsUtil();
        smsUtil.smsProperties = properties;
        smsUtil.smsClient = smsUtil.createSmsClient(properties);
        boolean isok = smsUtil.sendSms("15826040006", "2369926", new String[]{"526584"});
        System.out.println(isok);
    }
}