package com.javaweb.platform.utils;
|
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Random;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
|
import com.javaweb.common.utils.IdGenerate;
|
import com.javaweb.common.utils.StringUtils;
|
import com.javaweb.platform.domain.Validcode;
|
import com.javaweb.platform.mapper.ValidcodeMapper;
|
|
import com.aliyun.tea.*;
|
import com.aliyun.dysmsapi20170525.*;
|
import com.aliyun.dysmsapi20170525.models.*;
|
import com.aliyun.teaopenapi.*;
|
import com.aliyun.teaopenapi.models.*;
|
|
@Service
|
public class ValidcodeUtils2 {
|
|
@Autowired
|
private ValidcodeMapper validcodeMapper;
|
|
private static final String accessKeyId="LTAI5tJjstk9c2qZs43fbGx9";
|
|
private static final String accessKeySecret="sWHErgvNkain06tOBIxmyht1kMwq2H";
|
|
private static final String SignName="北京梦之岩";
|
/**
|
* 向手机发送验证码
|
* @param type 验证码的类型,1:注册用户,2:修改密码,3:通过审核,4:不通过审核
|
* @param phone
|
* @param code
|
* @return 0:发送过于频繁,1:正常发送
|
* @throws Exception
|
*/
|
public int sendMesgToPhone(String type,String phone) throws Exception {
|
if(hasExistsCode(phone,type))
|
{
|
return 0;
|
}
|
String code = createCode();
|
String templateParam = "{code:"+code+"}";
|
com.aliyun.dysmsapi20170525.Client client = createClient();
|
|
// SendSmsRequest sendSmsRequest = new SendSmsRequest();
|
SendSmsRequest sendSmsRequest = createSendSmsRequest(phone, "SMS_237405548", templateParam);
|
// sendSmsRequest.setSignName(SignName);
|
// sendSmsRequest.setPhoneNumbers(phone);
|
// if(type == "1" || type == "2")
|
// {
|
// sendSmsRequest.setTemplateCode("SMS_237405548");
|
// sendSmsRequest.setTemplateParam("{code:"+code+"}");
|
// }
|
// else if(type == "3")
|
// {
|
// sendSmsRequest.setTemplateCode("SMS_238461833");
|
// }
|
// else if(type == "4")
|
// {
|
// sendSmsRequest.setTemplateCode("SMS_238466927");
|
// }
|
SendSmsResponse r = new SendSmsResponse();
|
// 复制代码运行请自行打印 API 的返回值
|
try {
|
r = client.sendSms(sendSmsRequest);
|
|
} catch (Exception e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
//写入数据库
|
Validcode validcode = new Validcode();
|
validcode.setId(IdGenerate.uuid());
|
validcode.setPhone(phone);
|
validcode.setType(type);
|
validcode.setCreateTime(new Date());
|
Calendar calendar = Calendar.getInstance();
|
calendar.add(Calendar.MINUTE, 5);
|
validcode.setSendTime(new Date());
|
validcode.setUntilTime(calendar.getTime());
|
validcode.setCode(code);
|
validcodeMapper.insertValidcode(validcode);
|
return 1;
|
}
|
/**
|
* 验证码是否有效
|
* @param code
|
* @param phone
|
* @param type
|
* @return
|
*/
|
public boolean validCode(String code,String phone,String type) {
|
Validcode validcode = new Validcode();
|
validcode.setCode(code);
|
validcode.setPhone(phone);
|
validcode.setType(type);
|
validcode.setUntilTime(new Date());
|
List<Validcode> codeList = validcodeMapper.selectValidcodeList(validcode);
|
if(codeList.size() > 0)
|
{
|
return true;
|
}
|
return false;
|
}
|
/**
|
* 查询数据库中,最近50秒是否发送了短信
|
* @param phone
|
* @return
|
*/
|
private boolean hasExistsCode(String phone,String type) {
|
Validcode validcode = new Validcode();
|
validcode.setPhone(phone);
|
validcode.setType(type);
|
Calendar calendar = Calendar.getInstance();
|
calendar.add(Calendar.SECOND, -50);
|
validcode.setSendTime(calendar.getTime());
|
List<Validcode> exisList=validcodeMapper.selectValidcodeList(validcode);
|
if(exisList.size()>0)
|
{
|
return true;
|
}
|
return false;
|
}
|
private String createCode()
|
{
|
//生成六位随机数验证码
|
String ret = "";
|
for(int i = 0;i<6;i++)
|
{
|
Random r = new Random();
|
int j = r.nextInt(10);
|
if(i == 0 && j == 0)
|
{
|
ret += 1;
|
}
|
else
|
{
|
ret += j;
|
}
|
}
|
return ret;
|
}
|
/**
|
* 使用AK&SK初始化账号Client
|
* @param accessKeyId
|
* @param accessKeySecret
|
* @return Client
|
* @throws Exception
|
*/
|
private com.aliyun.dysmsapi20170525.Client createClient() throws Exception {
|
Config config = new Config()
|
// 您的AccessKey ID
|
.setAccessKeyId(accessKeyId)
|
// 您的AccessKey Secret
|
.setAccessKeySecret(accessKeySecret);
|
// 访问的域名
|
config.endpoint = "dysmsapi.aliyuncs.com";
|
return new com.aliyun.dysmsapi20170525.Client(config);
|
}
|
/**
|
* 创建发送命令的参数
|
* @return
|
*/
|
private SendSmsRequest createSendSmsRequest(String phone,String templateCode,String templateParam){
|
|
SendSmsRequest sendSmsRequest = new SendSmsRequest();
|
sendSmsRequest.setSignName(SignName);
|
sendSmsRequest.setPhoneNumbers(phone);
|
|
sendSmsRequest.setTemplateCode(templateCode);
|
if (!StringUtils.isEmpty(templateParam)) {
|
sendSmsRequest.setTemplateParam(templateParam);
|
}
|
return sendSmsRequest;
|
|
}
|
|
}
|