public Object huaweiSendCode(String phone){
Random random = new Random();
String value = String.format("%s%s%s%s%s%s", random.nextInt(10), random.nextInt(10), random.nextInt(10),
random.nextInt(10), random.nextInt(10), random.nextInt(10));
// 多子project場景下使用。regionName(YourMultiSubProjectName)應該填自定義的子project名,如cn-north-1_smn爲本身定義的子project名
SmnClient smnClient = new DefaultSmnClient(
"welife",
"welife",
"bc182119",
"cn-south-1");
// 構造請求對象
SmsPublishRequest smnRequest = new SmsPublishRequest();
// 設置參數
smnRequest.setEndpoint("+86"+phone)
.setMessage("您的驗證碼是:"+value+",請查收")
.setSignId("c4df5378d52b44ebb8c66e5702d2ec48");
// 發送短信
try {
SmsPublishResponse res = smnClient.sendRequest(smnRequest);
String url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel="+phone;
String json = loadJSON(url);
System.out.println(json);
ZoneResult zoneResult=new ZoneResult();
zoneResult.setPhone(phone);
zoneResult.setZoneResult(json);
zoneResultService.save(zoneResult);
if(res.getHttpCode()==200){
//發送驗證碼成功之後 要把驗證碼保存起來,登陸的時候 校驗驗證碼是否正確
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String firstTime=format.format(new Date());
logger.info("發送驗證碼:"+phone+"手機號發送時間是 "+firstTime);
String stampValue[]=new String[2];
stampValue[0]=value;
stampValue[1]=firstTime;
map.put(phone,stampValue);
return JsonUtil.successMessage("驗證碼發送成功");
}
System.out.println("httpCode:" + res.getHttpCode()
+ ",message_id:" + res.getMessageId()
+ ", request_id:" + res.getRequestId()
+ ", errormessage:" + res.getMessage());
} catch (Exception e) {
// 處理異常
e.printStackTrace();
}
return JsonUtil.failMessage("驗證碼發送失敗");
}
/**
* 是否超時
* @param firstTime
* @param lastTime
* @return
*/
private boolean overtimeCode(String firstTime,String lastTime,long overtime){
boolean flag=false;
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date one;
Date two;
try {
one = df.parse(firstTime);
two = df.parse(lastTime);
long time1 = one.getTime();
long time2 = two.getTime();
long diff = time2 - time1;
if(diff/1000>overtime){
flag=true;
}
} catch (ParseException e) {
e.printStackTrace();
}
return flag;
}
SimpleDateFormat dft2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String str2=dft2.format(new Date());String time= map.get(phone)[1];boolean flag=overtimeCode(time,str2,6000);if(flag){ return JsonUtil.failMessage("驗證碼失效"+time+"--"+str2);}