diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index 17cf50281..98206754a 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -9,6 +9,7 @@ import ( "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/jx-callback/business/jxstore/common" "git.rosy.net.cn/jx-callback/business/jxstore/event" + "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" "io" "math" "mime/multipart" @@ -1543,7 +1544,10 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend err = ErrCanNotFindVendor } } + } else if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建 + err = tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID)) } + storeMapList, err := dao.GetStoresMapList2(db, []int{vendorID}, []int{storeID}, nil, model.StoreStatusAll, model.StoreIsSyncAll, "", "", "", true) if len(storeMapList) > 0 { _, err = CurVendorSync.SyncStore(ctx, db, storeMap.VendorID, storeID, false, userName) diff --git a/business/partner/delivery/tiktok_store/store.go b/business/partner/delivery/tiktok_store/store.go new file mode 100644 index 000000000..a05b4c7e0 --- /dev/null +++ b/business/partner/delivery/tiktok_store/store.go @@ -0,0 +1,19 @@ +package tiktok_store + +// +//func (c *DeliveryHandler) UpdateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (err error) { +// if globals.EnableStoreWrite { +// //info:=& +// +// shopInfo := &mtpsapi.ShopInfo{ +// ShopID: utils.Int2Str(storeDetail.ID), +// ContactName: storeDetail.PayeeName, +// ContactPhone: storeDetail.Tel1, +// ShopAddress: storeDetail.Address, +// ShopLat: storeDetail.Lat, +// ShopLng: storeDetail.Lng, +// } +// _, err = api.MtpsAPI.ShopUpdate(shopInfo) +// } +// return err +//} diff --git a/business/partner/delivery/tiktok_store/waybill.go b/business/partner/delivery/tiktok_store/waybill.go new file mode 100644 index 000000000..cb1f45e23 --- /dev/null +++ b/business/partner/delivery/tiktok_store/waybill.go @@ -0,0 +1,75 @@ +package tiktok_store + +// +//import ( +// "git.rosy.net.cn/baseapi/platformapi/mtpsapi" +// "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" +// "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/api" +//) +// +//var ( +// curDeliveryHandler *DeliveryHandler +//) +// +//type DeliveryHandler struct { +//} +// +//func init() { +// if api.TiktokStore != nil { +// curDeliveryHandler = new(DeliveryHandler) +// partner.RegisterDeliveryPlatform(curDeliveryHandler, true) +// } +//} +// +//func (c *DeliveryHandler) GetVendorID() int { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) CreateStore(ctx *jxcontext.Context, storeDetail *dao.StoreDetail2) (vendorStoreID string, status int, err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) GetStore(ctx *jxcontext.Context, storeID int, vendorStoreID string) (storeDetail *dao.StoreDetail2, err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) IsErrStoreNotExist(err error) bool { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) IsErrStoreExist(err error) bool { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) CreateWaybill(order *model.GoodsOrder, maxDeliveryFee int64) (bill *model.Waybill, err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) CancelWaybill(bill *model.Waybill, cancelReasonID int, cancelReason string) (err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) GetWaybillFee(order *model.GoodsOrder) (deliveryFeeInfo *partner.WaybillFeeInfo, err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) ComplaintRider(bill *model.Waybill, resonID int, resonContent string) (err error) { +// //TODO implement me +// panic("implement me") +//} +// +//func (c *DeliveryHandler) GetRiderInfo(orderId string, deliveryId int64, mtPeisongId string) (rider *mtpsapi.RiderInfo, err error) { +// //TODO implement me +// panic("implement me") +//} diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 6ab7b1e5f..319289fa9 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -83,17 +83,14 @@ func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16, f // shop/batchCreateStore 批量创建门店 func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName string, params map[string]interface{}, storeDetail *dao.StoreDetail) (vendorStoreID string, err error) { var ( - storeIDs string - tempStoreID []int64 + vendorStoreIDs string lists []shop_batchCreateStore_request.StoreListItem ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam - FreightTemplate = &model.FreightTemplate{} errList = errlist.New() timeStr = "" m = make(map[int64]string) ) //增加绑定门店操作 - a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 { return "", fmt.Errorf("营业时间必填") @@ -110,7 +107,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri } list := shop_batchCreateStore_request.StoreListItem{ RowId: 1, - Name: storeDetail.Name, + Name: "京西菜市(" + storeDetail.Name + ")", StoreCode: utils.Int2Str(storeDetail.Store.ID), Longitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lng)), Latitude: utils.Float64ToStr(jxutils.IntCoordinate2Standard(storeDetail.Lat)), @@ -130,78 +127,117 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri if resp, err := a.BatchCreateStore(ShopBatchCreateStoreParam); err != nil { return "", err } else { - storeIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId) - if utils.Str2Int(storeIDs) == 0 || len(resp.ResultList) == 0 { - return "", errors.New(fmt.Sprintf("创建店铺失败,storeIDs = 0:%v,%v", err, resp.ResultList[0].Msg)) + vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId) + if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId); err != nil { + errList.AddErr(err) } - //创建并绑定运费模板 - //先获取是否已绑定 - //if bindFenceIDs,err:=GetStoreFreight(storeDetail.VendorOrgCode,storeDetail.Store.ID) - if freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID); err != nil { + } + return vendorStoreIDs, errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true))) +} + +//电子围栏 仓库 运费模板 限售模板 更新与绑定 +func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) error { + var ( + errList = errlist.New() + FreightTemplate = &model.FreightTemplate{} + db *dao.DaoDB + ) + //1.平台获取门店运费模板 + bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID) + if err != nil { + errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)) + } + if bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误 + //创建 + if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) { errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) - } else { - if freightTemplateID == 0 { - errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) + } else { //绑定 + if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil { + errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)) } else { - if err = ShopBindStoreFreight(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), freightTemplateID); err != nil { - errList.AddErr(fmt.Errorf("本地门店:%d 绑定运费模板:%d 失败:%v", int64(storeDetail.Store.ID), freightTemplateID, err)) + FreightTemplate.TemplateID = freightTemplateID + if err = dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("运费模板:%d 同步数据库失败:%v", freightTemplateID, err)) + } + } + } + } else { //同步信息到本地 + if _, err = dao.UpdateEntity(db, FreightTemplate, "TemplateID"); err != nil { + errList.AddErr(fmt.Errorf("平台运费模板 同步到本地出错:%v", err)) + } + } + + //2.平台获取仓库信息以及电子围栏id + bindWarehouseAndFence, err := GetWarehouseByStore(vendorOrgCode, vendorStoreID) + if err != nil { + errList.AddErr(fmt.Errorf("获取门店(%d) 绑定仓库信息以及电子围栏出错:%v", vendorStoreID, err)) + } + if len(bindWarehouseAndFence) == 0 || utils.IsNil(bindWarehouseAndFence) { //未绑定仓库 + if warehouseID, err := CreateWarehouse(vendorOrgCode, utils.Int64ToStr(storeID)); err != nil || warehouseID == 0 || utils.IsNil(warehouseID) { + errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) + } else { //绑定 + if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID + errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%d 失败:%v", storeID, warehouseID, err)) + } else { + FreightTemplate.WarehouseID = warehouseID + if err = dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("仓库ID(%d) 同步到数据库失败:%v", warehouseID, err)) + } + } + } + if len(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) == 0 || utils.IsNil(bindWarehouseAndFence[0][vendorStoreID].OutFenceIds) { //未绑定电子围栏 + if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //创建 + errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) + } else { //绑定 + if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil { + errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err)) } else { - FreightTemplate.TemplateID = freightTemplateID - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败:%v", err)) + FreightTemplate.FenceID = utils.Int64ToStr(storeID) + if err := dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("电子围栏ID(%s) 同步到数据库失败:%v", fenceID, err)) } } } } - //创建并绑定仓库 - if warehouse, err := CreateWarehouse(storeDetail.VendorOrgCode, utils.Int2Str(storeDetail.Store.ID)); err != nil { - errList.AddErr(fmt.Errorf("创建仓库失败:%v", err)) - } else { - tempStoreID = append(tempStoreID, int64(storeDetail.Store.ID)) - if err = BindStoreWarehouse(storeDetail.VendorOrgCode, utils.Int64ToStr(warehouse), tempStoreID); err != nil { - errList.AddErr(fmt.Errorf("门店:%d 绑定仓库:%d 失败:%v", int64(storeDetail.Store.ID), warehouse, err)) - } else { - FreightTemplate.WarehouseID = warehouse - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("仓库ID存入数据库失败:%v", err)) - } - } + } else { //同步信息到本地 + if _, err = dao.UpdateEntity(db, FreightTemplate, "FenceID"); err != nil { + errList.AddErr(fmt.Errorf("电子围栏 同步到本地出错:%v", err)) } - //创建并绑定电子围栏 - if fenceID, err := CreateFenceByStore(storeDetail.VendorOrgCode, int(resp.ResultList[0].Store.StoreId)); err != nil { - errList.AddErr(fmt.Errorf("创建电子围栏失败:%v", err)) - } else { - fences := []string{utils.Int2Str(storeDetail.Store.ID)} - if err := BindFenceByStore(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, fences); err != nil { - errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%s 失败:%v", resp.ResultList[0].Store.StoreId, fenceID, err)) - } else { - FreightTemplate.FenceID = fenceID - if err := dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败:%v", err)) - } - } + if _, err = dao.UpdateEntity(db, FreightTemplate, "WarehouseID"); err != nil { + errList.AddErr(fmt.Errorf("仓库 同步到本地出错:%v", err)) } - //创建限售模板 - if tradeLimitID, err := CreateTradeLimitTemplate(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID)); err != nil { - errList.AddErr(fmt.Errorf("创建限售模板失败:%v", err)) + } + + //3.平台获取限售模板 + SaleLimitID, err := GetStoreSaleLimit(vendorOrgCode, vendorStoreID) + if err != nil { + errList.AddErr(fmt.Errorf("获取门店(%d) 限售模板出错:%v", vendorStoreID, err)) + } + if SaleLimitID == 0 || utils.IsNil(SaleLimitID) { //未绑定限售模板 + if tradeLimitID, err := CreateTradeLimitTemplate(vendorOrgCode, storeID); err != nil || tradeLimitID == 0 || utils.IsNil(tradeLimitID) { + errList.AddErr(fmt.Errorf("门店(%d) 创建限售模板失败:%v", storeID, err)) } else { - if err := BindStoreSaleLimit(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, tradeLimitID); err != nil { - errList.AddErr(fmt.Errorf("绑定限售模板失败:%v", err)) + if err := BindStoreSaleLimit(vendorOrgCode, vendorStoreID, tradeLimitID); err != nil { + errList.AddErr(fmt.Errorf("门店(%d) 绑定限售模板失败:%v", storeID, err)) } else { FreightTemplate.TradeLimitID = tradeLimitID if err := dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("限售模板ID存入数据库失败:%v", err)) + errList.AddErr(fmt.Errorf("限售模板(%d) 存入数据库失败:%v", tradeLimitID, err)) } } } - FreightTemplate.StoreID = storeDetail.Store.ID - FreightTemplate.VendorStoreID = storeIDs - FreightTemplate.DeletedAt = utils.DefaultTimeValue - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err)) + } else { //同步到本地 + if _, err = dao.UpdateEntity(db, FreightTemplate, "TradeLimitID"); err != nil { + errList.AddErr(fmt.Errorf("限售模板 同步到本地出错:%v", err)) } - return storeIDs, errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true))) } + FreightTemplate.StoreID = int(storeID) + FreightTemplate.VendorStoreID = utils.Int64ToStr(vendorStoreID) + FreightTemplate.DeletedAt = utils.DefaultTimeValue + if err = dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err)) + } + return errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, true))) } // shop/editStore 编辑门店信息 正向推送平台 @@ -267,7 +303,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } //修改店铺状态 if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { - errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus)) + errList.AddErr(UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus)) } err3 := api.EditStore(params) if err3 != nil { @@ -289,33 +325,33 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } // UpdateStoreStatus shop/unsuspendStore 门店恢复营业 -func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) { +func UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, status int) (err error) { isOnline := bizStatusJX2DouDian(status) - api := getAPI(vendorOrgCode, storeID, vendorStoreID) + a := getAPI(vendorOrgCode, storeID, vendorStoreID) if globals.EnableDdStoreWrite { if isOnline != tiktok_api.StoreStatusOnline { //暂停营业状态 - unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{ + suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{ StoreId: utils.Str2Int64(vendorStoreID), } - if _, err = api.UnsuspendStore(unsuspendStoreID); err != nil { + if _, err = a.StoreSuspend(suspendStoreID); err != nil { return err } } else { //恢复营业 - suspendStoreID := &shop_storeSuspend_request.ShopStoreSuspendParam{ + unsuspendStoreID := &shop_unsuspendStore_request.ShopUnsuspendStoreParam{ StoreId: utils.Str2Int64(vendorStoreID), } getStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ StoreId: utils.Str2Int64(vendorStoreID), } //平台上店铺状态 - remoteStoreInfo, err2 := api.GetStoreDetail(getStoreID) + remoteStoreInfo, err2 := a.GetStoreDetail(getStoreID) if err2 != nil { return err2 } if remoteStoreInfo.StoreDetail.Store.SuspendType == tiktok_api.SuspendTypePlatformPenalty { err = errors.New("门店因平台处罚暂停营业,不可主动修改营业状态") } else { - if _, err = api.StoreSuspend(suspendStoreID); err != nil { + if _, err = a.UnsuspendStore(unsuspendStoreID); err != nil { return err } } @@ -502,32 +538,6 @@ func (P *PurchaseHandler) CreateAddress(addressInfo address_create_request.Addre if err != nil { return 0, err } - //添加进数据库page_shop - //获取门店信息 - //storeID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ - // StoreId: addressInfo.StoreId, - //} - //storeInfo, err1 := api.DouDianApi.GetStoreDetail(storeID) - //if err1 != nil { - // return 0, err1 - //} - //createAddress := &model.PageShop{ //此表暂存门店售后地址库 - // Name: storeInfo.StoreDetail.Store.Name, - // VendorID: model.VendorIDDouDian, - // VendorStoreID: utils.Int64ToStr(storeInfo.StoreDetail.Store.StoreId), //抖店平台ID - // OrgCode: storeInfo.StoreDetail.Store.StoreCode, //暂时用来存放京西平台门店ID - // VendorStatus: utils.Int64ToStr(storeInfo.StoreDetail.Store.State), - // Status: 0, - // CityCode: utils.Str2Int(storeInfo.StoreDetail.Store.CityCode), - // DistrictCode: utils.Str2Int(storeInfo.StoreDetail.Store.DistrictCode), - // Address: storeInfo.StoreDetail.Store.Address, - // Lng: utils.Str2Float64(storeInfo.StoreDetail.Store.Longitude), - // Lat: utils.Str2Float64(storeInfo.StoreDetail.Store.Latitude), - // Tel1: storeInfo.StoreDetail.Store.Contact, - //} - //if err = dao.CreateEntity(dao.GetDB(), createAddress); err != nil { - // return 0, err - //} return resp.AddressId, nil } @@ -590,6 +600,15 @@ func BindStoreSaleLimit(appOrgCode string, storeID, saleLimitTemplateID int64) e return nil } +// 获取门店绑定限售模板 +func GetStoreSaleLimit(appOrgCode string, storeID int64) (int64, error) { + saleLimitTemplateID, err := getAPI(appOrgCode, 0, "").StoreQuerySaleLimitTemp(storeID) + if err != nil { + return 0, err + } + return saleLimitTemplateID, nil +} + func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCode string, storeID int, vendorStoreID string, opTimeList []int16) (err error) { t1 := opTimeList[0] t2 := opTimeList[1] diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index 6a9e79a64..307dd9e7f 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -7,6 +7,8 @@ import ( warehouse_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/request" warehouse_createBatch_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_createBatch/request" warehouse_createFence_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_createFence/request" + warehouse_getWarehouseByStore_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_getWarehouseByStore/response" + warehouse_setFence_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_setFence/request" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" @@ -16,7 +18,7 @@ import ( // /warehouse/create 创建单个区域仓 func CreateWarehouse(appOrgCode, outWarehouseID string) (warehouseID int64, err error) { - tempName := "门店编码:" + outWarehouseID + "的区域仓" + tempName := "京西菜市(" + outWarehouseID + ")的区域仓" req := &warehouse_create_request.WarehouseCreateParam{ OutWarehouseId: outWarehouseID, Name: tempName, @@ -57,9 +59,9 @@ func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_reque } // /warehouse/bindStore 仓库绑定门店 -func BindStoreWarehouse(VendorOrgCode, outWarehouseID string, storeIDs []int64) error { +func BindStoreWarehouse(VendorOrgCode, outWarehouseID string, storeIDs int64) error { param := &warehouse_bindStore_request.WarehouseBindStoreParam{ - StoreIds: storeIDs, + StoreIds: []int64{storeIDs}, OutWarehouseId: outWarehouseID, } if _, err := getAPI(VendorOrgCode, 0, "").StoreBindWarehouse(param); err != nil { @@ -68,6 +70,15 @@ func BindStoreWarehouse(VendorOrgCode, outWarehouseID string, storeIDs []int64) return nil } +// /warehouse/getWarehouseByStore 门店id获取绑定仓库详情包括电子围栏 +func GetWarehouseByStore(appOrgCode string, storeID int64) (map[int64][]warehouse_getWarehouseByStore_response.WarehouseInfoMapItem, error) { + info, err := getAPI(appOrgCode, 0, "").GetWarehouseByStore(storeID) + if err != nil { + return nil, err + } + return info, nil +} + type LocalStore struct { Lng int `json:"-"` // 乘了10的6次方 Lat int `json:"-"` // 乘了10的6次方 @@ -77,7 +88,7 @@ type LocalStore struct { } // /warehouse/createFence 以门店方式创建电子围栏 -func CreateFenceByStore(appOrgCode string, storeID int) (fenceID string, err error) { +func CreateFenceByStore(appOrgCode string, storeID int64) (fenceID string, err error) { var ( db *dao.DaoDB localStore *LocalStore @@ -98,7 +109,7 @@ func CreateFenceByStore(appOrgCode string, storeID int) (fenceID string, err err if err = dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil { param := &warehouse_createFence_request.WarehouseCreateFenceParam{ FenceInfo: &warehouse_createFence_request.FenceInfo{ - OutFenceId: utils.Int2Str(storeID), //绑定基于此id + OutFenceId: utils.Int64ToStr(storeID), //绑定基于此id Shape: int32(localStore.DeliveryRangeType), }, } @@ -151,7 +162,7 @@ func UpdateFenceByStore(appOrgCode string, storeID int) error { var ( db *dao.DaoDB localStore *LocalStore - verticeses []warehouse_createFence_request.VerticesItem + verticeses []warehouse_setFence_request.VerticesItem ) sqlParam := []interface{}{ model.VendorIDDD, @@ -165,15 +176,15 @@ func UpdateFenceByStore(appOrgCode string, storeID int) error { return fmt.Errorf("storeID必填") } if err := dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil { - param := &warehouse_createFence_request.WarehouseCreateFenceParam{ - FenceInfo: &warehouse_createFence_request.FenceInfo{ + param := &warehouse_setFence_request.WarehouseSetFenceParam{ + FenceInfo: &warehouse_setFence_request.FenceInfo{ OutFenceId: utils.Int2Str(storeID), Shape: int32(localStore.DeliveryRangeType), }, } if localStore.DeliveryRangeType == tiktok_api.ShapeCircular { - circular := &warehouse_createFence_request.Circular{ - Center: &warehouse_createFence_request.Center{ + circular := &warehouse_setFence_request.Circular{ + Center: &warehouse_setFence_request.Center{ Longitude: utils.Int2Float64(localStore.Lng), Latitude: utils.Int2Float64(localStore.Lat), }, @@ -184,7 +195,7 @@ func UpdateFenceByStore(appOrgCode string, storeID int) error { tempStr := strings.Split(localStore.DeliveryRange, ";") for v := len(tempStr) - 1; v >= 0; v-- { s2 := strings.Split(tempStr[v], ",") - vertices := warehouse_createFence_request.VerticesItem{ + vertices := warehouse_setFence_request.VerticesItem{ Longitude: utils.Str2Float64(s2[0]), Latitude: utils.Str2Float64(s2[1]), } @@ -192,8 +203,7 @@ func UpdateFenceByStore(appOrgCode string, storeID int) error { } param.FenceInfo.Polygon.Vertices = verticeses } - _, err := getAPI("", 0, "").CreateFence(param) - if err != nil { + if err := getAPI(appOrgCode, 0, "").SetFence(param); err != nil { return err } } else { @@ -213,3 +223,8 @@ func BindFenceByStore(appOrgCode string, storeID int64, addOutFenceIDs []string) } return nil } + +//获取仓库绑定电子围栏(即门店) 同步三个映射关系 +//func GetStoreFence() { +// +//}