修改打印模板

This commit is contained in:
邹宗楠
2022-07-26 17:24:41 +08:00
parent ecdb628231
commit d038f31e87
35 changed files with 2586 additions and 201 deletions

View File

@@ -0,0 +1,159 @@
package controller
import (
"encoding/json"
"fmt"
"git.rosy.net.cn/baseapi/utils"
"git.rosy.net.cn/jx-print/globals"
"git.rosy.net.cn/jx-print/model"
wxConst "git.rosy.net.cn/jx-print/model/app_model"
"git.rosy.net.cn/jx-print/putils"
"git.rosy.net.cn/jx-print/services/print_server"
"github.com/dchest/captcha"
"github.com/gin-gonic/gin"
"net/http"
"strings"
"time"
)
func init() {
globals.SugarLogger.Debugf("test init ...")
}
func CheckToken(c *gin.Context) (tokenInfo *model.TokenInfo) {
var (
cookie *http.Cookie
err error
tokenMap map[string]interface{}
user *model.User
)
tokenInfo = &model.TokenInfo{}
//验证token
//v2下的接口需要验证v1不需要
if !strings.Contains(c.Request.URL.String(), "v1") || !strings.Contains(c.Request.URL.String(), "app_no") {
if cookie, err = c.Request.Cookie("token"); err != nil {
c.JSON(http.StatusOK, &model.CallBack{
Desc: err.Error(),
Code: model.ErrCodeNormal,
})
return nil
} else {
tokenInfo.Token = cookie.Value
}
globals.SugarLogger.Debugf("checkToken token: %v", tokenInfo.Token)
if tokenMap = putils.GetKey(tokenInfo.Token).(map[string]interface{}); tokenMap == nil {
err = fmt.Errorf("token过期或无效请重新登录")
c.JSON(http.StatusOK, &model.CallBack{
Desc: err.Error(),
Code: model.ErrCodeToken,
})
return nil
}
data, _ := json.Marshal(tokenMap)
if err = json.Unmarshal(data, &user); err == nil && user != nil {
tokenInfo.User = user
} else {
err = fmt.Errorf("token错误请重新登录")
c.JSON(http.StatusOK, &model.CallBack{
Desc: err.Error(),
Code: model.ErrCodeToken,
})
return nil
}
globals.SugarLogger.Debugf("checkToken user: %v", putils.Format4Output(user, true))
}
return tokenInfo
}
func CallFunc(c *gin.Context, worker func() (retVal interface{}, errCode string, err error)) bool {
var (
err error
callBack = &model.CallBack{
Code: model.ErrCodeNormal,
}
result interface{}
)
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 {
verifyCode := putils.GetKey(c.ClientIP() + model.SessionKey)
if verifyCode == nil {
return true
}
if captchaId := verifyCode.(string); captchaId != "" {
putils.DelKey(c.ClientIP() + model.SessionKey)
return captcha.VerifyString(captchaId, code)
}
return false
}
func BuildErrJson(c *gin.Context, err error) {
c.JSON(http.StatusOK, &model.CallBack{
Code: model.ErrCodeNormal,
Desc: err.Error(),
})
globals.SugarLogger.Debugf("End API :%s error:%v:", c.Request.URL, err)
}
func GetConfig(c *gin.Context) {
var (
err error
param = &struct {
Type string `json:"type" form:"type" binding:"required"`
Key string `json:"key" form:"key" binding:"required"`
}{}
)
if err = c.ShouldBind(&param); err != nil {
BuildErrJson(c, err)
return
}
if !CallFunc(c, func() (retVal interface{}, errCode string, err error) {
retVal, err = print_server.GetConfig(c, param.Type, param.Key)
return retVal, "", err
}) {
return
}
}
func SetToken(user *model.User) (token string, err error) {
token = createToken(user)
err = putils.SetKey(token, user, putils.DefTokenDuration)
return token, err
}
func createToken(user *model.User) (token string) {
return strings.Join([]string{
wxConst.TokenHeader,
wxConst.TokenVer,
user.UserID,
time.Now().Format("20060102-150405"),
utils.GetUUID(),
user.Name,
}, wxConst.TokenTypeSep)
}