diff --git a/services/print_server/app_server/wx_login.go b/services/print_server/app_server/wx_login.go index 819c25b..882afa5 100644 --- a/services/print_server/app_server/wx_login.go +++ b/services/print_server/app_server/wx_login.go @@ -7,17 +7,10 @@ import ( "encoding/json" "errors" "fmt" - "git.rosy.net.cn/baseapi/utils" - "git.rosy.net.cn/jx-print/dao" - "git.rosy.net.cn/jx-print/globals" "git.rosy.net.cn/jx-print/model" wxLogin "git.rosy.net.cn/jx-print/model/app_model" - "git.rosy.net.cn/jx-print/services/api" "github.com/gin-gonic/gin" - xaes "github.com/go-pay/gopay/pkg/aes" - "github.com/go-pay/gopay/wechat" "reflect" - "time" ) type UserLogin struct { @@ -25,98 +18,100 @@ type UserLogin struct { // WxLogin 授权登录 func (u *UserLogin) WxLogin(ctx *gin.Context, code, phone string) (*model.User, error) { - // 生成openId - openObj, err := wechat.GetOauth2AccessToken(ctx, wxLogin.WeChatAPPID, wxLogin.WeChatAPPSecret, code) - if err != nil { - return nil, err - } - - if openObj.Errcode != 0 { - return nil, errors.New(openObj.Errmsg) - } - - // 检查用户是否存在 - users, err := dao.GetUsers(globals.GetDB(), "", "", phone, "") - if err != nil { - return nil, err - } - if len(users) > 1 { - return nil, errors.New("数据异常,用户电话不唯一,联系管理员") - } - - // 获取用户信息,是否注册 - userInfo, err := wechat.GetOauth2UserInfo(ctx, openObj.AccessToken, openObj.Openid) - if err != nil { - return nil, err - } - - var userObj *model.User - timeNow := time.Now() - switch len(users) { - case 0: - // 用户不存在,创建并返回用户 - userBase := &model.User{ - CreatedAt: &timeNow, - UpdatedAt: &timeNow, - LastOperator: "系统新增", - DeletedAt: &utils.DefaultTimeValue, - UserID: utils.GetUUID(), - Password: "", - Name: userInfo.Nickname, - Mobile: phone, - Email: "", - Avatar: userInfo.Headimgurl, - Status: 1, - Type: 1, - Company: "", - CityCode: 0, - DistrictCode: 0, - Address: "", - IDCardNo: "", - Remark: "", - LastLoginAt: &timeNow, - LastLoginIP: ctx.ClientIP(), - LastLoginType: model.OrderOriginWxMini, - OpenId: userInfo.Openid, - UnionId: userInfo.Unionid, - } - if err := dao.CreateUserWx(userBase); err != nil { - return nil, err - } - userObj = userBase - case 1: - // 用户使用电话号码登录,未使用微信登录 - if users[0].OpenId == "" { - users[0].Name = userInfo.Nickname - users[0].Avatar = userInfo.Headimgurl - users[0].OpenId = userInfo.Openid - users[0].UnionId = userInfo.Unionid - } - // 用户存在,判断用户 - users[0].UpdatedAt = &timeNow - users[0].LastOperator = users[0].Name - users[0].LastLoginIP = ctx.ClientIP() - if err := dao.UpdateUserWx(users[0], []string{"updated_at", "last_operator", "last_login_ip", "name", "avatar", "open_id", "union_id"}); err != nil { - return nil, err - } - userObj = users[0] - } - - return userObj, err + //// 生成openId + //openObj, err := wechat.GetOauth2AccessToken(ctx, wxLogin.WeChatAPPID, wxLogin.WeChatAPPSecret, code) + //if err != nil { + // return nil, err + //} + // + //if openObj.Errcode != 0 { + // return nil, errors.New(openObj.Errmsg) + //} + // + //// 检查用户是否存在 + //users, err := dao.GetUsers(globals.GetDB(), "", "", phone, "") + //if err != nil { + // return nil, err + //} + //if len(users) > 1 { + // return nil, errors.New("数据异常,用户电话不唯一,联系管理员") + //} + // + //// 获取用户信息,是否注册 + //userInfo, err := wechat.GetOauth2UserInfo(ctx, openObj.AccessToken, openObj.Openid) + //if err != nil { + // return nil, err + //} + // + //var userObj *model.User + //timeNow := time.Now() + //switch len(users) { + //case 0: + // // 用户不存在,创建并返回用户 + // userBase := &model.User{ + // CreatedAt: &timeNow, + // UpdatedAt: &timeNow, + // LastOperator: "系统新增", + // DeletedAt: &utils.DefaultTimeValue, + // UserID: utils.GetUUID(), + // Password: "", + // Name: userInfo.Nickname, + // Mobile: phone, + // Email: "", + // Avatar: userInfo.Headimgurl, + // Status: 1, + // Type: 1, + // Company: "", + // CityCode: 0, + // DistrictCode: 0, + // Address: "", + // IDCardNo: "", + // Remark: "", + // LastLoginAt: &timeNow, + // LastLoginIP: ctx.ClientIP(), + // LastLoginType: model.OrderOriginWxMini, + // OpenId: userInfo.Openid, + // UnionId: userInfo.Unionid, + // } + // if err := dao.CreateUserWx(userBase); err != nil { + // return nil, err + // } + // userObj = userBase + //case 1: + // // 用户使用电话号码登录,未使用微信登录 + // if users[0].OpenId == "" { + // users[0].Name = userInfo.Nickname + // users[0].Avatar = userInfo.Headimgurl + // users[0].OpenId = userInfo.Openid + // users[0].UnionId = userInfo.Unionid + // } + // // 用户存在,判断用户 + // users[0].UpdatedAt = &timeNow + // users[0].LastOperator = users[0].Name + // users[0].LastLoginIP = ctx.ClientIP() + // if err := dao.UpdateUserWx(users[0], []string{"updated_at", "last_operator", "last_login_ip", "name", "avatar", "open_id", "union_id"}); err != nil { + // return nil, err + // } + // userObj = users[0] + //} + // + //return userObj, err + return nil, nil } // GetUserPhoneNum 解密用户手机号 func (u *UserLogin) GetUserPhoneNum(param *wxLogin.WeChatPhoneNumberParam) (string, error) { - sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(param.Code) - if err != nil { - return "", err - } - - weChatLogin := new(wechat.UserPhone) - if err := DecryptOpenDataToStruct(param.EncryptedData, param.IV, sessionInfo.SessionKey, weChatLogin); err != nil { - return "", err - } - return weChatLogin.PhoneNumber, nil + //sessionInfo, err := api.WeixinMiniAPI.SNSCode2Session(param.Code) + //if err != nil { + // return "", err + //} + // + //weChatLogin := new(wechat.UserPhone) + //if err := DecryptOpenDataToStruct(param.EncryptedData, param.IV, sessionInfo.SessionKey, weChatLogin); err != nil { + // return "", err + //} + //return weChatLogin.PhoneNumber, nil + return "", nil } // DecryptOpenDataToStruct 解密开放数据到结构体 @@ -153,9 +148,9 @@ func DecryptOpenDataToStruct(encryptedData, iv, sessionKey string, beanPtr inter blockMode = cipher.NewCBCDecrypter(block, ivKey) plainText = make([]byte, len(cipherText)) blockMode.CryptBlocks(plainText, cipherText) - if len(plainText) > 0 { - plainText = xaes.PKCS7UnPadding(plainText) - } + //if len(plainText) > 0 { + // plainText = xaes.PKCS7UnPadding(plainText) + //} if err = json.Unmarshal(plainText, beanPtr); err != nil { return fmt.Errorf("json.Marshal(%s):%w", string(plainText), err) }