From c3d5eb3d4d0c18b9efda11740dcdbb201c3b7da8 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 16:49:21 +0800 Subject: [PATCH 1/6] CreateFreeShipTemplates --- business/jxstore/cms/store.go | 22 + .../partner/purchase/tiktok_store/store.go | 420 ++++++++---------- .../purchase/tiktok_store/warehouse.go | 35 ++ controllers/cms_store.go | 13 +- routers/commentsRouter_controllers.go | 9 + 5 files changed, 271 insertions(+), 228 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index eb3a1d6e1..cf26f3077 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6059,3 +6059,25 @@ func AssistCreateFence(relInfo map[string][]tiktok_store.RelInfo) (string, error } return "", nil } + +//批量创建包邮运费模板 +func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, shipFee int64) (string, error) { + errList := errlist.New() + for k, v := range relInfo { + for _, i := range v { + if bindFreight, err := tiktok_store.GetStoreFreight(k, utils.Str2Int64(i.StoreID)); err != nil || utils.IsNil(bindFreight) { + if err := tiktok_store.CreateBindFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + errList.AddErr(err) + } + } else { + if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + errList.AddErr(err) + } + } + } + } + if errList.GetErrListAsOne() != nil { + return fmt.Sprintf("%v", errList.GetErrListAsOne()), nil + } + return "", nil +} diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 4b1b3f164..259bd9dfd 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -3,9 +3,6 @@ package tiktok_store import ( "errors" "fmt" - address_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_create/request" - address_list_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/request" - address_list_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/response" freightTemplate_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_create/request" freightTemplate_update_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/freightTemplate_update/request" shop_batchCreateStore_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/shop_batchCreateStore/request" @@ -160,12 +157,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee db *dao.DaoDB ) //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 { //(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) { globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err) @@ -233,12 +225,7 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee } //3.平台获取限售模板 - 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 bindSaleLimitID, err := GetStoreSaleLimit(vendorOrgCode, vendorStoreID); err != nil || bindSaleLimitID == 0 || utils.IsNil(bindSaleLimitID) { //未绑定限售模板,目前默认创建起送价限售模板 if createSaleLimitID, err := CreateAndBindMinPriceTemplate(vendorOrgCode, vendorStoreID, minPrice); err != nil { errList.AddErr(fmt.Errorf("设置门店起送价限售模板失败:%v", err)) } else { @@ -451,8 +438,7 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin if storeInfo.SyncStatus&(model.SyncFlagNewMask|model.SyncFlagStoreStatus) != 0 { errList.AddErr(UpdateStoreStatus(jxcontext.AdminCtx, storeInfo.VendorOrgCode, storeID, storeInfo.VendorStoreID, mergedStoreStatus)) } - err3 := apiObj.EditStore(params) - if err3 != nil { + if err3 := apiObj.EditStore(params); err3 != nil { errList.AddErr(fmt.Errorf("修改门店(%d) 信息失败:%v", utils.Str2Int64(storeInfo.VendorStoreID), err3)) } //电子围栏 @@ -547,20 +533,12 @@ func CreateFreightTemplate(storeCode int) (int64, error) { Template: &freightTemplate_create_request.Template{ TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeCode) + ")_", ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), - CalculateType: 2, //计价方式-1.按重量 2.按数量 - TransferType: 1, - RuleType: 1, //固定运费&卖家包邮 + CalculateType: tiktok_api.CalculateTypeNum, + TransferType: tiktok_api.TransferTypeExpress, + RuleType: tiktok_api.RuleTypeFlatShipping, FixedAmount: 500, //固定运费 单位:分 }, } - //直辖市特殊处理 - flag := false - if storeDetail.CityName == tiktok_api.MunicipalityBeiJin || storeDetail.CityName == tiktok_api.MunicipalityShangHai || storeDetail.CityName == tiktok_api.MunicipalityTianJin || storeDetail.CityName == tiktok_api.MunicipalityChongQing { - flag = true - param.Template.ProductCity = int64(storeDetail.ProvinceCode) - } else { - param.Template.ProductCity = int64(storeDetail.CityCode) - } if int64(storeDetail.DeliveryFeeDeductionSill) != 0 { param.Template.TemplateName += "满减包邮模板" columns := []freightTemplate_create_request.ColumnsItem{ @@ -570,53 +548,55 @@ func CreateFreightTemplate(storeCode int) (int64, error) { OverAmount: int64(storeDetail.DeliveryFeeDeductionSill), //此字段在vendor_id=14时 存储满x包邮金额 }} param.Columns = columns - if flag { - 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.ProvinceCode), - Children: []freightTemplate_create_request.ChildrenItem_5{ - { - Id: int64(storeDetail.DistrictCode), - Children: []freightTemplate_create_request.ChildrenItem{ - {Id: 0}, - }, - }, - }, - }, - }}, - } - } else { - 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}, - }, - }, - }, - }, - }}, - } - } } else { param.Columns = nil param.Template.TemplateName += "固定运费模板" } - globals.SugarLogger.Debugf(" param.Template.ProductCity==%d,param.Template.ProductProvince==%d", param.Template.ProductCity, param.Template.ProductProvince) - resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param) - if err != nil { - return 0, err + //直辖市特殊处理 + if HandleMunicipality(storeDetail.CityName) { + param.Template.ProductCity = int64(storeDetail.ProvinceCode) + 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.ProvinceCode), + Children: []freightTemplate_create_request.ChildrenItem_5{ + { + Id: int64(storeDetail.DistrictCode), + Children: []freightTemplate_create_request.ChildrenItem{ + {Id: 0}, + }, + }, + }, + }, + }}, + } + } 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}, + }, + }, + }, + }, + }}, + } + } + if resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param); err != nil { + return 0, err + } else { + return resp.TemplateId, nil } - return resp.TemplateId, nil } // /freightTemplate/update 修改运费模板 @@ -637,9 +617,9 @@ func UpdateFreightTemplate(storeCode int) error { Id: bindTemplate, TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeCode) + ")_", ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), - CalculateType: 2, //计价方式-1.按重量 2.按数量 - TransferType: 1, - RuleType: 1, //固定运费 + CalculateType: tiktok_api.CalculateTypeNum, + TransferType: tiktok_api.TransferTypeExpress, + RuleType: tiktok_api.RuleTypeFlatShipping, FixedAmount: 500, //固定运费 单位:分 }, } @@ -670,119 +650,137 @@ func UpdateFreightTemplate(storeCode int) error { return nil } -// /freightTemplate/create 批量创建 满x包邮 运费模板 -//func (P *PurchaseHandler) BatchCreateFreightTemplate(relInfo map[string]map[string]string, shipFee int64) error { -// var ( -// errList = errlist.New() -// flag = make(map[string]bool) -// ) -// for i, j := range relInfo { -// for k, v := range j { -// if bindFreightID, err := getAPI(i, utils.Str2Int(k), v).GetStoreFreight(utils.Str2Int64(v)); err != nil || len(bindFreightID) == 0 { -// flag[v] = false -// } -// flag[v] = true -// } -// } -// storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") -// if err != nil { -// return errors.New("获取门店信息失败,请重试") -// } -// //预处理(1)更新 (2)创建 -// param := &freightTemplate_create_request.FreightTemplateCreateParam{ -// Template: &freightTemplate_create_request.Template{ -// TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeID) + ")_", -// ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), -// CalculateType: 2, //计价方式-1.按重量 2.按数量 -// TransferType: 1, -// RuleType: 1, //固定运费&卖家包邮 -// FixedAmount: 500, //固定运费 单位:分 -// }, -// } -// //直辖市特殊处理 -// flag := false -// if storeDetail.CityName == tiktok_api.MunicipalityBeiJin || storeDetail.CityName == tiktok_api.MunicipalityShangHai || storeDetail.CityName == tiktok_api.MunicipalityTianJin || storeDetail.CityName == tiktok_api.MunicipalityChongQing { -// flag = true -// param.Template.ProductCity = int64(storeDetail.ProvinceCode) -// } else { -// param.Template.ProductCity = int64(storeDetail.CityCode) -// } -// 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 -// if flag { -// 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.ProvinceCode), -// Children: []freightTemplate_create_request.ChildrenItem_5{ -// { -// Id: int64(storeDetail.DistrictCode), -// Children: []freightTemplate_create_request.ChildrenItem{ -// {Id: 0}, -// }, -// }, -// }, -// }, -// }}, -// } -// } else { -// 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}, -// }, -// }, -// }, -// }, -// }}, -// } -// } -// } else { -// param.Columns = nil -// param.Template.TemplateName += "固定运费模板" -// } -// globals.SugarLogger.Debugf(" param.Template.ProductCity==%d,param.Template.ProductProvince==%d", param.Template.ProductCity, param.Template.ProductProvince) -// resp, err := getAPI(storeDetail.VendorOrgCode, storeCode, storeDetail.VendorStoreID).FreightTemplateCreate(param) -// if err != nil { -// return 0, err -// } -// return resp.TemplateId, nil -// -// bindInfo := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{ -// StoreId: vendorStoreID, -// FreightId: resp.TemplateId, -// } -// err = api.BindFreightTemplate(bindInfo) -// if err != nil { -// return err -// } -// //并写入数据库 -// freightInfo := model.FreightTemplate{ -// StoreID: int(storeID), -// VendorStoreID: utils.Int64ToStr(vendorStoreID), -// TemplateID: resp.TemplateId, -// } -// if err = dao.CreateEntity(db, freightInfo); err != nil { -// return err -// } -// return nil -//} +// /freightTemplate/create 批量创建绑定 满x包邮 运费模板 +func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { + var ( + db = dao.GetDB() + errList = errlist.New() + FreightTemplate = &model.FreightTemplate{} + ) + if shipFee == 0 { + return errors.New("包邮金额必传,请检查") + } + storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") + if err != nil { + return errors.New("获取门店信息失败,请重试") + } + param := &freightTemplate_create_request.FreightTemplateCreateParam{ + Template: &freightTemplate_create_request.Template{ + TemplateName: storeDetail.VendorStoreName + "(" + utils.Int2Str(storeID) + ")_的满" + utils.Int64ToStr(shipFee) + "包邮模板", + ProductProvince: utils.Str2Int64(utils.Int2Str(storeDetail.ProvinceCode)[:2]), + CalculateType: tiktok_api.CalculateTypeNum, + TransferType: tiktok_api.TransferTypeExpress, + RuleType: tiktok_api.RuleTypeFlatShipping, + FixedAmount: 500, //固定运费 单位:分 + }, + Columns: []freightTemplate_create_request.ColumnsItem{ + { + IsOverFree: true, + IsLimited: false, + OverAmount: shipFee, + }}, + } + //直辖市特殊处理 + if HandleMunicipality(storeDetail.CityName) { + param.Template.ProductCity = int64(storeDetail.ProvinceCode) + 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.ProvinceCode), + Children: []freightTemplate_create_request.ChildrenItem_5{ + { + Id: int64(storeDetail.DistrictCode), + Children: []freightTemplate_create_request.ChildrenItem{ + {Id: 0}, + }, + }, + }, + }, + }}, + } + } 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}, + }, + }, + }, + }, + }}, + } + } + if resp, err := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).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 { + return errors.New(fmt.Sprintf("平台门店(%s) 京西门店(%d) 绑定包邮模板失败:%v,根据提示处理", storeDetail.VendorStoreID, storeID, err)) + } else { + if err := dao.CreateEntity(db, FreightTemplate); err != nil { + if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID"); err1 != nil { + errList.AddErr(fmt.Errorf("包邮模板:更新操作,同步进数据库错误信息:%v", err1)) + } else { + errList.AddErr(fmt.Errorf("包邮模板:创建操作,同步进数据库错误信息:%v", err)) + } + } + } + } + if errList.GetErrListAsOne() != nil { + return errList.GetErrListAsOne() + } + return nil +} + +//更新 包邮运费模板 +func UpdateFreeShipTemplate(storeID int, shipFee int64) error { + if shipFee == 0 { + return errors.New("包邮金额必传,请检查") + } + storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") + if err != nil { + return errors.New("获取门店信息失败,请重试") + } + a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) + //获取远程运费模板详情 + if bindFreightID, err := a.GetStoreFreight(int64(storeID)); err != nil { + return errors.New("获取门店绑定运费模板失败") + } else { + if freightDetail, err := a.GetStoreFreightDetail(bindFreightID[0]); err != nil { + param := &freightTemplate_update_request.FreightTemplateUpdateParam{ + Template: &freightTemplate_update_request.Template{ + Id: bindFreightID[0], + TemplateName: freightDetail.Template.TemplateName, + ProductProvince: utils.Str2Int64(freightDetail.Template.ProductProvince), + ProductCity: utils.Str2Int64(freightDetail.Template.ProductCity), + CalculateType: tiktok_api.CalculateTypeNum, + TransferType: tiktok_api.TransferTypeExpress, + RuleType: tiktok_api.RuleTypeFlatShipping, + FixedAmount: 500, + }, + Columns: []freightTemplate_update_request.ColumnsItem{ + { + IsOverFree: true, + IsLimited: false, + OverAmount: shipFee, + }}, + } + if _, err := a.FreightTemplateUpdate(param); err != nil { + return errors.New("更新包邮运费模板失败") + } + } + } + return nil +} // /shop/bindStoreFreight 门店绑定运费模版 //门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系 @@ -805,38 +803,6 @@ func GetStoreFreight(vendorOrgCode string, storeID int64) (int64, error) { } } -// /address/create 创建店铺地址库(新建即绑定) -func (P *PurchaseHandler) CreateAddress(appOrgCode string, addressInfo address_create_request.AddressCreateParam) (addressID int64, err error) { - if resp, err := getAPI(appOrgCode, 0, utils.Int64ToStr(addressInfo.StoreId)).AddressCreate(&address_create_request.AddressCreateParam{ - Address: addressInfo.Address, - StoreId: addressInfo.StoreId, - }); err != nil { - return 0, err - } else { - return resp.AddressId, nil - } -} - -// /address/list 获取售后地址列表接口 -//分页获取商家地址列表 -func (P *PurchaseHandler) GetAddressList(appOrgCode string, param *address_list_request.AddressListParam) (*address_list_response.AddressListData, error) { - //不传入ID则是获取所有门店售后地址列表 - info := &address_list_request.AddressListParam{ - PageSize: 10, - PageNo: 1, - OrderBy: param.OrderBy, - OrderField: param.OrderField, - } - if param.StoreId != 0 { - info.StoreId = param.StoreId - } - if listInfo, err := getAPI(appOrgCode, 0, utils.Int64ToStr(info.StoreId)).GetAddressList(info); err != nil { - return nil, err - } else { - return listInfo, nil - } -} - // /trade/createTradeLimitTemplate 创建限售模板 默认模板 暂时不使用 func CreateTradeLimitTemplate(appOrgCode string, vendorStoreID int64) (tradeLimitID int64, err error) { param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ @@ -861,7 +827,7 @@ func CreateTradeLimitTemplate(appOrgCode string, vendorStoreID int64) (tradeLimi return resp.TradeLimitId, nil } -//创建起送价的 运费模板以及绑定 +//创建起送价的 限售模板以及绑定 func CreateAndBindMinPriceTemplate(vendorOrgCode string, vendorStoreID, minimum int64) (int64, error) { resp, err := getAPI(vendorOrgCode, 0, "").CreateTradeLimitTemplate(&trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ StoreId: vendorStoreID, @@ -1104,17 +1070,23 @@ type RelInfo struct { VendorStoreID string `json:"vendorStoreID"` } -func ToMap(actual interface{}) (map[string]string, error) { +func ToStringSlice(actual interface{}) ([]string, error) { var res []string value := reflect.ValueOf(actual) globals.SugarLogger.Debugf("value.Kind()=========%s", value.Kind()) - if value.Kind() != reflect.Map { + if value.Kind() != reflect.Slice || value.Kind() != reflect.Array { return nil, errors.New("parse error") } - temp := actual.(map[string]string) - globals.SugarLogger.Debugf("toMap temp===============%v", temp) for i := 0; i < value.Len(); i++ { res = append(res, value.Index(i).Interface().(string)) } - return temp, nil + return res, nil +} + +//直辖市判断 +func HandleMunicipality(cityName string) bool { + if cityName == tiktok_api.MunicipalityBeiJin || cityName == tiktok_api.MunicipalityShangHai || cityName == tiktok_api.MunicipalityTianJin || cityName == tiktok_api.MunicipalityChongQing { + return true + } + return false } diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index 88494331c..7ada46e1b 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -2,6 +2,9 @@ package tiktok_store import ( "fmt" + address_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_create/request" + address_list_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/request" + address_list_response "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/address_list/response" 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_create_request "git.rosy.net.cn/baseapi/platformapi/tiktok_shop/sdk-golang/api/warehouse_create/request" @@ -313,3 +316,35 @@ func SpecialTreat(vendorOrgCode string, vendorStoreID, storeID, deliveryFeeDeduc globals.SugarLogger.Debugf("SpecialTreat wrong information endErr: %s", endErr) return endErr } + +// /address/create 创建店铺地址库(新建即绑定) +func (P *PurchaseHandler) CreateAddress(appOrgCode string, addressInfo address_create_request.AddressCreateParam) (addressID int64, err error) { + if resp, err := getAPI(appOrgCode, 0, utils.Int64ToStr(addressInfo.StoreId)).AddressCreate(&address_create_request.AddressCreateParam{ + Address: addressInfo.Address, + StoreId: addressInfo.StoreId, + }); err != nil { + return 0, err + } else { + return resp.AddressId, nil + } +} + +// /address/list 获取售后地址列表接口 +//分页获取商家地址列表 +func (P *PurchaseHandler) GetAddressList(appOrgCode string, param *address_list_request.AddressListParam) (*address_list_response.AddressListData, error) { + //不传入ID则是获取所有门店售后地址列表 + info := &address_list_request.AddressListParam{ + PageSize: 10, + PageNo: 1, + OrderBy: param.OrderBy, + OrderField: param.OrderField, + } + if param.StoreId != 0 { + info.StoreId = param.StoreId + } + if listInfo, err := getAPI(appOrgCode, 0, utils.Int64ToStr(info.StoreId)).GetAddressList(info); err != nil { + return nil, err + } else { + return listInfo, nil + } +} diff --git a/controllers/cms_store.go b/controllers/cms_store.go index 0144d65ee..1ee1c6696 100644 --- a/controllers/cms_store.go +++ b/controllers/cms_store.go @@ -10,7 +10,6 @@ import ( "git.rosy.net.cn/jx-callback/business/jxutils/netprinter" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/partner/purchase/tiktok_store" - "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/jx-callback/globals/api" "github.com/astaxie/beego/server/web" ) @@ -1519,11 +1518,8 @@ func (c *StoreController) GetDDScope() { // @router /CreateDDStoreFence [post] func (c *StoreController) CreateDDStoreFence() { c.callCreateDDStoreFence(func(params *tStoreCreateDDStoreFenceParams) (retVal interface{}, errCode string, err error) { - globals.SugarLogger.Debugf("进入callCreateDDStoreFence") payload := make(map[string][]tiktok_store.RelInfo) - globals.SugarLogger.Debugf("params.Payload===========%v", params.Payload) if err := utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { - globals.SugarLogger.Debugf("payload=============%v", payload) retVal, err = cms.AssistCreateFence(payload) } return retVal, "", err @@ -1538,3 +1534,12 @@ func (c *StoreController) CreateDDStoreFence() { // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /CreateFreeShipTemplates [post] +func (c *StoreController) CreateFreeShipTemplates() { + c.callCreateFreeShipTemplates(func(params *tStoreCreateFreeShipTemplatesParams) (retVal interface{}, errCode string, err error) { + payload := make(map[string][]tiktok_store.RelInfo) + if err := utils.UnmarshalUseNumber([]byte(params.Payload), &payload); err == nil { + retVal, err = cms.BatchCreateFreeShipTemplate(payload, int64(params.ShipFee)) + } + return retVal, "", err + }) +} diff --git a/routers/commentsRouter_controllers.go b/routers/commentsRouter_controllers.go index 1227efac5..ca9b2fbba 100644 --- a/routers/commentsRouter_controllers.go +++ b/routers/commentsRouter_controllers.go @@ -2972,6 +2972,15 @@ func init() { Filters: nil, Params: nil}) + web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"] = append(web.GlobalControllerRouter["git.rosy.net.cn/jx-callback/controllers:StoreController"], + web.ControllerComments{ + Method: "CreateFreeShipTemplates", + Router: `/CreateFreeShipTemplates`, + 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{ Method: "BackUpStoreSkuBind", From 6acebc47e19ab81bd2679ce7d07721943c9b43de Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 17:19:44 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=9B=9B=E7=BA=A7?= =?UTF-8?q?=E5=85=A8=E9=87=8F=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../partner/purchase/tiktok_store/store.go | 68 +++++++++---------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 259bd9dfd..714f31aad 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -683,42 +683,42 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { //直辖市特殊处理 if HandleMunicipality(storeDetail.CityName) { param.Template.ProductCity = int64(storeDetail.ProvinceCode) - 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.ProvinceCode), - Children: []freightTemplate_create_request.ChildrenItem_5{ - { - Id: int64(storeDetail.DistrictCode), - Children: []freightTemplate_create_request.ChildrenItem{ - {Id: 0}, - }, - }, - }, - }, - }}, - } + //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.ProvinceCode), + // Children: []freightTemplate_create_request.ChildrenItem_5{ + // { + // Id: int64(storeDetail.DistrictCode), + // Children: []freightTemplate_create_request.ChildrenItem{ + // {Id: 0}, + // }, + // }, + // }, + // }, + // }}, + //} } 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[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}, + // }, + // }, + // }, + // }, + // }}, + //} } if resp, err := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).FreightTemplateCreate(param); err != nil { return errors.New(fmt.Sprintf("平台门店(%s) 京西门店(%d) 创建包邮模板失败:%v,根据提示处理", storeDetail.VendorStoreID, storeID, err)) From d70030700de70697e1aaf62bdbbf817e5ecc9c67 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 17:45:06 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 3 ++- business/partner/purchase/tiktok_store/store.go | 17 ----------------- 2 files changed, 2 insertions(+), 18 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index cf26f3077..d60d9dc64 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6065,11 +6065,12 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship errList := errlist.New() for k, v := range relInfo { for _, i := range v { - if bindFreight, err := tiktok_store.GetStoreFreight(k, utils.Str2Int64(i.StoreID)); err != nil || utils.IsNil(bindFreight) { + if bindFreightID, err := tiktok_store.GetStoreFreight(k, utils.Str2Int64(i.StoreID)); err != nil || bindFreightID == 0 || utils.IsNil(bindFreightID) { if err := tiktok_store.CreateBindFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { errList.AddErr(err) } } else { + globals.SugarLogger.Debugf("进入更新包邮模板操作") if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { errList.AddErr(err) } diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 714f31aad..b0670a1ab 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -702,23 +702,6 @@ func CreateBindFreeShipTemplate(storeID int, shipFee 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}, - // }, - // }, - // }, - // }, - // }}, - //} } if resp, err := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).FreightTemplateCreate(param); err != nil { return errors.New(fmt.Sprintf("平台门店(%s) 京西门店(%d) 创建包邮模板失败:%v,根据提示处理", storeDetail.VendorStoreID, storeID, err)) From 852cc50730752ffc1b2ecce69e9710a4c4cf382a Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 17:49:36 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index d60d9dc64..ffe475587 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6065,13 +6065,13 @@ 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.StoreID)); err != nil || bindFreightID == 0 || utils.IsNil(bindFreightID) { + 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 { errList.AddErr(err) } } else { globals.SugarLogger.Debugf("进入更新包邮模板操作") - if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.VendorStoreID), shipFee); err != nil { errList.AddErr(err) } } From 65aa021726379a5b998723a50158f2f0a78b9a40 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 17:54:14 +0800 Subject: [PATCH 5/6] 1 --- business/jxstore/cms/store.go | 2 +- business/partner/purchase/tiktok_store/store.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index ffe475587..d2ca417a8 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6071,7 +6071,7 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship } } else { globals.SugarLogger.Debugf("进入更新包邮模板操作") - if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.VendorStoreID), shipFee); err != nil { + if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { errList.AddErr(err) } } diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index b0670a1ab..11bc80c38 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -662,7 +662,7 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { } storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") if err != nil { - return errors.New("获取门店信息失败,请重试") + return errors.New("创建包邮运费模板,获取门店信息失败,请重试") } param := &freightTemplate_create_request.FreightTemplateCreateParam{ Template: &freightTemplate_create_request.Template{ @@ -731,11 +731,11 @@ func UpdateFreeShipTemplate(storeID int, shipFee int64) error { } storeDetail, err := dao.GetStoreDetail(dao.GetDB(), storeID, model.VendorIDDD, "") if err != nil { - return errors.New("获取门店信息失败,请重试") + return errors.New("更新包邮运费模板,获取门店信息失败,请重试") } a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) //获取远程运费模板详情 - if bindFreightID, err := a.GetStoreFreight(int64(storeID)); err != nil { + if bindFreightID, err := a.GetStoreFreight(utils.Str2Int64(storeDetail.VendorStoreID)); err != nil { return errors.New("获取门店绑定运费模板失败") } else { if freightDetail, err := a.GetStoreFreightDetail(bindFreightID[0]); err != nil { From 6177d722a87f4771f4593136ddf953b98517d3d2 Mon Sep 17 00:00:00 2001 From: richboo111 Date: Wed, 23 Nov 2022 18:07:17 +0800 Subject: [PATCH 6/6] 1 --- business/jxstore/cms/store.go | 6 ++++-- .../partner/purchase/tiktok_store/store.go | 21 ++----------------- 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/business/jxstore/cms/store.go b/business/jxstore/cms/store.go index d2ca417a8..0b437afa3 100644 --- a/business/jxstore/cms/store.go +++ b/business/jxstore/cms/store.go @@ -6071,8 +6071,10 @@ func BatchCreateFreeShipTemplate(relInfo map[string][]tiktok_store.RelInfo, ship } } else { globals.SugarLogger.Debugf("进入更新包邮模板操作") - if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { - errList.AddErr(err) + if err := tiktok_store.ShopBindStoreFreight(k, utils.Str2Int64(i.VendorStoreID), bindFreightID); err == nil { + if err := tiktok_store.UpdateFreeShipTemplate(utils.Str2Int(i.StoreID), shipFee); err != nil { + errList.AddErr(err) + } } } } diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 11bc80c38..6b77c20e1 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -683,23 +683,6 @@ func CreateBindFreeShipTemplate(storeID int, shipFee int64) error { //直辖市特殊处理 if HandleMunicipality(storeDetail.CityName) { param.Template.ProductCity = int64(storeDetail.ProvinceCode) - //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.ProvinceCode), - // Children: []freightTemplate_create_request.ChildrenItem_5{ - // { - // Id: int64(storeDetail.DistrictCode), - // Children: []freightTemplate_create_request.ChildrenItem{ - // {Id: 0}, - // }, - // }, - // }, - // }, - // }}, - //} } else { param.Template.ProductCity = int64(storeDetail.CityCode) } @@ -735,8 +718,8 @@ func UpdateFreeShipTemplate(storeID int, shipFee int64) error { } a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) //获取远程运费模板详情 - if bindFreightID, err := a.GetStoreFreight(utils.Str2Int64(storeDetail.VendorStoreID)); err != nil { - return errors.New("获取门店绑定运费模板失败") + 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 { param := &freightTemplate_update_request.FreightTemplateUpdateParam{