Java生鲜电商平台-生鲜电商中配送订单解决方案(小程序/APP)
说明:在日常的生鲜电商平台中,生鲜配送是一个不可获取的环节,根据实际的业务场景,生鲜配送有两个维度需要考虑
1. 时间维度。
说明:时间维度是指客户一般什么时候要,就是什么时候配送的问题,如果是前置仓模式,那么就需要29分必送达,如果是今天买,明天送的模式,那么就需要设置
时间统一送达。
2. 线路维度
说明:理论上对于今天买,明天统一配送的业务场景而言,需要考虑线路以及车辆的配送量,理论上一个车的负载是有限的,在车负载足够的情况下,把商家的线路规划到最近是
最好的,尤其是这个疫情期间,一定是以小区为维度进行配送,就需要进行配送订单的组装,线路分配以及人员安排等。
3. 基础业务模型
说明:
业务订单存在两个分支,一个是系统分配,一个是人工分配
实际业务场景中,我们发现,
1.1. 如果这个人场景买过,而且地址都没有变化的话,就默认选中固定的线路以及配送人员(一个配送人员可以选择多个线路)
1.2 . 如果这个人没有买过,那么这个时候根据实际的情况,系统无法识别到底是属于哪个线路是比较合理的,所以需要人工指派.
4. 系统数据库设计层面
1.
CREATE TABLE `driver_line` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `line_name` varchar(255) DEFAULT NULL COMMENT '线路名称', `line_driver` int(11) DEFAULT NULL COMMENT '线路司机', `add_time` datetime DEFAULT NULL COMMENT '创建时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间', `is_deleted` tinyint(1) DEFAULT '0' COMMENT '默认0 0为启用,1删除', PRIMARY KEY (`id`), UNIQUE KEY `t_line_id_uindex` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COMMENT='配送线路';
CREATE TABLE `driver` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自动增加ID', `user_name` varchar(50) DEFAULT NULL COMMENT '用户名 ', `pwd` varchar(50) DEFAULT NULL COMMENT '密码', `driver_name` varchar(100) DEFAULT NULL COMMENT '司机名称', `driver_telephone` varchar(64) DEFAULT NULL COMMENT '手机号', `remarks` varchar(255) DEFAULT NULL COMMENT '备注', `type` int(11) DEFAULT '0' COMMENT '类型:0:全职 1:兼职 ', `add_time` datetime DEFAULT NULL COMMENT '添加时间', `update_time` datetime DEFAULT NULL COMMENT '修改时间', `is_deleted` int(11) DEFAULT '0' COMMENT '删除标识: 0为可用 默认 1删除', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='司机';
CREATE TABLE `sorter_deliver_order` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `sorter_order_id` varchar(32) DEFAULT NULL COMMENT '分拣ID', `order_sn` varchar(32) DEFAULT NULL COMMENT '订单号', `user_id` int(11) DEFAULT NULL COMMENT '客户ID', `storehouse_id` int(11) DEFAULT NULL COMMENT '仓库ID', `total_price` decimal(10,2) DEFAULT '0.00' COMMENT '发货总金额', `status` int(11) DEFAULT '0' COMMENT '发货状态,0为未发货,1为已发货', `operator_user_id` int(11) DEFAULT NULL COMMENT '操作人', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8mb4 COMMENT='客户订单发货出库';
CREATE TABLE `sorter_deliver_order_item` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID', `sorter_deliver_order` int(11) DEFAULT NULL COMMENT '主表ID', `goods_id` int(11) DEFAULT NULL COMMENT '商品ID', `goods_name` varchar(255) DEFAULT NULL COMMENT '商品名称', `goods_unit` varchar(20) DEFAULT NULL COMMENT '单位', `goods_number` int(11) DEFAULT NULL COMMENT '商品数量(预定量)', `actual_number` int(11) DEFAULT NULL COMMENT '实际数量', `order_price` decimal(10,2) DEFAULT NULL COMMENT '下单单价', `deliver_price` decimal(10,2) DEFAULT NULL COMMENT '发货价格', `create_time` datetime DEFAULT NULL COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=126 DEFAULT CHARSET=utf8mb4 COMMENT='发货出库';
4. 代码与架构如何编写呢?
说明:配送可以单独出来一个微服务,由于生鲜电商可能会设计到多个模块的分割,根据我自己的经验,我建议采购单独作为一个服务进行处理,方便业务的扩展。
5. 复盘与总结.
总结:做互联网应用,无论是生鲜小程序还是APP,目的是为了留住与激活用户,形成用户购买力,提高满意度,最终达成交易的,当然本文只是抛砖引玉,希望本文可以给大家一点思考与建议。
QQ:137071249
共同学习QQ群:793305035