@@ -143,7 +143,7 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
errList . AddErr ( dao . CreateEntity ( db , storeMap ) )
}
vendorStoreIDs = utils . Int64ToStr ( resp . ResultList [ 0 ] . Store . StoreId )
if err := CreateOrUpdateAll ( storeDetail . VendorOrgCode , int64 ( storeDetail . Store . ID ) , resp . ResultList [ 0 ] . Store . StoreId , int64 ( storeDetail . DeliveryFeeDeductionFee ) , utils . Str2Int64 ( storeDetail . YbStorePrefix ) ) ; err != nil {
if err := CreateOrUpdateAll ( storeDetail . VendorOrgCode , int64 ( storeDetail . Store . ID ) , resp . ResultList [ 0 ] . Store . StoreId , int64 ( storeDetail . DeliveryFeeDeductionFee ) , int64 ( storeMap . DeliveryFeeDeductionSill ) , utils . Str2Int64 ( storeDetail . YbStorePrefix ) , storeDetail . YbAppID ); err != nil {
errList . AddErr ( err )
}
}
@@ -151,20 +151,22 @@ func (P *PurchaseHandler) CreateStore2(db *dao.DaoDB, storeID int, userName stri
return vendorStoreIDs , errors . New ( fmt . Sprintf ( "创建抖店平台店铺相关错误信息:%v" , endErr ) )
}
func CreateOrUpdateAll ( vendorOrgCode string , storeID , vendorStoreID , deliveryFeeDeductionFee , minPrice int64 ) error {
func CreateOrUpdateAll ( vendorOrgCode string , storeID , vendorStoreID , deliveryFeeDeductionFee , deliveryFeeDeductionSill , minPrice int64 , autoCall string ) error {
var (
errList = errlist . New ( )
FreightTemplate = & model . FreightTemplate { }
db * dao . DaoDB
FreightTemplate = & model . FreightTemplate {
StoreID : int ( storeID ) ,
VendorStoreID : utils . Int64ToStr ( vendorStoreID ) ,
}
)
//检查门店是否审核通过
if IfAuditPass ( vendorOrgCode , vendorStoreID ) {
return fmt . Errorf ( "门店%d 未审核通过,请通过后再进行绑定" , storeID )
}
//1.平台获取门店 运费模板
//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 ) {
if freightTemplateID , err := CreateFreightTemplate ( int ( storeID ) , int ( deliveryFeeDeductionSill ) ); err != nil || freightTemplateID == 0 {
errList . AddErr ( fmt . Errorf ( "京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v" , storeID , vendorStoreID , freightTemplateID , err ) )
} else { //绑定
if err = ShopBindStoreFreight ( vendorOrgCode , vendorStoreID , freightTemplateID ) ; err != nil {
@@ -174,6 +176,10 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
}
}
} else {
if err := UpdateFreightTemplate ( int ( storeID ) ) ; err != nil {
globals . SugarLogger . Debug ( "更新运费模板失败:" , err )
errList . AddErr ( fmt . Errorf ( "更新运费模板失败:%v" , err ) )
}
FreightTemplate . TemplateID = bindFreightIDs
}
@@ -196,6 +202,10 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
}
//(2)电子围栏
if len ( bind [ utils . Int64ToStr ( storeID ) ] [ 0 ] . OutFenceIds ) > 0 {
tempFenceID := bind [ utils . Int64ToStr ( storeID ) ] [ 0 ] . OutFenceIds [ 0 ]
if err1 := UpdateFenceByStore ( vendorOrgCode , tempFenceID , int ( vendorStoreID ) ) ; err1 != nil {
errList . AddErr ( fmt . Errorf ( "平台门店(%d),门店(%d)更新电子围栏失败:%v" , vendorStoreID , storeID , err1 ) )
}
FreightTemplate . FenceID = bind [ utils . Int64ToStr ( storeID ) ] [ 0 ] . OutFenceIds [ 0 ] //保存一个就足够
} else {
if fenceID , err := CreateFenceByStore ( vendorOrgCode , storeID ) ; err != nil || len ( fenceID ) == 0 {
@@ -228,135 +238,39 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID, deliveryFee
if err := SetStorePackageFee ( vendorOrgCode , vendorStoreID , deliveryFeeDeductionFee ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "设置门店打包费失败:%v" , err ) )
}
//5.同步进数据库
FreightTemplate . StoreID = int ( storeID )
FreightTemplate . V endorStoreID = utils . Int64ToStr ( vendorStoreID )
if err := dao . CreateEntity ( db , FreightTemplate ) ; dao . IsDuplicate Error ( err ) || err != nil {
if _ , err1 := dao . UpdateEntity ( db , FreightTemplate , "TemplateID" , "WarehouseID" , "FenceID" , "TradeLimitID" , "StoreID" , "VendorStoreID" ) ; err1 != nil {
globals . SugarLogger . Debug ( "更新操作,同步进数据库错误信息:%v" , err1 )
//errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
} else {
globals . SugarLogger . Debug ( "创建操作,同步进数据库错误信息:%v" , err )
//errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
//5.设置自动运力
if autoCall = = tiktok_api . AutoCallRiderOpen {
if err := SetStoreAutoCallRider ( v endorOrgCode , tiktok_api . AutoCallRiderOpen , vendorStoreID ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "开启门店自动运力失败:%v" , err ) )
}
} else {
if err := SetStoreAutoCallRider ( vendorOrgCode , tiktok_api . AutoCallRiderClose , vendorStoreID ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "关闭门店自动运力失败:%v" , err ) )
}
}
//6.同步进数据库
if err := dao . ReplaceInsertFreight ( FreightTemplate ) ; err != nil {
globals . SugarLogger . Debug ( "同步数据库错误信息:%v" , err )
}
//if err := dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil {
// if _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID", "StoreID", "VendorStoreID"); err1 != nil {
// globals.SugarLogger.Debug("更新操作,同步进数据库错误信息:%v", err1)
// //errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
// } else {
// globals.SugarLogger.Debug("创建操作,同步进数据库错误信息:%v", err)
// //errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
// }
//}
endErr := errList . GetErrListAsOne ( )
if endErr != nil {
globals . SugarLogger . Debug ( "绑定门店需进行的错误处理:%v" , errors . New ( fmt . Sprintf ( "%s" , utils . Format4Output ( errList , false ) ) ) )
globals . SugarLogger . Debug ( "绑定抖音 门店需进行的错误处理:%v" , errors . New ( fmt . Sprintf ( "%s" , utils . Format4Output ( errList , false ) ) ) )
return endErr
} else {
return nil
}
}
//逻辑未修改,暂时不使用
//func CreateAndBindAllV2(vendorOrgCode string, storeID, vendorStoreID, deliveryFeeDeductionFee, minPrice int64) error {
// var (
// db *dao.DaoDB
// ctx *jxcontext.Context
// errList = errlist.New()
// FreightTemplate = &model.FreightTemplate{
// VendorStoreID: utils.Int64ToStr(vendorStoreID),
// StoreID: int(storeID),
// }
// )
// task := tasksch.NewParallelTask("CreateAndBindAllV2", tasksch.NewParallelConfig().SetIsContinueWhenError(true).SetParallelCount(1), ctx,
// func(task *tasksch.ParallelTask, batchItemList []interface{}, params ...interface{}) (retVal interface{}, err error) {
// step := batchItemList[0].(int)
// switch step {
// case 0: //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 {
// if freightTemplateID, err := CreateFreightTemplate(int(storeID)); err != nil || freightTemplateID == 0 || utils.IsNil(freightTemplateID) {
// globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)
// errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 创建运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
// } else {
// if err = ShopBindStoreFreight(vendorOrgCode, vendorStoreID, freightTemplateID); err != nil {
// globals.SugarLogger.Debugf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err)
// errList.AddErr(fmt.Errorf("京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v", storeID, vendorStoreID, freightTemplateID, err))
// } else {
// FreightTemplate.TemplateID = freightTemplateID
// }
// }
// } else {
// FreightTemplate.TemplateID = bindFreightIDs
// }
// case 1: //2.仓库以及电子围栏
// warehouseID, err := CreateWarehouse(vendorOrgCode, storeID)
// if err != nil || warehouseID == 0 {
// globals.SugarLogger.Debugf("门店(%d) 创建仓库失败:%v", storeID, err)
// errList.AddErr(fmt.Errorf("门店(%d) 创建仓库失败:%v", storeID, err))
// } else { //绑定
// if err = BindStoreWarehouse(vendorOrgCode, utils.Int64ToStr(storeID), vendorStoreID); err != nil { //仓库绑定通过自定义外部ID
// globals.SugarLogger.Debugf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err)
// errList.AddErr(fmt.Errorf("门店(%d) 绑定仓库:%s 失败:%v", storeID, warehouseID, err))
// } else {
// FreightTemplate.WarehouseID = utils.Str2Int64(warehouseID)
// }
// }
// case 2: //3.电子围栏
// fenceID, err := CreateFenceByStore(vendorOrgCode, storeID)
// if err != nil || utils.Str2Int(fenceID) == 0 || utils.IsNil(fenceID) { //不管存在与否 直接创建
// globals.SugarLogger.Debugf("门店(%d) 创建电子围栏失败:%v", storeID, err)
// errList.AddErr(fmt.Errorf("门店(%d) 创建电子围栏失败:%v", storeID, err))
// } else { //绑定
// if err := BindFenceByStore(vendorOrgCode, vendorStoreID, []string{utils.Int64ToStr(storeID)}); err != nil {
// globals.SugarLogger.Debugf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err)
// errList.AddErr(fmt.Errorf("门店(%d) 绑定电子围栏:%s失败:%v", storeID, fenceID, err))
// } else {
// FreightTemplate.FenceID = utils.Int64ToStr(storeID)
// }
// }
// case 3: //4.限售模板
// 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 createSaleLimitID, err := CreateAndBindMinPriceTemplate(vendorOrgCode, vendorStoreID, minPrice); err != nil {
// errList.AddErr(fmt.Errorf("设置门店起送价限售模板失败:%v", err))
// } else {
// FreightTemplate.TradeLimitID = createSaleLimitID
// }
// } else {
// if updateSaleLimitID, err := UpdateTradeLimitTemplate(vendorOrgCode, bindSaleLimitID, minPrice); err != nil {
// errList.AddErr(fmt.Errorf("更新门店起送价限售模板失败:%v", err))
// } else {
// FreightTemplate.TradeLimitID = updateSaleLimitID
// }
// }
// case 4: //5.门店打包费 默认为 0
// if err := SetStorePackageFee(vendorOrgCode, vendorStoreID, deliveryFeeDeductionFee); err != nil {
// errList.AddErr(fmt.Errorf("设置门店打包费失败:%v", err))
// }
// }
// return nil, err
// }, []int{0, 1, 2, 3, 4})
// tasksch.ManageTask(task).Run()
// //6.同步进数据库
// globals.SugarLogger.Debugf("preTest TradeLimitID==%d,TemplateID==%d, WarehouseID==%d,FenceID==%s", FreightTemplate.TradeLimitID, FreightTemplate.TemplateID, FreightTemplate.WarehouseID, FreightTemplate.FenceID)
// if err := dao.CreateEntity(db, FreightTemplate); err != nil {
// _, err1 := dao.UpdateEntity(db, FreightTemplate, "TemplateID", "WarehouseID", "FenceID", "TradeLimitID")
// if err1 == nil {
// errList.AddErr(fmt.Errorf("同步Step1进数据库错误信息:%v", err))
// } else {
// errList.AddErr(fmt.Errorf("同步Step2进数据库错误信息:%v", err1))
// }
// }
// endErr := errList.GetErrListAsOne()
// if utils.IsNil(errList) {
// globals.SugarLogger.Debug("绑定门店需进行的错误处理:%v", endErr)
// return endErr
// } else {
// return nil
// }
//}
// shop/editStore 编辑门店信息 正向推送平台
func ( P * PurchaseHandler ) UpdateStore ( db * dao . DaoDB , storeID int , userName string ) ( err error ) {
var (
@@ -366,7 +280,10 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
errList = errlist . New ( )
timeStr = ""
tempFenceID string
FreightTemplate = & model . FreightTemplate { }
FreightTemplate = & model . FreightTemplate {
StoreID : storeID ,
VendorStoreID : storeInfo . VendorStoreID ,
}
)
if db == nil {
db = dao . GetDB ( )
@@ -461,20 +378,20 @@ func (P *PurchaseHandler) UpdateStore(db *dao.DaoDB, storeID int, userName strin
}
//同步进数据库
FreightTemplate . FenceID = tempFenceID
FreightTemplate . StoreID = storeID
FreightTemplate . VendorStoreID = storeInfo . VendorStoreID
if err = dao . CreateEntity ( db , FreightTemplate ) ; dao . IsDuplicateError ( err ) || err != nil {
if _ , err1 := dao . UpdateEntity ( db , FreightTemplate , "FenceID" , "StoreID" , "VendorStoreID" ) ; err1 != nil {
errList . AddErr ( fmt . Errorf ( "更新操作,同步进数据库错误信息:%v" , err1 ) )
} else {
errList . AddErr ( fmt . Errorf ( "创建操作,同步进数据库错误信息:%v" , err ) )
}
if err := dao . ReplaceInsertFreight ( FreightTemplate ) ; err ! = nil {
globals . SugarLogger . Debug ( "同步数据库错误信息:%v" , err )
}
//if err = dao.CreateEntity(db, FreightTemplate); dao.IsDuplicateError(err) || err != nil {
// if _, err1 := dao.UpdateEntity(db, FreightTemplate, "FenceID", "StoreID", "VendorStoreID"); err1 != nil {
// errList.AddErr(fmt.Errorf("更新操作,同步进数据库错误信息:%v", err1))
// } else {
// errList.AddErr(fmt.Errorf("创建操作,同步进数据库错误信息:%v", err))
// }
//}
if endErr := errList . GetErrListAsOne ( ) ; endErr != nil {
globals . SugarLogger . Debugf ( "DouDian UpdateStore wrong information:%v" , endErr )
}
return nil
//return errors.New(fmt.Sprintf("更新抖店平台店铺信息,相关处理错误:%v", endErr))
}
}
@@ -512,7 +429,7 @@ func UpdateStoreStatus(ctx *jxcontext.Context, vendorOrgCode string, storeID int
}
//默认 运费模板只创建 固定运费模板
func CreateFreightTemplate ( storeCode int ) ( int64 , error ) {
func CreateFreightTemplate ( storeCode , deliveryFeeDeductionSill int ) ( int64 , error ) {
storeDetail , err := dao . GetStoreDetail ( dao . GetDB ( ) , storeCode , model . VendorIDDD , "" )
if err != nil {
return 0 , err
@@ -527,24 +444,11 @@ func CreateFreightTemplate(storeCode int) (int64, error) {
FixedAmount : 500 , //固定运费 单位:分
} ,
}
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
} else {
param . Columns = nil
param . Template . TemplateName += "固定运费模板"
}
//直辖市特殊处理
if HandleMunicipality ( storeDetail . CityName ) {
param . Template . ProductCity = int64 ( storeDetail . ProvinceCode )
param . Columns [ 0 ] . ProvinceInfos = [ ] freightTemplate_create_request . ProvinceInfo sItem{
{
param . Columns = [ ] freightTemplate_create_request . Column sItem{ {
ProvinceInfos : [ ] freightTemplate_create_request . ProvinceInfosItem { {
Id : utils . Str2Int64 ( utils . Int2Str ( storeDetail . ProvinceCode ) [ : 2 ] ) ,
Children : [ ] freightTemplate_create_request . ChildrenItem_4 {
{
@@ -559,27 +463,42 @@ func CreateFreightTemplate(storeCode int) (int64, error) {
} ,
} ,
} } ,
} } ,
}
} else {
param . Template . ProductCity = int64 ( storeDetail . CityCode )
param . Columns [ 0 ] . ProvinceInfos = [ ] freightTemplate_create_request . ProvinceInfo sItem{
{
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 = [ ] freightTemplate_create_request . Column sItem{ {
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 deliveryFeeDeductionSill != 0 {
param . Template . TemplateName += "满减包邮模板"
param . Columns = [ ] freightTemplate_create_request . ColumnsItem { {
IsOverFree : true , //是否包邮
IsLimited : false ,
OverAmount : int64 ( deliveryFeeDeductionSill ) , //此字段在vendor_id=14时 存储满x包邮金额
} }
} else {
//param.Columns = nil
param . Template . TemplateName += "固定运费模板"
}
if resp , err := getAPI ( storeDetail . VendorOrgCode , storeCode , storeDetail . VendorStoreID ) . FreightTemplateCreate ( param ) ; err != nil {
return 0 , err
} else {