package controllers import ( "encoding/base64" "fmt" "net/http" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxcallback/auth" _ "git.rosy.net.cn/jx-callback/business/jxcallback/auth/localpass" // 加载本地用户密码 "git.rosy.net.cn/jx-callback/business/jxcallback/auth/mobile" "git.rosy.net.cn/jx-callback/business/jxcallback/auth/weixin" "git.rosy.net.cn/jx-callback/globals" "github.com/astaxie/beego" ) type WeixinCallbackResult struct { Code int `json:"code"` Msg string `json:"msg"` Data interface{} `json:"data"` } // 认证相关API type AuthController struct { beego.Controller } var ( ErrParameterIsIllegal = "参数不全或不合法" ) // @Title 给微信用的回调接口 // @Description 给微信用的回调接口,自己不能直接调用 // @Param code query string true "门店ID" // @Param block query string true "门店所属的厂商ID" // @Param state query string false "门店所属的厂商ID" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetWeiXinUserInfo [get] func (c *AuthController) GetWeiXinUserInfo() { retVal := &WeixinCallbackResult{} var err error code := c.GetString("code") block := c.GetString("block") state := c.GetString("state") if block != "" { if code != "" { result, err2 := weixin.GetUserInfo(code, state) if err = err2; err == nil { retVal.Code = 1 retVal.Msg = "微信登录成功" retVal.Data = result } else { retVal.Msg = err.Error() } } else { retVal.Msg = "code为空" } } else { retVal.Msg = "没有block" } c.Redirect(fmt.Sprintf("%s?info=%s", block, base64.StdEncoding.EncodeToString(utils.MustMarshal(retVal))), http.StatusTemporaryRedirect) } // @Title 登录接口 // @Description 登录接口 // @Param id formData string true "登录ID" // @Param type formData string true "登录类型,当前支持[weixinsns,localpass]" // @Param secret formData string true "不同登录类型的登录秘密" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /Login [post] func (c *AuthController) Login() { c.callLogin(func(params *tAuthLoginParams) (retVal interface{}, errCode string, err error) { retVal, err = auth.Login(params.Id, params.Type, params.Secret) return retVal, "", err }) } // @Title 登出接口 // @Description 登出接口 // @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /Logout [delete] func (c *AuthController) Logout() { c.callLogout(func(params *tAuthLogoutParams) (retVal interface{}, errCode string, err error) { err = auth.Logout(params.Token) globals.SugarLogger.Debug(err) return nil, "", err }) } // @Title 得到用户信息 // @Description 得到用户信息(从token中) // @Param token header string true "认证token" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /GetUserInfo [get] func (c *AuthController) GetUserInfo() { c.callGetUserInfo(func(params *tAuthGetUserInfoParams) (retVal interface{}, errCode string, err error) { retVal, err = auth.GetUserInfo(params.Token) return retVal, "", err }) } // @Title 发送验证码 // @Description 发送验证码 // @Param mobile formData string true "手机号" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /SendMobileVerifyCode [post] func (c *AuthController) SendMobileVerifyCode() { c.callSendMobileVerifyCode(func(params *tAuthSendMobileVerifyCodeParams) (retVal interface{}, errCode string, err error) { err = mobile.SendVerifyCode(params.Mobile) return retVal, "", err }) } // @Title 绑定手机 // @Description 绑定手机 // @Param token header string true "认证token" // @Param mobile formData string true "手机号" // @Param code formData string true "验证码" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /BindMobile [post] func (c *AuthController) BindMobile() { c.callBindMobile(func(params *tAuthBindMobileParams) (retVal interface{}, errCode string, err error) { err = auth.BindMobile(params.Token, params.Mobile, params.Code) return retVal, "", err }) }