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