This commit is contained in:
suyl
2021-07-07 10:21:51 +08:00
parent de7ca15b3d
commit 2beca9fbcb
11 changed files with 473 additions and 40 deletions

View File

@@ -1,7 +1,93 @@
package controllers
import "git.rosy.net.cn/jx-print/globals"
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/jx-print/globals"
"git.rosy.net.cn/jx-print/model"
"github.com/dchest/captcha"
"github.com/gin-contrib/sessions"
"github.com/gin-gonic/gin"
"net/http"
"strings"
)
func init() {
type CallBack struct {
Data string `json:"data"`
Code string `json:"code"`
Desc string `json:"desc"`
}
func init() {
globals.SugarLogger.Debugf("test init ...")
}
func callFunc(c *gin.Context, worker func() (retVal interface{}, errCode string, err error)) bool {
var (
err error
callBack = &CallBack{
Code: model.ErrCodeNormal,
}
token string
cookie *http.Cookie
result interface{}
)
//验证token
//v2下的接口需要验证v1不需要
if !strings.Contains(c.Request.URL.String(), "v1") {
if cookie, err = c.Request.Cookie("token"); err != nil {
callBack.Desc = err.Error()
c.JSON(http.StatusOK, callBack)
return false
} else {
token = cookie.Value
}
if token != "token" {
err = fmt.Errorf("token 已过期,请重新登录!")
callBack.Desc = err.Error()
c.JSON(http.StatusOK, callBack)
return false
}
}
if result, _, err = worker(); err == nil {
if result != nil {
if data, err := json.Marshal(&result); err == nil {
callBack.Code = model.ErrCodeSuccess
callBack.Data = string(data)
c.JSON(http.StatusOK, callBack)
globals.SugarLogger.Debugf("End API :%s success", c.Request.URL)
return true
} else {
err = fmt.Errorf("data error!")
callBack.Desc = err.Error()
c.JSON(http.StatusOK, callBack)
return false
}
} else {
callBack.Code = model.ErrCodeSuccess
c.JSON(http.StatusOK, callBack)
globals.SugarLogger.Debugf("End API :%s success", c.Request.URL)
return true
}
} else {
callBack.Desc = err.Error()
c.JSON(http.StatusOK, callBack)
globals.SugarLogger.Debugf("End API :%s error:%v", c.Request.URL, err)
}
return false
}
func captchaVerify(c *gin.Context, code string) bool {
session := sessions.Default(c)
if captchaId := session.Get(c.ClientIP() + model.SessionKey); captchaId != nil {
session.Delete(c.ClientIP() + model.SessionKey)
_ = session.Save()
if captcha.VerifyString(captchaId.(string), code) {
return true
} else {
return false
}
} else {
return false
}
}