- putils/store_sku.go用于一些通用实现
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
@@ -16,15 +17,22 @@ var (
|
||||
|
||||
type PurchaseHandler struct {
|
||||
partner.BasePurchasePlatform
|
||||
putils.DefSingleStorePlatform
|
||||
}
|
||||
|
||||
func init() {
|
||||
if api.EbaiAPI != nil {
|
||||
CurPurchaseHandler = new(PurchaseHandler)
|
||||
CurPurchaseHandler = New()
|
||||
partner.RegisterPurchasePlatform(CurPurchaseHandler)
|
||||
}
|
||||
}
|
||||
|
||||
func New() (obj *PurchaseHandler) {
|
||||
obj = new(PurchaseHandler)
|
||||
obj.ISingleStoreStoreSkuHandler = obj
|
||||
return obj
|
||||
}
|
||||
|
||||
func EbaiBusStatus2JxStatus(ebaiStatus int) int {
|
||||
if ebaiStatus == ebaiapi.ShopBusStatusHaveRest || ebaiStatus == ebaiapi.ShopBusStatusSuspended {
|
||||
return model.StoreStatusClosed
|
||||
|
||||
@@ -199,52 +199,6 @@ func genSkuParamsFromStoreSkuInfo2(storeSku *dao.StoreSkuSyncInfo) (params map[s
|
||||
return params
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreSkusBareInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, inStoreSkuList []*partner.StoreSkuInfo) (outStoreSkuList []*partner.StoreSkuInfo, err error) {
|
||||
vendorSkuIDIntList := partner.BareStoreSkuInfoList(inStoreSkuList).GetVendorSkuIDIntList()
|
||||
var vendorSkuList []*ebaiapi.SkuInfo
|
||||
if len(vendorSkuIDIntList) > 1 {
|
||||
task := tasksch.NewParallelTask("获取饿百平台门店商品信息", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
vendorSkuID := batchItemList[0].(int64)
|
||||
skuInfo, err := api.EbaiAPI.SkuList(utils.Int2Str(storeID), &ebaiapi.SkuListParams{
|
||||
SkuID: vendorSkuID,
|
||||
})
|
||||
if err == nil {
|
||||
vendorSkuList = skuInfo.List
|
||||
return skuInfo.List, nil
|
||||
}
|
||||
return nil, err
|
||||
}, vendorSkuIDIntList)
|
||||
tasksch.HandleTask(task, parentTask, false).Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else if len(vendorSkuIDIntList) == 1 {
|
||||
skuInfo, err2 := api.EbaiAPI.SkuList(utils.Int2Str(storeID), &ebaiapi.SkuListParams{
|
||||
SkuID: vendorSkuIDIntList[0],
|
||||
})
|
||||
if err = err2; err == nil {
|
||||
vendorSkuList = skuInfo.List
|
||||
}
|
||||
} else {
|
||||
return nil, nil
|
||||
}
|
||||
if err == nil {
|
||||
storeSkuMap := make(map[int64]*partner.StoreSkuInfo)
|
||||
for _, v := range inStoreSkuList {
|
||||
storeSkuMap[utils.Str2Int64(v.VendorSkuID)] = v
|
||||
}
|
||||
for _, vendorSku := range vendorSkuList {
|
||||
storeSku := storeSkuMap[vendorSku.SkuID]
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(storeSku, false))
|
||||
storeSku.Stock = vendorSku.LeftNum
|
||||
storeSku.Price = vendorSku.SalePrice
|
||||
storeSku.Status = ebaiSkuStatus2Jx(vendorSku.Status)
|
||||
|
||||
outStoreSkuList = append(outStoreSkuList, storeSku)
|
||||
}
|
||||
}
|
||||
return outStoreSkuList, err
|
||||
}
|
||||
|
||||
func ebaiSkuStatus2Jx(ebaiSkuStatus int) (jxSkuStatus int) {
|
||||
if ebaiSkuStatus == ebaiapi.SkuStatusOnline {
|
||||
jxSkuStatus = model.SkuStatusNormal
|
||||
|
||||
@@ -7,11 +7,34 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
)
|
||||
|
||||
func TestGetStoreAllSkus(t *testing.T) {
|
||||
skuNameList, err := new(PurchaseHandler).GetStoreSkusFullInfo(jxcontext.AdminCtx, nil, testShopID, testShopBaiduID, []int{4256})
|
||||
func TestGetStoreSkusFullInfo(t *testing.T) {
|
||||
skuNameList, err := CurPurchaseHandler.GetStoreSkusFullInfo(jxcontext.AdminCtx, nil, testShopID, testShopBaiduID, []int{4256})
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
t.Log(utils.Format4Output(skuNameList, false))
|
||||
t.Log(len(skuNameList))
|
||||
}
|
||||
|
||||
func TestGetStoreSkusBareInfo(t *testing.T) {
|
||||
storeSkuList, err := CurPurchaseHandler.GetStoreSkusBareInfo(jxcontext.AdminCtx, nil, testShopID, testShopBaiduID, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
t.Log(utils.Format4Output(storeSkuList, false))
|
||||
t.Log(len(storeSkuList))
|
||||
}
|
||||
|
||||
func TestDeleteStoreAllSkus(t *testing.T) {
|
||||
err := CurPurchaseHandler.DeleteStoreAllSkus(jxcontext.AdminCtx, nil, testShopID, testShopBaiduID, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteStoreAllCategories(t *testing.T) {
|
||||
err := CurPurchaseHandler.DeleteStoreAllCategories(jxcontext.AdminCtx, nil, testShopID, testShopBaiduID, true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"git.rosy.net.cn/jx-callback/business/jxutils/jxcontext"
|
||||
"git.rosy.net.cn/jx-callback/business/model"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/business/partner/putils"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
)
|
||||
|
||||
@@ -19,15 +20,22 @@ var (
|
||||
|
||||
type PurchaseHandler struct {
|
||||
partner.BasePurchasePlatform
|
||||
putils.DefSingleStorePlatform
|
||||
}
|
||||
|
||||
func init() {
|
||||
if api.MtwmAPI != nil {
|
||||
curPurchaseHandler = new(PurchaseHandler)
|
||||
curPurchaseHandler = New()
|
||||
partner.RegisterPurchasePlatform(curPurchaseHandler)
|
||||
}
|
||||
}
|
||||
|
||||
func New() (obj *PurchaseHandler) {
|
||||
obj = new(PurchaseHandler)
|
||||
obj.ISingleStoreStoreSkuHandler = obj
|
||||
return obj
|
||||
}
|
||||
|
||||
func (c *PurchaseHandler) GetVendorID() int {
|
||||
return model.VendorIDMTWM
|
||||
}
|
||||
|
||||
@@ -237,47 +237,6 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, storeID i
|
||||
return err
|
||||
}
|
||||
|
||||
func (p *PurchaseHandler) GetStoreSkusBareInfo(ctx *jxcontext.Context, parentTask tasksch.ITask, storeID int, vendorStoreID string, inStoreSkuList []*partner.StoreSkuInfo) (outStoreSkuList []*partner.StoreSkuInfo, err error) {
|
||||
vendorSkuIDList := partner.BareStoreSkuInfoList(inStoreSkuList).GetVendorSkuIDList()
|
||||
var vendorFoodList []*mtwmapi.AppFood
|
||||
if len(vendorSkuIDList) > 1 {
|
||||
task := tasksch.NewParallelTask("获取饿百平台门店商品信息", nil, ctx,
|
||||
func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
|
||||
vendorSkuID := batchItemList[0].(string)
|
||||
skuInfo, err := api.MtwmAPI.RetailGet(vendorStoreID, vendorSkuID)
|
||||
if err == nil {
|
||||
vendorFoodList = []*mtwmapi.AppFood{skuInfo}
|
||||
return vendorFoodList, nil
|
||||
}
|
||||
return nil, err
|
||||
}, vendorSkuIDList)
|
||||
tasksch.HandleTask(task, parentTask, false).Run()
|
||||
_, err = task.GetResult(0)
|
||||
} else if len(vendorSkuIDList) == 1 {
|
||||
skuInfo, err2 := api.MtwmAPI.RetailGet(vendorStoreID, vendorSkuIDList[0])
|
||||
if err = err2; err == nil {
|
||||
vendorFoodList = []*mtwmapi.AppFood{skuInfo}
|
||||
}
|
||||
} else {
|
||||
return nil, nil
|
||||
}
|
||||
if err == nil {
|
||||
storeSkuMap := make(map[string]*partner.StoreSkuInfo)
|
||||
for _, v := range inStoreSkuList {
|
||||
storeSkuMap[v.VendorSkuID] = v
|
||||
}
|
||||
for _, foodInfo := range vendorFoodList {
|
||||
vendorSku := foodInfo.SkuList[0]
|
||||
storeSku := storeSkuMap[vendorSku.SkuID]
|
||||
storeSku.Stock = int(utils.Str2Int64WithDefault(vendorSku.Stock, 0))
|
||||
storeSku.Price = jxutils.StandardPrice2Int(utils.Str2Float64WithDefault(vendorSku.Price, 0))
|
||||
storeSku.Status = mtwmSkuStatus2Jx(foodInfo.IsSoldOut)
|
||||
outStoreSkuList = append(outStoreSkuList, storeSku)
|
||||
}
|
||||
}
|
||||
return outStoreSkuList, err
|
||||
}
|
||||
|
||||
func mtwmSkuStatus2Jx(mtwmSkuStatus int) (jxSkuStatus int) {
|
||||
if mtwmSkuStatus == 0 {
|
||||
jxSkuStatus = model.SkuStatusNormal
|
||||
@@ -326,7 +285,7 @@ func vendorSku2Jx(vendorSku *mtwmapi.AppFood) (skuName *partner.SkuNameInfo) {
|
||||
VendorSkuID: mtwmSku.SkuID,
|
||||
SkuID: int(utils.Str2Int64WithDefault(mtwmSku.SkuID, 0)),
|
||||
|
||||
Stock: int(utils.Str2Int64WithDefault(mtwmSku.Stock, 0)),
|
||||
Stock: int(utils.Str2Int64WithDefault(mtwmSku.Stock, partner.UnlimitedStoreSkuStock)),
|
||||
Price: jxutils.StandardPrice2Int(utils.Str2Float64WithDefault(mtwmSku.Price, 0)),
|
||||
Status: mtwmSkuStatus2Jx(vendorSku.IsSoldOut),
|
||||
},
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
// _ "git.rosy.net.cn/jx-callback/business/jxcallback/orderman"
|
||||
)
|
||||
|
||||
func TestGetStoreAllSkus(t *testing.T) {
|
||||
func TestGetStoreSkusFullInfo(t *testing.T) {
|
||||
skuNameList, err := new(PurchaseHandler).GetStoreSkusFullInfo(jxcontext.AdminCtx, nil, 2, "2523687", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
@@ -16,3 +16,26 @@ func TestGetStoreAllSkus(t *testing.T) {
|
||||
t.Log(utils.Format4Output(skuNameList, false))
|
||||
t.Log(len(skuNameList))
|
||||
}
|
||||
|
||||
func TestGetStoreSkusBareInfo(t *testing.T) {
|
||||
storeSkuList, err := curPurchaseHandler.GetStoreSkusBareInfo(jxcontext.AdminCtx, nil, 2, "2523687", nil)
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
}
|
||||
t.Log(utils.Format4Output(storeSkuList, false))
|
||||
t.Log(len(storeSkuList))
|
||||
}
|
||||
|
||||
func TestDeleteStoreAllSkus(t *testing.T) {
|
||||
err := curPurchaseHandler.DeleteStoreAllSkus(jxcontext.AdminCtx, nil, 2, "2523687", true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeleteStoreAllCategories(t *testing.T) {
|
||||
err := curPurchaseHandler.DeleteStoreAllCategories(jxcontext.AdminCtx, nil, 2, "2523687", true)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user