1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package pkg
- import (
- "errors"
- "log"
- "runtime"
- "strconv"
- "github.com/gin-gonic/gin"
- "github.com/google/uuid"
- "golang.org/x/crypto/bcrypt"
- "gorm.io/gorm"
- )
- const (
- TrafficKey = "X-Request-Id"
- LoggerKey = "_OAuth-logger-request"
- )
- func CompareHashAndPassword(e string, p string) (bool, error) {
- err := bcrypt.CompareHashAndPassword([]byte(e), []byte(p))
- if err != nil {
- return false, err
- }
- return true, nil
- }
- // Assert 条件断言
- // 当断言条件为 假 时触发 panic
- // 对于当前请求不会再执行接下来的代码,并且返回指定格式的错误信息和错误码
- func Assert(condition bool, msg string, code ...int) {
- if !condition {
- statusCode := 200
- if len(code) > 0 {
- statusCode = code[0]
- }
- panic("CustomError#" + strconv.Itoa(statusCode) + "#" + msg)
- }
- }
- // HasError 错误断言
- // 当 error 不为 nil 时触发 panic
- // 对于当前请求不会再执行接下来的代码,并且返回指定格式的错误信息和错误码
- // 若 msg 为空,则默认为 error 中的内容
- func HasError(err error, msg string, code ...int) {
- if err != nil {
- statusCode := 200
- if len(code) > 0 {
- statusCode = code[0]
- }
- if msg == "" {
- msg = err.Error()
- }
- _, file, line, _ := runtime.Caller(1)
- log.Printf("%s:%v error: %#v", file, line, err)
- panic("CustomError#" + strconv.Itoa(statusCode) + "#" + msg)
- }
- }
- // GenerateMsgIDFromContext 生成msgID
- func GenerateMsgIDFromContext(c *gin.Context) string {
- requestId := c.GetHeader(TrafficKey)
- if requestId == "" {
- requestId = uuid.New().String()
- c.Header(TrafficKey, requestId)
- }
- return requestId
- }
- // GetOrm 获取orm连接
- func GetOrm(c *gin.Context) (*gorm.DB, error) {
- idb, exist := c.Get("db")
- if !exist {
- return nil, errors.New("db connect not exist")
- }
- switch idb.(type) {
- case *gorm.DB:
- //新增操作
- return idb.(*gorm.DB), nil
- default:
- return nil, errors.New("db connect not exist")
- }
- }
|