lidongdong
2022-11-23 19b96e1b86b3ffd8a75de1bcf95bcbce85fb36e8
flower_city/src/main/java/com/dg/core/util/SmsUtil.java
@@ -1,5 +1,6 @@
package com.dg.core.util;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
@@ -11,6 +12,9 @@
import com.dg.core.ResultData;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,7 +22,9 @@
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.TimeUnit;
@@ -38,7 +44,18 @@
    @Resource
    RedisTemplate<String, Object> redisTemplate;
    // 发送短信
    private  String LoginName="DSCJKCSZH";
    private  String Pwd="dx@2020";
    private  String FeeType="2";
    /**
     * 发送短信登录验证码
     *
     * @param tel
     *            电话
     */
    public ResultData<Object> sendSms(String tel) {
        //cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
@@ -83,6 +100,53 @@
        return ResultData.error("短信发送失败");
    }
    /**
     * 发送短信登录验证码(电信平台)
     *
     * @param tel
     *            电话
     */
    public ResultData sendSmsNew(String tel) {
        String url =
                "https://dxsdk.028lk.com:8082/Api/SendSms?"+"LoginName="+LoginName+"&Pwd="+Pwd+"&FeeType="+FeeType+"&Mobile="+tel+"&Content=";
        Random rd = new Random();
       // int code = rd.nextInt(900000) + 100000;测试账号模板验证码数值固定等有正式账号才能进行随机数
        int code=181326;
        String content="验证码:"+code+",您正在进行注册操作,验证码5分钟内有效,请勿向他人泄露。";
        url=url+content;
        OkHttpClient client = new OkHttpClient();
        Response response;
        //解密数据
        String rsa = null;
        Request request = new Request.Builder()
                .url(url)
                .get()
                .addHeader("Content-Type", "application/x-www-form-urlencoded")
                .build();
        try {
            response = client.newCall(request).execute();
            redisTemplate.opsForValue().set(tel, code + "", 5, TimeUnit.MINUTES);
//            rsa = response.body().string().split("|")[0];
              rsa   = response.message();
              if (!rsa.equals("OK")){
                  return ResultData.success("短信发送失败");
              }
        } catch (IOException e) {
            e.printStackTrace();
            return ResultData.success("短信发送失败");
        }
        return ResultData.success("短信发送成功");
    }
    /**
     * 发送工单超时短信
     *
     * @param tel
     *            电话
     * @param name
     *            工单名
     */
    public ResultData<Object> sendSmsOvertime(String tel,String name) {
        //cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
@@ -124,4 +188,105 @@
        }
        return ResultData.error("短信发送失败");
    }
    /**
     * 发送工单完成短信
     *
     * @param tel
     *            电话
     * @param name
     *            工单名
     */
    public ResultData<Object> sendSmsComplete(String tel,String name) {
        //cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
        /*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        //  接收人电话
        request.putQueryParameter("PhoneNumbers", tel);
        //  短信签名
        request.putQueryParameter("SignName", "集慧科技");
        //  短信模板
        request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCodeComplete());
        Random rd = new Random();
        //  短信内容
        request.putQueryParameter("TemplateParam", "{name:'" + name + "'}");
        //  获取短信发送的响应结果
        try {
            CommonResponse rs = client.getCommonResponse(request);
            LOGGER.debug(rs.getData().toString());
            // 把json格式的字符串装换成java的map的数据类型
            ObjectMapper mapper = new ObjectMapper();
            try {
                HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
                if (m.get("Message").equals("OK")) {
                    return  ResultData.success("短信发送成功!");
                }
            } catch (JsonProcessingException e) {
                e.printStackTrace();
                return ResultData.error("短信发送失败");
            }
        } catch (ClientException e) {
            e.printStackTrace();
            return ResultData.error("短信发送失败");
        }
        return ResultData.error("短信发送失败");
    }
    /**
     * 发送工单提交短信
     *
     * @param tel
     *            电话
     * @param name
     *            工单名
     */
    public ResultData<Object> sendSmsSubmit(String tel,String name) {
        //cn-hangzhou 是阿里定义的签名固定值。填写阿里云申请短信签名的key和secret值
        DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", aliyunConfig.getKey(), aliyunConfig.getScrect());
        /*阿里云提供的短信发送api的近期的相关代码,代码以最新的阿里api提供为准*/
        IAcsClient client = new DefaultAcsClient(profile);
        CommonRequest request = new CommonRequest();
        request.setSysMethod(MethodType.POST);
        request.setSysDomain("dysmsapi.aliyuncs.com");
        request.setSysVersion("2017-05-25");
        request.setSysAction("SendSms");
        request.putQueryParameter("RegionId", "cn-hangzhou");
        //  接收人电话
        request.putQueryParameter("PhoneNumbers", tel);
        //  短信签名
        request.putQueryParameter("SignName", "集慧科技");
        //  短信模板
        request.putQueryParameter("TemplateCode", aliyunConfig.getTemplateCodeSubmit());
        Random rd = new Random();
        //  短信内容
        request.putQueryParameter("TemplateParam", "{name:'" + name + "'}");
        //  获取短信发送的响应结果
        try {
            CommonResponse rs = client.getCommonResponse(request);
            LOGGER.debug(rs.getData().toString());
            // 把json格式的字符串装换成java的map的数据类型
            ObjectMapper mapper = new ObjectMapper();
            try {
                HashMap<String, Object> m = mapper.readValue(rs.getData().toString(), HashMap.class);
                if (m.get("Message").equals("OK")) {
                    return  ResultData.success("短信发送成功!");
                }
            } catch (JsonProcessingException e) {
                e.printStackTrace();
                return ResultData.error("短信发送失败");
            }
        } catch (ClientException e) {
            e.printStackTrace();
            return ResultData.error("短信发送失败");
        }
        return ResultData.error("短信发送失败");
    }
}