运营时间优化
运营时间配置
设计初衷是为了方便用户去对订单做筛选。 考虑到如果手动去根据下单时间或者收货时间去过滤,虽然也可以达到相同的效果, 但是相比之下还是麻烦了一些,用户每次都需要去点选时间。 所以其实运营时间配置本质上就是一个快捷入口,可以理解为提前设置好的过滤条件。
目前我们的运营时间配置里还包含下单时间限制收货时间限制等,以及配送时间设置。
所以其实我们可以把时间配置分两部分看,一部分是限制,一部分是过滤, 限制部分可以继续保留,过滤部分可以做成每次过滤都计算出时间范围去过滤, 被过滤对象上不再绑定具体的时间配置。这样可以更灵活。
接口
station
/station/service_time
接口名: /station/service_time
Method: GET 获取站点服务时间配置
请求:
station_id O string 站点ID (默认当前登录站点)
less O bool 是否返回详细数据,为true时只返回名字和描述(true/false 默认false)
id O string 时间配置id
date_detail O bool 获取服务时间的具体下单时间(true/false 默认false)
cycle_days O int 间隔周期数,默认0
distribute_center O string 是否为中央调度中心(yes/no)这个已经无用
all_time_config O int 是否返回 station 下的所有时间配置
响应:
code M int 0为成功,其它为失败
msg M string 错误提示信息
data M list 返回服务时间信息
示例:
/station/service_time?id=ST001
{
"_id" : "ST001",
"order_time_limit" : { 下单时间限制
"e_span_time" : 0, 跨天数
"start" : "06:00",开始时间
"end" : "23:00"截止时间
},
"type" : 0,时间配置类型(0默认,1普通,2预售)
"desc" : "默认服务时间",
"final_distribute_time" : "06:00",最晚配送时间
"service_time_creator" : "T001",创建站点
"task_begin_time" : "06:00",任务开始时间,根据这个时间来决定分拣排车等位置拉取的是哪个周期的订单
"name" : "默认服务时间",
"final_distribute_time_span" : 1,最晚配送时间和下单时间比的跨天数
"receive_time_limit" : {收货时间限制
"e_span_time" : 1,//结束时间跟下单时间相比跨几天
"start" : "06:00", 收货时间的开始时间
"s_span_time" : 1,//开始时间跟下单时间相比跨几天
"end" : "19:00", 收货时间的结束时间
"receiveTimeSpan" : "30"//收货时间选项的时间间隔,单位分钟
"receiveEndSpan" : 1//收货时间的跨天数
}
}
/station/service_time?id=ST001&date_detail=true
[{
text: "2月16日06:00~2月16日23:00的订单",
cycle_start_time: "2017-02-16-06-00-00"
}]
/station/service_time?id=&less=1
[{
can_be_modified: false, 如果是当前站点创建的就是true,可以被修改
desc: "默认服务时间",
name: "默认服务时间",
id: "ST001"
}]
/station/service_time
[{
"_id" : "ST001",
"order_time_limit" : {
"e_span_time" : 0,
"start" : "06:00",
"end" : "23:00"
},
"type" : 0,
"desc" : "默认服务时间",
"final_distribute_time" : "06:00",
"service_time_creator" : "T001",
"task_begin_time" : "06:00",
"name" : "默认服务时间",
"final_distribute_time_span" : 1,
"receive_time_limit" : {
"e_span_time" : 1,
"receiveTimeSpan" : "30",
"start" : "06:00",
"end" : "12:00",
"s_span_time" : 1
}
},
{
"_id" : "ST001",
"order_time_limit" : {
"e_span_time" : 0,
"start" : "06:00",
"end" : "23:00"
},
"type" : 0,
"desc" : "默认服务时间",
"final_distribute_time" : "06:00",
"service_time_creator" : "T001",
"task_begin_time" : "06:00",
"name" : "默认服务时间",
"final_distribute_time_span" : 1,
"receive_time_limit" : {
"e_span_time" : 1,
"receiveTimeSpan" : "30",
"start" : "06:00",
"end" : "12:00",
"s_span_time" : 1
}
}]
逻辑:
根据参数不同有四种不同的返回格式
参数带id时获取对应id的时间配置数据,如果date_detail为true,则返回具体下单时间,否则,直接返回时间配置源数据
不带id的时候,拉站点下的时间配置,如果带了 all_time_config,就把销售单中的时间配置也拉出来,
less 为 true 的时候,返回少量信息,false 的时候,返回全量信息
Method: POST 修改站点服务时间配置
请求:
name O string 服务时间名称
id O string 时间配置id (不带表示创建)
receive_time_limit O dict 收货时间限制
order_time_limit O dict 下单时间限制
final_distribute_time O str 最晚出库时间
final_distribute_time_span O int 最晚出库时间间隔
desc O string 描述
响应:
code M int 0为成功,其它为失败
msg M string 错误提示信息
逻辑:
参数带id时编辑时间配置,否则创建
数据库
service_time[mongo] 销售单服务时间的配置
"_id" : "ST011",
"name" : "鲜丰服务任务",
"type" : 1,// 时间配置类型,0为默认时间配置,只有ST001是这个值,1为正常时间配置,2是预售
"service_time_creator" : "T1176",//时间配置的创建站点
"order_time_limit" : {//可下单时间段
"e_span_time" : 1,//结束时间相对开始时间跨几天
"start" : "18:30", 开始时间
"end" : "16:30" 截止时间
},
"final_distribute_time" : "19:00",//最晚配送时间,过了这个时间订单状态就刷为正在配送
"final_distribute_time_span" : 1//最晚配送时间跟下单时间比跨几天
"receive_time_limit" : {//收货时间可选时间段
"e_span_time" : 1,//结束时间跟下单时间相比跨几天
"start" : "06:00", 收货时间的开始时间
"s_span_time" : 1,//开始时间跟下单时间相比跨几天
"end" : "19:00", 收货时间的结束时间
"receiveTimeSpan" : "30"//收货时间选项的时间间隔,单位分钟
"receiveEndSpan" : 1//收货时间的跨天数
},
"desc" : "",
"out_stock_interval": 10 自动刷出库和最晚配送时间的间隔,默认是10h
"task_begin_time" : "23:30",//任务开始时间,根据这个时间来决定分拣排车等位置拉取的是哪个周期的订单