|
@@ -1,18 +1,23 @@
|
|
|
package service
|
|
|
|
|
|
import (
|
|
|
+ "log"
|
|
|
qutil "qfw/util"
|
|
|
"regexp"
|
|
|
"time"
|
|
|
"util"
|
|
|
|
|
|
+ "github.com/go-xweb/httpsession"
|
|
|
+
|
|
|
"github.com/dchest/captcha"
|
|
|
"github.com/go-xweb/xweb"
|
|
|
+ "gopkg.in/mgo.v2/bson"
|
|
|
)
|
|
|
|
|
|
//试用用户接口
|
|
|
type Trial struct {
|
|
|
*xweb.Action
|
|
|
+ getUserPhone xweb.Mapper `xweb:"/subscribepay/trial/GetUserPhone"` //获取用户手机号码
|
|
|
captcha xweb.Mapper `xweb:"/subscribepay/trial/captcha"` //图形验证码
|
|
|
sendPhoneCaptcha xweb.Mapper `xweb:"/subscribepay/trial/sendPhoneCaptcha"` //发送手机验证码
|
|
|
submitApply xweb.Mapper `xweb:"/subscribepay/trial/submitApply"` //提交申请信息
|
|
@@ -27,6 +32,31 @@ var (
|
|
|
nameReg = regexp.MustCompile("^[\u4E00-\u9FA5A-Za-z\\s]+(·[\u4E00-\u9FA5A-Za-z]+)*$")
|
|
|
)
|
|
|
|
|
|
+//获取之前用户信息
|
|
|
+func (t *Trial) GetUserPhone() {
|
|
|
+ var phoneNum string
|
|
|
+ userId := qutil.ObjToString(t.GetSession("userId"))
|
|
|
+ if userId != "" {
|
|
|
+ m, ok := util.MQFW.FindById("user", userId, `{"s_phone":1}`)
|
|
|
+ if ok && len(*m) > 0 {
|
|
|
+ phoneNum = qutil.ObjToString((*m)["s_phone"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if phoneNum == "" {
|
|
|
+ openid := qutil.ObjToString(t.GetSession("s_m_openid"))
|
|
|
+ if openid != "" {
|
|
|
+ m, ok := util.MQFW.FindOneByField("applysub_user", bson.M{"s_openid": openid}, `{"s_phone":1}`)
|
|
|
+ if ok && len(*m) > 0 {
|
|
|
+ phoneNum = qutil.ObjToString((*m)["s_phone"])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ t.ServeJson(map[string]interface{}{
|
|
|
+ "success": qutil.If(phoneNum == "", false, true).(bool),
|
|
|
+ "phoneNum": phoneNum,
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
//试用用户图片验证码
|
|
|
func (t *Trial) Captcha() error {
|
|
|
id := captcha.NewLen(4)
|
|
@@ -64,6 +94,7 @@ func (t *Trial) SendPhoneCaptcha() {
|
|
|
t.SetSession("subvip_trial_MsgCode", MsgCode)
|
|
|
t.SetSession("subvip_trial_phoneNum", phoneNum)
|
|
|
t.SetSession("subvip_trial_lastSend", time.Now().Unix())
|
|
|
+ log.Printf("%s 发送短信验证码 %s\n", t.GetSession("userId"), MsgCode)
|
|
|
go func() {
|
|
|
util.SendSMS("2828060", phoneNum, map[string]string{"code": MsgCode})
|
|
|
}()
|
|
@@ -95,7 +126,8 @@ func (t *Trial) SubmitApply() {
|
|
|
code_sess := qutil.ObjToString(t.GetSession("subvip_trial_MsgCode"))
|
|
|
tel_sess := qutil.ObjToString(t.GetSession("subvip_trial_phoneNum"))
|
|
|
if code != code_sess || tel != tel_sess {
|
|
|
- return false, "短信验证码出错"
|
|
|
+ log.Println(code, code_sess, tel, tel_sess)
|
|
|
+ return false, "短信验证码错误"
|
|
|
}
|
|
|
if isExist(tel_sess) {
|
|
|
return false, "手机号已使用"
|
|
@@ -105,17 +137,19 @@ func (t *Trial) SubmitApply() {
|
|
|
"s_userId": t.GetSession("userId"),
|
|
|
"s_name": name,
|
|
|
"s_phone": tel,
|
|
|
+ "s_openid": t.GetSession("s_m_openid"),
|
|
|
"s_company": company,
|
|
|
"s_job": job,
|
|
|
"i_time": time.Now().Unix(),
|
|
|
"s_source": "vipsub_trial",
|
|
|
})
|
|
|
- if flag != "" {
|
|
|
+ if flag == "" {
|
|
|
return false, "稍后重试"
|
|
|
}
|
|
|
go func() {
|
|
|
//更新user表可试用
|
|
|
}()
|
|
|
+ clearTrialSession(t.Session())
|
|
|
return true, ""
|
|
|
}()
|
|
|
t.ServeJson(map[string]interface{}{
|
|
@@ -126,9 +160,17 @@ func (t *Trial) SubmitApply() {
|
|
|
|
|
|
//查询手机号是否存在
|
|
|
func isExist(phone string) bool {
|
|
|
- res, ok := util.MQFW.FindOne("user_msg", map[string]string{"s_phone": phone})
|
|
|
+ res, ok := util.MQFW.FindOne("user_msg", bson.M{"s_phone": phone})
|
|
|
if ok && len(*res) > 0 {
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
|
}
|
|
|
+
|
|
|
+//清除session
|
|
|
+func clearTrialSession(session *httpsession.Session) {
|
|
|
+ session.Del("subvip_trial_MsgCode")
|
|
|
+ session.Del("subvip_trial_phoneNum")
|
|
|
+ session.Del("subvip_trial_lastSend")
|
|
|
+ session.Del("subvip_trial_imgCode")
|
|
|
+}
|