- 特殊处理同步价格至平台出错,较大改动

This commit is contained in:
gazebo
2019-06-06 15:01:48 +08:00
parent 89451ede5f
commit a66d69a265
10 changed files with 214 additions and 66 deletions

View 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
}

View File

@@ -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)

View File

@@ -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))
}
}
}

View File

@@ -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
}