2
3
Эх сурвалжийг харах

短信
Signed-off-by: lijunqing <lijunqing@dashoo.cn>

lijunqing 6 жил өмнө
parent
commit
0d975552a1

+ 8 - 0
src/dashoo.cn/backend/api/business/oilrtx/rtx.go

@@ -67,3 +67,11 @@ type BaseMsg struct {
 	ToTime       string `xorm:"not null comment('发送时间') VARCHAR(20)"`
 	Status       string `xorm:"not null comment('发送状态') VARCHAR(20)"`
 }
+
+
+type BaseVCode struct {
+	Id           int    `xorm:"not null pk autoincr INT(11)"`
+	UserName     string `xorm:"not null comment('企业用户名(即登录账号)') VARCHAR(50)"`
+	UserId       string `xorm:"not null comment('用户名Id(BaseUser表Id)') VARCHAR(11)"`
+	Code         string `xorm:"not null comment('验证码') VARCHAR(500)"`
+}

+ 1 - 0
src/dashoo.cn/backend/api/controllers/base.go

@@ -299,6 +299,7 @@ func (this *BaseController) Prepare() {
 		"/api/rtx/ptrlogin",
 		"/api/register/orgloginlist",
 		"/api/register/getauditerbydept",
+		"/api/register/getCode",
 	}
 	for _, v := range urls {
 		fmt.Println("**this.Ctx.Input.URL()**", this.Ctx.Input.URL())

+ 142 - 38
src/dashoo.cn/backend/api/controllers/register/oilcorporateinfo.go

@@ -3,7 +3,8 @@ package register
 import (
 	"dashoo.cn/backend/api/business/oilrtx"
 	"encoding/json"
-	"io/ioutil"
+	"fmt"
+	"math/rand"
 	"strconv"
 	"strings"
 	"time"
@@ -294,27 +295,27 @@ func (this *OilCorporateInfoController) ComAudit() {
 				_, err3 := svcRegister.InsertEntityBytbl(OilCorporateInfoName, &model)
 				if err3 == nil {
 					//编辑短信内容
-					toMobile:=model.UserTelephone
-					msg:="恭喜您!市场管理信息系统账号注册成功,系统登录用户名为: "+model.UserName
+					//toMobile:=model.UserTelephone
+					//msg:="恭喜您!市场管理信息系统账号注册成功,系统登录用户名为: "+model.UserName
 
 					//调用短信接口发送短信
-					rtxSvc := oilrtx.GetRtxService(utils.DBE)
-					resp:=rtxSvc.HandleSendMsg("", toMobile, msg)
-					jsonBlob, _ := ioutil.ReadAll(resp.Body)
-					var rtxRespToken oilrtx.RtxRespToken
-					json.Unmarshal(jsonBlob, &rtxRespToken)
+					//rtxSvc := oilrtx.GetRtxService(utils.DBE)
+					//resp:=rtxSvc.HandleSendMsg("", toMobile, msg)
+					//jsonBlob, _ := ioutil.ReadAll(resp.Body)
+					//var rtxRespToken oilrtx.RtxRespToken
+					//json.Unmarshal(jsonBlob, &rtxRespToken)
 
 					//如果发送返回代码存入短信信息记录表
-					var resultMsg oilrtx.BaseMsg
-					resultMsg.Type="1-1"
-					resultMsg.UserName=model.UserName
-					resultMsg.UserRealName=model.UserRealName
-					resultMsg.UserId=strconv.Itoa(model.UserId)
-					resultMsg.ToMobile=toMobile
-					resultMsg.Msg=msg
-					resultMsg.ToTime=time.Now().Format("2006-01-02 15:04:05")
-					resultMsg.Status=strconv.Itoa(rtxRespToken.Code)
-					svcRegister.InsertEntityBytbl("Base_Msg", &resultMsg)
+					//var resultMsg oilrtx.BaseMsg
+					//resultMsg.Type="1-1"
+					//resultMsg.UserName=model.UserName
+					//resultMsg.UserRealName=model.UserRealName
+					//resultMsg.UserId=strconv.Itoa(model.UserId)
+					//resultMsg.ToMobile=toMobile
+					//resultMsg.Msg=msg
+					//resultMsg.ToTime=time.Now().Format("2006-01-02 15:04:05")
+					//resultMsg.Status=strconv.Itoa(rtxRespToken.Code)
+					//svcRegister.InsertEntityBytbl("Base_Msg", &resultMsg)
 
 					errinfo.Message = "审核通过!"
 					errinfo.Code = 0
@@ -349,29 +350,29 @@ func (this *OilCorporateInfoController) ComAudit() {
 
 		//编辑短信内容
 		//查找审批人联系方式
-		var sPerson userRole.Base_User
-		svc.GetEntity(&sPerson,"Id="+model.CheckUserId)
-		toMobile:=model.UserTelephone
-		msg:="市场管理信息系统账号注册失败,因“"+Remark+"”,请按照要求重新注册,联系人:"+model.CheckUserName+",联系电话:"+sPerson.Mobile+""
+		//var sPerson userRole.Base_User
+		//svc.GetEntity(&sPerson,"Id="+model.CheckUserId)
+		//toMobile:=model.UserTelephone
+		//msg:="市场管理信息系统账号注册失败,因“"+Remark+"”,请按照要求重新注册,联系人:"+model.CheckUserName+",联系电话:"+sPerson.Mobile+""
 
 		//调用短信接口发送短信
-		rtxSvc := oilrtx.GetRtxService(utils.DBE)
-		resp:=rtxSvc.HandleSendMsg("", toMobile, msg)
-		jsonBlob, _ := ioutil.ReadAll(resp.Body)
-		var rtxRespToken oilrtx.RtxRespToken
-		json.Unmarshal(jsonBlob, &rtxRespToken)
-
+		//rtxSvc := oilrtx.GetRtxService(utils.DBE)
+		//resp:=rtxSvc.HandleSendMsg("", toMobile, msg)
+		//jsonBlob, _ := ioutil.ReadAll(resp.Body)
+		//var rtxRespToken oilrtx.RtxRespToken
+		//json.Unmarshal(jsonBlob, &rtxRespToken)
+		//
 		//如果发送返回代码存入短信信息记录表
-		var resultMsg oilrtx.BaseMsg
-		resultMsg.Type="1-2"
-		resultMsg.UserName=model.UserName
-		resultMsg.UserRealName=model.UserRealName
-		resultMsg.UserId=strconv.Itoa(model.UserId)
-		resultMsg.ToMobile=toMobile
-		resultMsg.Msg=msg
-		resultMsg.ToTime=time.Now().Format("2006-01-02 15:04:05")
-		resultMsg.Status=strconv.Itoa(rtxRespToken.Code)
-		svc.InsertEntityBytbl("Base_Msg", &resultMsg)
+		//var resultMsg oilrtx.BaseMsg
+		//resultMsg.Type="1-2"
+		//resultMsg.UserName=model.UserName
+		//resultMsg.UserRealName=model.UserRealName
+		//resultMsg.UserId=strconv.Itoa(model.UserId)
+		//resultMsg.ToMobile=toMobile
+		//resultMsg.Msg=msg
+		//resultMsg.ToTime=time.Now().Format("2006-01-02 15:04:05")
+		//resultMsg.Status=strconv.Itoa(rtxRespToken.Code)
+		//svc.InsertEntityBytbl("Base_Msg", &resultMsg)
 
 		if err == nil {
 			errinfo.Message = "审核未通过!"
@@ -569,4 +570,107 @@ func (this *OilCorporateInfoController) GetAuditerByDept() {
 	datainfo.Item = &userlist
 	this.Data["json"] = &datainfo
 	this.ServeJSON()
+}
+
+
+// @Title 获取验证码
+// @Description 获取验证码
+// @router /getCode [get]
+func (this *OilCorporateInfoController) GetCode() {
+	svcRegister := register.GetOilCorporateInfoService(utils.DBE)
+	var errinfo ErrorDataInfo
+		//得到用户名参数
+	userName:=this.GetString("userName")
+	mobile:=this.GetString("mobile")
+	//查出用户名的id
+	var sPerson userRole.Base_User
+	svcRegister.GetEntity(&sPerson,"UserName='"+userName+"'")
+	if  sPerson.Username==""{
+		errinfo.Message = "无此用户名"
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}else{
+	//生成一个随机数
+	randomNumber:=fmt.Sprintf("%06v", rand.New(rand.NewSource(time.Now().UnixNano())).Int31n(1000000))
+	//将数据存入
+	err2 := svcRegister.DeleteEntityBytbl("Base_VCode", "UserName='"+userName+"'")
+	if err2==nil{
+		var model oilrtx.BaseVCode
+		model.UserName=userName
+		model.UserId=strconv.Itoa(sPerson.Id)
+		model.Code=randomNumber
+		_, err:= svcRegister.InsertEntityBytbl("Base_VCode", &model)
+		if err==nil{
+			//发短信
+			//编辑短信内容
+			toMobile:=mobile
+			msg:="验证码为: "+ randomNumber+",5分钟内有效"
+
+			//调用短信接口发送短信
+			//rtxSvc := oilrtx.GetRtxService(utils.DBE)
+			//resp:=rtxSvc.HandleSendMsg("", toMobile, msg)
+			//jsonBlob, _ := ioutil.ReadAll(resp.Body)
+			var rtxRespToken oilrtx.RtxRespToken
+			//json.Unmarshal(jsonBlob, &rtxRespToken)
+
+			//如果发送返回代码存入短信信息记录表
+			var resultMsg oilrtx.BaseMsg
+			resultMsg.Type="2-1"
+			resultMsg.UserName=userName
+			resultMsg.UserRealName=sPerson.Realname
+			resultMsg.UserId=strconv.Itoa(sPerson.Id)
+			resultMsg.ToMobile=toMobile
+			resultMsg.Msg=msg
+			resultMsg.ToTime=time.Now().Format("2006-01-02 15:04:05")
+			resultMsg.Status=strconv.Itoa(rtxRespToken.Code)
+			svcRegister.InsertEntityBytbl("Base_Msg", &resultMsg)
+
+			errinfo.Message = "请等待接收验证码,5分钟内有效"
+			errinfo.Code = 0
+			this.Data["json"] = &errinfo
+			this.ServeJSON()
+		}
+	}
+	}
+}
+
+
+// @Title 更新密码
+// @Description 更新密码
+// @router /updatePassword [get]
+func (this *OilCorporateInfoController) UpdatePassword() {
+	svcRegister := register.GetOilCorporateInfoService(utils.DBE)
+	var errinfo ErrorDataInfo
+	userName:=this.GetString("userName")
+	//mobile:=this.GetString("mobile")
+	yzCode:=this.GetString("yzCode")
+	passWord:=this.GetString("passWord")
+
+	var res oilrtx.BaseVCode
+	svcRegister.GetEntity(&res,"UserName='"+userName+"' and Code='"+yzCode+"'")
+
+	if res.UserName!=""{
+		pwd, key, error := utils.TripleDesEncrypt(passWord)
+		var updateTo userRole.Base_User
+		updateTo.Userpassword=pwd
+		updateTo.Publickey=key
+		if error==nil{
+			cols := []string{"UserPassword", "PublicKey"}
+			err11 := svcRegister.UpdateEntityBytbl("Base_User",res.UserId , &updateTo, cols)
+			if err11==nil{
+				errinfo.Message = "密码重置成功"
+				errinfo.Code = 0
+				this.Data["json"] = &errinfo
+				this.ServeJSON()
+			}
+		}
+	}else{
+		errinfo.Message = "验证码不正确,请重新获取"
+		errinfo.Code = -1
+		this.Data["json"] = &errinfo
+		this.ServeJSON()
+	}
+
+
 }

+ 125 - 35
src/dashoo.cn/frontend_web/src/pages/passwordback.vue

@@ -33,22 +33,27 @@
                     <el-input v-model="formData.Telephone" placeholder="请输入手机号"></el-input>
                   </el-form-item>
                 </el-col>
-                <el-col :span="4">
-                  <el-button type="primary" style="margin-left: 15%;" :disabled="isVisual" @click="getCode">{{captcha}}</el-button>
+                <el-col :span="3">
+                  <el-button type="primary" style="margin-left:40px;width:100%" :disabled="isVisual" @click="getCode">{{captcha}}</el-button>
+                </el-col>
+                 <el-col :span="24">
+                  <el-form-item label="用户名" style="width: 100%" prop="UserName">
+                    <el-input v-model="formData.UserName"  placeholder="请输入用户名"></el-input>
+                  </el-form-item>
                 </el-col>
                 <el-col :span="24">
                   <el-form-item label="验证码" style="width: 100%" prop="yzCode">
-                    <el-input v-model="formData.yzCode" placeholder="请输入验证码"></el-input>
+                    <el-input v-model="formData.yzCode" :disabled="isCodePass" placeholder="请输入验证码"></el-input>
                   </el-form-item>
                 </el-col>
                 <el-col :span="24">
                   <el-form-item label="新密码" style="width: 100%" prop="UserPass" >
-                    <el-input type="password" v-model="formData.UserPass"  auto-complete="off" placeholder="请输入新密码(8-20位,字母数字组合)"></el-input>
+                    <el-input type="password" v-model="formData.UserPass"  :disabled="isPass" auto-complete="off" placeholder="请输入正确格式的密码(8—20位,至少包含1个大写字母、1个小写字母和1个数字"></el-input>
                   </el-form-item>
                 </el-col>
                 <el-col :span="24">
                   <el-form-item label="确认密码" style="width: 100%" prop="UserPass2" >
-                    <el-input type="password" v-model="formData.UserPass2" auto-complete="off" placeholder="请输入确认密码"></el-input>
+                    <el-input type="password" v-model="formData.UserPass2" :disabled="isPass" auto-complete="off" placeholder="请输入确认密码"></el-input>
                   </el-form-item>
                 </el-col>
               </el-row>
@@ -80,12 +85,22 @@
 
   @Component({
     data () {
+       var check = (rule, value, callback) => {
+        if (value === '') {
+          callback(new Error('请输入验证码'));
+        } else {
+          this.isPass=false
+        }
+      };
       return {
         activeIndex: '1',
         isVisual: false,
+        isCodePass:true,
+        isPass:true,
         captcha: '获取验证码',
 
         formData: {
+          UserName:'',
           Telephone: '', //用户手机号
           yzCode: '', //验证码
           UserPass: '',
@@ -93,19 +108,22 @@
         },
 
         rules: {
+          UserName: [
+            { required: true, message: '请输入用户名', trigger: 'change' }
+          ],
           Telephone: [
-            { required: true, message: '请输入手机号', trigger: 'blur' }
+            { required: true, message: '请输入手机号', trigger: 'change' }
           ],
           yzCode: [
-            { required: true, message: '请输入验证码', trigger: 'blur' }
+            { required: true, validator: check, trigger: 'change' }
           ],
           UserPass: [
-            { required: true, message: '请输入密码', trigger: 'blur' }
+            { required: true, message: '请输入密码', trigger: 'change' }
           ],
           UserPass2: [
             { required: true,
-              message: '请输入确认密码',
-              trigger: 'blur'
+              message: '请确认密码',
+              trigger: 'change'
             }
           ],
         }
@@ -122,28 +140,79 @@
 
       //获取验证码
       getCode() {
-        // 调用获取手机验证码的API,返回Promise对象
-        // this.$axios.get('/', {})
-        //   .then(res => {
-        //     // 将按钮设置为不可点击状态
-        //     this.isVisual = true
-        //     // 60秒倒计时
-        //     let time = 60
-        //     let timer = setInterval(() => {
-        //       if (time <= 0) {
-        //         this.isVisual = false
-        //         this.captcha = '获取验证码'
-        //         clearInterval(timer)
-        //       } else {
-        //         this.btnText = time + 's'
-        //         time--
-        //       }
-        //     }, 1000)
-        //   })
-        //   .catch((err) => {
-        //     console.log(err.message)
-        //     this.isVisual = false
-        //   })
+        let _this = this
+          //手机号验证
+        let re3 = /^[1][3456789]\d{9}$/
+        if (!re3.test(_this.formData.Telephone)) {
+          this.$alert('请填写正确的手机号!', '提示', {
+            confirmButtonText: '确定',
+          })
+          return
+        }
+
+          //用户名
+        if (_this.formData.UserName=="") {
+          this.$alert('请填写用户名!', '提示', {
+            confirmButtonText: '确定',
+          })
+          return
+        }
+
+        let params = {
+          userName: this.formData.UserName,
+          mobile: this.formData.Telephone
+        }
+        //调用获取手机验证码的API,返回Promise对象
+        this.$axios.get('/register/getCode', {params})
+          .then(res => {
+            console.log(res)
+            if(res.data.code===-1){
+                _this.$message({
+                type: 'error',
+                message: res.data.message
+              });
+            }else{
+               _this.$message({
+                type: 'success',
+                message: res.data.message
+              });
+              // 将按钮设置为不可点击状态
+              this.isVisual = true
+              this.isCodePass = false
+            
+              // 60秒倒计时
+              let time = 60
+              let timer = setInterval(() => {
+                if (time <= 0) {
+                  this.isVisual = false
+                  this.captcha = '获取验证码'
+                  // clearInterval(timer)
+                } else {
+                  this.captcha = time + 's'
+                  time--
+                }
+              }, 1000)
+
+              let time2 = 70
+              let timer2 = setInterval(() => {
+                if (time2 <= 0) {
+                  this.isCodePass = true
+                  this.isPass=true
+                  this.formData.yzCode=""
+                  this.formData.UserPass=""
+                  this.formData.UserPass2=""
+                  clearInterval(timer)
+                } else {
+                  time2--
+                }
+              }, 1000)
+             
+            }
+          })
+          .catch((err) => {
+            console.log(err.message)
+            this.isVisual = false
+          })
       },
 
       //提交
@@ -158,11 +227,24 @@
           })
           return
         }
+        
+        if (_this.formData.UserName=="") {
+          this.$alert('请填写用户名!', '提示', {
+            confirmButtonText: '确定',
+          })
+          return
+        }
 
+        if (_this.formData.yzCode=="") {
+          this.$alert('请先获取验证码!', '提示', {
+            confirmButtonText: '确定',
+          })
+          return
+        }
         //密码验证 字母数字组成8-20位 正向断言
-        let re2 = /^(?=.*[0-9])[0-9A-Za-z]{8,20}$/g
+        let re2 = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[^]{8,20}$/
         if (!re2.test(_this.formData.UserPass)) {
-          this.$alert('请输入正确格式的密码(8——20位,包含英文字母、数字)!', '提示', {
+          this.$alert('请输入正确格式的密码(8—20位,至少包含1个大写字母、1个小写字母和1个数字)', '提示', {
             confirmButtonText: '确定',
           })
           return
@@ -174,7 +256,15 @@
           return
         }
 
-        _this.$axios.post('/', _this.formData)
+        let params = {
+          userName: this.formData.UserName,
+          mobile: this.formData.Telephone,
+          yzCode: this.formData.yzCode,
+          passWord:this.formData.UserPass2
+
+        }
+
+        _this.$axios.post('/register/updatePassword', {params})
           .then(function (response) {
             if (response.data.code === 0) {
               _this.$message({