191 lines
4.3 KiB
Go
191 lines
4.3 KiB
Go
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
|
||
}
|