diff --git a/business/model/dao/store.go b/business/model/dao/store.go index 1e3231eda..31ba2b753 100644 --- a/business/model/dao/store.go +++ b/business/model/dao/store.go @@ -1,6 +1,7 @@ package dao import ( + "errors" "sort" "time" @@ -1563,13 +1564,13 @@ func GetStoreBrandInfos(storeID int) (date *BrandInfos, err error) { return detail, err } -//查询门店绑定的运费模板 +// 查询FreightTemplate func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) { var ( sqlParams = []interface{}{} bindInfo *model.FreightTemplate ) - sql := "SELECT a.store_id,a.vendor_store_id,a.template_id,a.warehouse_id,a.fence_id FROM freight_template a " + sql := "SELECT a.store_id,a.vendor_store_id,a.template_id,a.warehouse_id,a.fence_id,a.trade_limit_id FROM freight_template a " if storeID != 0 { sql += "WHERE store_id = ? " sqlParams = append(sqlParams, storeID) @@ -1579,3 +1580,46 @@ func QueryStoreBindInfo(storeID int) (*model.FreightTemplate, error) { } return bindInfo, nil } + +//向FreightTemplate 插入数据 +func InsertIntoFreightTemplate(storeID int, vendorStoreID string, templateID, warehouseID, fenceID, tradeLimitID int64) error { + var ( + sqlStr = []string{} + tStr = "" + sqlParams = []interface{}{} + ) + if storeID == 0 && utils.Str2Int(vendorStoreID) == 0 { + return errors.New("storeID,vendorStoreID 必传") + } + if _, err := ExecuteSQL(GetDB(), "SELECT COUNT(*) FROM freight_template a WHERE a.store_id = ? AND a.vendor_store_id = ?", storeID, vendorStoreID); err != nil { + if _, err := ExecuteSQL(GetDB(), "INSERT INTO freight_template (store_id,vendor_store_id,created_at,updated_at) VALUES (?,?,?,?)", storeID, vendorStoreID, time.Now(), time.Now()); err != nil { + return err + } + } + if templateID != 0 { + sqlStr = append(sqlStr, " UPDATE freight_template a SET a.template_id = ? ") + sqlParams = append(sqlParams, templateID) + } + if warehouseID != 0 { + sqlStr = append(sqlStr, " UPDATE freight_template a SET a.warehouse_id = ? ") + sqlParams = append(sqlParams, warehouseID) + } + if fenceID != 0 { + sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ") + sqlParams = append(sqlParams, fenceID) + } + if tradeLimitID != 0 { + sqlStr = append(sqlStr, " UPDATE freight_template a SET a.fence_id = ? ") + sqlParams = append(sqlParams, tradeLimitID) + } + tStr = "WHERE a.store_id = ? AND a.vendor_store_id = ?" + sqlParams = append(sqlParams, storeID, vendorStoreID) + for _, v := range sqlStr { + v += tStr + if _, err := ExecuteSQL(GetDB(), v, sqlParams); err != nil { + return err + } + v = "" + } + return nil +} diff --git a/business/model/store.go b/business/model/store.go index a1f5c90c4..9a97a64c1 100644 --- a/business/model/store.go +++ b/business/model/store.go @@ -1024,6 +1024,7 @@ type FreightTemplate struct { 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 + TradeLimitID int64 `orm:"column(trade_limit_id)" json:"tradeLimitID"` //限售模板id } func (*FreightTemplate) TableUnique() [][]string { diff --git a/business/partner/purchase/tiktok_store/store.go b/business/partner/purchase/tiktok_store/store.go index 2edc31693..b3f6caf1f 100644 --- a/business/partner/purchase/tiktok_store/store.go +++ b/business/partner/purchase/tiktok_store/store.go @@ -87,7 +87,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri FreightTemplate = &model.FreightTemplate{} ) errList := errlist.New() - //a:=getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) + a := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID) timeStr := "" if storeDetail.OpenTime1 == 0 || storeDetail.CloseTime1 == 0 { return "", fmt.Errorf("营业时间必填") @@ -118,7 +118,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri ShopBatchCreateStoreParam = &shop_batchCreateStore_request.ShopBatchCreateStoreParam{ StoreList: lists, } - if resp, err := getAPI(storeDetail.VendorOrgCode, storeID, storeDetail.VendorStoreID).BatchCreateStore(ShopBatchCreateStoreParam); err != nil { + if resp, err := a.BatchCreateStore(ShopBatchCreateStoreParam); err != nil { return "", err } else { if len(resp.ResultList) == 0 { @@ -129,74 +129,73 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri storeIDs = utils.Int64ToStr(v.Store.StoreId) + "," } storeIDs = utils.Int64ToStr(v.Store.StoreId) - } globals.SugarLogger.Debug("Success createStore and return storeID=====", resp.ResultList[0].Store.StoreId, utils.Str2Int(storeIDs)) if utils.Str2Int(storeIDs) == 0 { return "", errors.New(fmt.Sprintf("创建店铺失败原因storeIDs = 0:%v,%v", err, resp.ResultList[0].Msg)) } - //创建并绑定运费模板 - globals.SugarLogger.Debug("storeDetail.Store.ID==============", storeDetail.Store.ID) - freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID) - if err != nil { - errList.AddErr(fmt.Errorf("创建运费模板失败原因:%v", err)) + if freightTemplateID, err := CreateFreightTemplate(storeDetail.Store.ID); err != nil { + errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) } else { if freightTemplateID == 0 { - globals.SugarLogger.Debug("freightTemplateID=========", freightTemplateID) - errList.AddErr(fmt.Errorf("创建运费模板失败:%d %d %v", int64(storeDetail.Store.ID), freightTemplateID, err)) + errList.AddErr(fmt.Errorf("创建运费模板失败:%v", err)) } - err = P.ShopBindStoreFreight(int64(storeDetail.Store.ID), freightTemplateID) - if err != nil { - errList.AddErr(fmt.Errorf("门店:%d 绑定运费模板:%d 失败原因:%v", int64(storeDetail.Store.ID), freightTemplateID, 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 - err := dao.CreateEntity(db, FreightTemplate) - if err != nil { + if err = dao.CreateEntity(db, FreightTemplate); err != nil { errList.AddErr(fmt.Errorf("运费模板ID存入数据库失败原因:%v", err)) } } } //创建并绑定仓库 - warehouse, err := P.CreateWarehouse(utils.Int2Str(storeDetail.Store.ID), storeDetail.VendorOrgCode) - if err != nil { + if warehouse, err := CreateWarehouse(storeDetail.VendorOrgCode, utils.Int2Str(storeDetail.Store.ID)); err != nil { errList.AddErr(fmt.Errorf("创建仓库失败原因:%v", err)) } else { tempStoreID = append(tempStoreID, int64(storeDetail.Store.ID)) - err = P.BindStoreWarehouse(tempStoreID, utils.Int2Str(storeDetail.Store.ID), utils.Int64ToStr(warehouse)) - if err != nil { + if err = BindStoreWarehouse(storeDetail.VendorOrgCode, utils.Int64ToStr(warehouse), tempStoreID); err != nil { errList.AddErr(fmt.Errorf("门店:%d 绑定仓库:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err)) } else { FreightTemplate.WarehouseID = warehouse - err := dao.CreateEntity(db, FreightTemplate) - //_, err := dao.UpdateEntity(db, FreightTemplate, "WarehouseID") - if err != nil { + if err = dao.CreateEntity(db, FreightTemplate); err != nil { errList.AddErr(fmt.Errorf("仓库ID存入数据库失败原因:%v", err)) } } } //创建并绑定电子围栏 - if fenceID, err := CreateFenceByStore(int(resp.ResultList[0].Store.StoreId)); err != nil { - errList.AddErr(fmt.Errorf("创建电子围栏失败原因:%v", err)) + if fenceID, err := CreateFenceByStore(storeDetail.VendorOrgCode, int(resp.ResultList[0].Store.StoreId)); err != nil { + errList.AddErr(fmt.Errorf("创建电子围栏失败:%v", err)) } else { fences := []string{utils.Int2Str(storeDetail.Store.ID)} - if err := BindFenceByStore(resp.ResultList[0].Store.StoreId, fences); err != nil { - errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%d 失败原因:%v", int64(storeDetail.Store.ID), warehouse, err)) + if err := BindFenceByStore(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, fences); err != nil { + errList.AddErr(fmt.Errorf("门店:%d 绑定电子围栏:%d 失败:%v", resp.ResultList[0].Store.StoreId, fenceID, err)) } else { FreightTemplate.FenceID = fenceID - err := dao.CreateEntity(db, FreightTemplate) - if err != nil { - errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败原因:%v", err)) + if err := dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("电子围栏ID存入数据库失败:%v", err)) + } + } + } + //创建限售模板 + if tradeLimitID, err := CreateTradeLimitTemplate(storeDetail.VendorOrgCode, int64(storeDetail.Store.ID)); err != nil { + errList.AddErr(fmt.Errorf("创建限售模板失败:%v", err)) + } else { + if err := BindStoreSaleLimit(storeDetail.VendorOrgCode, resp.ResultList[0].Store.StoreId, tradeLimitID); err != nil { + errList.AddErr(fmt.Errorf("绑定限售模板失败:%v", err)) + } else { + FreightTemplate.TradeLimitID = tradeLimitID + if err := dao.CreateEntity(db, FreightTemplate); err != nil { + errList.AddErr(fmt.Errorf("限售模板ID存入数据库失败:%v", err)) } } } - //storeIDs = "65312663" globals.SugarLogger.Debug("CreateStore2 return storeIDs, storeDetail.Store.ID==========", storeIDs, storeDetail.Store.ID) FreightTemplate.StoreID = storeDetail.Store.ID FreightTemplate.VendorStoreID = storeIDs FreightTemplate.DeletedAt = utils.DefaultTimeValue - err = dao.CreateEntity(db, FreightTemplate) - if err != nil { + if err = dao.CreateEntity(db, FreightTemplate); err != nil { errList.AddErr(fmt.Errorf("db update storeID,vendorStoreID defeat on :%v", err)) } globals.SugarLogger.Debugf("CreateStore last step success..................but errList====%s", utils.Format4Output(errList, true)) @@ -457,7 +456,7 @@ func (P *PurchaseHandler) CreateFreightTemplateDirectly(templateInfo freightTemp // /shop/bindStoreFreight 门店绑定运费模版 //门店绑定运费模版,运费模版必须属于门店关联的抖店,且门店与运费模版是一对一关系 -func (P *PurchaseHandler) ShopBindStoreFreight(storeID, freightID int64) error { +func ShopBindStoreFreight(vendorOrgCode string, storeID, freightID int64) error { param := &shop_bindStoreFreight_request.ShopBindStoreFreightParam{ StoreId: storeID, FreightId: freightID, @@ -531,12 +530,26 @@ func (P *PurchaseHandler) GetAddressList(param *address_list_request.AddressList } // /trade/createTradeLimitTemplate 创建限售模板 -func (P *PurchaseHandler) CreateTradeLimitTemplate(template trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam) (tradeLimitID int64, err error) { - info := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ - StoreId: template.StoreId, - TradeLimitRuleRequestList: template.TradeLimitRuleRequestList, +func CreateTradeLimitTemplate(appOrgCode string, storeID int64) (tradeLimitID int64, err error) { + var ( + items []trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem + ) + item := trade_createTradeLimitTemplate_request.TradeLimitRuleRequestListItem{ + TradeLimitModel: tiktok_api.TradeLimitModelQuantity, + TradeLimitResource: tiktok_api.TradeLimitResourceDouDian, + TradeLimitPattern: &trade_createTradeLimitTemplate_request.TradeLimitPattern{ + Minimum: 1, + Maximum: 1000, + CumulativeMax: 10000, + }, + TradeLimitSubjectList: []int32{tiktok_api.TradeLimitSubjectBuyMobile}, } - resp, err := getAPI("", 0, utils.Int64ToStr(info.StoreId)).CreateTradeLimitTemplate(info) + items = append(items, item) + param := &trade_createTradeLimitTemplate_request.TradeCreateTradeLimitTemplateParam{ + StoreId: storeID, + TradeLimitRuleRequestList: items, + } + resp, err := getAPI("", 0, utils.Int64ToStr(storeID)).CreateTradeLimitTemplate(param) if err != nil { return 0, err } @@ -544,12 +557,12 @@ func (P *PurchaseHandler) CreateTradeLimitTemplate(template trade_createTradeLim } // /shop/bindStoreSaleLimit 门店绑定限售模板 -func (P *PurchaseHandler) BindStoreSaleLimit(storeID, saleLimitTemplateID int64) error { +func BindStoreSaleLimit(appOrgCode string, storeID, saleLimitTemplateID int64) error { info := &shop_bindStoreSaleLimit_request.ShopBindStoreSaleLimitParam{ StoreId: storeID, SaleLimitId: saleLimitTemplateID, } - if err := getAPI("", 0, utils.Int64ToStr(info.StoreId)).BindStoreSaleLimit(info); err != nil { + if err := getAPI(appOrgCode, 0, utils.Int64ToStr(info.StoreId)).BindStoreSaleLimit(info); err != nil { return err } return nil diff --git a/business/partner/purchase/tiktok_store/warehouse.go b/business/partner/purchase/tiktok_store/warehouse.go index 43d4fc6dd..d44c405b8 100644 --- a/business/partner/purchase/tiktok_store/warehouse.go +++ b/business/partner/purchase/tiktok_store/warehouse.go @@ -15,7 +15,7 @@ import ( ) // /warehouse/create 创建单个区域仓 -func (P *PurchaseHandler) CreateWarehouse(outWarehouseID, appOrgCode string) (warehouseID int64, err error) { +func CreateWarehouse(appOrgCode, outWarehouseID string) (warehouseID int64, err error) { tempName := "门店编码:" + outWarehouseID + "的区域仓" req := &warehouse_create_request.WarehouseCreateParam{ OutWarehouseId: outWarehouseID, @@ -57,12 +57,12 @@ func (P *PurchaseHandler) BatchCreateWarehouse(param warehouse_createBatch_reque } // /warehouse/bindStore 仓库绑定门店 -func (P *PurchaseHandler) BindStoreWarehouse(storeIDs []int64, outWarehouseID, appOrgCode string) error { +func BindStoreWarehouse(VendorOrgCode, outWarehouseID string, storeIDs []int64) error { param := &warehouse_bindStore_request.WarehouseBindStoreParam{ StoreIds: storeIDs, OutWarehouseId: outWarehouseID, } - if _, err := getAPI(appOrgCode, 0, "").StoreBindWarehouse(param); err != nil { + if _, err := getAPI(VendorOrgCode, 0, "").StoreBindWarehouse(param); err != nil { return err } return nil @@ -77,7 +77,7 @@ type LocalStore struct { } // /warehouse/createFence 以门店方式创建电子围栏 -func CreateFenceByStore(storeID int) (fenceID string, err error) { +func CreateFenceByStore(appOrgCode string, storeID int) (fenceID string, err error) { var ( db *dao.DaoDB localStore *LocalStore @@ -123,7 +123,7 @@ func CreateFenceByStore(storeID int) (fenceID string, err error) { } param.FenceInfo.Polygon.Vertices = verticeses } - resp, err := getAPI("", 0, "").CreateFence(param) + resp, err := getAPI(appOrgCode, 0, "").CreateFence(param) if err != nil { return "", err } else { @@ -204,12 +204,12 @@ func UpdateFenceByStore(storeID int) error { } //门店直接绑定围栏 -func BindFenceByStore(storeID int64, addOutFenceIDs []string) error { +func BindFenceByStore(appOrgCode string, storeID int64, addOutFenceIDs []string) error { param := &warehouse_bindFencesByStore_request.WarehouseBindFencesByStoreParam{ StoreId: storeID, AddOutFenceIds: addOutFenceIDs, } - if _, err := getAPI("", 0, "").BindFenceByStore(param); err != nil { + if _, err := getAPI(appOrgCode, 0, "").BindFenceByStore(param); err != nil { return err } return nil