您现在的位置是:主页 > news > 普宁旅游网站设计方案/东莞做网站哪个公司好
普宁旅游网站设计方案/东莞做网站哪个公司好
admin2025/5/29 8:03:08【news】
简介普宁旅游网站设计方案,东莞做网站哪个公司好,网站开发方倍工作室,icon图标素材下载网站为了方便,这里单独建了一个表,将验证码和用户账号一块存进数据库了,并且设置一个有效时间和验证码的类型。数据库如下: CREATE TABLE app_sms_record (id int(32) NOT NULL AUTO_INCREMENT,phone_number varchar(64) DEFAULT NUL…
普宁旅游网站设计方案,东莞做网站哪个公司好,网站开发方倍工作室,icon图标素材下载网站为了方便,这里单独建了一个表,将验证码和用户账号一块存进数据库了,并且设置一个有效时间和验证码的类型。数据库如下:
CREATE TABLE app_sms_record (id int(32) NOT NULL AUTO_INCREMENT,phone_number varchar(64) DEFAULT NUL…
为了方便,这里单独建了一个表,将验证码和用户账号一块存进数据库了,并且设置一个有效时间和验证码的类型。数据库如下:
CREATE TABLE `app_sms_record` (`id` int(32) NOT NULL AUTO_INCREMENT,`phone_number` varchar(64) DEFAULT NULL COMMENT '电话号码',`code` varchar(64) DEFAULT NULL COMMENT '验证码',`type` varchar(64) DEFAULT NULL COMMENT '类型(10:注册验证,20:找回密码验证)',`active_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '有效期',`status` varchar(64) DEFAULT '0',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
其中验证码的有效期为三分钟,所以在插入一条新的验证码数据的时候,active_time
的值为插入时间再往后延迟三分钟,这里可以直接使用mysql的DATE_ADD()
函数。state默认为0,表示没有被使用过,使用过之后设为1。
定义和用法: DATE_ADD() 函数向日期添加指定的时间间隔。
语法: DATE_ADD(date,INTERVAL expr type)
date 参数是合法的日期表达式。expr 参数是您希望添加的时间间隔。
type 参数可以是下列值:
插入语句:
<!-- 插入记录 --><insert id="insertSmsRecord">insert into app_sms_record<trim prefix="(" suffix=")" suffixOverrides="," ><if test="id != null" >id,</if><if test="phoneNumber != null" >phone_number,</if><if test="code != null" >code,</if><if test="type != null" >type,</if><if test="activeTime != null" >active_time,</if><if test="status != null" >status,</if></trim><trim prefix="values (" suffix=")" suffixOverrides="," ><if test="id != null" >#{id,jdbcType=INTEGER},</if><if test="phoneNumber != null" >#{phoneNumber,jdbcType=VARCHAR},</if><if test="code != null" >#{code,jdbcType=VARCHAR},</if><if test="type != null" >#{type,jdbcType=VARCHAR},</if><if test="activeTime != null" >date_add(NOW(),interval 3 minute),</if><if test="status != null" >#{status,jdbcType=VARCHAR},</if></trim></insert>
下面才开始使用云片网发短信:
首先引入云片网的API依赖:
<!-- https://mvnrepository.com/artifact/com.yunpian.sdk/yunpian-java-sdk --><dependency><groupId>com.yunpian.sdk</groupId><artifactId>yunpian-java-sdk</artifactId><version>1.2.6</version></dependency>
然后是工具类:SmsUtils.java(这里是发送单条短信,如要使用批量发送短信可以参考SmsApi.class中的batch_send方法 )
import java.util.Map;import com.yunpian.sdk.YunpianClient;
import com.yunpian.sdk.model.Result;
import com.yunpian.sdk.model.SmsSingleSend;public class SmsUtils {public static YunpianClient clnt = new YunpianClient("7c0f32a164a5df266dc5714654656893c368").init();//发送短信接口public static Result<SmsSingleSend> SingleSend (String phone, String code){Map<String, String> param = clnt.newParam(2);param.put(YunpianClient.MOBILE, phone);param.put(YunpianClient.TEXT, "【xxxx】您的验证码是"+code+"。如非本人操作,请忽略本短信");return clnt.sms().single_send(param);}
}
如果短信发送成功,SingleSend 将返回一个状态值:0
,
//调用短信发送方法
Result<SmsSingleSend> singleSend = SmsUtils.SingleSend(phone,code);
if(singleSend.getCode()==0){// 发送成功
}
注册模块:
/*** 获取验证码* @param request* @param response* @param phone* @return*/@RequestMapping("/getcode")@ResponseBodypublic JSONObject getcode(HttpServletRequest request,HttpServletResponse response,String data){JSONObject obj=JSON.parseObject(data); String phone=obj.getString("phone");String type=obj.getString("type"); if(type.equals("10")){//验证手机号有没有被注册ShopMember member = shopMemberService.findByMemberPhone(phone);if(member!=null){return JsonUtil.getJson(30, null, "手机号被占用");}} //生成验证码String code=String.valueOf(Math.random()).substring(2,8);//调用短信发送方法Result<SmsSingleSend> singleSend = SmsUtils.SingleSend(phone,code);/*>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<*///根据短信接口返回值进行判断,发送成功存入数据库并设置有效时间if(singleSend.getCode()==0){List<AppSmsRecord> selectByPhoneNum = appSmsRecordService.selectByPhoneNum(phone, type);if(!selectByPhoneNum.isEmpty()){AppSmsRecord appSmsRecord=new AppSmsRecord();appSmsRecord.setId(selectByPhoneNum.get(0).getId());appSmsRecord.setStatus("1");appSmsRecordService.SmsRecord(appSmsRecord); // 将上一次的验证码的state置为1}//把验证码存入数据库appSmsRecordService.insertSmsRecord(code,phone,type);return JsonUtil.getJson(10, null, "发送成功");}else{//20发送验证码失败return JsonUtil.getJson(20, null, "发送失败");}}
/*** 验证码校验* @param request* @param response* @param phone* @param code* @return*/@RequestMapping("/testCode")@ResponseBodypublic JSONObject testCode(HttpServletRequest request,HttpServletResponse response ,String data){JSONObject obj=JSON.parseObject(data); String type=obj.getString("type");String code=obj.getString("code");String phone=obj.getString("phone");//验证code有效性,根据手机号查询该手机号的最近的有效验证码List<AppSmsRecord> selectByPhoneNum = appSmsRecordService.selectByPhoneNum(phone, type);if(!selectByPhoneNum.isEmpty()&&selectByPhoneNum.get(0).getCode().equals(code)){AppSmsRecord appSmsRecord=new AppSmsRecord();appSmsRecord.setId(selectByPhoneNum.get(0).getId());appSmsRecord.setStatus("1");Integer a=appSmsRecordService.SmsRecord(appSmsRecord); //确认无误之后,state置为1,表示验证码用过了return JsonUtil.getJson(10, null, "验证码无误");}return JsonUtil.getJson(20, null, "验证码不正确");}