diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index bd8f38532..ba9b251cd 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -32,15 +32,14 @@ import ( "git.rosy.net.cn/jx-callback/globals/api" ) -func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) (timeList string) { +func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16, flag bool) (timeList string) { //700 1200 -> 07:00-12:00 var ( - s1 = "" - ts1 = "" - s2 = "" - ts2 = "" - s3 = "" - ts3 = "" + s1 = "" + ts1 = "" + s2 = "" + ts2 = "" + //ts3 = ""//暂不支持多时间段 s4 = "" ts4 = "" timeStr = "" @@ -52,34 +51,32 @@ func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) ( ts1 = "0" } s1 = ts1 + tOpenTime1[:len1] + ":" + tOpenTime1[len1:] - globals.SugarLogger.Debug("tOpenTime1[:len1]==============", tOpenTime1[:len1]) - globals.SugarLogger.Debug("tOpenTime1[len1+1:]==============", tOpenTime1[len1:]) - globals.SugarLogger.Debug("s1==============", s1) - globals.SugarLogger.Debug("ts1+tOpenTime1[:len1]+\":\"+tOpenTime1[len1+1:]====", ts1+tOpenTime1[:len1]+":"+tOpenTime1[len1+1:]) - tCloseTime1 := utils.Int64ToStr(int64(closeTime1)) len2 := len(tCloseTime1) - 2 if utils.Str2Int(tCloseTime1[:len2]) <= 9 { ts2 = "0" } - s2 = ts2 + tCloseTime1[:len2] + ":" + tCloseTime1[len2+1:] + "0" - timeStr += s1 + "-" + s2 + s2 = ts2 + tCloseTime1[:len2] + ":" + tCloseTime1[len2:] if openTime2 != 0 && closeTime2 != 0 { - tOpenTime2 := utils.Int64ToStr(int64(openTime2)) - len3 := len(tOpenTime2) - 2 - if utils.Str2Int(tOpenTime2[:len3]) <= 9 { - ts3 = "0" - } - s3 = ts3 + tOpenTime2[:len3] + ":" + tOpenTime2[len3+1:] + "0" + //tOpenTime2 := utils.Int64ToStr(int64(openTime2)) + //len3 := len(tOpenTime2) - 2 + //if utils.Str2Int(tOpenTime2[:len3]) <= 9 { + // ts3 = "0" + //} + //s3 = ts3 + tOpenTime2[:len3] + ":" + tOpenTime2[len3:] tCloseTime2 := utils.Int64ToStr(int64(closeTime2)) len4 := len(tCloseTime2) - 2 if utils.Str2Int(tCloseTime2[:len4]) <= 9 { ts4 = "0" } - s4 = ts4 + tCloseTime2[:len4] + ":" + tCloseTime2[len4+1:] + "0" - timeStr += " " + s3 + "-" + s4 + s4 = ts4 + tCloseTime2[:len4] + ":" + tCloseTime2[len4:] } } + if flag { + timeStr += s1 + "-" + s4 + } else { + timeStr += s1 + "-" + s2 + } return timeStr } @@ -91,20 +88,24 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri lists []shop_batchCreateStore_request.StoreListItem ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam FreightTemplate = &model.FreightTemplate{} + errList = errlist.New() ) - errList := errlist.New() a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) timeStr := "" + m := make(map[int64]string) if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 { return "", fmt.Errorf("营业时间必填") } else { - timeStr = SplicingTimeToDoudian(storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2) + if storeDetail.OpenTime2 != 0 && storeDetail.CloseTime2 != 0 { + timeStr = SplicingTimeToDoudian(storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2, true) + } else { + timeStr = SplicingTimeToDoudian(storeDetail.OpenTime1, storeDetail.CloseTime1, 0, 0, false) + } + for j := 1; j <= 7; j++ { + m[int64(j)] = timeStr + } globals.SugarLogger.Debug("storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2,timeStr===========", storeDetail.OpenTime1, storeDetail.CloseTime1, storeDetail.OpenTime2, storeDetail.CloseTime2, timeStr) } - m := make(map[int64]string) - for j := 1; j <= 7; j++ { - m[int64(j)] = timeStr - } list := shop_batchCreateStore_request.StoreListItem{ RowId: 1, Name: storeDetail.Name, @@ -127,15 +128,6 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri if resp, err := a.BatchCreateStore(ShopBatchCreateStoreParam); err != nil { return "", err } else { - //if len(resp.ResultList) == 0 { - // return "", errors.New(fmt.Sprintf("创建店铺失败:%v", err)) - //} - //for k, v := range resp.ResultList { - // if k != len(resp.ResultList) { - // storeIDs = utils.Int64ToStr(v.Store.StoreId) + "," - // } - // storeIDs = utils.Int64ToStr(v.Store.StoreId) - //} 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)) @@ -146,13 +138,14 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri } else { if freightTemplateID == 0 { errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) - } - 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)) } else { - FreightTemplate.TemplateID = freightTemplateID - if err = dao.CreateEntity(db, FreightTemplate); err != nil { - errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败:%v", err)) + 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)) + } else { + FreightTemplate.TemplateID = freightTemplateID + if err = dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败:%v", err)) + } } } } @@ -221,10 +214,16 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin timeStr := "" m := make(map[int64]string) if storeInfo.OpenTime1 != 0 && storeInfo.CloseTime1 != 0 { - timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2) + if storeInfo.OpenTime2 != 0 && storeInfo.CloseTime2 != 0 { + timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, storeInfo.OpenTime2, storeInfo.CloseTime2, true) + } else { + timeStr = SplicingTimeToDoudian(storeInfo.OpenTime1, storeInfo.CloseTime1, 0, 0, false) + } for j := 1; j <= 7; j++ { m[int64(j)] = timeStr } + } else { + return fmt.Errorf("营业时间必填") } vendorStoreID := &shop_getStoreDetail_request.ShopGetStoreDetailParam{ StoreId: utils.Str2Int64(storeInfo.VendorStoreID), @@ -323,48 +322,62 @@ func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCod //默认 运费模板只创建 固定运费模板 func CreateFreightTemplate(storeCode int) (int64, error) { + var ( + param *freightTemplate_create_request.FreightTemplateCreateParam + ) //获取本地门店信息 storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "") if err != nil { return 0, err } - param := &freightTemplate_create_request.FreightTemplateCreateParam{ - Template: &freightTemplate_create_request.Template{ - TemplateName: "门店编码:" + utils.Int2Str(storeCode) + "的运费模板", - ProductProvince: int64(storeDetail.ProvinceCode), - ProductCity: int64(storeDetail.CityCode), - CalculateType: 2, //计价方式-1.按重量 2.按数量 - TransferType: 1, - RuleType: 1, //卖家包邮 - FixedAmount: 500, //固定运费 单位:分 - }, - Columns: []freightTemplate_create_request.ColumnsItem{ - { - FirstNum: 1, - FirstNumPrice: 0.00, - AddNum: 1, - AddNumPrice: 0.00, - RuleAddress: fmt.Sprintf(`{"%s":{"%s":{"%s":[0]}}}`, utils.Int2Str(storeDetail.ProvinceCode), utils.Int2Str(storeDetail.CityCode)[:2], utils.Int2Str(storeDetail.DistrictCode)[:2]), - IsOverFree: true, //是否包邮 - OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 - ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ - { - Id: int64(storeDetail.ProvinceCode), - 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 int64(storeDetail.DeliveryFeeDeductionSill) == 0 { + param = &freightTemplate_create_request.FreightTemplateCreateParam{ + Template: &freightTemplate_create_request.Template{ + TemplateName: storeDetail.VendorStoreName + "_" + utils.Int2Str(storeCode) + "的运费模板", + ProductProvince: int64(storeDetail.ProvinceCode), + ProductCity: int64(storeDetail.CityCode), + CalculateType: 2, //计价方式-1.按重量 2.按数量 + TransferType: 1, + RuleType: 1, //固定运费 + FixedAmount: 500, //固定运费 单位:分 + }, + } + } else { + param = &freightTemplate_create_request.FreightTemplateCreateParam{ + Template: &freightTemplate_create_request.Template{ + TemplateName: storeDetail.VendorStoreName + "_" + utils.Int2Str(storeCode) + "的运费模板", + ProductProvince: int64(storeDetail.ProvinceCode), + ProductCity: int64(storeDetail.CityCode), + CalculateType: 2, //计价方式-1.按重量 2.按数量 + TransferType: 1, + RuleType: 1, //固定运费&卖家包邮 + FixedAmount: 500, //固定运费 单位:分 + }, + Columns: []freightTemplate_create_request.ColumnsItem{ + { + RuleAddress: fmt.Sprintf(`{"%s":{"%s":{"%s":[0]}}}`, utils.Int2Str(storeDetail.ProvinceCode), utils.Int2Str(storeDetail.CityCode)[:2], utils.Int2Str(storeDetail.DistrictCode)[:2]), + IsOverFree: true, //是否包邮 + IsLimited: false, + OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 + ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ + { + Id: int64(storeDetail.ProvinceCode), + 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}, + }, }, }, }, - }, - }}, - }, - }}, + }}, + }, + }}, + } } resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param) if err != nil { @@ -567,7 +580,16 @@ func (P *PurchaseHandler) UpdateStoreOpTime(ctx *jxcontext.Context, vendorOrgCod t2 := opTimeList[1] t3 := opTimeList[2] t4 := opTimeList[4] - timeStr := SplicingTimeToDoudian(t1, t2, t3, t4) + timeStr := "" + if t1 != 0 && t2 != 0 { + if t3 != 0 && t4 != 0 { + timeStr = SplicingTimeToDoudian(t1, t2, t3, t4, true) + } else { + timeStr = SplicingTimeToDoudian(t1, t2, t3, t4, false) + } + } else { + return fmt.Errorf("营业时间必填") + } m := make(map[int64]string) for j := 1; j <= 7; j++ { m[int64(j)] = timeStr diff --git a/business/partner/purchase/tiktok_store/store_sku2_utils.go b/business/partner/purchase/tiktok_store/store_sku2_utils.go index a5363fdf8..61cd7cde3 100644 --- a/business/partner/purchase/tiktok_store/store_sku2_utils.go +++ b/business/partner/purchase/tiktok_store/store_sku2_utils.go @@ -83,8 +83,9 @@ func GetDeliveryTemp(api *tiktokShop.API, vendorStoreID string, storeDetail *dao }, Columns: []freightTemplate_create_request.ColumnsItem{ { - RuleAddress: fmt.Sprintf(`{"%d":{"%s":{"%s":nil}}}`, productProvince, utils.Int2Str(storeDetail.CityCode), utils.Int2Str(storeDetail.DistrictCode)), + RuleAddress: fmt.Sprintf(`{"%d":{"%s":{"%s":[0]}}}`, productProvince, utils.Int2Str(storeDetail.CityCode), utils.Int2Str(storeDetail.DistrictCode)), IsOverFree: true, + IsLimited: false, OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), ProvinceInfos: []freightTemplate_create_request.ProvinceInfosItem{ {