Files
jx-callback/business/partner/partner_err.go

90 lines
1.6 KiB
Go

package partner
import (
"fmt"
"git.rosy.net.cn/jx-callback/business/model"
)
const (
ErrCodeUnknown = 1
ErrCodeChangePriceFailed = 100
)
type ErrorWithCode struct {
errMsg string
intCode int
vendorID int
storeID int
skuID int
}
func NewErrorCode(errMsg string, code, vendorID int) *ErrorWithCode {
retVal := &ErrorWithCode{
errMsg: errMsg,
intCode: code,
vendorID: vendorID,
}
return retVal
}
func (e *ErrorWithCode) SetStoreID(storeID int) {
e.storeID = storeID
}
func (e *ErrorWithCode) SetSkuID(skuID int) {
e.skuID = skuID
}
func (e *ErrorWithCode) Error() string {
return fmt.Sprintf("平台:%s, code:%d, %s", model.VendorChineseNames[e.VendorID()], e.intCode, e.errMsg)
}
func (e *ErrorWithCode) String() string {
return e.Error()
}
func (e *ErrorWithCode) Code() int {
return e.intCode
}
func (e *ErrorWithCode) ErrMsg() string {
return e.errMsg
}
func (e *ErrorWithCode) VendorID() int {
return e.vendorID
}
func (e *ErrorWithCode) StoreID() int {
return e.storeID
}
func (e *ErrorWithCode) SkuID() int {
return e.skuID
}
func IsErrChangePriceFailed(err error) *ErrorWithCode {
if vendorErr, ok := err.(*ErrorWithCode); ok && vendorErr.Code() == ErrCodeChangePriceFailed {
return vendorErr
}
return nil
}
func IsErrVendorError(err error) *ErrorWithCode {
if vendorErr, ok := err.(*ErrorWithCode); ok {
return vendorErr
}
return nil
}
func AddVendorInfo2Err(inErr error, vendorID int) (outErr error) {
outErr = inErr
if inErr != nil {
if IsErrVendorError(inErr) == nil {
outErr = NewErrorCode(inErr.Error(), ErrCodeUnknown, vendorID)
}
}
return outErr
}