diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index d52c6a4fa..dab6a86df 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -5921,14 +5921,14 @@ func UpdateStoreRelInformation(ctx *jxcontext.Context) error { case 0: //(1)仓库以及电子围栏 if bindWarehouse, err := tiktok_store.GetWarehouseByStore(i, m); err != nil { errList.AddErr(fmt.Errorf("同步任务: 获取门店(%s)绑定的仓库以及电子围栏失败:%v", n, err)) - } else if len(bindWarehouse[utils.Str2Int64(i)][0].OutFenceIds) > 0 { - for _, s := range bindWarehouse[utils.Str2Int64(i)][0].OutFenceIds { + } else if len(bindWarehouse[i][0].OutFenceIds) > 0 { + for _, s := range bindWarehouse[i][0].OutFenceIds { if s == n { FreightTemplate.FenceID = s } } } else { - FreightTemplate.WarehouseID = bindWarehouse[utils.Str2Int64(i)][0].WarehouseId + FreightTemplate.WarehouseID = bindWarehouse[i][0].WarehouseId } case 1: //(2)运费模板 if bindFreightIDs, err := tiktok_store.GetStoreFreight(i, m); err != nil { @@ -5971,36 +5971,26 @@ func UpdateStoreRelInformation(ctx *jxcontext.Context) error { } //获取抖店门店建议范围 (即电子围栏) -func GetDDScope(ctx *jxcontext.Context, storeID int, vendorStoreID string) (warehouse_getFences_response.FencesItem, error) { - var ( - data warehouse_getFences_response.FencesItem - ) +func GetDDScope(ctx *jxcontext.Context, storeID int, vendorStoreID string) ([]warehouse_getFences_response.FencesItem, error) { if storeID == 0 || len(vendorStoreID) == 0 { - return data, errors.New("storeID,vendorStoreID 必填") + return nil, errors.New("storeID,vendorStoreID 必填") } - storeMap, err := GetVendorOrgCode(ctx, dao.GetDB(), storeID, model.VendorIDDD, vendorStoreID) - if err != nil { - return data, errors.New(fmt.Sprintf("获取vendorOrgCode失败,请检查数据或重试:%v", err)) - } - globals.SugarLogger.Debug("storeMap[0].VendorOrgCode=================%d", storeMap[0].VendorOrgCode) - bindWarehouse, err := tiktok_store.GetWarehouseByStore(storeMap[0].VendorOrgCode, utils.Str2Int64(vendorStoreID)) - if err != nil { - return data, errors.New(fmt.Sprintf("获取门店(%d) 绑定fenceID失败:%v", storeID, err)) - } - if utils.IsNil(bindWarehouse) || len(bindWarehouse) == 0 { - return data, nil + if storeMap, err := GetVendorOrgCode(ctx, dao.GetDB(), storeID, model.VendorIDDD, vendorStoreID); err != nil { + return nil, errors.New(fmt.Sprintf("获取vendorOrgCode失败,请检查数据或重试:%v", err)) } else { - globals.SugarLogger.Debug("bindWarehouse[int64(storeID)][utils.Str2Int(vendorStoreID)].OutFenceIds====%v", bindWarehouse[utils.Str2Int64(vendorStoreID)][0].OutFenceIds) - if utils.IsNil(bindWarehouse[utils.Str2Int64(vendorStoreID)][0].OutFenceIds) || len(bindWarehouse[utils.Str2Int64(vendorStoreID)][0].OutFenceIds) == 0 { - return data, nil + if bind, err := tiktok_store.GetWarehouseByStore(storeMap[0].VendorOrgCode, utils.Str2Int64(vendorStoreID)); err != nil { + return nil, errors.New(fmt.Sprintf("获取门店(%d) 仓库以及电子围栏信息失败:%v", storeID, err)) } else { - resp, err := tiktok_store.GetFence(storeMap[0].VendorOrgCode, bindWarehouse[utils.Str2Int64(vendorStoreID)][0].OutFenceIds[0]) - if err != nil { - return data, errors.New(fmt.Sprintf("获取门店(%d) 电子围栏失败:%v", storeID, err)) + if len(bind) != 0 && len(bind[vendorStoreID][0].OutFenceIds) != 0 { + if resp, err := tiktok_store.GetFence(storeMap[0].VendorOrgCode, bind[vendorStoreID][0].OutFenceIds); err != nil { + return nil, errors.New(fmt.Sprintf("获取门店(%d) 电子围栏失败:%v", storeID, err)) + } else { + return resp, nil + } } - return resp, nil } } + return nil, nil } //获取 VendorOrgCode @@ -6024,6 +6014,7 @@ func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error endStr = "" db = dao.GetDB() errList = errlist.New() + ctx *jxcontext.Context FreightTemplate = &model.FreightTemplate{} ) for k, v := range relInfo { @@ -6043,29 +6034,28 @@ func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error endStr = tStr1 + "," + tStr2 globals.SugarLogger.Debugf("京西平台没有配送范围的门店ID=%s", endStr) } - //暂时逻辑直接使用storeID - if ifBindFence, err := tiktok_store.GetFence(k, i.StoreID); err == nil && len(ifBindFence.OutFenceId) != 0 { - tempFenceID = i.StoreID - } - if fenceID, err := tiktok_store.CreateFenceByStore(k, tempStoreID); err != nil || strings.Contains(fmt.Sprint(err), fmt.Sprint("该电子围栏已经存在,请使用修改接口")) { - if err1 := tiktok_store.UpdateFenceByStore(k, i.StoreID, utils.Str2Int(i.VendorStoreID)); err1 != nil { + if bindFence, err := GetDDScope(ctx, utils.Str2Int(i.StoreID), i.VendorStoreID); err == nil && utils.IsNil(bindFence) != true { + tempFenceID = bindFence[0].OutFenceId + if err1 := tiktok_store.UpdateFenceByStore(k, tempFenceID, utils.Str2Int(i.VendorStoreID)); err1 != nil { errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)更新电子围栏失败:%v", i.VendorStoreID, i.StoreID, err1)) - } else { - errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)创建电子围栏失败:%v", i.VendorStoreID, i.StoreID, err)) } - } else if utils.IsNil(fenceID) { - tempFenceID = fenceID - } - if err := tiktok_store.BindFenceByStore(k, tempVendorStoreID, []string{tempFenceID}); err != nil { - errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)绑定电子围栏失败:%v", i.VendorStoreID, i.StoreID, err)) + } else { + if fenceID, err := tiktok_store.CreateFenceByStore(k, tempStoreID); err != nil { + errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)创建电子围栏失败:%v", i.VendorStoreID, i.StoreID, err)) + } else if utils.IsNil(fenceID) { + if err := tiktok_store.BindFenceByStore(k, tempVendorStoreID, []string{fenceID}); err != nil { + errList.AddErr(fmt.Errorf("平台门店(%s),门店(%s)绑定电子围栏失败:%v", i.VendorStoreID, i.StoreID, err)) + } + } } } if err := dao.CreateEntity(db, FreightTemplate); err != nil { if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID"); err1 != nil { globals.SugarLogger.Debugf("db update storeID,vendorStoreID defeat on :%v", err1) - errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) + //errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) } else { - errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) + globals.SugarLogger.Debugf("db create storeID,vendorStoreID defeat on :%v", err1) + //errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) } } } diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index a94d3c936..a798c8db0 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -157,12 +157,8 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee db *dao.DaoDB ) //检查门店是否审核通过 - if remoteStore, err := getAPI(vendorOrgCode, int(storeID), utils.Int64ToStr(vendorStoreID)).GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{ - StoreId: vendorStoreID, - }); err == nil { - if remoteStore.StoreDetail.PoiAuditInfo.PoiAuditState != tiktok_api.PoiAuditStateSuccessBind { - return fmt.Errorf("门店%d 未审核通过,请通过后再进行绑定", storeID) - } + if IfAuditPass(vendorOrgCode, vendorStoreID) { + return fmt.Errorf("门店%d 未审核通过,请通过后再进行绑定", storeID) } //1.平台获取门店运费模板 if bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID); err != nil || bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误 @@ -272,7 +268,6 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee return nil } } - func CreateAndBindAllV2(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, minPrice int64) error { var ( db *dao.DaoDB @@ -407,9 +402,9 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin return fmt.Errorf("营业时间必填") } vendorStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ - StoreId: utils.Str2Int64(storeInfo.VendorStoreID), + StoreId: storeInfo.VendorStoreID, } - apiObj := getAPI(storeInfo.VendorOrgCode, storeID, utils.Int64ToStr(vendorStoreID.StoreId)) + apiObj := getAPI(storeInfo.VendorOrgCode, storeID, vendorStoreID.StoreId) if globals.EnableDdStoreWrite { remoteStoreInfo, err2 := apiObj.GetStoreDetail(vendorStoreID) if err2 != nil { @@ -454,7 +449,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin if err != nil { errList.AddErr(fmt.Errorf("获取门店(%d) 电子围栏失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err)) } - if len(bindWarehouseAndFence) == 0 || (len(bindWarehouseAndFence) != 0 && len(bindWarehouseAndFence[utils.Str2Int64(storeInfo.VendorStoreID)][0].OutFenceIds) == 0) { + if len(bindWarehouseAndFence) == 0 || (len(bindWarehouseAndFence) != 0 && len(bindWarehouseAndFence[storeInfo.VendorStoreID][0].OutFenceIds) == 0) { if fenceID, err := CreateFenceByStore(storeInfo.VendorOrgCode, int64(storeID)); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建 globals.SugarLogger.Debug("门店(%d) 创建电子围栏失败:%v", storeID, err) errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) @@ -468,7 +463,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } } else { //更新电子围栏 - outFenceID := bindWarehouseAndFence[utils.Str2Int64(storeInfo.VendorStoreID)][0].OutFenceIds[0] + outFenceID := bindWarehouseAndFence[storeInfo.VendorStoreID][0].OutFenceIds[0] //容错绑定 if err := BindFenceByStore(storeInfo.VendorOrgCode, utils.Str2Int64(storeInfo.VendorStoreID), []string{outFenceID}); err != nil { globals.SugarLogger.Debugf("门店(%d) 容错绑定电子围栏:%s失败:%v", storeID, outFenceID, err) @@ -512,7 +507,7 @@ func UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int } else { //恢复营业 //与平台上店铺状态对比 remoteStoreInfo, err2 := a.GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{ - StoreId: utils.Str2Int64(vendorStoreID), + StoreId: vendorStoreID, }) if err2 != nil { return err2 @@ -909,7 +904,7 @@ func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCod //获取门店状态 func (P *PurchaseHandler) GetStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string) (storeStatus int, err error) { if result, err := getAPI(vendorOrgCode, storeID, vendorStoreID).GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{ - StoreId: utils.Str2Int64(vendorStoreID), + StoreId: vendorStoreID, IsNeedChargeInfo: false, IsNeedPoiAuditInfo: false, IsNeedRelShopUser: false, @@ -971,7 +966,7 @@ func (P *PurchaseHandler) UpdateStoreLineStatus(ctx *jxcontext.Context, vendorOr return err } func (P *PurchaseHandler) ReadStore(ctx *jxcontext.Context, vendorOrgCode, vendorStoreID, vendorStoreName string) (store *dao.StoreDetail, err error) { - vendorStore, err := getAPI(vendorOrgCode, 0, "").GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{StoreId: utils.Str2Int64(vendorStoreID)}) + vendorStore, err := getAPI(vendorOrgCode, 0, "").GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{StoreId: vendorStoreID}) if err != nil { return nil, err } @@ -1064,3 +1059,16 @@ func HandleMunicipality(cityName string) bool { } return false } + +//判断门店是否审核通过 +func IfAuditPass(vendorOrgCode string, vendorStoreID int64) bool { + flag := false + if remoteStore, err := getAPI(vendorOrgCode, 0, " ").GetStoreDetail(&shop_getStoreDetail_request.ShopGetStoreDetailParam{ + StoreId: utils.Int64ToStr(vendorStoreID), + }); err == nil { + if remoteStore.StoreDetail.Store.PoiAuditState != tiktok_api.PoiAuditStateSuccessBind || remoteStore.StoreDetail.Store.State != tiktok_api.StoreStateSuccessBind || remoteStore.StoreDetail.Store.QualState != tiktok_api.QualStateCheckingPassed || remoteStore.StoreDetail.Store.RemitState != tiktok_api.RemitStateCheckingPassed || remoteStore.StoreDetail.Store.OpenAccountState != tiktok_api.OpenAccountStateOpen { + flag = true + } + } + return flag +} diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index 7ada46e1b..763b0a49b 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -90,11 +90,11 @@ func BindStoreWarehouse(VendorOrgCode, outWarehouseID string, storeIDs int64) er } // /warehouse/getWarehouseByStore 门店id获取绑定仓库详情包括电子围栏 -func GetWarehouseByStore(appOrgCode string, storeID int64) (map[int64][]warehouse_getWarehouseByStore_response.WarehouseInfoMapItem, error) { +func GetWarehouseByStore(appOrgCode string, storeID int64) (map[string][]*warehouse_getWarehouseByStore_response.WarehouseInfoMapItem, error) { if resp, err := getAPI(appOrgCode, 0, "").GetWarehouseByStore(storeID); err != nil { return nil, err } else { - return resp, nil + return resp.WarehouseInfoMap, nil } } @@ -235,14 +235,13 @@ func BindFenceByStore(appOrgCode string, storeID int64, addOutFenceIDs []string) } //获取电子围栏信息 -func GetFence(appOrgCode, outFenceID string) (warehouse_getFences_response.FencesItem, error) { - emptyResp := warehouse_getFences_response.FencesItem{} +func GetFence(appOrgCode string, outFenceID []string) ([]warehouse_getFences_response.FencesItem, error) { + emptyResp := []warehouse_getFences_response.FencesItem{} if resp, err := getAPI(appOrgCode, 0, "").GetFence(outFenceID); err != nil { return emptyResp, err } else { - return resp.Fences[0], nil + return resp.Fences, nil } - } //特殊处理