注册获取手机号验证码
This commit is contained in:
parent
cd31ae2335
commit
acdd7da542
@ -29,6 +29,12 @@ import org.apache.http.util.EntityUtils;
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.PrintWriter;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
@ -148,11 +154,11 @@ public class HttpUtils {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
/**json格式的参数数据
|
||||
* post请求
|
||||
*
|
||||
* @param url 请求地址
|
||||
* @param params json格式的参数数据
|
||||
* @param params
|
||||
* @return
|
||||
* @author fengjundan
|
||||
* @date 2018/6/2
|
||||
@ -405,5 +411,66 @@ public class HttpUtils {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
public static String postFormData(String path, HashMap<String, String> Headers, HashMap<String, String> formMap) {
|
||||
String result = "";
|
||||
HttpURLConnection connection = null;
|
||||
String boundary = "--------------------------132183525382215881770481";
|
||||
try {
|
||||
URL url = new URL(path);
|
||||
connection = (HttpURLConnection) url.openConnection();
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setRequestProperty("Connection", "Keep-Alive");
|
||||
// 不使用缓存
|
||||
connection.setUseCaches(false);
|
||||
if (Headers != null) {
|
||||
if (Headers.size() > 0) {
|
||||
for (Map.Entry<String, String> entry : Headers.entrySet()) {
|
||||
connection.setRequestProperty(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
StringBuffer formSB = new StringBuffer();
|
||||
if (formMap != null) {
|
||||
if (formMap.size() > 0) {
|
||||
for (Map.Entry<String, String> entry : formMap.entrySet()) {
|
||||
String inputName = entry.getKey();
|
||||
String inputValue = entry.getValue();
|
||||
formSB.append("\r\n").append("--").append(boundary).append("\r\n");
|
||||
formSB.append("Content-Disposition: form-data; name=\"" + inputName + "\"\r\n\r\n");
|
||||
formSB.append(inputValue);
|
||||
}
|
||||
formSB.append("\r\n").append("--").append(boundary).append("--");
|
||||
}
|
||||
}
|
||||
connection.connect();
|
||||
//OutputStream out = new DataOutputStream(connection.getOutputStream());
|
||||
PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8"));
|
||||
out.print(formSB.toString());
|
||||
out.flush();
|
||||
//获得响应状态
|
||||
int resultCode = connection.getResponseCode();
|
||||
if (HttpURLConnection.HTTP_OK == resultCode) {
|
||||
formSB = new StringBuffer();
|
||||
String readLine;
|
||||
BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||
while ((readLine = responseReader.readLine()) != null) {
|
||||
formSB.append(readLine).append("\n");
|
||||
}
|
||||
responseReader.close();
|
||||
result = formSB.toString();
|
||||
} else {
|
||||
result = "{\"code\":\"" + resultCode + "\"}";
|
||||
}
|
||||
out.close();
|
||||
} catch (Exception e) {
|
||||
logger.error(e.toString());
|
||||
return "{\"code\":500,\"result\":\"" + "POST表单请求 " + path + " 时出现异常\"}";
|
||||
} finally {
|
||||
connection.disconnect();
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
package com.xhpc.general.controller;
|
||||
|
||||
import com.xhpc.common.core.web.controller.BaseController;
|
||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||
import com.xhpc.common.security.annotation.PreAuthorize;
|
||||
import com.xhpc.general.service.IXhpcSmsService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/8/1 23:42
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/sms")
|
||||
public class XhpcSmsController extends BaseController {
|
||||
|
||||
@Autowired
|
||||
private IXhpcSmsService xhpcSmsService;
|
||||
|
||||
/**
|
||||
* 注册获取手机号验证码
|
||||
*/
|
||||
@GetMapping(value = "/getLogonPhoneCode")
|
||||
public AjaxResult getLogonPhoneCode(@RequestParam("phone") String phone)
|
||||
{
|
||||
return AjaxResult.success(xhpcSmsService.getLogonPhoneCode(phone));
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,152 @@
|
||||
package com.xhpc.general.domain;
|
||||
|
||||
import com.xhpc.common.core.web.domain.BaseEntity;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/7/30 18:16
|
||||
*/
|
||||
public class XhpcSms extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 短信id
|
||||
*/
|
||||
private Long smsId;
|
||||
/**
|
||||
* 类型
|
||||
*/
|
||||
private String phone;
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
private String code;
|
||||
/**
|
||||
* 模板id
|
||||
*/
|
||||
private String templateId;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String accessKey;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String secretKey;
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private String regionId;
|
||||
/**
|
||||
* 短信内容
|
||||
*/
|
||||
private String content;
|
||||
/**
|
||||
* 状态(0成功 1失败 2.空号 3.系统异常)
|
||||
*/
|
||||
private Integer status;
|
||||
/**
|
||||
* 删除标志(0代表存在 2代表删除)
|
||||
*/
|
||||
private Integer delFlag;
|
||||
|
||||
public Long getSmsId() {
|
||||
|
||||
return smsId;
|
||||
}
|
||||
|
||||
public void setSmsId(Long smsId) {
|
||||
|
||||
this.smsId = smsId;
|
||||
}
|
||||
|
||||
public String getPhone() {
|
||||
|
||||
return phone;
|
||||
}
|
||||
|
||||
public void setPhone(String phone) {
|
||||
|
||||
this.phone = phone;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getTemplateId() {
|
||||
|
||||
return templateId;
|
||||
}
|
||||
|
||||
public void setTemplateId(String templateId) {
|
||||
|
||||
this.templateId = templateId;
|
||||
}
|
||||
|
||||
public String getAccessKey() {
|
||||
|
||||
return accessKey;
|
||||
}
|
||||
|
||||
public void setAccessKey(String accessKey) {
|
||||
|
||||
this.accessKey = accessKey;
|
||||
}
|
||||
|
||||
public String getSecretKey() {
|
||||
|
||||
return secretKey;
|
||||
}
|
||||
|
||||
public void setSecretKey(String secretKey) {
|
||||
|
||||
this.secretKey = secretKey;
|
||||
}
|
||||
|
||||
public String getRegionId() {
|
||||
|
||||
return regionId;
|
||||
}
|
||||
|
||||
public void setRegionId(String regionId) {
|
||||
|
||||
this.regionId = regionId;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public Integer getStatus() {
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
public void setStatus(Integer status) {
|
||||
|
||||
this.status = status;
|
||||
}
|
||||
|
||||
public Integer getDelFlag() {
|
||||
|
||||
return delFlag;
|
||||
}
|
||||
|
||||
public void setDelFlag(Integer delFlag) {
|
||||
|
||||
this.delFlag = delFlag;
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,12 @@
|
||||
package com.xhpc.general.mapper;
|
||||
|
||||
import com.xhpc.general.domain.XhpcSms;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/7/30 18:51
|
||||
*/
|
||||
public interface XhpcSmsMapper {
|
||||
|
||||
int addXhpcSms(XhpcSms xhpcSms);
|
||||
}
|
||||
@ -0,0 +1,18 @@
|
||||
package com.xhpc.general.service;
|
||||
|
||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/7/30 18:45
|
||||
*/
|
||||
public interface IXhpcSmsService {
|
||||
|
||||
|
||||
/**
|
||||
* 登陆回验证码
|
||||
* @param phone
|
||||
* @return
|
||||
*/
|
||||
AjaxResult getLogonPhoneCode(String phone);
|
||||
}
|
||||
@ -0,0 +1,109 @@
|
||||
package com.xhpc.general.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xhpc.common.core.utils.HttpUtils;
|
||||
import com.xhpc.common.core.web.domain.AjaxResult;
|
||||
import com.xhpc.common.redis.service.RedisService;
|
||||
import com.xhpc.general.domain.XhpcSms;
|
||||
import com.xhpc.general.mapper.XhpcSmsMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import java.io.IOException;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
/**
|
||||
* @author yuyang
|
||||
* @date 2021/7/30 18:50
|
||||
*/
|
||||
@Service
|
||||
public class XhpcSmsServiceImpl implements IXhpcSmsService{
|
||||
|
||||
public static RedisService REDIS;
|
||||
public static final String URL = "http://sms.daiyicloud.com/sms/apiSend/add";
|
||||
public static final String ACCOUNT ="scxhkj";
|
||||
public static final String PASSWD ="6A9628548C4CBECCE80A2479CD77679F";
|
||||
public static final String PRODUCTLD ="20191130000001";
|
||||
|
||||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private XhpcSmsMapper xhpcSmsMapper;
|
||||
|
||||
@PostConstruct
|
||||
public void init(){
|
||||
REDIS =redisService;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public AjaxResult getLogonPhoneCode(String phone) {
|
||||
|
||||
//调用接口
|
||||
String pattern ="^([1][0-9]{10})";
|
||||
Pattern compile = Pattern.compile(pattern);
|
||||
Matcher m =compile.matcher(phone);
|
||||
boolean isMatch = m.matches();
|
||||
if(!isMatch){
|
||||
return AjaxResult.error("1003","请输入正确的手机号");
|
||||
}
|
||||
//添加短信记录
|
||||
XhpcSms xhpcSms =new XhpcSms();
|
||||
try {
|
||||
Long random = getRandom();
|
||||
String conten ="【小华充电】您的验证码是:"+random+",有效期为5分钟。如非本人操作,可不用理会。";
|
||||
String req = HttpUtils.postFormData(URL, null, assembleSmsReq(phone,conten));
|
||||
JSONObject json = JSONObject.parseObject(req);
|
||||
xhpcSms.setCode(random+"");
|
||||
xhpcSms.setPhone(phone);
|
||||
xhpcSms.setContent(conten);
|
||||
xhpcSms.setCreateTime(new Date());
|
||||
xhpcSms.setRemark(req);
|
||||
String ok = json.getString("ok");
|
||||
if("true".equals(ok)){
|
||||
REDIS.setCacheObject(phone,random,300L, TimeUnit.SECONDS);
|
||||
xhpcSms.setStatus(0);
|
||||
xhpcSmsMapper.addXhpcSms(xhpcSms);
|
||||
return AjaxResult.success();
|
||||
}else{
|
||||
xhpcSms.setStatus(1);
|
||||
xhpcSmsMapper.addXhpcSms(xhpcSms);
|
||||
return AjaxResult.error(1012,"服务器繁忙,请稍后再试");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
//e.printStackTrace();
|
||||
xhpcSms.setStatus(3);
|
||||
xhpcSmsMapper.addXhpcSms(xhpcSms);
|
||||
return AjaxResult.error(1010,"服务器繁忙,请稍后再试");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static HashMap<String, String> assembleSmsReq(String phone,String content) {
|
||||
HashMap<String, String> params = new HashMap<>();
|
||||
params.put("account", ACCOUNT);
|
||||
params.put("password", PASSWD);
|
||||
params.put("content", content);
|
||||
params.put("mobiles", phone);
|
||||
params.put("productId", PRODUCTLD);
|
||||
return params;
|
||||
}
|
||||
|
||||
private Long getRandom(){
|
||||
Random rnd = new Random();
|
||||
Long number = Long.valueOf(rnd.nextInt(999999));
|
||||
return number;
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,95 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.xhpc.general.mapper.XhpcSmsMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="com.xhpc.general.domain.XhpcSms">
|
||||
<result property="smsId" column="sms_id"/>
|
||||
<result property="phone" column="phone"/>
|
||||
<result property="code" column="code"/>
|
||||
<result property="templateId" column="template_id"/>
|
||||
<result property="accessKey" column="access_key"/>
|
||||
<result property="secretKey" column="secret_key"/>
|
||||
<result property="regionId" column="region_id"/>
|
||||
<result property="content" column="content"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
<!-- 通用查询映射结果 -->
|
||||
|
||||
|
||||
<insert id="addXhpcSms" parameterType="com.xhpc.general.domain.XhpcSms"
|
||||
useGeneratedKeys="true" keyProperty="smsId">
|
||||
insert into xhpc_sms
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="null != phone ">
|
||||
phone,
|
||||
</if>
|
||||
<if test="null != code ">
|
||||
code,
|
||||
</if>
|
||||
<if test="null != content ">
|
||||
content,
|
||||
</if>
|
||||
<if test="null != status ">
|
||||
status,
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
del_flag,
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
create_time,
|
||||
</if>
|
||||
<if test="null != createBy and '' != createBy">
|
||||
create_by,
|
||||
</if>
|
||||
<if test="null != updateTime ">
|
||||
update_time,
|
||||
</if>
|
||||
<if test="null != updateBy and '' != updateBy">
|
||||
update_by,
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
remark
|
||||
</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="null != phone ">
|
||||
#{phone},
|
||||
</if>
|
||||
<if test="null != code ">
|
||||
#{code},
|
||||
</if>
|
||||
<if test="null != content ">
|
||||
#{content},
|
||||
</if>
|
||||
<if test="null != status ">
|
||||
#{status},
|
||||
</if>
|
||||
<if test="null != delFlag ">
|
||||
#{delFlag},
|
||||
</if>
|
||||
<if test="null != createTime ">
|
||||
#{createTime},
|
||||
</if>
|
||||
<if test="null != createBy and '' != createBy">
|
||||
#{createBy},
|
||||
</if>
|
||||
<if test="null != updateTime ">
|
||||
#{updateTime},
|
||||
</if>
|
||||
<if test="null != updateBy and '' != updateBy">
|
||||
#{updateBy},
|
||||
</if>
|
||||
<if test="null != remark and '' != remark">
|
||||
#{remark}
|
||||
</if>
|
||||
</trim>
|
||||
</insert>
|
||||
</mapper>
|
||||
Loading…
x
Reference in New Issue
Block a user