diff --git a/business/q_bida/q_bida_server.go b/business/q_bida/q_bida_server.go index ce64b5d22..8f4abc129 100644 --- a/business/q_bida/q_bida_server.go +++ b/business/q_bida/q_bida_server.go @@ -15,49 +15,92 @@ import ( "time" ) +var ExpressCompany = []int{1, 2, 5, 6, 7, 8, 9, 10, 12, 13, 14} // 快递公司 +var LogisticsCompany = []int{3, 4, 11, 15, 16, 17} + +// 快递默认值 +func checkExpressDefault(param *bida.GetExpressPriceReq) { + if param.ChannelType == 1 { // 快递 + switch param.Type { + case bida.JDExpressInt: + param.PromiseTimeType = bida.JDPromiseTimeTypeDefault // 特惠送(默认值) + case bida.DBExpressInt: + param.PromiseTimeType = bida.DBPromiseTimeTypeDefault // 特惠送(默认值) + case bida.JDLogisticsExpressInt: + param.PromiseTimeType = bida.JDPromiseTimeTypeWeight // 特惠送(默认值) + case bida.SFExpressInt: + param.PromiseTimeType = bida.SFPromiseTimeTypePublic // 特惠送(默认值) + case bida.JDStoreExpressInt: + param.PromiseTimeType = bida.JDPromiseTimeTypStoreDefault // 特惠送(默认值) + } + } + if param.ChannelType == 2 { // 物流 + + } + +} + // QueryExpressPrice 查询配送价格,获取所有快递价格 func QueryExpressPrice(param *bida.GetExpressPriceReq) (map[string]*bida.GetExpressPriceRes, error) { if param.Weight <= 0 { return nil, errors.New("物品重量必须大于0") } + // 给快递默认值 + result := make(map[string]*bida.GetExpressPriceRes, 0) if param.Type == 0 { // 渠道费每公斤加价两毛 - for i := 1; i <= 14; i++ { - param.Type = i - fee, err := api.QBiDaAPI.GetExpressPrice(param) - if err != nil { - continue + switch param.ChannelType { + case 1: // 快递 + for i := 0; i < len(ExpressCompany); i++ { + param.Type = ExpressCompany[i] + fee, err := api.QBiDaAPI.GetExpressPrice(param) + if err != nil { + continue + } + if fee.Code != 0 { + result[fmt.Sprintf("%d", ExpressCompany[i])] = fee + continue + } + if fee.Data.ChannelFee != 0 { + addFee := int(fee.Data.ChannelFee*100) + param.Weight*20 + fee.Data.ChannelFee = utils.Int2Float64(addFee) / float64(100) + result[fmt.Sprintf("%d", ExpressCompany[i])] = fee + } } - fmt.Println("原价:", fee.Data.TypeName, fee.Data.Type, fee.Data.ChannelFee) - if fee.Code != 0 { - result[fmt.Sprintf("%d", i)] = fee - continue - } - if fee.Data.ChannelFee != 0 { - addFee := int(fee.Data.ChannelFee*100) + param.Weight*20 - fee.Data.ChannelFee = utils.Int2Float64(addFee) / float64(100) - result[fmt.Sprintf("%d", i)] = fee - fmt.Println("加价:", fee.Data.TypeName, fee.Data.Type, fee.Data.ChannelFee) + case 2: // 物流 + for i := 0; i < len(LogisticsCompany); i++ { + param.Type = LogisticsCompany[i] + fee, err := api.QBiDaAPI.GetExpressPrice(param) + if err != nil { + continue + } + if fee.Code != 0 { + result[fmt.Sprintf("%d", LogisticsCompany[i])] = fee + continue + } + if fee.Data.ChannelFee != 0 { + addFee := int(fee.Data.ChannelFee*100) + param.Weight*20 + fee.Data.ChannelFee = utils.Int2Float64(addFee) / float64(100) + result[fmt.Sprintf("%d", LogisticsCompany[i])] = fee + } } } + } else { fee, err := api.QBiDaAPI.GetExpressPrice(param) if err != nil { return nil, err } if fee.Code != 0 { - // result[fmt.Sprintf("%d", param.Type)] = fee return nil, errors.New(fee.Msg) } - fmt.Println("原价:", fee.Data.TypeName, fee.Data.Type, fee.Data.ChannelFee) if fee.Data.ChannelFee != 0 { addFee := int(fee.Data.ChannelFee*100) + param.Weight*20 fee.Data.ChannelFee = utils.Int2Float64(addFee) / float64(100) result[fmt.Sprintf("%d", param.Type)] = fee - fmt.Println("加价:", fee.Data.TypeName, fee.Data.Type, fee.Data.ChannelFee) } } diff --git a/controllers/q_bida.go b/controllers/q_bida.go index c82e86443..d2ea04893 100644 --- a/controllers/q_bida.go +++ b/controllers/q_bida.go @@ -28,12 +28,12 @@ type QBiDaExpressController struct { // @Param width formData int false "所有包裹累计宽" // @Param height formData int false "所有包裹累计高" // @Param sendPhone formData string true "寄件人手机号" +// @Param channelType formData int true "渠道类型(1-快递,2-物流,3-国际物流,4-整车)" // @Success 200 {object} controllers.CallResult // @Failure 200 {object} controllers.CallResult // @router /QueryExpressPrice [post] func (c *QBiDaExpressController) QueryExpressPrice() { c.callQueryExpressPrice(func(params *tExpressQueryExpressPriceParams) (interface{}, string, error) { - fmt.Println("================", params.MapData) param := &bida.GetExpressPriceReq{ PromiseTimeType: params.PromiseTimeType, DeliveryType: params.DeliveryType, @@ -46,6 +46,7 @@ func (c *QBiDaExpressController) QueryExpressPrice() { Height: params.Height, Width: params.Width, SendPhone: params.SendPhone, + ChannelType: params.ChannelType, } result, err := bidaServer.QueryExpressPrice(param) for _, v := range result {