@@ -144,119 +144,153 @@ func CreateOrUpdateAll(vendorOrgCode string, storeID, vendorStoreID int64) (stri
//1.平台获取门店运费模板
bindFreightIDs , err := GetStoreFreight ( vendorOrgCode , vendorStoreID )
if err != nil {
globals . SugarLogger . Debug ( "获取门店(%d) 绑定运费模板出错:%v" , vendorStoreID , err )
errList . AddErr ( fmt . Errorf ( "获取门店(%d) 绑定运费模板出错:%v" , vendorStoreID , err ) )
}
if bindFreightIDs == 0 { //( 1) 未查询到绑定信息, 不算错误
//创建
if freightTemplateID , err := CreateFreightTemplate ( int ( storeID ) ) ; err != nil || freightTemplateID == 0 || utils . IsNil ( freightTemplateID ) {
errList . AddErr ( fmt . Errorf ( "创建运费模板失败: %v" , err ) )
globals . SugarLogger . Debug ( "创建运费模板失败: %v" , err )
errList . AddErr ( fmt . Errorf ( "创建运费模板失败:%v" , err ) )
} else { //绑定
if err = ShopBindStoreFreight ( vendorOrgCode , vendorStoreID , freightTemplateID ) ; err != nil {
globals . SugarLogger . Debug ( "京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v" , storeID , vendorStoreID , freightTemplateID , err )
errList . AddErr ( fmt . Errorf ( "京西菜市门店:%d 平台门店:%d 绑定运费模板:%d 失败:%v" , storeID , vendorStoreID , freightTemplateID , err ) )
} else {
FreightTemplate . TemplateID = freightTemplateID
if err = dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "运费模板:%d 同步数据库失败:%v", freightTemplateID, err ) )
}
//if err = dao.CreateEntity(db, FreightTemplate); err != nil {
// globals.SugarLogger.Debug( "运费模板:%d 同步数据库失败:%v", freightTemplateID, err )
// errList.AddErr(fmt.Errorf("运费模板:%d 同步数据库失败:%v", freightTemplateID, err))
//}
}
}
} else { //同步信息到本地
if _ , err = dao . UpdateEntity ( db , FreightTemplate, "TemplateID") ; err != nil {
errList . AddErr ( fmt . Errorf ( "平台运费模板 同步到本地出错:%v", err ) )
}
//if _, err = dao.UpdateEntity(db, FreightTemplate, "TemplateID"); err != nil {
// globals.SugarLogger.Debug( "平台运费模板 同步到本地出错:%v", err )
// errList.AddErr(fmt.Errorf("平台运费模板 同步到本地出错:%v", err))
//}
}
//2.平台获取仓库信息以及电子围栏id
bindWarehouseAndFence , err := GetWarehouseByStore ( vendorOrgCode , vendorStoreID )
if err != nil {
globals . SugarLogger . Debug ( "获取门店(%d) 绑定仓库信息以及电子围栏出错:%v" , vendorStoreID , err )
errList . AddErr ( fmt . Errorf ( "获取门店(%d) 绑定仓库信息以及电子围栏出错:%v" , vendorStoreID , err ) )
}
if len ( bindWarehouseAndFence ) == 0 || utils . IsNil ( bindWarehouseAndFence ) { //未绑定仓库以及电子围栏
//(1)创建仓库
warehouseID , err := CreateWarehouse ( vendorOrgCode , utils . Int64ToStr ( storeID ) )
if err != nil || warehouseID == 0 || utils . IsNil ( warehouseID ) {
globals . SugarLogger . Debug ( "门店(%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 . Debug ( "门店(%d) 绑定仓库:%d 失败:%v" , storeID , warehouseID , err )
errList . AddErr ( fmt . Errorf ( "门店(%d) 绑定仓库:%d 失败:%v" , storeID , warehouseID , err ) )
} else {
FreightTemplate . WarehouseID = warehouseID
if err = dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "仓库ID(%d) 同步到数据库失败:%v", warehouseID, err ) )
}
//if err = dao.CreateEntity(db, FreightTemplate); err != nil {
// globals.SugarLogger.Debug( "仓库ID(%d) 同步到数据库失败:%v", warehouseID, err )
// errList.AddErr(fmt.Errorf("仓库ID(%d) 同步到数据库失败:%v", warehouseID, err))
//}
}
}
//(2)创建电子围栏
if fenceID , err := CreateFenceByStore ( vendorOrgCode , storeID ) ; err != nil || utils . Str2Int ( fenceID ) == 0 || utils . IsNil ( fenceID ) { //不管存在与否 直接创建
globals . SugarLogger . Debug ( "门店(%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 . Debug ( "门店(%d) 绑定电子围栏:%s失败:%v" , storeID , fenceID , err )
errList . AddErr ( fmt . Errorf ( "门店(%d) 绑定电子围栏:%s失败:%v" , storeID , fenceID , err ) )
} else {
FreightTemplate . FenceID = utils . Int64ToStr ( storeID )
if err := dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
globals . SugarLogger . Debug ( "电子围栏ID(%s) 同步到数据库失败:%v" , fenceID , err )
errList . AddErr ( fmt . Errorf ( "电子围栏ID(%s) 同步到数据库失败:%v" , fenceID , err ) )
}
}
FreightTemplate . FenceID = utils . Int64ToStr ( storeID )
}
} else {
if len ( bindWarehouseAndFence [ 0 ] [ vendorStoreID ] . OutFenceIds ) == 0 || utils . IsNil ( bindWarehouseAndFence [ 0 ] [ vendorStoreID ] . OutFenceIds ) { //未绑定电子围栏
globals . SugarLogger . Debugf ( "进入创建电子围栏=========" )
if len ( bindWarehouseAndFence [ vendorStoreID ] [ 0 ] .OutFenceIds ) == 0 || utils . IsNil ( bindWarehouseAndFence [ vendorStoreID ] [ 0 ] .OutFenceIds ) { //未绑定电子围栏
globals . SugarLogger . Debug ( "进入创建电子围栏=========" )
if fenceID , err := CreateFenceByStore ( vendorOrgCode , storeID ) ; err != nil || utils . Str2Int ( fenceID ) == 0 || utils . IsNil ( fenceID ) { //创建
globals . SugarLogger . Debug ( "门店(%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 . Debug ( "门店(%d) 绑定电子围栏:%s失败:%v" , storeID , fenceID , err )
errList . AddErr ( fmt . Errorf ( "门店(%d) 绑定电子围栏:%s失败:%v" , storeID , fenceID , err ) )
} else {
FreightTemplate . FenceID = utils . Int64ToStr ( storeID )
if err := dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
globals . SugarLogger . Debug ( "电子围栏ID(%s) 同步到数据库失败:%v" , fenceID , err )
errList . AddErr ( fmt . Errorf ( "电子围栏ID(%s) 同步到数据库失败:%v" , fenceID , err ) )
}
}
FreightTemplate . FenceID = utils . Int64ToStr ( storeID )
}
}
//同步到本地数据库
FreightTemplate. FenceID = bindWarehouseAndFence [ 0 ] [ vendorStoreID ] . OutFenceIds [ 0 ]
FreightTemplate . WarehouseID = bindWarehouseAndFence [ 0 ] [ vendorStoreID ] . WarehouseId
if _ , err = dao . UpdateEntity ( db , FreightTemplate , "FenceID" ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "电子围栏 同步到本地出错:%v" , err ) )
}
if _ , err = dao . UpdateEntity ( db , FreightTemplate , "WarehouseID" ) ; err != nil {
errList. AddErr( fmt . Errorf( "仓库 同步到本地出错:%v", err ) )
}
//if _, err = dao.UpdateEntity(db, FreightTemplate, " FenceID"); err != nil {
// globals.SugarLogger.Debug("电子围栏 同步到本地出错:%v", err)
// errList.AddErr(fmt.Errorf("电子围栏 同步到本地出错:%v", err))
//}
//if _, err = dao.UpdateEntity(db, FreightTemplate, "WarehouseID"); err != nil {
// globals.SugarLogger.Debug("仓库 同步到本地出错:%v", err)
// errList. AddErr(fmt. Errorf( "仓库 同步到本地出错:%v", err) )
// }
}
//3.平台获取限售模板
SaleLimitID , err := GetStoreSaleLimit ( vendorOrgCode , vendorStoreID )
if err != nil {
globals . SugarLogger . Debug ( "获取门店(%d) 限售模板出错:%v" , vendorStoreID , err )
errList . AddErr ( fmt . Errorf ( "获取门店(%d) 限售模板出错:%v" , vendorStoreID , err ) )
}
if SaleLimitID == 0 || utils . IsNil ( SaleLimitID ) { //未绑定限售模板
if tradeLimitID , err := CreateTradeLimitTemplate ( vendorOrgCode , storeID ) ; err != nil || tradeLimitID == 0 || utils . IsNil ( tradeLimitID ) {
globals . SugarLogger . Debug ( "门店(%d) 创建限售模板失败:%v" , storeID , err )
errList . AddErr ( fmt . Errorf ( "门店(%d) 创建限售模板失败:%v" , storeID , err ) )
} else {
if err := BindStoreSaleLimit ( vendorOrgCode , vendorStoreID , tradeLimitID ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "门店(%d) 绑定 限售模板失败:%v" , storeID , err ) )
globals . SugarLogger . Debug ( "门店(%d) 创建 限售模板失败:%v" , storeID , err )
errList . AddErr ( fmt . Errorf ( "门店(%d) 创建限售模板失败:%v" , storeID , err ) )
} else {
FreightTemplate . TradeLimitID = tradeLimitID
if err := dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "限售模板(%d) 存入数据库失败:%v", tradeLimitID, err ) )
}
//if err := dao.CreateEntity(db, FreightTemplate); err != nil {
// globals.SugarLogger.Debug( "限售模板(%d) 存入数据库失败:%v", tradeLimitID, err )
// errList.AddErr(fmt.Errorf("限售模板(%d) 存入数据库失败:%v", tradeLimitID, err))
//}
}
}
} else { //同步到本地
FreightTemplate . TradeLimitID = SaleLimitID
if _ , err = dao . UpdateEntity ( db , FreightTemplate , "TradeLimitID" ) ; err != nil {
errList . AddErr ( fmt . Errorf ( "限售模板 同步到本地出错:%v" , err ) )
}
}
FreightTemplate . StoreID = int ( storeID )
FreightTemplate. VendorStoreID = utils . Int64ToStr ( vendorStoreID )
//else { //同步到本地
// FreightTemplate.TradeLimitID = SaleLimitID
// if _, err = dao.UpdateEntity(db, FreightTemplate, "TradeLimitID"); err != nil {
// globals.SugarLogger.Debug("限售模板 同步到本地出错:%v", err)
// errList.AddErr(fmt.Errorf("限售模板 同步到本地出错:%v", err))
// }
//}
FreightTemplate . DeletedAt = utils . DefaultTimeValue
FreightTemplate = & model . FreightTemplate {
StoreID : int ( storeID ) ,
VendorStoreID : utils . Int64ToStr ( vendorStoreID ) ,
}
if err = dao . CreateEntity ( db , FreightTemplate ) ; err != nil {
globals . SugarLogger . Debug ( "db update storeID,vendorStoreID defeat on :%v" , err )
errList . AddErr ( fmt . Errorf ( "db update storeID,vendorStoreID defeat on :%v" , err ) )
} else {
_ , err1 := dao . UpdateEntity ( db , FreightTemplate , "TemplateID" )
_ , err2 := dao . UpdateEntity ( db , FreightTemplate , "WarehouseID" )
_ , err3 := dao . UpdateEntity ( db , FreightTemplate , "FenceID" )
_ , err4 := dao . UpdateEntity ( db , FreightTemplate , "TradeLimitID" )
errList . AddErr ( fmt . Errorf ( "同步进数据库错误信息:%v,%v,%v,%v" , err1 , err2 , err3 , err4 ) )
}
if utils . IsNil ( errList ) {
globals . SugarLogger . Debug ( "绑定门店需进行的错误处理:%v" , errors . New ( fmt . Sprintf ( "%s" , utils . Format4Output ( errList , true ) ) ) )
return "门店绑定成功,但需要根据提示进行处理" , errors . New ( fmt . Sprintf ( "%s" , utils . Format4Output ( errList , true ) ) )
} else {
return "门店绑定成功" , nil
@@ -452,6 +486,7 @@ func CreateFreightTemplate(storeCode int) (int64, error) {
// /freightTemplate/update 修改运费模板
func UpdateFreightTemplate ( storeCode int ) error {
globals . SugarLogger . Debugf ( "进入UpdateFreightTemplate" )
var (
columns [ ] freightTemplate_update_request . ColumnsItem
param * freightTemplate_update_request . FreightTemplateUpdateParam
@@ -480,15 +515,16 @@ func UpdateFreightTemplate(storeCode int) error {
IsLimited : false ,
OverAmount : int64 ( storeDetail . DeliveryFeeDeductionSill ) , //此字段在vendor_id=14时 存储满x包邮金额
} }
globals . SugarLogger . Debugf ( "columns[0].OverAmount===========%d" , columns [ 0 ] . OverAmount )
}
param = & freightTemplate_update_request . FreightTemplateUpdateParam {
Template : Template ,
Columns : columns ,
}
globals . SugarLogger . Debugf ( "param.Template.TemplateName==================%v " , param . Template . TemplateName )
globals . SugarLogger . Debugf ( "param.Template.TemplateName======%v,overAmount===== =============%d " , param . Template . TemplateName , param . Columns [ 0 ] . OverAmount )
_ , err = getAPI ( storeDetail . VendorOrgCode , storeCode , storeDetail . VendorStoreID ) . FreightTemplateUpdate ( param )
if err != nil {
globals . SugarLogger . Debugf ( "err==================" , err )
globals . SugarLogger . Debugf ( "err==================%v " , err )
return err
}
return nil
@@ -549,8 +585,8 @@ func ShopBindStoreFreight(vendorOrgCode string, storeID, freightID int64) error
// /shop/getStoreFreight 获取门店绑定运费模板
func GetStoreFreight ( vendorOrgCode string , storeID int64 ) ( int64 , error ) {
resp , err := getAPI ( vendorOrgCode , int ( storeID ) , "" ) . GetStoreFreight ( storeID )
if err != nil {
return 0 , err
if err != nil || len ( resp ) == 0 {
return 0 , errors . New ( fmt . Sprintf ( "获取门店绑定运费模板失败:%v" , err ) )
}
return resp [ 0 ] , nil
}