diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index a90fff742..4bffc88c7 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -1527,7 +1527,7 @@ func AddStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, vendorID int, vend return nil, fmt.Errorf("此平台门店ID已在京西有绑定,请先解除绑定,平台门店ID :[%v]", storeMap.VendorStoreID) } if vendorID == model.VendorIDDD { //抖店绑定店铺时 检查并补充创建 - if err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.DeliveryFeeDeductionFee), utils.Str2Int64(storeMap.YbStorePrefix)); err2 != nil { + if err2 := tiktok_store.CreateOrUpdateAll(vendorOrgCode, int64(storeMap.StoreID), utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.DeliveryFeeDeductionFee), int64(storeMap.DeliveryFeeDeductionSill), utils.Str2Int64(storeMap.YbStorePrefix), storeMap.YbAppID); err2 != nil { errList.AddErr(err2) } } @@ -1706,13 +1706,14 @@ func UpdateStoreVendorMap(ctx *jxcontext.Context, db *dao.DaoDB, storeID, vendor //增加同步到抖店厂商的同步标志 DDFlag := false errList := errlist.ErrList{} - if (valid["deliveryFeeDeductionSill"] != nil || valid["deliveryFeeDeductionFee"] != nil || valid["ybStorePrefix"] != nil) && vendorID == model.VendorIDDD { + //deliveryFeeDeductionSill-包邮模板 满x包邮金额 deliveryFeeDeductionFee-打包费 ybStorePrefix-起送价 ybAppID-自动运力设置 + if (valid["deliveryFeeDeductionSill"] != nil || valid["deliveryFeeDeductionFee"] != nil || valid["ybStorePrefix"] != nil || valid["ybAppID"] != nil) && vendorID == model.VendorIDDD { DDFlag = true } //特殊处理抖店运费模板、打包费 if DDFlag { - globals.SugarLogger.Debug("进入DDFlag 特殊处理运费模板、起送价、打包费") - if err := tiktok_store.SpecialTreat(storeMap.VendorOrgCode, utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.StoreID), int64(storeMap.DeliveryFeeDeductionFee), utils.Str2Int64(storeMap.YbStorePrefix)); err != nil { - errList.AddErr(fmt.Errorf("抖店运费模板、起送价、打包费相关处理错误:%v", err)) + globals.SugarLogger.Debug("进入DDFlag 特殊处理运费模板、起送价、打包费、自动运力设置") + if err := tiktok_store.SpecialTreat(storeMap.VendorOrgCode, utils.Str2Int64(storeMap.VendorStoreID), int64(storeMap.StoreID), int64(storeMap.DeliveryFeeDeductionFee), int64(storeMap.DeliveryFeeDeductionSill), utils.Str2Int64(storeMap.YbStorePrefix), storeMap.YbAppID); err != nil { + errList.AddErr(fmt.Errorf("抖店运费模板、起送价、打包费、自动运力设置相关处理错误:%v", err)) } } for _, v := range [][]string{ @@ -5967,7 +5968,7 @@ func UpdateStoreRelInformation(ctx *jxcontext.Context) error { FreightTemplate.VendorStoreID = utils.Int64ToStr(m) FreightTemplate.StoreID = utils.Str2Int(n) if _, err := dao.UpdateEntity(db, FreightTemplate, "VendorStoreID", "StoreID", "TemplateID", "WarehouseID", "FenceID", "TradeLimitID"); err != nil { - if err1 := dao.CreateEntity(db, FreightTemplate); err1 != nil { + if err1 := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err1) || err1 != nil { errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err1)) } else { errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err)) @@ -6045,7 +6046,9 @@ func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error } } endStr = tStr1 + "," + tStr2 - globals.SugarLogger.Debugf("京西平台没有配送范围的门店ID=%s", endStr) + if len(endStr) > 0 { + globals.SugarLogger.Debugf("京西平台没有配送范围的门店ID=%s", endStr) + } } if bindFence, err := tiktok_store.GetWarehouseByStore(k, utils.Str2Int64(i.VendorStoreID)); err == nil && (len(bindFence) > 0 && len(bindFence[i.VendorStoreID][0].OutFenceIds) > 0) { tempFenceID = bindFence[i.VendorStoreID][0].OutFenceIds[0] @@ -6062,7 +6065,7 @@ func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error } } } - if err := dao.CreateEntity(db, FreightTemplate); err != nil { + if err := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || 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)) @@ -6087,14 +6090,14 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship errList := errlist.New() for k, v := range relInfo { for _, i := range v { - if bindFreightID, err := tiktok_store.GetStoreFreight(k, utils.Str2Int64(i.VendorStoreID)); err != nil || bindFreightID == 0 || utils.IsNil(bindFreightID) { - if err := tiktok_store.CreateBindFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + if bindFreightID, err := tiktok_store.GetStoreFreight(k, utils.Str2Int64(i.VendorStoreID)); err != nil || bindFreightID == 0 { + if err := tiktok_store.CreateBindFreeShipTemplate(k, utils.Str2Int(i.StoreID), shipFee); err != nil { errList.AddErr(err) } } else { _ = tiktok_store.ShopBindStoreFreight(k, utils.Str2Int64(i.VendorStoreID), bindFreightID) globals.SugarLogger.Debugf("进入更新包邮模板操作") - if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + if err := tiktok_store.UpdateFreeShipTemplate(k, utils.Str2Int(i.StoreID), shipFee); err != nil { errList.AddErr(err) } } @@ -6129,6 +6132,11 @@ func SetStoreAutoCallRider(vendorOrgCode string, openIDs, closeIDs []int64) (str return "", nil } +//操作 freight_template +func ReplaceInsertFreight(storeID, templateID, warehouseID, tradeLimitID int, vendorStoreID, fenceID string) error { + return dao.ReplaceInsertFreight2(storeID, templateID, warehouseID, tradeLimitID, vendorStoreID, fenceID) +} + //辅助函数 func String2ArrayInt64(data string) (retVal []int64) { temp := strings.Split(data, ",") diff --git a/business/model/dao/freight_template.go b/business/model/dao/freight_template.go new file mode 100644 index 000000000..868620cca --- /dev/null +++ b/business/model/dao/freight_template.go @@ -0,0 +1,32 @@ +package dao + +import ( + "fmt" + + "git.rosy.net.cn/jx-callback/business/model" +) + +func ReplaceInsertFreight2(storeID, templateID, warehouseID, tradeLimitID int, vendorStoreID, fenceID string) error { + if storeID == 0 || len(vendorStoreID) == 0 { + return fmt.Errorf("storeID或vendorStoreID不允许为空") + } + sqlStr := `REPLACE INTO freight_template (store_id, vendor_store_id, template_id, warehouse_id, fence_id, trade_limit_id) +SELECT ?,?,?,?,?,? FROM DUAL WHERE NOT EXISTS(SELECT COUNT(store_id) FROM freight_template WHERE store_id = ?)=0` + sqlParam := []interface{}{storeID, vendorStoreID, templateID, warehouseID, fenceID, tradeLimitID, storeID} + _, err := ExecuteSQL(GetDB(), sqlStr, sqlParam) + return err +} +func ReplaceInsertFreight(tem *model.FreightTemplate) error { + if tem.StoreID == 0 || len(tem.VendorStoreID) == 0 { + return fmt.Errorf("storeID或vendorStoreID不允许为空") + } + sqlStr := `REPLACE INTO freight_template (store_id, vendor_store_id, template_id, warehouse_id, fence_id, trade_limit_id) +SELECT ?,?,?,?,?,? FROM DUAL WHERE NOT EXISTS(SELECT COUNT(store_id) FROM freight_template WHERE store_id = ?)=0` + sqlParam := []interface{}{tem.StoreID, tem.VendorStoreID, tem.TemplateID, tem.WarehouseID, tem.FenceID, tem.TradeLimitID, tem.StoreID} + _, err := ExecuteSQL(GetDB(), sqlStr, sqlParam) + return err +} + +func InsertItemFreight() { + +} diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index a25829a31..0c233f525 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -143,7 +143,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri errList.AddErr(dao.CreateEntity(db, storeMap)) } vendorStoreIDs = utils.Int64ToStr(resp.ResultList[0].Store.StoreId) - if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId, int64(storeDetail.DeliveryFeeDeductionFee), utils.Str2Int64(storeDetail.YbStorePrefix)); err != nil { + if err := CreateOrUpdateAll(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID), resp.ResultList[0].Store.StoreId, int64(storeDetail.DeliveryFeeDeductionFee), int64(storeMap.DeliveryFeeDeductionSill), utils.Str2Int64(storeDetail.YbStorePrefix), storeDetail.YbAppID); err != nil { errList.AddErr(err) } } @@ -151,20 +151,22 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri return vendorStoreIDs, errors.New(fmt.Sprintf("创建抖店平台店铺相关错误信息:%v", endErr)) } -func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, minPrice int64) error { +func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, deliveryFeeDeductionSill, minPrice int64, autoCall string) error { var ( errList = errlist.New() - FreightTemplate = &model.FreightTemplate{} - db *dao.DaoDB + FreightTemplate = &model.FreightTemplate{ + StoreID: int(storeID), + VendorStoreID: utils.Int64ToStr(vendorStoreID), + } ) //检查门店是否审核通过 if IfAuditPass(vendorOrgCode, vendorStoreID) { return fmt.Errorf("门店%d 未审核通过,请通过后再进行绑定", storeID) } - //1.平台获取门店运费模板 + //1.运费模板 if bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID); err != nil || bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误 //创建 - if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) { + if freightTemplateID, err := CreateFreightTemplate(int(storeID), int(deliveryFeeDeductionSill)); err != nil || freightTemplateID == 0 { errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)) } else { //绑定 if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil { @@ -174,6 +176,10 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee } } } else { + if err := UpdateFreightTemplate(int(storeID)); err != nil { + globals.SugarLogger.Debug("更新运费模板失败:", err) + errList.AddErr(fmt.Errorf("更新运费模板失败:%v", err)) + } FreightTemplate.TemplateID = bindFreightIDs } @@ -196,6 +202,10 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee } //(2)电子围栏 if len(bind[utils.Int64ToStr(storeID)][0].OutFenceIds) > 0 { + tempFenceID := bind[utils.Int64ToStr(storeID)][0].OutFenceIds[0] + if err1 := UpdateFenceByStore(vendorOrgCode, tempFenceID, int(vendorStoreID)); err1 != nil { + errList.AddErr(fmt.Errorf("平台门店(%d),门店(%d)更新电子围栏失败:%v", vendorStoreID, storeID, err1)) + } FreightTemplate.FenceID = bind[utils.Int64ToStr(storeID)][0].OutFenceIds[0] //保存一个就足够 } else { if fenceID, err := CreateFenceByStore(vendorOrgCode, storeID); err != nil || len(fenceID) == 0 { @@ -228,135 +238,39 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee if err := SetStorePackageFee(vendorOrgCode, vendorStoreID, deliveryFeeDeductionFee); err != nil { errList.AddErr(fmt.Errorf("设置门店打包费失败:%v", err)) } - //5.同步进数据库 - FreightTemplate.StoreID = int(storeID) - FreightTemplate.VendorStoreID = utils.Int64ToStr(vendorStoreID) - if err := dao.CreateEntity(db, FreightTemplate); err != nil { - if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID", "StoreID", "VendorStoreID"); err1 != nil { - globals.SugarLogger.Debug("更新操作,同步进数据库错误信息:%v", err1) - //errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) - } else { - globals.SugarLogger.Debug("创建操作,同步进数据库错误信息:%v", err) - //errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) + //5.设置自动运力 + if autoCall == tiktok_api.AutoCallRiderOpen { + if err := SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderOpen, vendorStoreID); err != nil { + errList.AddErr(fmt.Errorf("开启门店自动运力失败:%v", err)) + } + } else { + if err := SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderClose, vendorStoreID); err != nil { + errList.AddErr(fmt.Errorf("关闭门店自动运力失败:%v", err)) } } + + //6.同步进数据库 + if err := dao.ReplaceInsertFreight(FreightTemplate); err != nil { + globals.SugarLogger.Debug("同步数据库错误信息:%v", err) + } + //if err := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil { + // if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID", "StoreID", "VendorStoreID"); err1 != nil { + // globals.SugarLogger.Debug("更新操作,同步进数据库错误信息:%v", err1) + // //errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) + // } else { + // globals.SugarLogger.Debug("创建操作,同步进数据库错误信息:%v", err) + // //errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) + // } + //} endErr := errList.GetErrListAsOne() if endErr != nil { - globals.SugarLogger.Debug("绑定门店需进行的错误处理:%v", errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, false)))) + globals.SugarLogger.Debug("绑定抖音门店需进行的错误处理:%v", errors.New(fmt.Sprintf("%s", utils.Format4Output(errList, false)))) return endErr } else { return nil } } -//逻辑未修改,暂时不使用 -//func CreateAndBindAllV2(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, minPrice int64) error { -// var ( -// db *dao.DaoDB -// ctx *jxcontext.Context -// errList = errlist.New() -// FreightTemplate = &model.FreightTemplate{ -// VendorStoreID: utils.Int64ToStr(vendorStoreID), -// StoreID: int(storeID), -// } -// ) -// task := tasksch.NewParallelTask("CreateAndBindAllV2", tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetParallelCount(1), ctx, -// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) { -// step := batchItemList[0].(int) -// switch step { -// case 0: //1.门店运费模板 -// bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID) -// if err != nil { -// globals.SugarLogger.Debugf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err) -// errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)) -// } -// if bindFreightIDs == 0 { -// if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) { -// globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err) -// errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)) -// } else { -// if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil { -// globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err) -// errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)) -// } else { -// FreightTemplate.TemplateID = freightTemplateID -// } -// } -// } else { -// FreightTemplate.TemplateID = bindFreightIDs -// } -// case 1: //2.仓库以及电子围栏 -// warehouseID, err := CreateWarehouse(vendorOrgCode, storeID) -// if err != nil || warehouseID == 0 { -// globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err) -// errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err)) -// } else { //绑定 -// if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID -// globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err) -// errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)) -// } else { -// FreightTemplate.WarehouseID = utils.Str2Int64(warehouseID) -// } -// } -// case 2: //3.电子围栏 -// fenceID, err := CreateFenceByStore(vendorOrgCode, storeID) -// if err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //不管存在与否 直接创建 -// globals.SugarLogger.Debugf("门店(%d) 创建电子围栏失败:%v", storeID, err) -// errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err)) -// } else { //绑定 -// if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil { -// globals.SugarLogger.Debugf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err) -// errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err)) -// } else { -// FreightTemplate.FenceID = utils.Int64ToStr(storeID) -// } -// } -// case 3: //4.限售模板 -// bindSaleLimitID, err := GetStoreSaleLimit(vendorOrgCode, vendorStoreID) -// if err != nil { -// globals.SugarLogger.Debugf("获取门店(%d) 限售模板失败:%v", vendorStoreID, err) -// errList.AddErr(fmt.Errorf("获取门店(%d) 限售模板失败:%v", vendorStoreID, err)) -// } -// if bindSaleLimitID == 0 || utils.IsNil(bindSaleLimitID) { //未绑定限售模板,目前默认创建起送价限售模板 -// if createSaleLimitID, err := CreateAndBindMinPriceTemplate(vendorOrgCode, vendorStoreID, minPrice); err != nil { -// errList.AddErr(fmt.Errorf("设置门店起送价限售模板失败:%v", err)) -// } else { -// FreightTemplate.TradeLimitID = createSaleLimitID -// } -// } else { -// if updateSaleLimitID, err := UpdateTradeLimitTemplate(vendorOrgCode, bindSaleLimitID, minPrice); err != nil { -// errList.AddErr(fmt.Errorf("更新门店起送价限售模板失败:%v", err)) -// } else { -// FreightTemplate.TradeLimitID = updateSaleLimitID -// } -// } -// case 4: //5.门店打包费 默认为 0 -// if err := SetStorePackageFee(vendorOrgCode, vendorStoreID, deliveryFeeDeductionFee); err != nil { -// errList.AddErr(fmt.Errorf("设置门店打包费失败:%v", err)) -// } -// } -// return nil, err -// }, []int{0, 1, 2, 3, 4}) -// tasksch.ManageTask(task).Run() -// //6.同步进数据库 -// globals.SugarLogger.Debugf("preTest TradeLimitID==%d,TemplateID==%d, WarehouseID==%d,FenceID==%s", FreightTemplate.TradeLimitID, FreightTemplate.TemplateID, FreightTemplate.WarehouseID, FreightTemplate.FenceID) -// if err := dao.CreateEntity(db, FreightTemplate); err != nil { -// _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID") -// if err1 == nil { -// errList.AddErr(fmt.Errorf("同步Step1进数据库错误信息:%v", err)) -// } else { -// errList.AddErr(fmt.Errorf("同步Step2进数据库错误信息:%v", err1)) -// } -// } -// endErr := errList.GetErrListAsOne() -// if utils.IsNil(errList) { -// globals.SugarLogger.Debug("绑定门店需进行的错误处理:%v", endErr) -// return endErr -// } else { -// return nil -// } -//} - // shop/editStore 编辑门店信息 正向推送平台 func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName string) (err error) { var ( @@ -366,7 +280,10 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin errList = errlist.New() timeStr = "" tempFenceID string - FreightTemplate = &model.FreightTemplate{} + FreightTemplate = &model.FreightTemplate{ + StoreID: storeID, + VendorStoreID: storeInfo.VendorStoreID, + } ) if db == nil { db = dao.GetDB() @@ -461,20 +378,20 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin } //同步进数据库 FreightTemplate.FenceID = tempFenceID - FreightTemplate.StoreID = storeID - FreightTemplate.VendorStoreID = storeInfo.VendorStoreID - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil { - errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) - } else { - errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) - } + if err := dao.ReplaceInsertFreight(FreightTemplate); err != nil { + globals.SugarLogger.Debug("同步数据库错误信息:%v", err) } + //if err = dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil { + // if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil { + // errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1)) + // } else { + // errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err)) + // } + //} if endErr := errList.GetErrListAsOne(); endErr != nil { globals.SugarLogger.Debugf("DouDian UpdateStore wrong information:%v", endErr) } return nil - //return errors.New(fmt.Sprintf("更新抖店平台店铺信息,相关处理错误:%v", endErr)) } } @@ -512,7 +429,7 @@ func UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int } //默认 运费模板只创建 固定运费模板 -func CreateFreightTemplate(storeCode int) (int64, error) { +func CreateFreightTemplate(storeCode, deliveryFeeDeductionSill int) (int64, error) { storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "") if err != nil { return 0, err @@ -527,24 +444,11 @@ func CreateFreightTemplate(storeCode int) (int64, error) { FixedAmount: 500, //固定运费 单位:分 }, } - if int64(storeDetail.DeliveryFeeDeductionSill) != 0 { - param.Template.TemplateName += "满减包邮模板" - columns := []freightTemplate_create_request.ColumnsItem{ - { - IsOverFree: true, //是否包邮 - IsLimited: false, - OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 - }} - param.Columns = columns - } else { - param.Columns = nil - param.Template.TemplateName += "固定运费模板" - } //直辖市特殊处理 if HandleMunicipality(storeDetail.CityName) { param.Template.ProductCity = int64(storeDetail.ProvinceCode) - param.Columns[0].ProvinceInfos = []freightTemplate_create_request.ProvinceInfosItem{ - { + param.Columns = []freightTemplate_create_request.ColumnsItem{{ + ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{{ Id: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), Children: []freightTemplate_create_request.ChildrenItem_4{ { @@ -559,27 +463,43 @@ func CreateFreightTemplate(storeCode int) (int64, error) { }, }, }}, + }}, } } else { param.Template.ProductCity = int64(storeDetail.CityCode) - param.Columns[0].ProvinceInfos = []freightTemplate_create_request.ProvinceInfosItem{ - { - Id: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), - Children: []freightTemplate_create_request.ChildrenItem_4{ - { - Id: int64(storeDetail.CityCode), - Children: []freightTemplate_create_request.ChildrenItem_5{ - { - Id: int64(storeDetail.DistrictCode), - //Children: []freightTemplate_create_request.ChildrenItem{ - // {Id: 0}, - //}, + param.Columns = []freightTemplate_create_request.ColumnsItem{{ + ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ + { + Id: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), + Children: []freightTemplate_create_request.ChildrenItem_4{ + { + Id: int64(storeDetail.CityCode), + Children: []freightTemplate_create_request.ChildrenItem_5{ + { + Id: int64(storeDetail.DistrictCode), + //Children: []freightTemplate_create_request.ChildrenItem{ + // {Id: 0}, + //}, + }, }, }, - }, - }}, + }}, + }, + }, } } + if deliveryFeeDeductionSill != 0 { + param.Template.TemplateName += "满减包邮模板" + param.Columns = []freightTemplate_create_request.ColumnsItem{{ + IsOverFree: true, //是否包邮 + IsLimited: false, + OverAmount: int64(deliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 + }} + } else { + //param.Columns = nil + param.Template.TemplateName += "固定运费模板" + } + globals.SugarLogger.Debugf("创建运费模板") if resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param); err != nil { return 0, err } else { @@ -638,7 +558,7 @@ func UpdateFreightTemplate(storeCode int) error { } // /freightTemplate/create 批量创建绑定 满x包邮 运费模板 -func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { +func CreateBindFreeShipTemplate(vendorOrgCode string, storeID int, shipFee int64) error { var ( db = dao.GetDB() errList = errlist.New() @@ -653,7 +573,7 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { } param := &freightTemplate_create_request.FreightTemplateCreateParam{ Template: &freightTemplate_create_request.Template{ - TemplateName: utils.Int2Str(storeID) + "的满" + utils.Int64ToStr(shipFee) + "包邮模板", + TemplateName: utils.Int2Str(storeID) + "的满减包邮模板", ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), CalculateType: tiktok_api.CalculateTypeNum, TransferType: tiktok_api.TransferTypeExpress, @@ -664,7 +584,7 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { { IsOverFree: true, IsLimited: false, - OverAmount: shipFee, + OverAmount: shipFee * 100, }}, } //直辖市特殊处理 @@ -673,13 +593,14 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { } else { param.Template.ProductCity = int64(storeDetail.CityCode) } - if resp, err := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).FreightTemplateCreate(param); err != nil { + globals.SugarLogger.Debugf("CreateBindFreeShipTemplate param====%s", utils.Format4Output(param, false)) + if resp, err := getAPI(vendorOrgCode, 0, "").FreightTemplateCreate(param); err != nil { return errors.New(fmt.Sprintf("平台门店(%s) 京西门店(%d) 创建包邮模板失败:%v,根据提示处理", storeDetail.VendorStoreID, storeID, err)) } else { - if err := ShopBindStoreFreight(storeDetail.VendorOrgCode, utils.Str2Int64(storeDetail.VendorStoreID), resp.TemplateId); err != nil { + if err := ShopBindStoreFreight(vendorOrgCode, utils.Str2Int64(storeDetail.VendorStoreID), resp.TemplateId); err != nil { return errors.New(fmt.Sprintf("平台门店(%s) 京西门店(%d) 绑定包邮模板失败:%v,根据提示处理", storeDetail.VendorStoreID, storeID, err)) } else { - if err := dao.CreateEntity(db, FreightTemplate); err != nil { + if err := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil { if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID"); err1 != nil { errList.AddErr(fmt.Errorf("包邮模板:更新操作,同步进数据库错误信息:%v", err1)) } else { @@ -695,7 +616,7 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { } //更新 包邮运费模板 -func UpdateFreeShipTemplate(storeID int, shipFee int64) error { +func UpdateFreeShipTemplate(vendorOrgCode string, storeID int, shipFee int64) error { if shipFee == 0 { return errors.New("包邮金额必传,请检查") } @@ -703,12 +624,12 @@ func UpdateFreeShipTemplate(storeID int, shipFee int64) error { if err != nil { return errors.New("更新包邮运费模板,获取门店信息失败,请重试") } - a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) + a := getAPI(vendorOrgCode, storeID, storeDetail.VendorStoreID) //获取远程运费模板详情 if bindFreightID, err := a.GetStoreFreight(utils.Str2Int64(storeDetail.VendorStoreID)); err != nil || len(bindFreightID) == 0 || utils.IsNil(bindFreightID) { //return errors.New("门店未绑定运费模板,") } else { - if freightDetail, err := a.GetStoreFreightDetail(bindFreightID[0]); err != nil { + if freightDetail, err := a.GetStoreFreightDetail(bindFreightID[0]); err == nil { param := &freightTemplate_update_request.FreightTemplateUpdateParam{ Template: &freightTemplate_update_request.Template{ Id: bindFreightID[0], @@ -724,9 +645,10 @@ func UpdateFreeShipTemplate(storeID int, shipFee int64) error { { IsOverFree: true, IsLimited: false, - OverAmount: shipFee, + OverAmount: shipFee * 100, }}, } + globals.SugarLogger.Debugf("ykljkfjapojf param====%s", utils.Format4Output(param, false)) if _, err := a.FreightTemplateUpdate(param); err != nil { return errors.New("更新包邮运费模板失败") } diff --git a/business/partner/purchase/tiktok_store/store_test.go b/business/partner/purchase/tiktok_store/store_test.go index 0c6890dd1..27953e913 100644 --- a/business/partner/purchase/tiktok_store/store_test.go +++ b/business/partner/purchase/tiktok_store/store_test.go @@ -7,7 +7,7 @@ import ( //创建运费模板 func TestCreateFreight(t *testing.T) { - data, err := CreateFreightTemplate(668504) + data, err := CreateFreightTemplate(668787) fmt.Println(data) fmt.Println(err) } diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index aaf908b41..038c68ad9 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -254,7 +254,7 @@ func GetFence(appOrgCode string, outFenceID []string) ([]warehouse_getFences_res } //特殊处理 -func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeductionFee, minPrice int64) error { +func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeductionFee, deliveryFeeDeductionSill, minPrice int64, autoCall string) error { var ( db *dao.DaoDB errList = errlist.New() @@ -264,13 +264,14 @@ func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeduc } ) //1.运费模板 - bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID) - if err != nil { - globals.SugarLogger.Debug("获取门店(%d) 绑定运费模板出错:", vendorStoreID, err) - //errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)) - } - if bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误 - if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 { + //bindFreightIDs, err := GetStoreFreight(vendorOrgCode, vendorStoreID) + //if err != nil { + // globals.SugarLogger.Debug("获取门店(%d) 绑定运费模板出错:", vendorStoreID, err) + // //errList.AddErr(fmt.Errorf("获取门店(%d) 绑定运费模板出错:%v", vendorStoreID, err)) + //} + if true { + //if bindFreightIDs == 0 { //(1)未查询到绑定信息,不算错误 + if freightTemplateID, err := CreateFreightTemplate(int(storeID), int(deliveryFeeDeductionSill)); err != nil || freightTemplateID == 0 { errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) } else { //绑定 if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil { @@ -308,8 +309,18 @@ func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeduc } } } + //4.设置自动运力 + if autoCall == tiktok_api.AutoCallRiderOpen { + if err := SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderOpen, vendorStoreID); err != nil { + errList.AddErr(fmt.Errorf("开启门店自动运力失败:%v", err)) + } + } else { + if err := SetStoreAutoCallRider(vendorOrgCode, tiktok_api.AutoCallRiderClose, vendorStoreID); err != nil { + errList.AddErr(fmt.Errorf("关闭门店自动运力失败:%v", err)) + } + } //多次同步数据库,兜底处理 - if err := dao.CreateEntity(db, FreightTemplate); err != nil { + if err := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil { _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "TradeLimitID") if err1 != nil { globals.SugarLogger.Debugf("更新起送价限售模板,更新进数据库错误信息:%v", err1) diff --git a/controllers/cms_store.go b/controllers/cms_store.go index e50285675..592de07cb 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -2,6 +2,7 @@ package controllers import ( "errors" + "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxstore/cms" "git.rosy.net.cn/jx-callback/business/jxstore/common" @@ -1618,3 +1619,22 @@ func (c *StoreController) BindJxPrinter() { }) } + +// @Title 测试操作freight_template +// @Description 测试操作freight_template +// @Param token header string true "认证token" +// @Param storeID formData int true "京西门店id" +// @Param vendorStoreID formData string false "抖音平台id" +// @Param templateID formData int false "运费模板id" +// @Param warehouseID formData int false "仓库id" +// @Param fenceID formData string false "电子围栏id" +// @Param tradeLimitID formData int false "限售模板id" +// @Success 200 {object} controllers.CallResult +// @Failure 200 {object} controllers.CallResult +// @router /ReplaceInsertFreight [post] +func (c *StoreController) ReplaceInsertFreight() { + c.callReplaceInsertFreight(func(params *tStoreReplaceInsertFreightParams) (interface{}, string, error) { + err := cms.ReplaceInsertFreight(params.StoreID, params.TemplateID, params.WarehouseID, params.TradeLimitID, params.VendorStoreID, params.FenceID) + return nil, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 9758b5f5d..9e0dae3e7 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -3027,6 +3027,15 @@ func init() { MethodParams: param.Make(), Filters: nil, Params: nil}) + //测试用-ysq + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "ReplaceInsertFreight", + Router: `/ReplaceInsertFreight`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreSkuController"], web.ControllerComments{