@Controller
@RequestMapping(value="/sms")
public class xxSmsController extends BaseController{
@Resource(name = "xxSmsService")
private xxSmsService xxSmsService;
/**
* TODO
* @方法描述:发送短信验证码【阿里云 云通讯短信API】
* @设定文件:@param request
* @设定文件:@return
* @返回类型:Object
* @throws :
*/
@RequestMapping("/toSendCode")
@ResponseBody
public Object toSendCode(){
Map<String,Object> map = new HashMap<String,Object>();
try {
//查询第一条开启状态的短信验证码接口
PageData pd = new PageData();
pd = this.getPageData();
pd.put("use_flag", "1");//短信使用场景 1验证码 2短信通知 3推广短信 4群发助手 5其他
List<PageData> messageface = appSmsService.searchMessageface(pd);
if(messageface != null && messageface.size() > 0){
String phone = pd.getString("phone");
PageData face_info = messageface.get(0);
String code = getThree();
PageData sendSmsPD = new PageData();
sendSmsPD.put("alive_flag", "1");
sendSmsPD.put("alive_time", "600");
sendSmsPD.put("code", code);
sendSmsPD.put("content", "您的验证码为:"+code+",您正进行XX的身份验证,验证码10分钟内有效,打死不告诉别人!");
sendSmsPD.put("phone", phone);
sendSmsPD.put("type", "2");
xxSmsService.editSmsSend(sendSmsPD);//先关闭同手机号其他的验证码
xxSmsService.saveSmsSend(sendSmsPD);//保存验证码短信记录
//从前往后:是否开启,key_id,key_secret,手机号,验证码,短信模板编码,短信签名
SmsSendUtils.sendSmsVerificationCode(face_info.getString("message_will_open"), face_info.getString("key_id"), face_info.getString("key_secret"),phone, code, face_info.getString("message_remark_autograph"), face_info.getString("message_about_content"));
map.put("retCode", "0000");
map.put("msg", "短信发送成功");
}else{
map.put("retCode", "1111");
map.put("msg", "未找到短信验证码接口");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
map.put("retCode", "1111");
map.put("msg", "参数转换失败");
}
return map;
}
/**
* TODO
* @方法描述:验证短信验证码 参数有 phone 和 code
* @设定文件:@param request
* @设定文件:@return
* @返回类型:Object
* @throws :
*/
@RequestMapping("/checkCode")
@ResponseBody
public Object checkCode(HttpServletRequest request){
Map<String,Object> map = new HashMap<String,Object>();
try {
PageData pd = new PageData();
pd = this.getPageData();
String phone = pd.getString("phone");
String code = pd.getString("code");
PageData sendSmsPD = new PageData();
sendSmsPD.put("phone", phone);
sendSmsPD.put("type", "1");
xxSmsService.editSmsSend(sendSmsPD);
sendSmsPD.put("alive_flag", "1");
List<PageData> sms = xxSmsService.searchSmsSend(sendSmsPD);
if(sms != null && sms.size() > 0){
PageData codeSend = sms.get(0);
if(code.equals(codeSend.getString("code"))){
map.put("retCode", "0000");
map.put("msg", "验证成功");
}else{
map.put("retCode", "1111");
map.put("msg", "验证码错误");
}
}else {
map.put("retCode", "1111");
map.put("msg", "验证码错误");
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
map.put("retCode", "1111");
map.put("msg", "参数转换失败");
}
return map;
}
/**
* TODO
* @方法描述:生成手机验证码
* @设定文件:@return
* @返回类型:String
*/
public static String getThree(){
Random rad=new Random();
return rad.nextInt(1000000)+"";
}
}
**sql 关闭同手机号其他的验证码**
<update id="editSmsSend" parameterType="pd">
update 表 set alive_flag = 0
<if test='type != null and type != "" and type == "1"'>
WHERE TIMESTAMPDIFF(SECOND, create_time, NOW()) > alive_time
</if>
<if test='type != null and type != "" and type == "2"'>
WHERE phone = #{phone}
</if>
</update>
阿里云短信验证码后端
最新推荐文章于 2023-02-01 16:30:00 发布