Bladeren bron

test(微信PC端登录逻辑)

Roc 4 jaren geleden
bovenliggende
commit
2afd9d5ae2
6 gewijzigde bestanden met toevoegingen van 36 en 38 verwijderingen
  1. 1 1
      controllers/base_not_auth.go
  2. 28 33
      controllers/user_pc.go
  3. 1 1
      controllers/wechat.go
  4. 1 1
      controllers/wechat_pc.go
  5. 2 2
      services/user.go
  6. 3 0
      utils/config.go

+ 1 - 1
controllers/base_not_auth.go

@@ -50,7 +50,7 @@ func (this *BaseNotAuthController) Prepare() {
 				this.StopRun()
 				return
 			}
-			this.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Eerr:" + err.Error()}, false, false)
+			this.JSON(models.BaseResponse{Ret: 408, Msg: "网络异常,请稍后重试!", ErrMsg: "获取用户信息异常,Err:" + err.Error()}, false, false)
 			this.StopRun()
 			return
 		}

+ 28 - 33
controllers/user_pc.go

@@ -17,7 +17,7 @@ import (
 // @Description 获取图形验证码
 // @Success 200 {object} models.GraphicVerifyCodeResp
 // @router /pc/getGraphicVerifyCode [get]
-func (this *UserCommonController) GetGraphicVerifyCode() {
+func (this *UserNotAuthController) GetGraphicVerifyCode() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -70,7 +70,7 @@ func (this *UserCommonController) GetGraphicVerifyCode() {
 // @Param   VerifyCode   query   string  true       "图形验证码code"
 // @Success Ret=200 获取成功
 // @router /pc/getSmsCode [get]
-func (this *UserCommonController) PcGetSmsCode() {
+func (this *UserNotAuthController) PcGetSmsCode() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -139,7 +139,7 @@ func (this *UserCommonController) PcGetSmsCode() {
 // @Param	request	body models.LoginReq true "type json string"
 // @Success 200 {object} models.LoginResp
 // @router /pc/login [post]
-func (this *UserCommonController) PcLogin() {
+func (this *UserNotAuthController) PcLogin() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -387,7 +387,8 @@ func (this *UserCommonController) PcLogin() {
 		go models.AddWxUserLog(loginLog)
 	}
 
-	newUser, _ := models.GetWxUserItemByUserId(userId)
+	//newUser, _ := models.GetWxUserItemByUserId(userId)
+	newUser, _ := services.GetWxUserItemByUserId(userId,utils.WxPcPlatform)
 	resp := new(models.LoginResp)
 	resp.UserId = newUser.UserId
 	resp.UserPermission = userPermission
@@ -411,7 +412,7 @@ func (this *UserCommonController) PcLogin() {
 // @Param	request	body models.BindReq true "type json string"
 // @Success Ret=200 绑定成功
 // @router /pc/bind [post]
-func (this *UserController) PcBind() {
+func (this *UserNotAuthController) PcBind() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br
@@ -426,11 +427,11 @@ func (this *UserController) PcBind() {
 	}
 	unionId := this.User.UnionId
 	userId := this.User.UserId
+	openId := this.User.OpenId
 
 	utils.FileLog.Info("绑定unionId:%s", unionId)
 	utils.FileLog.Info("userId:%d", userId)
 
-	var newUserId int
 	if req.BindType == 1 { //手机号
 		if req.Mobile == "" {
 			br.Msg = "请输入手机号"
@@ -458,15 +459,6 @@ func (this *UserController) PcBind() {
 			br.Msg = "手机验证码错误,请重新输入"
 			return
 		}
-		fmt.Println("bind")
-		fmt.Println(unionId, req.Mobile, userId, req.BindType)
-
-		newUserId, err = models.PcBindMobile(unionId, req.Mobile, userId, req.BindType)
-		if err != nil {
-			br.ErrMsg = "绑定失败"
-			br.Msg = "绑定失败,Err:" + err.Error()
-			return
-		}
 	} else if req.BindType == 2 {
 		if req.Email == "" {
 			br.ErrMsg = "邮箱不能为空,请输入邮箱"
@@ -499,36 +491,40 @@ func (this *UserController) PcBind() {
 			br.Msg = "邮箱证码错误,请重新输入"
 			return
 		}
-		newUserId, err = models.PcBindMobile(unionId, req.Email, userId, req.BindType)
-		if err != nil {
-			br.ErrMsg = "绑定失败"
-			br.Msg = "绑定失败,Err:" + err.Error()
-			return
-		}
 	} else {
 		br.Msg = "无效的绑定方式"
 		br.ErrMsg = "无效的绑定方式,bindType:" + strconv.Itoa(req.BindType)
 		return
 	}
 
+
+	user,err := services.BindWxUser(openId,req.Mobile,req.Email)
+	if err != nil{
+		br.Msg = "绑定失败:"+err.Error()
+		return
+	}
+	newUserId := user.UserId
+
 	var token string
-	tokenItem, err := models.GetTokenByUid(newUserId)
+	tokenItem, err := models.GetTokenByOpenId(openId)
 	if err != nil && err.Error() != utils.ErrNoRow() {
 		br.Msg = "登录失败"
 		br.ErrMsg = "登录失败,获取token失败:" + err.Error()
 		return
 	}
+
 	if tokenItem == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
 		timeUnix := time.Now().Unix()
 		timeUnixStr := strconv.FormatInt(timeUnix, 10)
-		token = utils.MD5(strconv.Itoa(newUserId)) + utils.MD5(timeUnixStr)
+		token := utils.MD5(openId) + utils.MD5(timeUnixStr)
 		//新增session
 		{
 			session := new(models.Session)
-			session.UserId = newUserId
+			session.OpenId = openId
+			session.UserId = userId
 			session.CreatedTime = time.Now()
 			session.LastUpdatedTime = time.Now()
-			session.ExpireTime = time.Now().AddDate(0, 3, 0)
+			session.ExpireTime = time.Now().AddDate(0, 1, 0)
 			session.AccessToken = token
 			err = models.AddSession(session)
 			if err != nil {
@@ -540,17 +536,16 @@ func (this *UserController) PcBind() {
 	} else {
 		token = tokenItem.AccessToken
 	}
-
-	userPermission, err := services.CheckUserPermission(newUserId)
+	userPermission, err := services.CheckUserPermission(userId)
 	if err != nil {
-		br.Msg = "绑定失败"
-		br.ErrMsg = "绑定失败,判断权限失败:" + err.Error()
+		br.Msg = "登录失败"
+		br.ErrMsg = "登录失败,判断权限失败:" + err.Error()
 		return
 	}
-	err = models.ModifyFirstLogin(newUserId)
+	err = models.ModifyFirstLogin(user.UserId)
 	if err != nil {
-		br.Msg = "绑定失败"
-		br.ErrMsg = "绑定失败,判断权限失败:" + err.Error()
+		br.Msg = "登录失败"
+		br.ErrMsg = "登录失败,判断权限失败:" + err.Error()
 		return
 	}
 
@@ -617,7 +612,7 @@ func (this *UserController) PcBind() {
 // @Description 校验免登陆
 // @Success 200 {object} models.CheckLoginResp
 // @router /pc/check/login [get]
-func (this *UserController) CheckLogin() {
+func (this *UserNotAuthController) CheckLogin() {
 	br := new(models.BaseResponse).Init()
 	defer func() {
 		this.Data["json"] = br

+ 1 - 1
controllers/wechat.go

@@ -86,7 +86,7 @@ func (this *WechatCommonController) WechatLogin() {
 		return
 	}
 
-	token,userId,firstLogin,permission,err := services.WxLogin(code,item,wxUserInfo)
+	token,userId,firstLogin,permission,err := services.WxLogin(utils.WxPlatform,code,item,wxUserInfo)
 	if err != nil{
 		br.Msg = "微信登录失败"
 		br.ErrMsg = "微信登录失败,err:" + err.Error()

+ 1 - 1
controllers/wechat_pc.go

@@ -82,7 +82,7 @@ func (this *WechatCommonController) PcWechatLogin() {
 		//Errcode        int    `json:"errcode"`
 		//Errmsg         string `json:"errmsg"`
 	}
-	token,userId,firstLogin,permission,err := services.WxLogin(code,item,wxUserInfo)
+	token,userId,firstLogin,permission,err := services.WxLogin(utils.WxPcPlatform,code,item,wxUserInfo)
 
 
 	newUser, _ := services.GetWxUserItemByOpenId(wxUserInfo.Openid)

+ 2 - 2
services/user.go

@@ -227,7 +227,7 @@ func BindWxUser(openid,mobile,email string) (wxUser *models.WxUserItem,err error
 }
 
 //微信登录
-func WxLogin(code string,wxAccessToken *WxAccessToken,wxUserInfo *WxUserInfo)(token string,userId,firstLogin,permission int,err error){
+func WxLogin(wxPlatform int,code string,wxAccessToken *WxAccessToken,wxUserInfo *WxUserInfo)(token string,userId,firstLogin,permission int,err error){
 	openId := wxAccessToken.Openid
 	unionId := wxAccessToken.Unionid
 	if unionId == ""{
@@ -240,7 +240,7 @@ func WxLogin(code string,wxAccessToken *WxAccessToken,wxUserInfo *WxUserInfo)(to
 QUERY_WX_USER:
 	wxUser, wxUserErr := GetWxUserItemByOpenId(openId)
 	if wxUserErr == ERR_NO_USER_RECORD{	//没有用户openid记录
-		_,recordErr := AddUserRecord(openId,unionId,wxUserInfo.Nickname,"",wxUserInfo.Province,wxUserInfo.City,wxUserInfo.Country,wxUserInfo.Headimgurl,"",utils.WxPlatform,wxUserInfo.Sex,0)
+		_,recordErr := AddUserRecord(openId,unionId,wxUserInfo.Nickname,"",wxUserInfo.Province,wxUserInfo.City,wxUserInfo.Country,wxUserInfo.Headimgurl,"",wxPlatform,wxUserInfo.Sex,0)
 		//如果插入失败,那么直接将错误信息返回
 		if recordErr != nil{
 			err = recordErr

+ 3 - 0
utils/config.go

@@ -32,6 +32,7 @@ var (
 	PcWxAppSecret         string
 	PcTemplateIdByProduct string //产品运行报告通知-模板ID
 	PcTemplateRedirectUrl string //模板消息跳转地址
+	WxPcPlatform int		//用户来源,需要入库,用来保存该用户来自哪个平台,默认是:3
 )
 
 func init() {
@@ -52,6 +53,7 @@ func init() {
 		TemplateIdByProduct = "Cp2wF8gvBtxyWV4DeYuI172oqwyYXVRSm3AyJO42d84"
 		TemplateRedirectUrl = "https://ficc.hzinsights.com/reportdtl?id="
 		WxPlatform = 1
+		WxPcPlatform = 3
 
 		PcWxAppId = "wx615472d6874eeb7f"
 		PcWxAppSecret="97fe374fb0cc90ef58c4b49d431366f1"
@@ -63,6 +65,7 @@ func init() {
 		TemplateIdByProduct = "-YjuPOB7Fqd-S3ilabYa6wvjDY9aXmeEfPN6DCiy-EY"
 		TemplateRedirectUrl = "http://rddpweb.brilliantstart.cn/reportdtl?id="
 		WxPlatform = 1
+		WxPcPlatform = 3
 
 		PcWxAppId = "wx7c8084f6e5b1d85a"
 		PcWxAppSecret="9e4210cd5a363aa1f316b7c4b8898418"