From 58b7a74c6fe11cf5a993f8d5bbbf462916a395a6 Mon Sep 17 00:00:00 2001 From: clay <20932067@zju.edu.cn> Date: Sun, 8 Aug 2021 23:10:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E7=99=BB=E5=BD=95=E5=AE=8C?= =?UTF-8?q?=E6=88=90+=E9=98=BF=E9=87=8C=E5=A4=A7=E9=B1=BCsms=E7=9F=AD?= =?UTF-8?q?=E4=BF=A1=E9=AA=8C=E8=AF=81=E7=A0=81=E5=8F=91=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/sms/SmsController.java | 93 +++++++++++++++ .../controller/wechat/WeChatController.java | 6 - .../com/ebts/common/constant/Constants.java | 4 + ebts/ebts-framework/pom.xml | 8 +- .../com/ebts/framework/config/SMSConfig.java | 112 ++++++++++++++++++ .../ebts/framework/config/WeChatConfig.java | 36 ------ .../resources/mapper/system/UserMapper.xml | 3 +- 7 files changed, 217 insertions(+), 45 deletions(-) create mode 100644 ebts/ebts-admin/src/main/java/com/ebts/web/controller/sms/SmsController.java create mode 100644 ebts/ebts-framework/src/main/java/com/ebts/framework/config/SMSConfig.java diff --git a/ebts/ebts-admin/src/main/java/com/ebts/web/controller/sms/SmsController.java b/ebts/ebts-admin/src/main/java/com/ebts/web/controller/sms/SmsController.java new file mode 100644 index 0000000..045e433 --- /dev/null +++ b/ebts/ebts-admin/src/main/java/com/ebts/web/controller/sms/SmsController.java @@ -0,0 +1,93 @@ +package com.ebts.web.controller.sms; + +import com.ebts.common.constant.Constants; +import com.ebts.common.core.entity.AjaxResult; +import com.ebts.common.core.redis.RedisCache; +import com.ebts.framework.config.SMSConfig; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.regex.Pattern; + +/** + * @author: Clay + * @date: 2021/8/8 22:51 + * @description:SmsController + * @email: clay@hchyun.com + */ + +@Api(value = "小程序获取短信", tags = "小程序获取短信") +@RestController +@RequestMapping("/applet/sms") +public class SmsController { + private final Logger logger = LoggerFactory.getLogger(SmsController.class); + + + @Autowired + private RedisCache redisCache; + + + + @ApiOperation("获取设备信息") + @GetMapping("/{phone}") + public AjaxResult getSms(@PathVariable("phone") String phone) { + try { + if (null==phone||"".equals(phone)){ + return AjaxResult.error("电话号码不能为空!"); + } + String regard = "^1[0-9]{10}$"; + if (!Pattern.matches(regard, phone)){ + return AjaxResult.error("手机号输入有误,请重新输入"); + } + String code = redisCache.getCacheObject(Constants.PHONE_CODE_KEY+phone); + if (code!=null){ + return AjaxResult.info("重复获取验证码"); + } + code = SMSConfig.code(); + // todo 设置验证码时效性 +// redisCache.setCacheObject(Constants.PHONE_CODE_KEY+phone,code,10, TimeUnit.MINUTES); + redisCache.setCacheObject(Constants.PHONE_CODE_KEY+phone,code); + boolean state = SMSConfig.smsCode(phone,code); + if (state){ + return AjaxResult.success("验证码发送成功"); + }else { + return AjaxResult.error("获取失败,请重新获取"); + } + } catch (RuntimeException e) { + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + @ApiOperation("获取设备信息") + @PostMapping("/val") + public AjaxResult smsVal(@RequestBody Map params){ + try { + if (null == params.get("phone")|| "".equals(params.get("phone"))){ + return AjaxResult.error("手机号码为空"); + } + if (null == params.get("code")|| "".equals(params.get("code"))){ + return AjaxResult.error("手机验证码为空"); + } + String code = redisCache.getCacheObject(Constants.PHONE_CODE_KEY+params.get("phone")); + if (code==null){ + return AjaxResult.info("验证码已过期,请重新获取"); + } + if (code.equals(params.get("code"))){ + redisCache.deleteObject(Constants.PHONE_CODE_KEY+params.get("phone")); + return AjaxResult.success("验证成功!"); + }else { + return AjaxResult.error("验证码错误!"); + } + }catch (RuntimeException e){ + logger.error(e.getMessage()); + return AjaxResult.error(); + } + } + +} + diff --git a/ebts/ebts-admin/src/main/java/com/ebts/web/controller/wechat/WeChatController.java b/ebts/ebts-admin/src/main/java/com/ebts/web/controller/wechat/WeChatController.java index b6c0d20..cd8ccbb 100644 --- a/ebts/ebts-admin/src/main/java/com/ebts/web/controller/wechat/WeChatController.java +++ b/ebts/ebts-admin/src/main/java/com/ebts/web/controller/wechat/WeChatController.java @@ -69,12 +69,6 @@ public class WeChatController { case "01": loginUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + WeChatConfig.getUserAppid() + "&secret=" + WeChatConfig.getUserSecret() + "&js_code=" + code + "&grant_type=" + WeChatConfig.getGrant_type(); break; - case "02": - loginUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + WeChatConfig.getFunAppid() + "&secret=" + WeChatConfig.getFunSecret() + "&js_code=" + code + "&grant_type=" + WeChatConfig.getGrant_type(); - break; - case "03": - loginUrl = "https://api.weixin.qq.com/sns/jscode2session?appid=" + WeChatConfig.getEleAppid() + "&secret=" + WeChatConfig.getEleSecret() + "&js_code=" + code + "&grant_type=" + WeChatConfig.getGrant_type(); - break; default: break; } diff --git a/ebts/ebts-common/src/main/java/com/ebts/common/constant/Constants.java b/ebts/ebts-common/src/main/java/com/ebts/common/constant/Constants.java index dabfc48..649863d 100644 --- a/ebts/ebts-common/src/main/java/com/ebts/common/constant/Constants.java +++ b/ebts/ebts-common/src/main/java/com/ebts/common/constant/Constants.java @@ -65,6 +65,10 @@ public class Constants { * 防重提交 redis key */ public static final String REPEAT_SUBMIT_KEY = "repeat_submit:"; + /** + * 手机验证码 + */ + public static final String PHONE_CODE_KEY = "phone_codes:"; /** * 验证码有效期(分钟) diff --git a/ebts/ebts-framework/pom.xml b/ebts/ebts-framework/pom.xml index 92fc480..7ce3ccb 100644 --- a/ebts/ebts-framework/pom.xml +++ b/ebts/ebts-framework/pom.xml @@ -18,7 +18,7 @@ - + org.springframework.boot spring-boot-starter-web @@ -46,6 +46,12 @@ + + + com.aliyun + dysmsapi20170525 + 2.0.4 + diff --git a/ebts/ebts-framework/src/main/java/com/ebts/framework/config/SMSConfig.java b/ebts/ebts-framework/src/main/java/com/ebts/framework/config/SMSConfig.java new file mode 100644 index 0000000..9f5f4e4 --- /dev/null +++ b/ebts/ebts-framework/src/main/java/com/ebts/framework/config/SMSConfig.java @@ -0,0 +1,112 @@ +package com.ebts.framework.config; + +import com.aliyun.dysmsapi20170525.Client; +import com.aliyun.dysmsapi20170525.models.*; +import com.aliyun.teaopenapi.models.*; + +import java.util.Random; + +/** + * @author: Clay + * @date: 2021/8/8 22:54 + * @description:SMSConfig + * @email: clay@hchyun.com + */ +public class SMSConfig { + + private static String accessKeyId; + private static String accessKeySecret; + private static String signName; + + public void setAccessKeyId(String accessKeyId) { + SMSConfig.accessKeyId = accessKeyId; + } + + public void setAccessKeySecret(String accessKeySecret) { + SMSConfig.accessKeySecret = accessKeySecret; + } + + public void setSignName(String signName) { + SMSConfig.signName = signName; + } + + public static Object string(){ + System.out.println(accessKeyId+accessKeySecret+signName); + return accessKeyId+accessKeySecret+signName; + } + + /** + * 使用AK&SK初始化账号Client + * + * @return Client + * @throws Exception + */ + private static Client createClient() throws Exception { + Config config = new Config() + // 您的AccessKey ID + .setAccessKeyId(accessKeyId) + // 您的AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // 访问的域名 + config.endpoint = "dysmsapi.aliyuncs.com"; + return new Client(config); + } + + public static String code() { + Random rand = new Random(); + return String.valueOf(rand.nextInt(1000000) + 1); + } + + /** + * 验证码 + * @param phone + * @param code + * @return + */ + public static boolean smsCode(String phone, String code) { + Client client = null; + try { + client = SMSConfig.createClient(); + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setPhoneNumbers(phone) + .setSignName(signName) + .setTemplateCode("SMS_176925470") + .setTemplateParam("{\"code\":\"" + code + "\"}"); + // 复制代码运行请自行打印 API 的返回值 + client.sendSms(sendSmsRequest); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + + + /** + * 报警 + * @param phone + * @param code + * @return + */ + public static boolean alarm(String phone, String code) { + Client client = null; + try { + client = SMSConfig.createClient(); + SendSmsRequest sendSmsRequest = new SendSmsRequest() + .setPhoneNumbers(phone) + .setSignName(signName) + .setTemplateCode("SMS_176925470") + .setTemplateParam("{\"code\":\"" + code + "\"}"); + // 复制代码运行请自行打印 API 的返回值 + client.sendSms(sendSmsRequest); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + + } + + +} diff --git a/ebts/ebts-framework/src/main/java/com/ebts/framework/config/WeChatConfig.java b/ebts/ebts-framework/src/main/java/com/ebts/framework/config/WeChatConfig.java index 048f279..a0a9cfe 100644 --- a/ebts/ebts-framework/src/main/java/com/ebts/framework/config/WeChatConfig.java +++ b/ebts/ebts-framework/src/main/java/com/ebts/framework/config/WeChatConfig.java @@ -14,12 +14,8 @@ import org.springframework.stereotype.Component; public class WeChatConfig { private static String userAppid; - private static String funAppid; - private static String eleAppid; private static String userSecret; - private static String funSecret; - private static String eleSecret; private static String grant_type; @@ -31,22 +27,6 @@ public class WeChatConfig { WeChatConfig.userAppid = userAppid; } - public static String getFunAppid() { - return funAppid; - } - - public void setFunAppid(String funAppid) { - WeChatConfig.funAppid = funAppid; - } - - public static String getEleAppid() { - return eleAppid; - } - - public void setEleAppid(String eleAppid) { - WeChatConfig.eleAppid = eleAppid; - } - public static String getUserSecret() { return userSecret; } @@ -55,22 +35,6 @@ public class WeChatConfig { WeChatConfig.userSecret = userSecret; } - public static String getFunSecret() { - return funSecret; - } - - public void setFunSecret(String funSecret) { - WeChatConfig.funSecret = funSecret; - } - - public static String getEleSecret() { - return eleSecret; - } - - public void setEleSecret(String eleSecret) { - WeChatConfig.eleSecret = eleSecret; - } - public static String getGrant_type() { return grant_type; } diff --git a/ebts/ebts-system/src/main/resources/mapper/system/UserMapper.xml b/ebts/ebts-system/src/main/resources/mapper/system/UserMapper.xml index ba686ac..25e84a3 100644 --- a/ebts/ebts-system/src/main/resources/mapper/system/UserMapper.xml +++ b/ebts/ebts-system/src/main/resources/mapper/system/UserMapper.xml @@ -26,7 +26,6 @@ - @@ -50,7 +49,7 @@ - select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.union_id,u.open_id,u.city,u.user_type, + select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, u.union_id,u.open_id,u.user_type, d.dept_id, d.parent_id, d.dept_name, d.order_num, d.leader, d.status as dept_status, r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status from sys_user u