This commit is contained in:
richboo111
2022-10-12 10:20:50 +08:00
parent 1fa7be23bb
commit 957537c2eb
4 changed files with 107 additions and 49 deletions

View File

@@ -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
}

View File

@@ -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 {

View File

@@ -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

View File

@@ -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