package controllers import ( "encoding/json" "git.rosy.net.cn/jx-print/globals" "git.rosy.net.cn/jx-print/model" "git.rosy.net.cn/jx-print/putils" "git.rosy.net.cn/jx-print/services/print_server" "github.com/gin-gonic/gin" "net/http" ) //刷新验证码 POST func RefreshCode(c *gin.Context) { putils.Captcha(c, 4) } type UserParam struct { Name string `json:"name" form:"name" binding:"required"` //用户名 Password string `json:"password" form:"password" binding:"required"` //密码,md5后的 Code string `json:"code" form:"code" binding:"required"` //验证码 } //注册 POST func RegisterUser(c *gin.Context) { var ( err error user = &UserParam{} ) if err = c.ShouldBind(&user); err != nil { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: err.Error(), }) globals.SugarLogger.Debugf("API :%s error:%v:", c.Request.URL, err) return } if !CaptchaVerify(c, user.Code) { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: "验证码错误!", }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { err = print_server.RegisterUser(c, user.Name, user.Password) return retVal, "", err }) { return } return } //登录 POST func Login(c *gin.Context) { var ( err error user = &UserParam{} ) if err = c.ShouldBind(&user); err != nil { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: err.Error(), }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) return } if !CaptchaVerify(c, user.Code) { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: "验证码错误!", }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { loginResult, err := print_server.Login(c, user.Name, user.Password) if err != nil { return nil, "", err } //创建token token, err := SetToken(&loginResult.User) if err != nil { return nil, "", err } loginResult.Token = token return loginResult, "", err }) { return } return } //自动登录,获取token POST func GetTokenInfo(c *gin.Context) { var ( tokenInfo *model.TokenInfo ) if tokenInfo = CheckToken(c); tokenInfo == nil { return } data, _ := json.Marshal(tokenInfo) c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeSuccess, Data: string(data), }) return } //登出,删token POST func Logout(c *gin.Context) { var ( tokenInfo *model.TokenInfo ) if tokenInfo = CheckToken(c); tokenInfo == nil { return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { err = print_server.Logout(c, tokenInfo.Token) return retVal, "", err }) { return } return } //更新用户信息 POST func UpdateUser(c *gin.Context) { var ( err error user = &struct { Payload string `json:"payload" form:"payload" binding:"required"` //user 的json格式数据 }{} ) if err = c.ShouldBind(&user); err != nil { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: err.Error(), }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) return } if tokenInfo := CheckToken(c); tokenInfo == nil { return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { err = print_server.UpdateUser(c, user.Payload) return retVal, "", err }) { return } return } //获取菜单,文档 GET func GetMenus(c *gin.Context) { if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { retVal, err = print_server.GetMenus(c) return retVal, "", err }) { return } return } //获取菜单,文档 GET func GetMenuDetail(c *gin.Context) { var ( err error user = &struct { ID int `json:"id" form:"id" binding:"required"` //菜单的ID }{} ) if err = c.ShouldBind(&user); err != nil { c.JSON(http.StatusOK, &model.CallBack{ Code: model.ErrCodeNormal, Desc: err.Error(), }) globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err) return } if !CallFunc(c, func() (retVal interface{}, errCode string, err error) { retVal, err = print_server.GetMenuDetail(c, user.ID) return retVal, "", err }) { return } return }