Testing for controller/main.go

This commit is contained in:
HFO4
2019-11-06 22:35:31 +08:00
parent 6ba4d1ae82
commit 2c9e0c1119
9 changed files with 240 additions and 3 deletions

57
pkg/serializer/common.go Normal file
View File

@@ -0,0 +1,57 @@
package serializer
import "github.com/gin-gonic/gin"
// Response 基础序列化器
type Response struct {
Code int `json:"code"`
Data interface{} `json:"data,omitempty"`
Msg string `json:"msg"`
Error string `json:"error,omitempty"`
}
// 三位数错误编码为复用http原本含义
// 五位数错误编码为应用自定义错误
// 五开头的五位数错误编码为服务器端错误,比如数据库操作失败
// 四开头的五位数错误编码为客户端错误,有时候是客户端代码写错了,有时候是用户操作错误
const (
// CodeCheckLogin 未登录
CodeCheckLogin = 401
// CodeNoRightErr 未授权访问
CodeNoRightErr = 403
// CodeDBError 数据库操作失败
CodeDBError = 50001
// CodeEncryptError 加密失败
CodeEncryptError = 50002
//CodeParamErr 各种奇奇怪怪的参数错误
CodeParamErr = 40001
)
// DBErr 数据库操作失败
func DBErr(msg string, err error) Response {
if msg == "" {
msg = "数据库操作失败"
}
return Err(CodeDBError, msg, err)
}
// ParamErr 各种参数错误
func ParamErr(msg string, err error) Response {
if msg == "" {
msg = "参数错误"
}
return Err(CodeParamErr, msg, err)
}
// Err 通用错误处理
func Err(errCode int, msg string, err error) Response {
res := Response{
Code: errCode,
Msg: msg,
}
// 生产环境隐藏底层报错
if err != nil && gin.Mode() != gin.ReleaseMode {
res.Error = err.Error()
}
return res
}

106
pkg/util/logger.go Normal file
View File

@@ -0,0 +1,106 @@
package util
import (
"fmt"
"os"
"time"
)
const (
// LevelError 错误
LevelError = iota
// LevelWarning 警告
LevelWarning
// LevelInformational 提示
LevelInformational
// LevelDebug 除错
LevelDebug
)
var logger *Logger
// Logger 日志
type Logger struct {
level int
}
// Println 打印
func (ll *Logger) Println(msg string) {
fmt.Printf("%s %s", time.Now().Format("2006-01-02 15:04:05 -0700"), msg)
}
// Panic 极端错误
func (ll *Logger) Panic(format string, v ...interface{}) {
if LevelError > ll.level {
return
}
msg := fmt.Sprintf("[Panic] "+format, v...)
ll.Println(msg)
os.Exit(0)
}
// Error 错误
func (ll *Logger) Error(format string, v ...interface{}) {
if LevelError > ll.level {
return
}
msg := fmt.Sprintf("[E] "+format, v...)
ll.Println(msg)
}
// Warning 警告
func (ll *Logger) Warning(format string, v ...interface{}) {
if LevelWarning > ll.level {
return
}
msg := fmt.Sprintf("[W] "+format, v...)
ll.Println(msg)
}
// Info 信息
func (ll *Logger) Info(format string, v ...interface{}) {
if LevelInformational > ll.level {
return
}
msg := fmt.Sprintf("[I] "+format, v...)
ll.Println(msg)
}
// Debug 校验
func (ll *Logger) Debug(format string, v ...interface{}) {
if LevelDebug > ll.level {
return
}
msg := fmt.Sprintf("[D] "+format, v...)
ll.Println(msg)
}
// BuildLogger 构建logger
func BuildLogger(level string) {
intLevel := LevelError
switch level {
case "error":
intLevel = LevelError
case "warning":
intLevel = LevelWarning
case "info":
intLevel = LevelInformational
case "debug":
intLevel = LevelDebug
}
l := Logger{
level: intLevel,
}
logger = &l
}
// Log 返回日志对象
func Log() *Logger {
if logger == nil {
l := Logger{
level: LevelDebug,
}
logger = &l
}
return logger
}