enterprise/common/session/base.go

112 lines
2.0 KiB
Go
Raw Normal View History

2025-03-06 17:45:28 +08:00
package session
import (
"encoding/json"
"enterprise/common/config"
"github.com/smbrave/goutil"
"reflect"
)
type BaseResponse struct {
Code int `json:"code"`
Message string `json:"message"`
}
type CommonResponse struct {
BaseResponse
Data interface{} `json:"data"`
}
type RawResponse struct {
BaseResponse
Data json.RawMessage `json:"data"`
}
type ListResponse struct {
BaseResponse
Data struct {
Total int64 `json:"total"`
TotalAmount string `json:"total_amount,omitempty"`
TotalSize string `json:"total_size,omitempty"`
Items interface{} `json:"items"`
} `json:"data,omitempty"`
}
var (
rspOk *BaseResponse
)
func init() {
rspOk = new(BaseResponse)
rspOk.Message = "OK"
rspOk.Code = 0
}
func NewRspOk() *BaseResponse {
return rspOk
}
func NewRawRsp(raw []byte) *RawResponse {
rsp := &RawResponse{
BaseResponse: BaseResponse{
Code: rspOk.Code,
Message: rspOk.Message,
},
}
rsp.Data = raw
return rsp
}
func NewListRsp(total int64, items interface{}) *ListResponse {
rsp := &ListResponse{
BaseResponse: BaseResponse{
Code: rspOk.Code,
Message: rspOk.Message,
},
}
rsp.Data.Total = total
rsp.Data.Items = items
return rsp
}
func NewListSizeRsp(total int64, totalSize int64, items interface{}) *ListResponse {
rsp := &ListResponse{
BaseResponse: BaseResponse{
Code: rspOk.Code,
Message: rspOk.Message,
},
}
rsp.Data.Total = total
rsp.Data.TotalSize = goutil.FormatBytes(totalSize)
rsp.Data.Items = items
return rsp
}
func NewRsp(data interface{}) *CommonResponse {
return &CommonResponse{
BaseResponse: BaseResponse{
Code: rspOk.Code,
Message: rspOk.Message,
},
Data: data,
}
}
func CheckDBError(err error) {
if err != nil {
panic(config.ErrDb.New().Append(err))
}
}
func CheckParamError(err error) {
if err != nil {
panic(config.ErrParam.New().Append(err))
}
}
func CheckNilError(data interface{}, args ...string) {
val := reflect.ValueOf(data)
if val.IsNil() {
panic(config.ErrNoData.New().Append(args))
}
}