java 阿里云大鱼发送验证码

话不多说,直接上代码:

package com.bid.common.utils;

import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.bid.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class phoneCodeUtils
{
    @Value("${messageInfo.signName}")
    private String signName1;
    private static String signName;
    @Value("${messageInfo.signName}")
    private void setSignName(String signName){
        this.signName = signName;
    }
    private static String templateCode;
    @Value("${messageInfo.templateCode}")
    private void setTemplateCode(String templateCode){
        this.templateCode = templateCode;
    }
    private static String regionId;
    @Value("${messageInfo.regionId}")
    private void setRegionId(String regionId){
        this.regionId = regionId;
    }
    private static String accessKeyId ;
    @Value("${messageInfo.accessKeyId}")
    private void setAcessKeyId(String accessKeyId){this.accessKeyId = accessKeyId;}
    private static String secret;
    @Value("${messageInfo.secret}")
    private void setSecret(String secret){this.secret = secret;}
    public static boolean send(String phone, String code) {
//        AjaxResult ajax = new AjaxResult();
        // 填写自己阿里云账号的AccessKey ID和AccessKey Secret, regionId为cn-hangzhou
        DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, secret);
        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", regionId);
        // 根据需求替换参数
        // 短信签名
        request.putQueryParameter("SignName", signName);
        // 短信模板ID
        request.putQueryParameter("TemplateCode", templateCode);
        // 目标手机号
        request.putQueryParameter("PhoneNumbers", phone);
        // 验证码
        request.putQueryParameter("TemplateParam", "{\"code\":"+code+"}");
        try {
            CommonResponse response = client.getCommonResponse(request);
            JSONObject json = JSONObject.parseObject(response.getData()) ;
            String returnCode =(String) json.get("Code");
            return  "OK".equals(returnCode);
        } catch (ServerException e) {
            e.printStackTrace();
        } catch (ClientException e) {
            e.printStackTrace();
        }
        return  false;
    }
}

配置文件 yml文件:

#短信配置(根据自己实际情况填写)
messageInfo:
  #短信签名
  signName: 注册验证
  #短信模板码
  templateCode: SMS_216XXXXXX
  #默认值
  regionId: cn-hangzhou
  #AccessKey ID和AccessKey Secret
  accessKeyId: LTXXXXXXXXXXXXXX
  #AccessKey Secret
  secret: fITQOXXXXXXXXXXXXXXXXXXXXXXXX

调用方法:

@Override
public AjaxResult sendCode(String userPhone) {
        // 自己写的生成6位随机数字字符的方法(注意: 验证码虽然是字符串,但首位也不能为0,否则发出的是5位数。)
        String code = String.valueOf(new Random().nextInt(899999) + 100000);//生成短信验证码
        if(phoneCodeUtils.send(userPhone, code)){
            SysPhoneVerifyCode sysPhoneVerifyCode = new SysPhoneVerifyCode();
            sysPhoneVerifyCode.setPhone(userPhone);
            sysPhoneVerifyCode.setCode(code);
            SysPhoneVerifyCode phoneVerifyCode = userMapper.selectPhoneVerifyCodeByPhone(userPhone);
            if(phoneVerifyCode!=null){
                if(userMapper.updatePhoneVerifyCodeByPhone(code, phoneVerifyCode.getSendTimes()+1, userPhone) > 0){
                    return AjaxResult.success("验证码发送成功");
                }
            } else {
                sysPhoneVerifyCode.setSendTimes(1);
                if(userMapper.insertPhoneVerifyCode(sysPhoneVerifyCode)>0){
                    return AjaxResult.success("验证码发送成功");
                }
            }
        }
        return AjaxResult.error("验证码发送失败");
}

实体类SysPhoneVerifyCode:

package com.bid.system.domain;

import com.bid.common.core.domain.BaseEntity;
import lombok.Getter;
import lombok.Setter;

import java.util.Date;

@Setter
@Getter
public class SysPhoneVerifyCode extends BaseEntity {

    private Long id;

    private String phone;

    private String code;

    private Date createTime;

    private Date updateTime;

    private int sendTimes;
}
AjaxResult:
package com.bid.common.core.domain;

import java.util.HashMap;
import com.bid.common.constant.HttpStatus;
import com.bid.common.utils.StringUtils;

/**
 * 操作消息提醒
 * 
 * @author ruoyi
 */
public class AjaxResult extends HashMap<String, Object>
{
    private static final long serialVersionUID = 1L;

    /** 状态码 */
    public static final String CODE_TAG = "code";

    /** 返回内容 */
    public static final String MSG_TAG = "msg";

    /** 数据对象 */
    public static final String DATA_TAG = "data";

    /**
     * 初始化一个新创建的 AjaxResult 对象,使其表示一个空消息。
     */
    public AjaxResult()
    {
    }

    /**
     * 初始化一个新创建的 AjaxResult 对象
     * 
     * @param code 状态码
     * @param msg 返回内容
     */
    public AjaxResult(int code, String msg)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
    }

    /**
     * 初始化一个新创建的 AjaxResult 对象
     * 
     * @param code 状态码
     * @param msg 返回内容
     * @param data 数据对象
     */
    public AjaxResult(int code, String msg, Object data)
    {
        super.put(CODE_TAG, code);
        super.put(MSG_TAG, msg);
        if (StringUtils.isNotNull(data))
        {
            super.put(DATA_TAG, data);
        }
    }

    /**
     * 返回成功消息
     * 
     * @return 成功消息
     */
    public static AjaxResult success()
    {
        return AjaxResult.success("操作成功");
    }

    /**
     * 返回成功数据
     * 
     * @return 成功消息
     */
    public static AjaxResult success(Object data)
    {
        return AjaxResult.success("操作成功", data);
    }

    /**
     * 返回成功消息
     * 
     * @param msg 返回内容
     * @return 成功消息
     */
    public static AjaxResult success(String msg)
    {
        return AjaxResult.success(msg, null);
    }

    /**
     * 返回成功消息
     * 
     * @param msg 返回内容
     * @param data 数据对象
     * @return 成功消息
     */
    public static AjaxResult success(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.SUCCESS, msg, data);
    }

    /**
     * 返回错误消息
     * 
     * @return
     */
    public static AjaxResult error()
    {
        return AjaxResult.error("操作失败");
    }

    /**
     * 返回错误消息
     * 
     * @param msg 返回内容
     * @return 警告消息
     */
    public static AjaxResult error(String msg)
    {
        return AjaxResult.error(msg, null);
    }

    /**
     * 返回错误消息
     * 
     * @param msg 返回内容
     * @param data 数据对象
     * @return 警告消息
     */
    public static AjaxResult error(String msg, Object data)
    {
        return new AjaxResult(HttpStatus.ERROR, msg, data);
    }

    /**
     * 返回错误消息
     * 
     * @param code 状态码
     * @param msg 返回内容
     * @return 警告消息
     */
    public static AjaxResult error(int code, String msg)
    {
        return new AjaxResult(code, msg, null);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值