好 闲言碎语不要讲
看代码吧
定义用户常用参数 userConstants(可以放在util下)
public class UserConstants {
/***
* 操作成功
*/
public static final int SUCCESS = 1;
/**
* 操作异常
*/
public static final int ERROR = 0;
/**
* 入参异常
*/
public static final int PARAMETER_ERROR = 507;
/**
* 接口异常
*/
public static final int USR_EXCEPTIONS = -1;
/**
* 参数错误
*/
public static final int PARAM_ERROR = 11;
/**
* userid 为空 未登录状态
*/
public static final int PARAM_SESSIONID = 22;
/**
* 验证码错误
*/
public static final int CHECK_CODE_ERROR = 10014;
/**
* 是否是手机号
*/
public static final int ISNOT_PHONE = 10018;
/**
* 未登录状态
*/
public static final String TRANSIENT_USER = "transient";
/**
* 用户不存在
*/
public static final int USER_NOT_EXIST = 51;
/**
* 密码不正确
*/
public static final int PASSWD_INVALID = 2;
/**
* 用户已经存在
*/
public static final int USER_EXIST = 3;
/**
* 用户忘记密码的答案不对
*/
public static final int ANSWER_IS_INVALID = 4;
/**
* 用户暂时无法注册
*/
public static final int ISNOTREGIT = 30;
/**
* 邮箱已经存在
*/
public static final int EMAIL_EXIST = 8;
/**
* 手机号已经存在
*/
public static final int MOBILE_EXIST = 9;
/**
* 可以注册
*/
public static final int REGISTER_CAN = 12;
/**
* 可以发送验证码
*/
public static final int SEND_OK = 15;
/**
* 手机号或者邮箱格式不对
*/
public static final int FORMAT_ERROR = 17;
/**
* 修改成功
*/
public static final int USER_UPDATE = 18;
/**
* 服务异常
*/
public static final int USER_SERVER_EXCEPTION = 19;
/**
* 用户登陆频率
*/
public static final int USER_LOGIN_FREQUENCY = 21;
/**
* 原密码不正确
*/
public static final int OLDPASSWORD_INVALIDE = 5;
/**
* 验证码错误
*/
public static final int CODE_ERROR = 7;
/**
* 验证码已过期
*/
public static final int CODE_EXPIRE = 20;
}
public class InterfaceConstants {
/**
* 短信接口APPKEY
*/
public static final String SMS_KEY = "060524b3564a4e64a969dfd2a725dc9e";
/**
* 用户注册短信接口template Id
*/
public static final String REGIST_SMS_TEMPLATE_ID = "80a9afeff4714e0e93552554c0ba213b";
/**
* 银行卡绑定短信接口template Id
*/
public static final String BANKCARD_SMS_TEMPLATE_ID = "9adf7110fdd74cfa8951d32120c4840f";
/**
* 找回密码短信接口template Id
*/
public static final String FINDPASSWORD_SMS_TEMPLATE_ID = "af28a824adc747a0b23567c11629dd18";
/**
* 阿凡达第三方接口短信接口请求地址
*/
public static final String AVATARDATA_SMS = "http://v1.avatardata.cn/Sms/Send?key=";
}
注意 注意 (敲黑板~) 这是重点
对 没错 相信自己 你看的没毛病 这是service一个名叫SendSMSService接口
public interface SendSMSService {
/**
* 发送短信
*
* @param mobile
* <code>String</code> session ID
* @param requestType
* <code>Integer</code> 发送验证码的类型
* @param tel
* <code>String</code> 电话
* @return <code>Integer</code> 验证码
* @throws UnsupportedEncodingException
*/
public Integer sendSms(String sessionid, Integer requestType, String tel)
throws UnsupportedEncodingException;
}
接口有了 理所当然的来实现它啊
@Service
public class SendSMSServiceImpl implements SendSMSService {
/**
* 发送短信验证码
*
* <p>
* <b>Release Notes:</b> <br/>
* <table border="1" cellspacing="0" cellpadding="5" width="80%">
* <tr>
* <th align="left">Release</th>
* <th align="left">Notes</th>
* </tr>
* <tr>
* <td>@since 1.0</td>
* <td> </td>
* </tr>
* </table>
* <p>
*
* @param sessionid
* <code>String</code> session ID
* @param requestType
* <code>Integer</code> 发送验证码的类型
* @param tel
* <code>String</code> 电话
* @return <code>Integer</code> 验证码
* @throws UnsupportedEncodingException
*/
public Integer sendSms(String mobile, Integer requestType, String tel) throws UnsupportedEncodingException {
// 生成验证码
Random random = new Random();
// 组成验证码信息
int x_param = random.nextInt(900000) + 100000;
HttpURLConnection httpconn = null;
StringBuilder sb = new StringBuilder();
sb.append(InterfaceConstants.AVATARDATA_SMS);
sb.append(InterfaceConstants.SMS_KEY);
if (requestType.equals(1)) {
sb.append("&mobile=").append(mobile);
sb.append("&templateId=").append(InterfaceConstants.REGIST_SMS_TEMPLATE_ID);
} else if (requestType.equals(2)) {
sb.append("&mobile=").append(mobile);
sb.append("&templateId=").append(InterfaceConstants.FINDPASSWORD_SMS_TEMPLATE_ID);
} else if (requestType.equals(3)) {
if (tel != null && !"".equals(tel)) {
sb.append("&mobile=").append(tel);
} else {
sb.append("&mobile=").append(mobile);
}
sb.append("&templateId=").append(InterfaceConstants.BANKCARD_SMS_TEMPLATE_ID);
} else if (requestType.equals(4)) {
sb.append("&mobile=").append(mobile);
sb.append("&templateId=").append(InterfaceConstants.BANKCARD_SMS_TEMPLATE_ID);
}
sb.append("¶m=").append(x_param);
String redLine = "";
// 发送验证码
try {
URL url = new URL(sb.toString());
httpconn = (HttpURLConnection) url.openConnection();
httpconn.setRequestProperty("Accept-Charset", "UTF-8");
httpconn.setRequestProperty("contentType", "utf-8");
BufferedReader rd = new BufferedReader(new InputStreamReader(httpconn.getInputStream()));
redLine = rd.readLine();
rd.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (httpconn != null) {
httpconn.disconnect();
httpconn = null;
}
}
JSONObject json = JSONObject.fromObject(redLine);
String error_code = json.get("reason").toString();
String str = json.get("reason").toString();
if (!str.equals("Succes")) {
return UserConstants.ERROR;
}
return x_param;
}
}
到这里 就完成了90% 啥 你问我剩下的10%是在哪儿 来 我告诉你 看 biu-biu-biu--------
controller里面
既然是获取验证码,那肯定是要有手机号的对不对,所以,获取手机号,然后调用方法发送验证码
/**
* 注册 获取手机验证码
*
* @return
* @throws UnsupportedEncodingException
* @throws Exception
*/
@RequestMapping(value = "code")
@ResponseBody
public Object code(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
String mob = request.getParameter("mob");
if (mob == null && mob.isEmpty()) {
return JsonResponse.createByErrorMessage("请输入手机号");
}
System.out.println(mob);
int x_param = sendSMSService.sendSms(mob, 1, null);//mob 就是自己从前台获取的手机号mob ,1 是类型,
System.out.println(x_param);
return x_param; //最后再返回这个验证码
}
那么最后 就是 注册的方法了
/**
* 手机注册
*
* @return
* @throws UnsupportedEncodingException
* @throws Exception
*/
@RequestMapping(value = "registMob")
@ResponseBody
public JsonResponse<Object> registMob(HttpServletRequest request, HttpServletResponse response) throws UnsupportedEncodingException {
String name = request.getParameter("name"); //姓名
String paw = request.getParameter("password"); //密码
String password = MD5Util.MD5EncodeUtf8(paw); //密码加密
System.out.println(password);
String mob = request.getParameter("mob"); //手机号
String code = request.getParameter("code"); //这是用户输入的验证码
String x_param = request.getParameter("x_param");// 这是上一个方法返回到前台正确的验证码
if (!code.equals(x_param)) {
return JsonResponse.createByErrorMessage("验证码不正确,请重新输入");
} else {
Map<String, Object> userMap = new HashMap<String, Object>();
userMap.put("name", name);
userMap.put("password", password);
userMap.put("mob", mob);
return iOpusService.addUser(userMap); //执行添加 。。。。啊不 。。。是注册 嗯 对 是注册
}
}
写到这里 你会发现一个问题 你自己测试一下 先调用 code 方法 给手机发送验证码 看看验证码可以不可以 如果可以 然后再调用registMob方法 注意啊 当你按下回车的时候 你会惊奇的发现 成了~ 是的 没错 成功了 !!!怎么样,是不是已经在幻想着自己这段代码写完之后,不久就可以出任总经理,胜任cto,赢取白富美 走上人生的巅峰啊 哇咔咔咔