Browse Source

rebuid api 更改一键绑定微信号码接口

abiao 5 years ago
parent
commit
f1c96d2eaf

+ 79 - 0
go/gopath/src/fohow.com/apps/controllers/user_controller/binding_wx_phone_controller.go

@@ -108,3 +108,82 @@ func (self *UserController) BindingWxPhone() {
 	self.ServeJSON()
 
 }
+
+func (self *UserController) BindingWxPhoneNew() {
+
+	wxUser := self.GetCurrentWxUser(false)
+
+	//如果已经绑定了user,直接返回
+	if wxUser.UserId == 0 {
+		self.ReturnError(403, apps.UserNotExist, "", nil)
+	}
+
+	var tel string
+
+	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 { //手机号未被注册
+		user = user_model.GetUserById(wxUser.UserId, false)
+		if user == nil {
+			self.ReturnError(403, apps.BindingUserTelError, "", nil)
+		}
+		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()
+
+}

+ 1 - 1
go/gopath/src/fohow.com/routers/routes.go

@@ -156,7 +156,7 @@ func init() {
 	//一键绑定第五创电话号码
 	beego.Router("/v1/wxuser/one_click/binding/tel", &user_controller.UserController{}, "post:OneClickBindingTel")
 	//一键绑定微信手机号码
-	beego.Router("/v1/wxuser/one_click/binding/phonumer", &user_controller.UserController{}, "post:BindingWxPhone")
+	beego.Router("/v1/wxuser/one_click/binding/phonumer", &user_controller.UserController{}, "post:BindingWxPhoneNew")
 	// //用户上传头像
 	// beego.Router("/v1/user/head/upload", &user_controller.UserController{}, "post:UploadHead")