热乎的SSM整合阿里云发送短信

编程入门 行业动态 更新时间:2024-10-20 16:32:48

热乎的SSM整合<a href=https://www.elefans.com/category/jswz/34/1770131.html style=阿里云发送短信"/>

热乎的SSM整合阿里云发送短信

sms整合 阿里云发送短信校验短信

发送短信工具类

package com.huhu.smscenter.utils;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
import com.huhu.smscenter.constant.SmsConstant;import java.io.InputStream;
import java.util.Properties;/*** 发送短信工具类** @Package: PACKAGE_NAME* @ClassName: SmsUtil* @author: 7* @date: 2022/1/16 12:35*/public class SmsUtil {/*** 发送短信** @param phoneNumbers 手机号* @param param        验证码* @throws ClientException*/public static void sendShortMessage(String phoneNumbers, String param) throws Exception {// TODO: 2022/1/18 从配置文件读取 Smscenter配置Properties dbProps = new Properties();//使用类加载器取加载配置文件InputStream is = SmsUtil.class.getResourceAsStream(SmsConstant.classpath);dbProps.load(is);//获取配置String accesskeyid = dbProps.getProperty(SmsConstant.accessKeyId);String accessKeySecret = dbProps.getProperty(SmsConstant.accessKeySecret);String area = dbProps.getProperty(SmsConstant.area);String domain = dbProps.getProperty(SmsConstant.domain);String product = dbProps.getProperty(SmsConstant.product);//由于中文会乱码所以处理中文乱码String signame = dbProps.getProperty(SmsConstant.signName);//设置签名设置模板String templateCode = dbProps.getProperty(SmsConstant.templateCode);// 设置超时时间System.setProperty("sun.client.defaultConnectTimeout", "10000");System.setProperty("sun.client.defaultReadTimeout", "10000");// 初始化ascClientIClientProfile profile = DefaultProfile.getProfile(area, accesskeyid, accessKeySecret);DefaultProfile.addEndpoint(area, area, product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);// 组装请求对象SendSmsRequest request = new SendSmsRequest();// 使用post提交request.setMethod(MethodType.POST);request.setPhoneNumbers(phoneNumbers);// 短信签名request.setSignName(signame);// 短信模板request.setTemplateCode(templateCode);request.setTemplateParam("{\"code\":\"" + param + "\"}");SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);if (sendSmsResponse.getCode() != null && "OK".equals(sendSmsResponse.getCode())) {// 请求成功System.out.println("发送成功!");} else {System.err.println("发送失败!" + sendSmsResponse.getMessage());}}}

Controller层:

sms整合 阿里云发送短信校验短信Controller层:
/*** @Package: com.huhu.login.controller* @ClassName: LoginController* @author: 7* @date: 2022/1/17 11:26*/
@Slf4j
@Controller()
@RequestMapping("/smscenter")
public class SmsController {/*** 短信业务层*/@Autowiredprivate SmsService smsService;/*** 判断用户是否是第一次登录** @param smsDto* @return*/@RequestMapping("/isfirstlogin")@ResponseBodypublic ResponseEntity isFirstlogin(@RequestBody() SmsDto smsDto) {if (null == smsDto) {return (ResponseEntity) ResponseEntity.status(HttpStatus.HTTP_BAD_REQUEST);}return smsService.isfirst(smsDto);}/*** 发送验证码** @param smsDto* @return*/@RequestMapping("/sendVerificationCode")@ResponseBodypublic ResponseEntity sendVerificationCode(@RequestBody SmsDto smsDto) throws Exception {if (smsDto == null) {ResponseEntity.status(HttpStatus.HTTP_BAD_REQUEST);}return smsService.sendVerificationCode(smsDto);}/*** @param phone     手机号* @param checkCode 验证码* @return*/@RequestMapping("/verificationCode")@ResponseBodypublic ResponseEntity verificationCode(@RequestParam("phone") String phone, @RequestParam("checkCode") String checkCode) {if (phone == null && checkCode == null) {ResponseEntity.status(HttpStatus.HTTP_BAD_REQUEST);}return smsService.verificationCode(phone, checkCode);}}Service接口层:/*** @Package: com.huhu.login.service* @InterfaceName: SmsService* @author: 7* @date: 2022/1/17 14:59*/public interface SmsService {/*** 发送验证码** @param smsDto* @return*/ResponseEntity sendVerificationCode(SmsDto smsDto) throws Exception;/*** 是否是第一次登录** @param smsDto* @return*/ResponseEntity isfirst(SmsDto smsDto);/*** 校验验证码** @param phone* @param checkCode* @return*/ResponseEntity verificationCode(String phone, String checkCode);
}

Service接口层:


/**
* @Package: com.huhu.login.service
* @InterfaceName: SmsService
* @author: 7
* @date: 2022/1/17 14:59
*/public interface SmsService {/**
* 发送验证码
*
* @param smsDto
* @return
*/
ResponseEntity sendVerificationCode(SmsDto smsDto) throws Exception;/**
* 是否是第一次登录
*
* @param smsDto
* @return
*/
ResponseEntity isfirst(SmsDto smsDto);/**
* 校验验证码
*
* @param phone
* @param checkCode
* @return
*/
ResponseEntity verificationCode(String phone, String checkCode);
}

ServiceImpl 实现层

Serviceimpl业务层:利用Session设置 短信验证码的过期时间/**
* @Package: com.huhu.login.service.impl
* @ClassName: SmsServiceImpl
* @author: 7
* @date: 2022/1/17 15:01
*/@SuppressWarnings("all")
@Service
public class SmsServiceImpl implements SmsService {@Autowired
private SmsLoginDao smsloginDao;private Map<String, String> map = new HashMap<>();private Session session = null;/**
* 是否是第一次登录
*
* @param smsDto
* @return
*/
@Override
public ResponseEntity isfirst(SmsDto smsDto) {
Integer result = smsloginDao.findBydeviceId(smsDto.getDeviceId(), smsDto.getLoginType());
//不是空的 直接登录
return result <= NumberEnum.ZERO.getValue() ? ResponseEntity.ok(HttpStatus.HTTP_ACCEPTED) : ResponseEntity.ok(HttpStatus.HTTP_OK);
}/**
* 发送短息
*
* @param smsDto
* @return
* @throws Exception
*/
@Override
public ResponseEntity sendVerificationCode(SmsDto smsDto) throws Exception {
session = SecurityUtils.getSubject().getSession(true);
//判断手机号格式是否正确
if (!PhoneUtils.validatePhoneNumber(smsDto.getPhone())) {
return ResponseEntity.ok(HttpStatus.HTTP_BAD_REQUEST);
}
Device device = new Device();
String code = PhoneUtils.getRandomNum().toString();
//将验证码存入sessionv 设置超时间一分钟
session.setAttribute(smsDto.getPhone(), code);
session.setTimeout(60000);
//发送验证码
SmsUtil.sendShortMessage(smsDto.getPhone(), code);
//设备标识入库
String s = "";
s = s.valueOf(SnowFlakeUtils.getFlowIdInstance().nextId());
device.setId(s);
device.setDeviceId(smsDto.getDeviceId());
device.setLoginType(smsDto.getLoginType());
device.setLogon_Time(new Date());
Boolean result = smsloginDao.saveDeviceIdInfo(device);
return result ? ResponseEntity.ok(HttpStatus.HTTP_OK) : ResponseEntity.ok("设备信息保存失败!");
}/**
* 校验验证码
*
* @param phone 手机号
* @param checkCode 验证码
* @return
*/
@Override
public ResponseEntity verificationCode(String phone, String checkCode) {
String code = (String) session.getAttribute(phone);
if (null == code || !code.equals(checkCode)) {
return ResponseEntity.ok("验证码错误或者 session中的验证码已失效!");
}
//校验完毕删除Session中的验证码
session.removeAttribute(phone);
return ResponseEntity.ok(HttpStatus.HTTP_OK);
}}

Dao层 保存数据


/**
* @Package: com.huhu.login.dao
* @ClassName: SmsDao
* @author: 7
* @date: 2022/1/17 15:23
*/
@MyBatisDao
public interface SmsLoginDao extends CrudDao<Device> {Integer findBydeviceId(@Param("deviceId") String deviceId, @Param("loginType") Integer loginType);Boolean saveDeviceIdInfo(Device device);}

更多推荐

热乎的SSM整合阿里云发送短信

本文发布于:2024-02-26 21:57:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1704083.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:阿里   热乎   发送短信   SSM

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!