90 lines
1.6 KiB
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
|
|
}
|