JAVA全系列 教程
3762个小节阅读:7091.3k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
序号 | 接口名称 | 接口地址 | 请求类型 |
---|---|---|---|
1 | 发送短信 | system/sms/sendSms/{phoneNumber} | post |
2 | 验证短信 | /system/sms/checkCode/{phoneNumber}/{checkCode} | get |
名称 | 类型 | 是否必须 |
---|---|---|
phoneNumber | String | 必须 |
返回整型数据
创建实体类
xxxxxxxxxx
@ApiModel(value="com-bjsxt-domain-verificationCode")
@Data
@EqualsAndHashCode(callSuper=true)
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "his_verification_code")
public class VerificationCode extends BaseEntity{
/**
* ID
*/
@TableId(value = "id", type = IdType.INPUT)
@ApiModelProperty(value = "ID")
private String id;
@TableField(value = "verification_code")
@ApiModelProperty(value = "验证码")
private Integer verificationCode;
@TableField(value = "phone_number")
@ApiModelProperty(value = "手机号")
private String phoneNumber;
@TableField(value = "create_time")
@ApiModelProperty(value = "创建时间")
private String createTime;
@TableField(value = "is_check")
@ApiModelProperty(value = "是否校验")
private Integer isCheck;
public static final String VERIFICATION_CODE = "verification_code";
public static final String PHONE_NUMBER = "phone_number";
public static final String IS_CHECK = "is_check";
}
创建配置类
xxxxxxxxxx
package com.bjsxt.config;
import org.apache.commons.codec.digest.DigestUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
@Configuration
public class SmsConfig {
/**
* url前半部分
*/
@Value("${api_url}")
String BASE_URL;
/**
* 开发者注册后系统自动生成的账号,可在官网登录后查看
*/
@Value("${account_sid}")
String ACCOUNT_SID;
/**
* 开发者注册后系统自动生成的TOKEN,可在官网登录后查看
*/
@Value("${auth_token}")
String AUTH_TOKEN;
/**
* 响应数据类型, JSON或XML
*/
@Value("${resp_data_type}")
String RESP_DATA_TYPE;
@Value("${template_id}")
String TEMPLATE_ID;
public String getBASE_URL() {
return BASE_URL;
}
public void setBASE_URL(String BASE_URL) {
this.BASE_URL = BASE_URL;
}
public String getACCOUNT_SID() {
return ACCOUNT_SID;
}
public void setACCOUNT_SID(String ACCOUNT_SID) {
this.ACCOUNT_SID = ACCOUNT_SID;
}
public String getAUTH_TOKEN() {
return AUTH_TOKEN;
}
public void setAUTH_TOKEN(String AUTH_TOKEN) {
this.AUTH_TOKEN = AUTH_TOKEN;
}
public String getRESP_DATA_TYPE() {
return RESP_DATA_TYPE;
}
public void setRESP_DATA_TYPE(String RESP_DATA_TYPE) {
this.RESP_DATA_TYPE = RESP_DATA_TYPE;
}
public String getTEMPLATE_ID() {
return TEMPLATE_ID;
}
public void setTEMPLATE_ID(String TEMPLATE_ID) {
this.TEMPLATE_ID = TEMPLATE_ID;
}
@Override
public String toString() {
return "SmsSendConfig{" +
"BASE_URL='" + BASE_URL + '\'' +
", ACCOUNT_SID='" + ACCOUNT_SID + '\'' +
", AUTH_TOKEN='" + AUTH_TOKEN + '\'' +
", RESP_DATA_TYPE='" + RESP_DATA_TYPE + '\'' +
", TEMPLATE_ID='" + TEMPLATE_ID + '\'' +
'}';
}
/**
* 构造通用参数timestamp、sig和respDataType
*
* @return
*/
public String createCommonParam(String sid,String token) {
// 时间戳
long timestamp = System.currentTimeMillis();
// 签名
String sig = DigestUtils.md5Hex(sid + token + timestamp);
return "×tamp=" + timestamp + "&sig=" + sig + "&respDataType=" + getRESP_DATA_TYPE();
}
}
修改模块配置文件,在yaml文件中增加短信发送配置项
xxxxxxxxxx
api_url:
https://openapi.danmi.com/distributor/sendSMS
account_sid:
46c04471661b40f2c2c601b05d1a23bf
auth_token:
ecdd901e291af3d7d84397da2fd56def
template_id:
307852
resp_data_type:
JSON
创建映射类
xxxxxxxxxx
public interface VerificationCodeMapper extends BaseMapper<VerificationCode> {
}
创建接口类
xxxxxxxxxx
public interface SmsSendService {
String execute(String phoneNumber, Integer code) throws Exception;
int sendSms(String phoneNumber);
int saveVerificationCode(String phoneNumber, Integer code);
}
创建controller
xxxxxxxxxx
@RestController
@RequestMapping("system/sms")
public class SmsSendController extends BaseController{
@Reference
private SmsSendService smsSendService;
/**
* 获取验证码
* @param phoneNumber
* @return
*/
@PostMapping("/sendSms/{phoneNumber}")
public AjaxResult acquireVerifyCode(@PathVariable String phoneNumber){
return AjaxResult.toAjax(smsSendService.sendSms(phoneNumber));
}
}
接口测试
名称 | 类型 | 是否必须 |
---|---|---|
phoneNumber | String | 必须 |
code | int | 必须 |
修改接口类,增加checkCode方法
xxxxxxxxxx
public interface SmsSendService {
String execute(String phoneNumber, Integer code) throws Exception;
int sendSms(String phoneNumber);
int saveVerificationCode(String phoneNumber, Integer code);
VerificationCode checkCode(String phoneNumber, Integer code);
}
修改controller,增加checkVerifyCode方法
xxxxxxxxxx
/**
* 校验验证码
* @param phoneNumber
* @param code
* @return
*/
@GetMapping("/checkCode/{phoneNumber}/{code}")
public AjaxResult checkVerifyCode(@PathVariable String phoneNumber, @PathVariable Integer code){
// int a = 1/0;
return AjaxResult.success(smsSendService.checkCode(phoneNumber,code));
}