From 4040856595952ea0b8f8b764ba2770d5c244c891 Mon Sep 17 00:00:00 2001
From: yanghui <2536613402@qq.com>
Date: 星期五, 14 十月 2022 11:19:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/huacheng_test' into local_20221010

---
 flower_city/src/main/java/com/dg/core/util/SmsUtil.java |  190 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 190 insertions(+), 0 deletions(-)

diff --git a/flower_city/src/main/java/com/dg/core/util/SmsUtil.java b/flower_city/src/main/java/com/dg/core/util/SmsUtil.java
new file mode 100644
index 0000000..0d08e33
--- /dev/null
+++ b/flower_city/src/main/java/com/dg/core/util/SmsUtil.java
@@ -0,0 +1,190 @@
+package com.dg.core.util;
+
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+import com.dg.core.AliyunConfig;
+import com.dg.core.ResultData;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.HashMap;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * 阿里云短信工具类
+ */
+@Component
+public class SmsUtil {
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(SmsUtil.class);
+
+    // 注入阿里云配置
+    @Resource
+    AliyunConfig aliyunConfig;
+
+    // 注入redisTemplate
+    @Resource
+    RedisTemplate<String, Object> redisTemplate;
+
+    /**
+     * 发送短信登录验证码
+     *
+     * @param tel
+     *            电话
+     */
+    public ResultData<Object> sendSms(String tel) {
+        //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.getTemplateCode());
+        Random rd = new Random();
+        int code = rd.nextInt(900000) + 100000;
+        //  短信内容
+        request.putQueryParameter("TemplateParam", "{code:" + code + "}");
+        //  获取短信发送的响应结果
+        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")) {
+                    redisTemplate.opsForValue().set(tel, code + "", 5, TimeUnit.MINUTES);
+                    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> sendSmsOvertime(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.getTemplateCodeOvertime());
+        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> 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("短信发送失败");
+    }
+}
\ No newline at end of file

--
Gitblit v1.7.1