package doudian import ( "fmt" warehouse_bindFencesByStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_bindFencesByStore/request" warehouse_bindStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_bindStore/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" "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/tiktok_api" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals/api" "strings" ) // /warehouse/createBatch 批量创建区域仓 func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_request.WarehouseCreateBatchParam) error { infos := []warehouse_createBatch_request.OutWarehouseListItem{} for _, v := range param.OutWarehouseList { info := warehouse_createBatch_request.OutWarehouseListItem{ OutWarehouseId: v.OutWarehouseId, Name: v.Name, Intro: v.Intro, AddressDetail: v.AddressDetail, WarehouseLocation: v.WarehouseLocation, } infos = append(infos, info) } req := &warehouse_createBatch_request.WarehouseCreateBatchParam{ OutWarehouseList: infos, } resp, err := api.DouDianApi.BatchCreateWarehouse(req) if err != nil { return err } if resp.Data["outWarehouseId"] == false { return fmt.Errorf("outWarehouseId:%v 出错", resp.Data["outWarehouseId"]) } return nil } // /warehouse/bindStore 仓库绑定门店 func (P *PurchaseHandler) BindStoreWarehouse(storeIDs []int64, outWarehouseID string) error { param := &warehouse_bindStore_request.WarehouseBindStoreParam{ StoreIds: storeIDs, OutWarehouseId: outWarehouseID, } if _, err := api.DouDianApi.StoreBindWarehouse(param); err != nil { return err } return nil } type LocalStore struct { Lng int `json:"-"` // 乘了10的6次方 Lat int `json:"-"` // 乘了10的6次方 DeliveryRangeType int8 `json:"deliveryRangeType"` // 参见相关常量定义 DeliveryRange string `json:"deliveryRange"` // 如果DeliveryRangeType为DeliveryRangeTypePolygon,则为逗号分隔坐标,分号分隔的坐标点(坐标与Lng和Lat一样,都是整数),比如 121361504,31189308;121420555,31150238。否则为半径,单位为米 VendorStoreID string `json:"vendorStoreID"` // 平台上门店id } // /warehouse/createFence 以门店方式创建电子围栏 func (P *PurchaseHandler) CreateFenceByStore(storeID int) (fenceID string, err error) { var ( db *dao.DaoDB localStore *LocalStore verticeses []warehouse_createFence_request.VerticesItem ) sqlParam := []interface{}{ model.VendorIDDouDian, } sqlStr := ` SELECT t.lng,t.lat,t.delivery_range_type,t.delivery_range,s.vendor_store_id FROM store t LEFT JOIN store_map s ON t.id = s.store_id WHERE s.vendor_id= ? ` if storeID != 0 { sqlStr += " AND t.id = ? " sqlParam = append(sqlParam, storeID) } else { return "", fmt.Errorf("storeID必填") } if err = dao.GetRow(db, &localStore, sqlStr, sqlParam...); err == nil { param := &warehouse_createFence_request.WarehouseCreateFenceParam{ FenceInfo: &warehouse_createFence_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{ Longitude: utils.Int2Float64(localStore.Lng), Latitude: utils.Int2Float64(localStore.Lat), }, Radius: utils.Str2Float64(localStore.DeliveryRange), } param.FenceInfo.Circular = circular } else if localStore.DeliveryRangeType == tiktok_api.ShapePolygon { tempStr := strings.Split(localStore.DeliveryRange, ";") for v := len(tempStr) - 1; v >= 0; v-- { s2 := strings.Split(tempStr[v], ",") vertices := warehouse_createFence_request.VerticesItem{ Longitude: utils.Str2Float64(s2[0]), Latitude: utils.Str2Float64(s2[1]), } verticeses = append(verticeses, vertices) } param.FenceInfo.Polygon.Vertices = verticeses } resp, err := api.DouDianApi.CreateFence(param) if err != nil { return "", err } else { return resp.FenceId, err } } else { return "", err } } //直接创建电子围栏方式 func (P *PurchaseHandler) CreateFenceDirectly(param warehouse_createFence_request.WarehouseCreateFenceParam) (fenceID string, err error) { info := &warehouse_createFence_request.WarehouseCreateFenceParam{ FenceInfo: param.FenceInfo, } resp, err := api.DouDianApi.CreateFence(info) if err != nil { return "", err } return resp.FenceId, err } //门店直接绑定围栏 func (P *PurchaseHandler) BindFenceByStore(storeID int64, addOutFenceIDs []string) error { param := &warehouse_bindFencesByStore_request.WarehouseBindFencesByStoreParam{ StoreId: storeID, AddOutFenceIds: addOutFenceIDs, } if _, err := api.DouDianApi.BindFenceByStore(param); err != nil { return err } return nil }