Merge branch 'jdshop' of e.coding.net:rosydev/jx-callback into jdshop

This commit is contained in:
邹宗楠
2022-10-27 18:55:03 +08:00
5 changed files with 237 additions and 105 deletions

View File

@@ -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)

View File

@@ -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
//}

View File

@@ -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")
//}

View File

@@ -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]

View File

@@ -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() {
//
//}