- 特殊处理同步价格至平台出错,较大改动
This commit is contained in:
89
business/partner/partner_err.go
Normal file
89
business/partner/partner_err.go
Normal file
@@ -0,0 +1,89 @@
|
||||
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
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
@@ -306,6 +307,8 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
storeSku.EbaiSyncStatus = 0
|
||||
_, err = dao.UpdateEntity(nil, &storeSku.StoreSkuBind, updateFields...)
|
||||
}
|
||||
} else if isErrModifyPrice(err) {
|
||||
err = partner.NewErrorCode(err.Error(), partner.ErrCodeChangePriceFailed, model.VendorIDEBAI)
|
||||
}
|
||||
return nil, err
|
||||
}, storeSkuInfoList)
|
||||
|
||||
@@ -3,6 +3,8 @@ package jd
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/jdapi"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils"
|
||||
@@ -107,7 +109,7 @@ func (p *PurchaseHandler) syncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
if _, err = api.JdAPI.UpdateVendorStationPrice("", stationNo, skuPriceInfoList); err == nil {
|
||||
syncMask |= model.SyncFlagPriceMask
|
||||
} else {
|
||||
errList = append(errList, err)
|
||||
errList = append(errList, partner.NewErrorCode(err.Error(), partner.ErrCodeChangePriceFailed, model.VendorIDJD))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/tasksch"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
@@ -335,7 +336,7 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
}
|
||||
}
|
||||
if err != nil {
|
||||
if extErr, ok := err.(*utils.ErrorWithCode); ok && extErr.IntCode() == 1 && strings.Index(extErr.ErrMsg(), "折扣商品原价不允许修改") >= 0 {
|
||||
if isErrModifyPrice(err) {
|
||||
shouldCallSellStatus = true
|
||||
}
|
||||
}
|
||||
@@ -355,6 +356,8 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
if len(updateFields) > 0 {
|
||||
_, err = dao.UpdateEntity(db, storeSkuBind, updateFields...)
|
||||
}
|
||||
} else if isErrModifyPrice(err) {
|
||||
err = partner.NewErrorCode(err.Error(), partner.ErrCodeChangePriceFailed, model.VendorIDEBAI)
|
||||
}
|
||||
return nil, err
|
||||
}, skus)
|
||||
@@ -371,6 +374,18 @@ func (p *PurchaseHandler) SyncStoreSkus(ctx *jxcontext.Context, parentTask tasks
|
||||
return hint, err
|
||||
}
|
||||
|
||||
func isErrModifyPrice(err error) bool {
|
||||
if errExt, ok := err.(*utils.ErrorWithCode); ok && errExt.IntCode() == 1 {
|
||||
for _, v := range []string{
|
||||
"折扣商品原价不允许修改",
|
||||
} {
|
||||
if strings.Index(errExt.ErrMsg(), v) >= 0 {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
func (p *PurchaseHandler) RefreshStoresAllSkusID(ctx *jxcontext.Context, parentTask tasksch.ITask, isAsync bool, storeIDs []int) (hint string, err error) {
|
||||
return hint, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user