1
This commit is contained in:
@@ -3,6 +3,7 @@ package cms
|
|||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"git.rosy.net.cn/baseapi/platformapi/ebaiapi"
|
||||||
"github.com/astaxie/beego/server/web"
|
"github.com/astaxie/beego/server/web"
|
||||||
beego "github.com/astaxie/beego/server/web"
|
beego "github.com/astaxie/beego/server/web"
|
||||||
"regexp"
|
"regexp"
|
||||||
@@ -96,6 +97,24 @@ func SyncStoreCategories(ctx *jxcontext.Context, parentTask tasksch.ITask, vendo
|
|||||||
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
func(rootTask *tasksch.SeqTask, step int, params ...interface{}) (result interface{}, err error) {
|
||||||
level := step + 1
|
level := step + 1
|
||||||
catList, err := dao.GetDirtyStoreCategories(db, vendorID, storeID, level, skuIDs)
|
catList, err := dao.GetDirtyStoreCategories(db, vendorID, storeID, level, skuIDs)
|
||||||
|
|
||||||
|
// 保证下面api成功率添加校验
|
||||||
|
if vendorID == model.VendorIDEBAI {
|
||||||
|
status, err := api.EbaiAPI.ShopStatusGet("", utils.Str2Int64(vendorStoreID))
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
switch status {
|
||||||
|
case ebaiapi.ShopCheckStatusCheckSuccess:
|
||||||
|
|
||||||
|
case ebaiapi.ShopCheckStatusNew, ebaiapi.ShopCheckStatusWaitCheck, ebaiapi.ShopCheckStatusUpdateWaitCheck:
|
||||||
|
return nil, fmt.Errorf("门店审核中,请联系饿了么工作人员加快审核")
|
||||||
|
case ebaiapi.ShopCheckStatusGoLiveFail:
|
||||||
|
return nil, fmt.Errorf("门店上线审核失败,请联系饿了么工作人员加快审核")
|
||||||
|
case ebaiapi.ShopCheckStatusCheckFail:
|
||||||
|
return nil, fmt.Errorf("门店审核未通过")
|
||||||
|
}
|
||||||
|
}
|
||||||
if len(catList) > 0 {
|
if len(catList) > 0 {
|
||||||
num += len(catList)
|
num += len(catList)
|
||||||
task := tasksch.NewParallelTask(fmt.Sprintf("%s SyncStoreCategory step2, level=%d", model.VendorChineseNames[vendorID], level),
|
task := tasksch.NewParallelTask(fmt.Sprintf("%s SyncStoreCategory step2, level=%d", model.VendorChineseNames[vendorID], level),
|
||||||
|
|||||||
@@ -665,7 +665,7 @@ func (c *PurchaseHandler) AgreeOrRefuseCancel(ctx *jxcontext.Context, order *mod
|
|||||||
ReasonRemarks: reason,
|
ReasonRemarks: reason,
|
||||||
}
|
}
|
||||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||||
date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
date, _, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||||
for _, v := range date {
|
for _, v := range date {
|
||||||
v2 := v.(map[string]interface{})
|
v2 := v.(map[string]interface{})
|
||||||
refundProduct := &ebaiapi.RefundProductList{
|
refundProduct := &ebaiapi.RefundProductList{
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod
|
|||||||
ReasonRemarks: reason,
|
ReasonRemarks: reason,
|
||||||
}
|
}
|
||||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||||
date, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
date, _, _ := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||||
for _, v := range date {
|
for _, v := range date {
|
||||||
v2 := v.(map[string]interface{})
|
v2 := v.(map[string]interface{})
|
||||||
refundProduct := &ebaiapi.RefundProductList{
|
refundProduct := &ebaiapi.RefundProductList{
|
||||||
@@ -303,24 +303,19 @@ func (c *PurchaseHandler) PartRefundOrder(ctx *jxcontext.Context, order *model.G
|
|||||||
ReasonCode: "",
|
ReasonCode: "",
|
||||||
ReasonRemarks: reason,
|
ReasonRemarks: reason,
|
||||||
}
|
}
|
||||||
date, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
date, removerAll, err := api.EbaiAPI.GetReverseOrder(order.VendorOrderID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
refundProductList := make([]*ebaiapi.RefundProductList, 0, 0)
|
||||||
removerAll := false
|
|
||||||
if date != nil && len(date) != model.NO {
|
if date != nil && len(date) != model.NO {
|
||||||
for k, v := range date {
|
for _, v := range date {
|
||||||
v2 := v.(map[string]interface{})
|
v2 := v.(map[string]interface{})
|
||||||
refundProduct := &ebaiapi.RefundProductList{
|
refundProduct := &ebaiapi.RefundProductList{
|
||||||
SubBizOrderId: v2["sub_biz_order_id"].(string),
|
SubBizOrderId: v2["sub_biz_order_id"].(string),
|
||||||
PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)),
|
PlatformSkuId: utils.Int64ToStr(utils.Interface2Int64WithDefault(v2["platform_sku_id"], 0)),
|
||||||
}
|
}
|
||||||
// 全退
|
|
||||||
if k == model.NO && utils.MustInterface2Int64(v2["is_refund_all"]) == model.YES {
|
|
||||||
removerAll = true
|
|
||||||
}
|
|
||||||
switch utils.MustInterface2Int64(v2["fund_calculate_type"]) {
|
switch utils.MustInterface2Int64(v2["fund_calculate_type"]) {
|
||||||
case 0:
|
case 0:
|
||||||
refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"]))
|
refundProduct.Number = utils.Int64ToStr(utils.MustInterface2Int64(v2["refund_quantity"]))
|
||||||
@@ -359,9 +354,22 @@ func orderSkus2AfsSkus(refundSkuList []*model.OrderSku) (removeSkuList []*ebaiap
|
|||||||
|
|
||||||
func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, afsOrderID string) (orderAfsInfo *partner.OrderAfsInfo, err error) {
|
func (c *PurchaseHandler) GetOrderAfsInfo(ctx *jxcontext.Context, vendorOrderID, afsOrderID string) (orderAfsInfo *partner.OrderAfsInfo, err error) {
|
||||||
orderAfsInfo = &partner.OrderAfsInfo{}
|
orderAfsInfo = &partner.OrderAfsInfo{}
|
||||||
if result, err := api.EbaiAPI.OrderPartRefundGet(vendorOrderID); err == nil {
|
result, _, err := api.EbaiAPI.GetReverseOrder(vendorOrderID)
|
||||||
|
if err == nil {
|
||||||
orderAfsInfo.VendorOrderID = vendorOrderID
|
orderAfsInfo.VendorOrderID = vendorOrderID
|
||||||
orderAfsInfo.AfsTotalShopMoney = utils.MustInterface2Int64(result["shop_fee"])
|
var afsTotalShopMoney int64 = 0
|
||||||
|
for _, v := range result {
|
||||||
|
v2 := v.(map[string]interface{})
|
||||||
|
afsTotalShopMoney += utils.MustInterface2Int64(v2["refund_user_amount"])
|
||||||
|
}
|
||||||
|
orderAfsInfo.AfsTotalShopMoney = afsTotalShopMoney
|
||||||
}
|
}
|
||||||
return orderAfsInfo, err
|
return orderAfsInfo, err
|
||||||
|
|
||||||
|
//orderAfsInfo = &partner.OrderAfsInfo{}
|
||||||
|
//if result, err := api.EbaiAPI.OrderPartRefundGet(vendorOrderID) ;err == nil {
|
||||||
|
// orderAfsInfo.VendorOrderID = vendorOrderID
|
||||||
|
// orderAfsInfo.AfsTotalShopMoney = utils.MustInterface2Int64(result["shop_fee"])
|
||||||
|
//}
|
||||||
|
//return orderAfsInfo, err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,8 +342,7 @@ func (p *PurchaseHandler) RefreshAllStoresID(ctx *jxcontext.Context, parentTask
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
fBaiduIDs, fShopIDs, err1 := FilterStoreRel(baiduShopIDs)
|
fBaiduIDs, fShopIDs, _ := FilterStoreRel(baiduShopIDs)
|
||||||
globals.SugarLogger.Debugf("RefreshAllStoresID FilterStoreRel fBaiduIDs====%d fShopIDs====%d err====%v", fBaiduIDs, fShopIDs, err1)
|
|
||||||
err = api.EbaiAPI.ShopIDBatchUpdate(fBaiduIDs, fShopIDs)
|
err = api.EbaiAPI.ShopIDBatchUpdate(fBaiduIDs, fShopIDs)
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|||||||
@@ -187,6 +187,10 @@ func (p *PurchaseHandler) UpdateStoreCategory(ctx *jxcontext.Context, storeID in
|
|||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
if catName, catSeq, isCheck := getCheckExdStoreNameAndSeq(storeID, storeCat); !isCheck {
|
if catName, catSeq, isCheck := getCheckExdStoreNameAndSeq(storeID, storeCat); !isCheck {
|
||||||
err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(catName), jxCatSeq2Ebai(catSeq))
|
err = api.EbaiAPI.ShopCategoryUpdate(utils.Int2Str(storeID), utils.Str2Int64WithDefault(storeCat.VendorCatID, 0), formatCatName(catName), jxCatSeq2Ebai(catSeq))
|
||||||
|
// 修改分类时错误:自定义分类ID(category_id)不存在(降低api调用错误)
|
||||||
|
if err != nil && strings.Contains(err.Error(), "自定义分类ID(category_id)不存在") {
|
||||||
|
dao.SetStoreCategorySyncStatus(dao.GetDB(), model.VendorIDEBAI, []int{storeID}, []int{storeCat.StoreCatID}, 2)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作
|
// todo, 饿百将一个分类重复改名,也会报分类名重复错,特殊处理一下,不过因为GetStoreCategory其实会拉取所有的门店分类,是比较耗时的操作
|
||||||
if utils.IsErrMatch(err, "1", []string{"分类名称已经存在"}) {
|
if utils.IsErrMatch(err, "1", []string{"分类名称已经存在"}) {
|
||||||
@@ -231,8 +235,19 @@ func (p *PurchaseHandler) updateStoreSkus(ctx *jxcontext.Context, storeID int, v
|
|||||||
_, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params)
|
_, err = api.EbaiAPI.SkuUpdate(ctx.GetTrackInfo(), strStoreID, utils.Str2Int64(storeSku.VendorSkuID), params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息")
|
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品基础信息")
|
||||||
|
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||||
|
if strings.Contains(err.Error(), "sku不存在") {
|
||||||
|
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||||
|
param := []interface{}{storeID, storeSku.SkuID}
|
||||||
|
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||||
|
} else if strings.Contains(err.Error(), "商品禁止售卖不允许上架,请去商品审核模块进行修改") {
|
||||||
|
sql := ` UPDATE store_sku_bind SET ebai_sync_status = 0 WHERE store_id = ? AND sku_id = ?`
|
||||||
|
param := []interface{}{storeID, storeSku.SkuID}
|
||||||
|
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||||
}
|
}
|
||||||
if ebaiExSkuCatMap[storeSku.SkuID] == 0 && ebaiExSkuCatMap2[storeSku.SkuID] == 0 && ebaiExSkuCatMap3[storeSku.SkuID] == 0 {
|
}
|
||||||
|
|
||||||
|
if ebaiExSkuCatMap[storeSku.SkuID] == 0 && ebaiExSkuCatMap2[storeSku.SkuID] == 0 && ebaiExSkuCatMap3[storeSku.SkuID] == 0 && err == nil {
|
||||||
if isNeedMapCat && !isExd {
|
if isNeedMapCat && !isExd {
|
||||||
utils.CallFuncAsync(func() {
|
utils.CallFuncAsync(func() {
|
||||||
api.EbaiAPI.SkuShopCategoryMap(strStoreID, utils.Str2Int64(storeSku.VendorSkuID), "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku))
|
api.EbaiAPI.SkuShopCategoryMap(strStoreID, utils.Str2Int64(storeSku.VendorSkuID), "", utils.Str2Int64(storeSku.VendorCatID), genSkuCatRank(storeSku))
|
||||||
@@ -315,7 +330,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
vendorSkuIDs := partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList()
|
vendorSkuIDs := partner.BareStoreSkuInfoList(storeSkuList).GetVendorSkuIDIntList()
|
||||||
if globals.EnableEbaiStoreWrite {
|
if globals.EnableEbaiStoreWrite {
|
||||||
var opResult *ebaiapi.BatchOpResult
|
var opResult *ebaiapi.BatchOpResult
|
||||||
if status == model.SkuStatusNormal {
|
if status == model.SkuStatusNormal { // 可售上架
|
||||||
if len(vendorSkuIDs) > 1 {
|
if len(vendorSkuIDs) > 1 {
|
||||||
opResult, err = api.EbaiAPI.SkuOnline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
opResult, err = api.EbaiAPI.SkuOnline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||||
} else if len(vendorSkuIDs) == 1 {
|
} else if len(vendorSkuIDs) == 1 {
|
||||||
@@ -325,7 +340,7 @@ func (p *PurchaseHandler) UpdateStoreSkusStatus(ctx *jxcontext.Context, vendorOr
|
|||||||
}
|
}
|
||||||
return failedList, err
|
return failedList, err
|
||||||
}
|
}
|
||||||
} else {
|
} else { // 下架
|
||||||
if len(vendorSkuIDs) > 1 {
|
if len(vendorSkuIDs) > 1 {
|
||||||
opResult, err = api.EbaiAPI.SkuOffline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
opResult, err = api.EbaiAPI.SkuOffline(ctx.GetTrackInfo(), utils.Int2Str(storeID), vendorSkuIDs, nil, nil)
|
||||||
} else if len(vendorSkuIDs) == 1 {
|
} else if len(vendorSkuIDs) == 1 {
|
||||||
@@ -389,6 +404,12 @@ func (p *PurchaseHandler) UpdateStoreSkusStock(ctx *jxcontext.Context, vendorOrg
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品库存")
|
failedList = putils.GetErrMsg2FailedSingleList(storeSkuList, err, storeID, model.VendorChineseNames[model.VendorIDEBAI], "更新商品库存")
|
||||||
}
|
}
|
||||||
|
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||||
|
if err != nil && strings.Contains(err.Error(), "商品不存在") {
|
||||||
|
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||||
|
param := []interface{}{storeID, storeSkuList[0].SkuID}
|
||||||
|
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
err = nil
|
err = nil
|
||||||
}
|
}
|
||||||
@@ -677,6 +698,12 @@ func SelectStoreSkuListByOpResult(storeSkuList []*partner.StoreSkuInfo, opResult
|
|||||||
VendoreName: vendorName,
|
VendoreName: vendorName,
|
||||||
SyncType: syncType,
|
SyncType: syncType,
|
||||||
}
|
}
|
||||||
|
// 本地商品存在饿百商品id,但是平台不存在该商品
|
||||||
|
if strings.Contains(opResultMap[utils.Str2Int64(v.VendorSkuID)], "商品不存在") {
|
||||||
|
sql := ` UPDATE store_sku_bind SET ebai_id = 0,ebai_sync_status = 2 WHERE store_id = ? AND sku_id = ?`
|
||||||
|
param := []interface{}{storeID, v.SkuID}
|
||||||
|
dao.ExecuteSQL(dao.GetDB(), sql, param...)
|
||||||
|
}
|
||||||
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
selectedStoreSkuList = append(selectedStoreSkuList, opFailed)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user