From f9a7691e2175281dd972ae2ad2beb73bc3fd0650 Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Fri, 23 Sep 2022 15:33:16 +0800 Subject: [PATCH] 20220902 --- src/main/java/cc/mrbird/febs/mall/controller/CommonController.java | 36 ++++++++++++ src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java | 84 ++++++++++++++++++++++++---- pom.xml | 5 + 3 files changed, 113 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 782a844..0cb7b4f 100644 --- a/pom.xml +++ b/pom.xml @@ -29,6 +29,11 @@ <dependencies> <dependency> + <groupId>com.aliyun</groupId> + <artifactId>dysmsapi20170525</artifactId> + <version>2.0.18</version> + </dependency> + <dependency> <groupId>com.aliyun.oss</groupId> <artifactId>aliyun-sdk-oss</artifactId> <version>${aliyun-oss.version}</version> diff --git a/src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java b/src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java index 92ced9e..21e5422 100644 --- a/src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java +++ b/src/main/java/cc/mrbird/febs/common/utils/ZzSmsSend.java @@ -6,7 +6,11 @@ import cn.hutool.core.util.XmlUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.http.HttpUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import lombok.extern.slf4j.Slf4j; +import com.aliyun.tea.*; import java.util.Date; import java.util.HashMap; @@ -18,6 +22,60 @@ **/ @Slf4j public class ZzSmsSend { + + public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception { + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 您的 AccessKey ID + .setAccessKeyId(accessKeyId) + // 您的 AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // 访问的域名 + config.endpoint = "dysmsapi.aliyuncs.com"; + return new com.aliyun.dysmsapi20170525.Client(config); + } + + private static final String SIGNNAME = "汇达农业"; + private static final String TEMPLATECODE = "SMS_251041117"; + public static boolean sendALiYun(String phone,String TemplateParam){ + com.aliyun.dysmsapi20170525.Client client = null; + try { + client = createClient("LTAI4GBuydqbJ5bTsDP97Lpd", "vbCjQtPxABWjqtUlQfzjlA0qAY96fh"); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest() +// .setSignName("阿里云短信测试") + .setSignName(SIGNNAME) +// .setTemplateCode("SMS_154950909") + .setTemplateCode(TEMPLATECODE) +// .setPhoneNumbers("15274802129") + .setPhoneNumbers(phone) +// .setTemplateParam("{\"code\":\"1234\"}"); + .setTemplateParam("{\"code\":\""+TemplateParam+"\"}"); + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try { + // 复制代码运行请自行打印 API 的返回值 + SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime); + log.info("短信发送:{}", sendSmsResponse); + JSONObject jsonObject = JSONUtil.parseObj(sendSmsResponse); + System.out.print(jsonObject); + if(200 == sendSmsResponse.getStatusCode()) { + return true; + }else{ + return false; + } + } catch (TeaException error) { + // 如有需要,请打印 error + com.aliyun.teautil.Common.assertAsString(error.message); + } catch (Exception _error) { + TeaException error = new TeaException(_error.getMessage(), _error); + // 如有需要,请打印 error + com.aliyun.teautil.Common.assertAsString(error.message); + } + return false; + + } private static final String URL = "http://zzsms365.com/v2sms.aspx?action=send"; @@ -52,17 +110,19 @@ } public static void main(String[] args) { - Map<String, Object> data = new HashMap<>(); - Long time = System.currentTimeMillis(); - data.put("userid", USER_ID); - data.put("timestamp", time); - data.put("mobile", "15773002834"); - String signStr = ACCOUNT + PWD + time; - String sign = SecureUtil.md5(signStr); - data.put("sign", sign); - data.put("content", "【HiBit】尊敬的用户,恭喜您于2010-03-25有一笔充值已成功到账,充值数量为10。"); - - String post = HttpUtil.post(URL, data); - System.out.println(post); +// Map<String, Object> data = new HashMap<>(); +// Long time = System.currentTimeMillis(); +// data.put("userid", USER_ID); +// data.put("timestamp", time); +// data.put("mobile", "15773002834"); +// String signStr = ACCOUNT + PWD + time; +// String sign = SecureUtil.md5(signStr); +// data.put("sign", sign); +// data.put("content", "【HiBit】尊敬的用户,恭喜您于2010-03-25有一笔充值已成功到账,充值数量为10。"); +// +// String post = HttpUtil.post(URL, data); +// System.out.println(post); + boolean b = sendALiYun( "15274802129", "123456"); + System.out.println(b); } } diff --git a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java index 752a2bc..00c7369 100644 --- a/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java +++ b/src/main/java/cc/mrbird/febs/mall/controller/CommonController.java @@ -76,6 +76,42 @@ return new FebsResponse().fail().message("验证码发送失败"); } + @ApiOperation(value = "获取阿里云验证码接口", notes = "获取阿里云验证码接口") + @GetMapping(value = "/aliVerifyCode") + public FebsResponse aliVerifyCode(@ApiParam(name = "account", value = "手机号", required = true) @RequestParam(value = "account") String account, + @ApiParam(name = "type", value = "类型1-手机号", required = true) @RequestParam("type") String type) { + log.info("#账号:{}, 类型:{}#", account, type); + + Integer code = (int) ((Math.random() * 9 + 1) * 100000); + if (StrUtil.isNotBlank(redisUtils.getString(AppContants.VERIFY_CODE_PREFIX + account))) { + throw new FebsException("验证码已发送"); + } + + // 发送手机验证码 + if (AppContants.ACCOUNT_TYPE_MOBILE.equals(type)) { + boolean result = ZzSmsSend.sendALiYun(account, code.toString()); + if (result) { + Map<String, Object> map = new HashMap<>(); + boolean flag = redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120); + map.put("code", flag); + return new FebsResponse().success().message("验证码发送成功"); + } + // 发送邮件验证码 + } else if (AppContants.ACCOUNT_TYPE_EMAIL.equals(type)) { + boolean flag = SubMailSend.sendMail(account, code.toString()); + if (flag) { + redisUtils.set(AppContants.VERIFY_CODE_PREFIX + account, code, 120); + return new FebsResponse().success().message("验证码发送成功"); + } else { + return new FebsResponse().fail().message("验证码发送失败"); + } + } else { + log.info("未定义账号类型"); + throw new FebsException("未定义账号类型"); + } + return new FebsResponse().fail().message("验证码发送失败"); + } + /** * 图片上传 * @return -- Gitblit v1.9.1