diff --git a/business/model/store.go b/business/model/store.go index f03b9e1f1..a1f5c90c4 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -1019,12 +1019,11 @@ func (*BrandCategoryMap) TableUnique() [][]string { // 抖店 运费模板、仓库以及电子围栏绑定 type FreightTemplate struct { ModelIDCULD - StoreID int64 `orm:"column(store_id)" json:"storeID"` //京西本地门店ID即抖店门店编码 - VendorStoreID int64 `orm:"column(vendor_store_id)" json:"vendorStoreID"` //抖店平台门店ID - TemplateID int64 `orm:"column(template_id)" json:"templateID"` //运费模板ID 1对1 - TemplateDetail string `orm:"column(template_detail)" json:"templateDetail"` //json转化的模板信息 - WarehouseID string `orm:"column(warehouse_id)" json:"warehouseID"` //创建门店时绑定的仓库id 1对1 - FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 1对1 + StoreID int `orm:"column(store_id)" json:"storeID"` //京西本地门店ID即抖店门店编码 + VendorStoreID string `orm:"column(vendor_store_id)" json:"vendorStoreID"` //抖店平台门店ID + TemplateID int64 `orm:"column(template_id)" json:"templateID"` //运费模板ID 1对1 + WarehouseID int64 `orm:"column(warehouse_id)" json:"warehouseID"` //创建门店时绑定的仓库id 1对1 + FenceID string `orm:"column(fence_id)" json:"fenceID"` //电子围栏id 1对1 } func (*FreightTemplate) TableUnique() [][]string { diff --git a/business/partner/purchase/tiktok_store/order_afs_utils.go b/business/partner/purchase/tiktok_store/order_afs_utils.go index 343beafdd..b4597d170 100644 --- a/business/partner/purchase/tiktok_store/order_afs_utils.go +++ b/business/partner/purchase/tiktok_store/order_afs_utils.go @@ -143,7 +143,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { @@ -166,7 +166,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { @@ -190,7 +190,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) @@ -213,7 +213,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) @@ -236,7 +236,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) @@ -259,7 +259,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) @@ -282,7 +282,7 @@ func (c *PurchaseHandler) callbackAfsMsg2Status(msgId string, msg interface{}) ( if k, ok := ReasonCodeMap[refundOrder.ReasonCode]; ok { orderMsg.Remark = k } else { - orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + string(refundOrder.ReasonCode) + orderMsg.Remark = "抖音reason_code对应reason不足,需要更新.code:" + utils.Int2Str(refundOrder.ReasonCode) } if refundOrder.AftersaleId > 0 { orderMsg.VendorOrderID = utils.Int64ToStr(refundOrder.AftersaleId) diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 58aacb3ad..cdb866e15 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -80,9 +80,13 @@ func SplicingTimeToDoudian(openTime1, closeTime1, openTime2, closeTime2 int16) ( 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 + fences []string lists []shop_batchCreateStore_request.StoreListItem ShopBatchCreateStoreParam *shop_batchCreateStore_request.ShopBatchCreateStoreParam + FreightTemplate *model.FreightTemplate ) + errList := errlist.New() //a:=getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) timeStr := "" if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 { @@ -118,7 +122,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri return "", err } else { if len(resp.ResultList) == 0 { - return "", errors.New("创建店铺失败,请检查店铺基本信息") + return "", err } for k, v := range resp.ResultList { if k != len(resp.ResultList) { @@ -127,29 +131,65 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri storeIDs += utils.Int64ToStr(v.Store.StoreId) } if utils.Str2Int(storeIDs) == 0 { - return "", errors.New("创建店铺失败,请检查店铺基本信息") + return "", errors.New(fmt.Sprintf("创建店铺失败原因storeIDs = 0:%v,%v", err, resp.ResultList[0].Msg)) + } + //创建并绑定运费模板 + freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID) + if err != nil { + errList.AddErr(fmt.Errorf("创建运费模板失败原因:%v", err)) + } else { + err = P.ShopBindStoreFreight(int64(storeDetail.Store.ID), freightTemplateID) + if err != nil { + errList.AddErr(fmt.Errorf("门店:%d 绑定运费模板:%d 失败原因:%v", int64(storeDetail.Store.ID), freightTemplateID, err)) + } else { + FreightTemplate.TemplateID = freightTemplateID + _, err := dao.UpdateEntity(db, FreightTemplate, "TemplateID") + if err != nil { + errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败原因:%v", err)) + } + } + } + //创建并绑定仓库 + warehouse, err := P.CreateWarehouse(utils.Int2Str(storeDetail.Store.ID), storeDetail.VendorOrgCode) + if err != nil { + errList.AddErr(fmt.Errorf("创建仓库失败原因:%v", err)) + } else { + tempStoreID = append(tempStoreID, int64(storeDetail.Store.ID)) + err = P.BindStoreWarehouse(tempStoreID, utils.Int2Str(storeDetail.Store.ID), utils.Int64ToStr(warehouse)) + if err != nil { + errList.AddErr(fmt.Errorf("门店:%d 绑定仓库:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err)) + } else { + FreightTemplate.WarehouseID = warehouse + _, err := dao.UpdateEntity(db, FreightTemplate, "WarehouseID") + if err != nil { + errList.AddErr(fmt.Errorf("仓库ID存入数据库失败原因:%v", err)) + } + } } - //创建满减模板 - - //创建仓库 - //warehouse, err := P.CreateWarehouse(utils.Int2Str(storeDetail.Store.ID)) - //if err != nil { - // return "", err - //} - //创建成功的id存入 - //创建并绑定电子围栏 - fences := []string{} if fenceID, err := CreateFenceByStore(int(resp.ResultList[0].Store.StoreId)); err != nil { - return "", err + errList.AddErr(fmt.Errorf("创建电子围栏失败原因:%v", err)) } else { fences = append(fences, fenceID) if err := BindFenceByStore(resp.ResultList[0].Store.StoreId, fences); err != nil { - return "", err + errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err)) + } else { + FreightTemplate.FenceID = fenceID + _, err := dao.UpdateEntity(db, FreightTemplate, "FenceID") + if err != nil { + errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败原因:%v", err)) + } } } globals.SugarLogger.Debug("CreateStore2 return storeIDs==========", storeIDs) - return storeIDs, nil + FreightTemplate.StoreID = storeDetail.Store.ID + FreightTemplate.VendorStoreID = storeIDs + _, err = dao.UpdateEntity(db, FreightTemplate, "StoreID", "VendorStoreID") + if err != nil { + errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err)) + } + globals.SugarLogger.Debug("CreateStore last step success..................") + return storeIDs, errors.New(fmt.Sprintf("%v", errList)) } } @@ -215,8 +255,9 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin globals.SugarLogger.Debug("================mergedStoreStatus", mergedStoreStatus) errList.AddErr(P.UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus)) } - //TODO 需增加 更新运费模板、电子围栏 + //更新电子围栏 + //TODO 需增加 更新运费模板、电子围栏 _, err3 := api.EditStore(params) if err3 != nil { errList.AddErr(err3) @@ -259,35 +300,65 @@ func (p *PurchaseHandler) UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCod return err } -//默认只创建固定运费模板 -func (P *PurchaseHandler) CreateFreightTemplate(storeCode, full, subtraction int) (int64, error) { - //var ( - // columns []freightTemplate_create_request.ColumnsItem - //) - ////获取本地门店信息 - //storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "") - //if err != nil { - // return 0, err - //} - //column := &freightTemplate_create_request.ColumnsItem{ - // FirstNum: 1, - // FirstNumPrice: 0.01, - // AddNum: 1, - // AddNumPrice: 0.01, - //} - //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-卖家包邮、3-货到付款 时,计价类型传 2-按数量 - // TransferType: 1, - // RuleType: 2, //卖家包邮 - // - // }, - // Columns: columns, - //} - return 0, nil +//默认 运费模板只创建 固定运费模板 +func CreateFreightTemplate(storeCode int) (int64, error) { + var ( + columns []freightTemplate_create_request.ColumnsItem + childrenItems []freightTemplate_create_request.ChildrenItem + children5s []freightTemplate_create_request.ChildrenItem_5 + provinceInfos []freightTemplate_create_request.ProvinceInfosItem + children4s []freightTemplate_create_request.ChildrenItem_4 + ) + //获取本地门店信息 + storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeCode, model.VendorIDDD, "") + if err != nil { + return 0, err + } + childrenItem := freightTemplate_create_request.ChildrenItem{ + Id: 0, //获取不到街道id + } + childrenItems = append(childrenItems, childrenItem) + children5 := freightTemplate_create_request.ChildrenItem_5{ + Id: int64(storeDetail.DistrictCode), + Children: childrenItems, + } + children5s = append(children5s, children5) + children4 := freightTemplate_create_request.ChildrenItem_4{ + Id: int64(storeDetail.CityCode), + Children: children5s, + } + children4s = append(children4s, children4) + provinceInfo := freightTemplate_create_request.ProvinceInfosItem{ + Id: int64(storeDetail.ProvinceCode), + Children: children4s, + } + provinceInfos = append(provinceInfos, provinceInfo) + column := freightTemplate_create_request.ColumnsItem{ + FirstNum: 1, + FirstNumPrice: 0.01, + AddNum: 1, + AddNumPrice: 0.01, + IsOverFree: true, //是否包邮 + OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 + ProvinceInfos: provinceInfos, + } + columns = append(columns, column) + 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-卖家包邮、3-货到付款 时,计价类型传 2-按数量 + TransferType: 1, + RuleType: 2, //卖家包邮 + }, + Columns: columns, + } + resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param) + if err != nil { + return 0, err + } + return resp.TemplateId, nil } // /freightTemplate/create 创建运费模板 @@ -318,8 +389,8 @@ func (P *PurchaseHandler) CreateFreightTemplateDirectly(templateInfo freightTemp } //并写入数据库 freightInfo := model.FreightTemplate{ - StoreID: storeID, - VendorStoreID: vendorStoreID, + StoreID: int(storeID), + VendorStoreID: utils.Int64ToStr(vendorStoreID), TemplateID: resp.TemplateId, } if err = dao.CreateEntity(db, freightInfo); err != nil { diff --git a/business/partner/purchase/tiktok_store/store_test.go b/business/partner/purchase/tiktok_store/store_test.go new file mode 100644 index 000000000..b9c1ba762 --- /dev/null +++ b/business/partner/purchase/tiktok_store/store_test.go @@ -0,0 +1,13 @@ +package tiktok_store + +import ( + "fmt" + "testing" +) + +//创建运费模板 +func TestCreateFreight(t *testing.T) { + data, err := CreateFreightTemplate(668504) + 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 896da8b71..4864dba5b 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -60,9 +60,10 @@ func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_reque // /warehouse/bindStore 仓库绑定门店 func (P *PurchaseHandler) BindStoreWarehouse(storeIDs []int64, outWarehouseID, appOrgCode string) error { + tempWarehouseID := "门店编码:" + outWarehouseID + "的仓库" param := &warehouse_bindStore_request.WarehouseBindStoreParam{ StoreIds: storeIDs, - OutWarehouseId: outWarehouseID, + OutWarehouseId: tempWarehouseID, } if _, err := getAPI(appOrgCode, 0, "").StoreBindWarehouse(param); err != nil { return err diff --git a/globals/beegodb/beegodb.go b/globals/beegodb/beegodb.go index d0c93d1af..73f4e61e0 100644 --- a/globals/beegodb/beegodb.go +++ b/globals/beegodb/beegodb.go @@ -79,6 +79,7 @@ func Init() { orm.RegisterModel(&model.SecretNumber{}) orm.RegisterModel(&model.BiddingInfo{}) + orm.RegisterModel(&model.FreightTemplate{}) //抖店存储门店与 仓库、运费模板、电子围栏的映射关系 // orm.RegisterModel(&model.ActivityForSku{}) // orm.RegisterModel(&legacymodel.JxBadComments2{})