122 lines
4.1 KiB
Go
122 lines
4.1 KiB
Go
package result
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/eyebluecn/tank/code/tool/i18n"
|
|
"net/http"
|
|
)
|
|
|
|
type WebResult struct {
|
|
Code string `json:"code"`
|
|
Msg string `json:"msg"`
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
func (this *WebResult) Error() string {
|
|
return this.Msg
|
|
}
|
|
|
|
type CodeWrapper struct {
|
|
Code string
|
|
HttpStatus int
|
|
Description string
|
|
}
|
|
|
|
var (
|
|
OK = &CodeWrapper{Code: "OK", HttpStatus: http.StatusOK, Description: "ok"}
|
|
BAD_REQUEST = &CodeWrapper{Code: "BAD_REQUEST", HttpStatus: http.StatusBadRequest, Description: "bad request"}
|
|
NEED_SHARE_CODE = &CodeWrapper{Code: "NEED_SHARE_CODE", HttpStatus: http.StatusUnauthorized, Description: "share code required"}
|
|
SHARE_CODE_ERROR = &CodeWrapper{Code: "SHARE_CODE_ERROR", HttpStatus: http.StatusUnauthorized, Description: "share code error"}
|
|
LOGIN = &CodeWrapper{Code: "LOGIN", HttpStatus: http.StatusUnauthorized, Description: "not login"}
|
|
USER_DISABLED = &CodeWrapper{Code: "USER_DISABLED", HttpStatus: http.StatusForbidden, Description: "user disabled"}
|
|
UNAUTHORIZED = &CodeWrapper{Code: "UNAUTHORIZED", HttpStatus: http.StatusUnauthorized, Description: "unauthorized"}
|
|
NOT_FOUND = &CodeWrapper{Code: "NOT_FOUND", HttpStatus: http.StatusNotFound, Description: "404 not found"}
|
|
RANGE_NOT_SATISFIABLE = &CodeWrapper{Code: "RANGE_NOT_SATISFIABLE", HttpStatus: http.StatusRequestedRangeNotSatisfiable, Description: "range not satisfiable"}
|
|
NOT_INSTALLED = &CodeWrapper{Code: "NOT_INSTALLED", HttpStatus: http.StatusInternalServerError, Description: "application not installed"}
|
|
SERVER = &CodeWrapper{Code: "SERVER", HttpStatus: http.StatusInternalServerError, Description: "server error"}
|
|
UNKNOWN = &CodeWrapper{Code: "UNKNOWN", HttpStatus: http.StatusInternalServerError, Description: "server unknow error"}
|
|
)
|
|
|
|
//根据 CodeWrapper来获取对应的HttpStatus
|
|
func FetchHttpStatus(code string) int {
|
|
if code == OK.Code {
|
|
return OK.HttpStatus
|
|
} else if code == BAD_REQUEST.Code {
|
|
return BAD_REQUEST.HttpStatus
|
|
} else if code == NEED_SHARE_CODE.Code {
|
|
return NEED_SHARE_CODE.HttpStatus
|
|
} else if code == SHARE_CODE_ERROR.Code {
|
|
return SHARE_CODE_ERROR.HttpStatus
|
|
} else if code == LOGIN.Code {
|
|
return LOGIN.HttpStatus
|
|
} else if code == USER_DISABLED.Code {
|
|
return USER_DISABLED.HttpStatus
|
|
} else if code == UNAUTHORIZED.Code {
|
|
return UNAUTHORIZED.HttpStatus
|
|
} else if code == NOT_FOUND.Code {
|
|
return NOT_FOUND.HttpStatus
|
|
} else if code == RANGE_NOT_SATISFIABLE.Code {
|
|
return RANGE_NOT_SATISFIABLE.HttpStatus
|
|
} else if code == NOT_INSTALLED.Code {
|
|
return NOT_INSTALLED.HttpStatus
|
|
} else if code == SERVER.Code {
|
|
return SERVER.HttpStatus
|
|
} else {
|
|
return UNKNOWN.HttpStatus
|
|
}
|
|
}
|
|
|
|
func ConstWebResult(codeWrapper *CodeWrapper) *WebResult {
|
|
|
|
wr := &WebResult{
|
|
Code: codeWrapper.Code,
|
|
Msg: codeWrapper.Description,
|
|
}
|
|
return wr
|
|
}
|
|
|
|
func CustomWebResult(codeWrapper *CodeWrapper, description string) *WebResult {
|
|
|
|
if description == "" {
|
|
description = codeWrapper.Description
|
|
}
|
|
wr := &WebResult{
|
|
Code: codeWrapper.Code,
|
|
Msg: description,
|
|
}
|
|
return wr
|
|
}
|
|
|
|
func BadRequestI18n(request *http.Request, item *i18n.Item, v ...interface{}) *WebResult {
|
|
return CustomWebResult(BAD_REQUEST, fmt.Sprintf(item.Message(request), v...))
|
|
}
|
|
|
|
//没有权限
|
|
func BadRequest(format string, v ...interface{}) *WebResult {
|
|
return CustomWebResult(BAD_REQUEST, fmt.Sprintf(format, v...))
|
|
}
|
|
|
|
//没有权限
|
|
func Unauthorized(format string, v ...interface{}) *WebResult {
|
|
return CustomWebResult(UNAUTHORIZED, fmt.Sprintf(format, v...))
|
|
}
|
|
|
|
//没有找到
|
|
func NotFound(format string, v ...interface{}) *WebResult {
|
|
return CustomWebResult(NOT_FOUND, fmt.Sprintf(format, v...))
|
|
|
|
}
|
|
|
|
//服务器内部出问题
|
|
func Server(format string, v ...interface{}) *WebResult {
|
|
return CustomWebResult(SERVER, fmt.Sprintf(format, v...))
|
|
}
|
|
|
|
//所有的数据库错误情况
|
|
var (
|
|
DB_ERROR_DUPLICATE_KEY = "Error 1062: Duplicate entry"
|
|
DB_ERROR_NOT_FOUND = "record not found"
|
|
DB_TOO_MANY_CONNECTIONS = "Error 1040: Too many connections"
|
|
DB_BAD_CONNECTION = "driver: bad connection"
|
|
)
|