|
|
@@ -8,107 +8,6 @@ import (
|
|
|
"github.com/astaxie/beego"
|
|
|
)
|
|
|
|
|
|
-func (self *UserController) BindingWxPhone() {
|
|
|
-
|
|
|
- wxUser := self.GetCurrentWxUser(false)
|
|
|
-
|
|
|
- //如果已经绑定了user,直接返回
|
|
|
- if wxUser.UserId != 0 {
|
|
|
- self.ReturnError(403, apps.WxUserHasBindingTel, "", nil)
|
|
|
- }
|
|
|
-
|
|
|
- var tel string
|
|
|
-
|
|
|
- //获取参数
|
|
|
- //sign := self.GetString("sign")
|
|
|
- //unixTime := self.GetString("tistamp")
|
|
|
- //tel := self.GetString("phonumer")
|
|
|
- //beego.BeeLogger.Warn("BindingWxPhone-sign:%s, unixTime:%s, tel:%s", sign, unixTime, tel)
|
|
|
- //if strings.TrimSpace(tel) == "" || strings.TrimSpace(sign) == "" || strings.TrimSpace(unixTime) == ""{
|
|
|
- // self.ReturnError(403, apps.ParamsError, "", nil)
|
|
|
- //}
|
|
|
- //
|
|
|
- //if !self.CheckParamsIsValid(tel, sign, unixTime){
|
|
|
- // self.ReturnError(403, apps.ParamsError, "", nil)
|
|
|
- //}
|
|
|
-
|
|
|
- sessionKey, _ := self.GetSession(apps.XcxSessionKey).(string)
|
|
|
- if sessionKey == "" {
|
|
|
- self.ReturnError(403, apps.UserNeedLogin, "", nil)
|
|
|
- }
|
|
|
-
|
|
|
- params := self.GetString("userinfo")
|
|
|
- type Info struct {
|
|
|
- Iv string `json:"iv"`
|
|
|
- EncryptedData string `json:"encryptedData"`
|
|
|
- }
|
|
|
- info := new(Info)
|
|
|
- err := json.Unmarshal([]byte(params), &info)
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- beego.BeeLogger.Error("BindingWxPhone err: %s, info:%s", err, info)
|
|
|
- self.ReturnError(403, apps.ParamsError, "", nil)
|
|
|
- }
|
|
|
-
|
|
|
- type WatermarkInfo struct {
|
|
|
- Appid string `json:"appid"`
|
|
|
- Timestamp string `json:"timestamp"`
|
|
|
- }
|
|
|
- type EncryptedData struct {
|
|
|
- PhoneNumber string `json:"phoneNumber"`
|
|
|
- PurePhoneNumber string `json:"purePhoneNumber"`
|
|
|
- CountryCode string `json:"countryCode"`
|
|
|
- Watermark *WatermarkInfo `json:"watermark"`
|
|
|
- }
|
|
|
- //phoneNumber String 用户绑定的手机号(国外手机号会有区号)
|
|
|
- //purePhoneNumber String 没有区号的手机号
|
|
|
- //countryCode String 区
|
|
|
-
|
|
|
- pc := helpers.WxBizDataCrypt{AppID: beego.AppConfig.String("WxFohowXcxAppId"), SessionKey: sessionKey}
|
|
|
- result, err := pc.Decrypt(info.EncryptedData, info.Iv, true) //第三个参数解释: 需要返回 JSON 数据类型时 使用 true, 需要返回 map 数据类型时 使用 false
|
|
|
- if err != nil {
|
|
|
- beego.BeeLogger.Error("xcx BindingWxPhone descrypt failed, err:%s", err)
|
|
|
- self.ReturnError(403, apps.BindingWxPhoneError, "", nil)
|
|
|
- }
|
|
|
- encryptedData := &EncryptedData{}
|
|
|
- json.Unmarshal([]byte(result.(string)), encryptedData)
|
|
|
-
|
|
|
- if encryptedData.PurePhoneNumber == "" {
|
|
|
- self.ReturnError(403, apps.BindingWxPhoneError, "", nil)
|
|
|
- }
|
|
|
-
|
|
|
- tel = encryptedData.PurePhoneNumber
|
|
|
-
|
|
|
- user := user_model.GetByTel(tel, false)
|
|
|
- if user != nil {
|
|
|
- self.ReturnError(403, apps.BindingTelExisted, "", nil)
|
|
|
- } else { //手机号未被注册
|
|
|
-
|
|
|
- ip := self.Ctx.Input.IP()
|
|
|
- user = user_model.Create(tel, ip)
|
|
|
- if user == nil {
|
|
|
- self.ReturnError(403, apps.BindingUserTelError, "", nil)
|
|
|
- }
|
|
|
- wxUser.UserId = user.Id
|
|
|
- wxUser.Save()
|
|
|
- user.CopyWxUserHead(wxUser.Head)
|
|
|
- user.Nickname = wxUser.Nickname
|
|
|
- user.Country = wxUser.Country
|
|
|
- user.Province = wxUser.Province
|
|
|
- user.City = wxUser.City
|
|
|
- user.Sex = wxUser.Sex
|
|
|
- user.Save()
|
|
|
- // 如果微信用户已绑定手机,则找出userId,并且赋值给session[userId]
|
|
|
- if wxUser != nil && wxUser.UserId > 0 {
|
|
|
- self.SetSession(apps.SessionWxUserKey, wxUser.Id)
|
|
|
- self.SetSession(apps.SessionUserKey, wxUser.UserId)
|
|
|
- }
|
|
|
- }
|
|
|
- self.Data["json"] = user
|
|
|
- self.ServeJSON()
|
|
|
-
|
|
|
-}
|
|
|
-
|
|
|
func (self *UserController) BindingWxPhoneNew() {
|
|
|
|
|
|
wxUser := self.GetCurrentWxUser(false)
|
|
|
@@ -122,7 +21,7 @@ func (self *UserController) BindingWxPhoneNew() {
|
|
|
|
|
|
sessionKey, _ := self.GetSession(apps.XcxSessionKey).(string)
|
|
|
if sessionKey == "" {
|
|
|
- self.ReturnError(403, apps.UserNeedLogin, "", nil)
|
|
|
+ //self.ReturnError(403, apps.UserNeedLogin, "", nil)
|
|
|
}
|
|
|
|
|
|
params := self.GetString("userinfo")
|
|
|
@@ -177,11 +76,6 @@ func (self *UserController) BindingWxPhoneNew() {
|
|
|
}
|
|
|
user.Tel = tel
|
|
|
user.Save()
|
|
|
- // 如果微信用户已绑定手机,则找出userId,并且赋值给session[userId]
|
|
|
- if wxUser != nil && wxUser.UserId > 0 {
|
|
|
- self.SetSession(apps.SessionWxUserKey, wxUser.Id)
|
|
|
- self.SetSession(apps.SessionUserKey, wxUser.UserId)
|
|
|
- }
|
|
|
}
|
|
|
self.Data["json"] = user
|
|
|
self.ServeJSON()
|