一,导入相关的jar包
<!-- 短信验证接口jar包 -->
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.6</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.4</version>
</dependency>
二,导入调用短信接口类SMScode
在短信平台获取短信的 /* 短信模板id / 和/ 短信应用接口的key */
package com.aerfa.ao.utils;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
/**
* 调用短信接口类
* @author sunsetRain
*
*/
public class SMScode {
//把手机号码和随机验证码传递过来
public static boolean sendCode(String phoneNumber, String code) throws Exception {
String str_code = URLEncoder.encode("#code#=" + code, "UTF-8");
//包装好URL对象,将接口地址包装在此对象中
/* URL url = new URL("http://v.juhe.cn/sms/send?mobile=" + phoneNumber +
"&tpl_id=137817&tpl_value=" + str_code + "&key=15b94278c39bf2c1921d90628b132ee3");*/
URL url = new URL("http://v.juhe.cn/sms/send?mobile=" + phoneNumber +
"&tpl_id=179373&tpl_value=" + str_code + "&key=218d907f2b126501ed2644bca033aa5f");
/* 短信模板id */ /* 短信应用接口的key */
//打开连接,得到连接对象
URLConnection connection = url.openConnection();
//向服务器发送连接请求
connection.connect();
//获得服务器响应的数据
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
StringBuffer buffer = new StringBuffer();
String lineDate = null;
while((lineDate = bufferedReader.readLine()) != null) {
buffer.append(lineDate);
}
bufferedReader.close();
if(buffer.toString().indexOf("\"error_code\":0")>=0 ) {
return true;
}
return false;
}
}
三,通过手机获取验证码
//手机验证码
@ResponseBody
@RequestMapping("telFindFinance")
public String telFindFinance(String phoneNumber){
Boolean flag = false;
Random random = new Random();
int temp = random.nextInt(10000);
SecurityUtils.getSubject().getSession().setAttribute("temp",temp);
String code = String.valueOf(temp);
try {
//是否发送成功
flag =SMScode.sendCode(phoneNumber,code);
} catch (Exception e) {
e.printStackTrace();
}
if(flag){
return "1";
}else{
return "2";
}
}
四,忘记密码–验证-- 修改密码controller
//修改账户部分信息-忘记密码
@ResponseBody
@RequestMapping("updateFinances")
public int updateFinances(int financeBh,int telnum,String financePassword){
if (telnum==(Integer) SecurityUtils.getSubject().getSession().getAttribute("temp")){
Finance f=new Finance();
f.setFinanceBh(financeBh);
f.setFinancePassword(financePassword);
return financeService.updateByPrimaryKeySelective(f);
}else{
return 404;
}
}
五,业务层service
/**
* 根据主键选择性修改账户信息
* @param record 账户实体
* @return 修改数量
*/
int updateByPrimaryKeySelective(Finance record);
六,业务实现层serivceImpl
/**
* 根据主键选择性修改账户信息
* @param record 账户实体
* @return 修改数量
*/
public int updateByPrimaryKeySelective(Finance record) {
return financeMapper.updateByPrimaryKeySelective(record);
}
mapper层的方法
/**
* 根据主键选择性修改账户信息
* @param record 账户实体
* @return 修改数量
*/
int updateByPrimaryKeySelective(Finance record);
七,修改maaper.xml
<update id="updateByPrimaryKeySelective" parameterType="com.aerfa.ao.entity.Finance">
update finance
<set>
<if test="financeName != null">
finance_name = #{financeName,jdbcType=VARCHAR},
</if>
<if test="financePassword != null">
finance_password = #{financePassword,jdbcType=VARCHAR},
</if>
<if test="financeState != null">
finance_state = #{financeState,jdbcType=TINYINT},
</if>
<if test="staffBh != null">
staff_bh = #{staffBh,jdbcType=INTEGER},
</if>
</set>
where finance_bh = #{financeBh,jdbcType=INTEGER}
</update>
八,实体类
导入Finance.java文件
package com.aerfa.ao.entity;
import java.io.Serializable;
public class Finance implements Serializable {
private Integer financeBh;
private String financeName;
private String financePassword;
private Byte financeState;
private Integer staffBh;
private String staffName;
public String getStaffName() {
return staffName;
}
public void setStaffName(String staffName) {
this.staffName = staffName;
}
public Integer getFinanceBh() {
return financeBh;
}
public void setFinanceBh(Integer financeBh) {
this.financeBh = financeBh;
}
public String getFinanceName() {
return financeName;
}
public void setFinanceName(String financeName) {
this.financeName = financeName == null ? null : financeName.trim();
}
public String getFinancePassword() {
return financePassword;
}
public void setFinancePassword(String financePassword) {
this.financePassword = financePassword == null ? null : financePassword.trim();
}
public Byte getFinanceState() {
return financeState;
}
public void setFinanceState(Byte financeState) {
this.financeState = financeState;
}
public Integer getStaffBh() {
return staffBh;
}
public void setStaffBh(Integer staffBh) {
this.staffBh = staffBh;
}
}
html5页面显示
pass_forget.html
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="plugins/layui/css/layui.css" th:href="@{/oa/plugins/layui/css/layui.css}" media="all" /> <link rel="stylesheet" href="css/login.css" th:href="@{/oa/css/login.css}" /> <link rel="stylesheet" th:href="@{/webjars/layui/2.4.5/css/layui.css}"> <script th:src="@{/webjars/jquery/3.3.1/jquery.js}"></script> <script th:src="@{/webjars/layui/2.4.5/layui.js}"></script> </head> <body class="beg-login-bg"> <form class="layui-form" action=""> <div class="layui-fluid"> <div class="layui-row " style="float :left; position: relative;margin:10% 35%"> <div class="layui-col-md15" > <div class="layui-card" style="background-color: rgb(138, 140, 147)"> <div class="layui-card-header" style="font-size: 20px;font-family: '微软雅黑 Light';color: #e2e2e2;text-align:center;"><strong>忘记密码</strong></div>
<div class="layui-card-body" pad15=""> <div class="layui-form" lay-filter=""> <div class="layui-form-item"> <label class="layui-form-label" style="color: #e2e2e2">手机号</label> <div class="layui-input-inline"> <input type="text" name="tel" id="tel" lay-verify="tel" lay-vertype="tips" class="layui-input layui-form-danger"> <input type="hidden" id="txt1"> <!-- 帐号编号 --> <input type="hidden" name="financeBh" id="bh"> </div> </div> <div class="layui-form-item"> <label class="layui-form-label" style="color: #e2e2e2">验证码</label> <div class="layui-input-inline"> <input type="text" name="telnum" id="telnum" lay-verify="telnum" lay-vertype="tips" class="layui-input layui-form-danger"> </div> <div class="layui-form-mid "> <input value="获取验证码" class="layui-btn layui-btn-sm" id="getCode" lay-filter="set" style="width: 80px" /> <!--<button class="layui-btn layui-btn-sm" id="getCode" lay-filter="set">获取验证码</button>--> </div> </div> <div class="layui-form-item"> <label class="layui-form-label" style="color: #e2e2e2">新密码</label> <div class="layui-input-inline"> <input type="password" lay-verify="pass" lay-vertype="tips" autocomplete="off" id="LAY_password" class="layui-input"> </div> <!--<div class="layui-form-mid layui-word-aux" style="color: #e2e2e2;font-size: 15px">6到16个字符</div>--> </div> <div class="layui-form-item"> <label class="layui-form-label" style="color: #e2e2e2">确认新密码</label> <div class="layui-input-inline"> <input type="password" name="financePassword" id="txt2" lay-verify="repass" lay-vertype="tips" autocomplete="off" class="layui-input"> </div> </div> <div class="layui-form-item"> <div class="layui-input-block"> <button class="layui-btn" lay-submit lay-filter="setmypass">确认修改</button> </div> </div> </div> </div> </div> </div> </div> </div>
</form>
<script>
$(function () {
$("#tel").blur(function () {
var s= $("#tel").val();
$.ajax({
url:"/oa/selectAss",
type:"POST",
dataType:"json",
success:function (data) {
var pos = 1;
for(var i = 0 ;i<data.length;i++){
if(data[i].staffTel==s){
pos = 2;
$("#bh").val(data[i].financeBh);
break;
}
}
if(pos==1){
$("#txt1").val(1);
layer.msg("手机号不存在!", {icon: 5, time: 1000});
}else if(pos==2){
$("#txt1").val(2);
}
}
})
})
})
layui.use(['form', 'layedit', 'laydate'], function(){
var form = layui.form
,layer = layui.layer
,layedit = layui.layedit
,$=layui.jquery;
//自定义验证规则
form.verify({
tel:function (value) {
if($("#txt1").val()==1)
return '该手机号不存在';
}
,repass: function(value){
if(value!=$("#LAY_password").val()){
return '密码不一致';
}
}
/*,telnum: function(value) {
var telnum = $(this).val();
if (telnum == "") {
layer.msg("请输入验证码!", {icon: 2, time: 1000});
}else{
$.post("/oa/telFindFinance", { "phoneNumber": phoneNumber},function(data) {
if (data == 1) {
layer.msg("验证码发送成功!", {icon: 1, time: 1000});
} else {
layer.msg("验证码发送失败!", {icon: 2, time: 1000})
}
});
}
}*/
});
$("#telnum").blur(function () {
var telnum = $(this).val();
if(telnum==""){
layer.msg("请输入验证码!", {icon: 2, time: 1000});
}
});
$("#getCode").click(function () {
var phoneNumber = $("#tel").val();
if(phoneNumber==""){
layer.msg("请输入手机号!", {icon: 2, time: 1000});
}else{
$.post("/oa/telFindFinance", { "phoneNumber": phoneNumber},function(data){
if(data==1){
layer.msg("验证码发送成功!", {icon: 1, time: 1000});
}else{
layer.msg("验证码发送失败!", {icon: 2, time: 1000})
}
});
}
});
//监听提交
form.on('submit(setmypass)', function(data){
//修改
$.ajax({
url:"/oa/updateFinances",
type:"POST",
data:{
"financeBh":data.field.financeBh,
"telnum":data.field.telnum,
"financePassword":data.field.financePassword
},
dataType:"json",
success:function (pos) {
if(pos==404){
layer.msg('验证码不正确', {icon: 5});
}else {
if (pos > 0) {
parent.layer.msg('修改成功', {icon: 6, time: 1000}, function () {
window.location.href = "loginOA";
});
} else {
layer.msg('修改失败', {icon: 5});
}
}
}
});
return false;
});
});
</script>
</body>
</html>