123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- package webutils
- import (
- "encoding/base64"
- "encoding/json"
- "net/http"
- "github.com/gin-gonic/gin"
- ut "github.com/go-playground/universal-translator"
- "github.com/sirupsen/logrus"
- "gogs.daxia.dev/huanan/pkg.daxia.dev.git/encrypt"
- )
- const (
- CodeSuccess = 20000
- CodeFailed = -1
- CodeIllegalToken = 50008
- CodeTokenExpired = 50014
- CodeOther = 50012
- )
- var (
- trans ut.Translator
- )
- type RespError struct {
- msg string
- }
- func NewRespError(msg string) RespError {
- return RespError{
- msg: msg,
- }
- }
- func (p *RespError) Error() string {
- return ""
- }
- type Response struct {
- Code int `json:"code"`
- Msg string `json:"msg"`
- Data interface{} `json:"data"`
- }
- type ResponseGen[T interface{}] struct {
- Code int `json:"code"`
- Msg string `json:"msg"`
- Data T `json:"data"`
- }
- func FailedResponse(c *gin.Context, msg string) {
- if c == nil {
- return
- }
- c.JSON(http.StatusOK, &Response{
- Code: CodeFailed,
- Msg: msg,
- Data: nil,
- })
- panic(NewRespError("failed"))
- }
- func FailedResponseEncrypt(c *gin.Context, msg string, encKey []byte) {
- if c == nil {
- return
- }
- if encKey != nil {
- respData, _ := json.Marshal(Response{
- Code: CodeFailed,
- Msg: msg,
- Data: nil,
- })
- encData, _ := encrypt.AesEncrypt(respData, encKey)
- encDataStr := base64.StdEncoding.EncodeToString(encData)
- c.Data(200, "application/json", []byte(encDataStr))
- panic(NewRespError("failed"))
- }
- c.JSON(http.StatusOK, &Response{
- Code: CodeFailed,
- Msg: msg,
- Data: nil,
- })
- panic(NewRespError("failed"))
- }
- func FailedResponseErr(c *gin.Context, err error) {
- if c == nil {
- return
- }
- logrus.Error(err)
- FailedResponse(c, "内部错误")
- }
- func FailedResponseWithCode(c *gin.Context, code int, msg string) {
- c.JSON(http.StatusOK, &Response{
- Code: code,
- Msg: msg,
- Data: nil,
- })
- panic(NewRespError("failed"))
- }
- func SuccessResponse(c *gin.Context, data interface{}) {
- c.JSON(http.StatusOK, &Response{
- Code: CodeSuccess,
- Msg: "",
- Data: data,
- })
- panic(NewRespError("success"))
- }
- func SuccessResponseEncrypt(c *gin.Context, data interface{}, encKey []byte) {
- if encKey != nil {
- respData, _ := json.Marshal(Response{
- Code: CodeSuccess,
- Msg: "",
- Data: data,
- })
- encData, _ := encrypt.AesEncrypt(respData, encKey)
- encDataStr := base64.StdEncoding.EncodeToString(encData)
- c.Data(200, "application/json", []byte(encDataStr))
- panic(NewRespError("failed"))
- }
- c.JSON(http.StatusOK, &Response{
- Code: CodeSuccess,
- Msg: "",
- Data: data,
- })
- panic(NewRespError("success"))
- }
|