同城派送小程序
介绍
同城派送一款基于FastAdmin+ThinkPHP+Uniapp开发的同城配送小程序,包含用户端、骑手端、运营后台,支持基础费、骑手配送抽佣、提现抽佣、多区域运营、财务统计,支持后台指派订单、骑手抢单模式,支持优惠券等营销功能,为跑腿团队提供技术解决方案,无加密源码,可私有化部署。
功能特性
说明:
· 多区域运营:可设置多个区域同时运营,按区域配置模块、计费规则及相关财务统计
· 服务抽佣:后台可根据不同区域、不同模块配置基础费,以及针对骑手设置配送抽佣、提现抽佣功能
· 配送模块:可配置多个配送模块(帮我送、帮我取、帮我买、万能帮),针对不同模块设置不同的计费规则及功能
· 计费规则:包含基础费、路程费、重量费、特殊时段费的计费规则
· 预约配送:用户下单时可选择预约时间送达或取件
· 帮买垫付:帮用户取件、购物或其他须垫付费用,用户可在下单时提前垫付费用
· 配送小费:用户下单时可自由设置订单小费给予骑手奖励
· 地图选址:用户端可在下单时通过地图选址确认订单起点或终点地址
· 消息推送:通过小程序订阅消息、长连接方式实时推送订单消息
· 公告通知:可按用户端、骑手端区分发布公告
· 营销功能:可配置满减、代金券等优惠券营销功能
· 主题切换:用户端、骑手端均支持多主题颜色切换
依赖插件
安装完同城配送系统后,有以下几个依赖插件也需要进行安装,请按需选择。
| 名称 | 链接 | 必选 | 说明 |
|---|---|---|---|
| Summernote富文本编辑器 | www.fastadmin.net/store/summe… | 否 | 用于后台公告等文章内容 |
前端代码修改
用户端与骑手端均使用uni-app框架搭建,使用HBuilderX进行开发。
两端代码均位于/addons/tongcheng/tongcheng-uniapp目录下,
骑手端代码位于/rider目录下,用户端代码位于/user目录下。
修改接口地址
使用前须修改两端的/api/config.js中的baseUrl为后端服务器地址。
只需要替换主域名即可,必须预留域名后的/addons/tongcheng/,例如:baseUrl: 'www.example.com/addons/tong…
修改微信小程序 AppID
使用前须修改两端的/manifest.json中mp-weixin下的appid微信小程序AppID。
微信小程序后台配置
微信小程序后台配置
类目选择
打开微信小程序后台,进入设置-基本信息-服务类目,选择类目:生活服务 > 跑腿
隐私协议
打开微信小程序后台,进入设置-基本信息-服务内容声明-用户隐私保护指引,点击更新按钮,配置以下隐私协议:
· 用户信息(微信昵称及头像),勾选后填写说明:微信昵称及头像用于显示用户信息
· 选中的照片或视频,勾选后填写说明:方便用户上传图片
· 剪贴板,勾选后填写说明:方便用户复制订单信息
· 选中的文件,勾选后填写说明:方便用户上传文件
· 选择的位置信息,勾选后填写说明:方便用户选址
开发者 ID
打开微信小程序后台,进入开发-开发管理-开发设置-开发者ID,在AppSecret(小程序密钥) 项后点击生成按钮,生成AppSecret。
如已经生成过AppSecret,可跳过此步骤。(AppSecret用于小程序登录,在后台系统配置中需要用到)
域名配置
打开微信小程序后台,进入开发-开发管理-开发设置-服务器域名,配置以下域名:
| 域名类型 | 域名 | 说明 |
|---|---|---|
| request合法域名 | https://您的域名 | 微信登录、微信支付、微信退款等接口 |
| socket合法域名 | wss://您的域名 | 用于建立长连接通讯 |
| uploadFile合法域名 | https://您的域名 | 微信上传头像文件接口 |
| downloadFile合法域名 | https://您的域名 | 微信下载文件接口 |
以上域名均为必填项,如果您的域名为www.example.com,则填写https://www.exampl…
接口权限
打开微信小程序后台,进入开发-开发管理-接口设置,申请开通以下接口:
| 类型 | 名称 | 说明 |
|---|---|---|
| 地理位置 | wx.chooseLocation - 打开地图选择位置 | 用于地图选择取货、收货位置信息 |
| 地理位置 | wx.getLocation - 获取当前的地理位置、速度 | 用于获取用户当前所在位置,并在地图上显示 |
未开通以上权限会导致用户端无法使用地图选择及地址簿功能
socket部署
socket 部署
后端长连接使用GatewayWorker框架,使用前须先部署GatewayWorker。
修改配置
代码位于/addons/tongcheng/socket目录下,使用前须修改/addons/tongcheng/socket/config.php文件内容,按照文件内注释修改:
$config = [
// 后台域名(与前端域名一致)
'domain' => 'https://www.example.com',
// WebSocket服务地址(与nginx伪静态规则一致)
'wss_url' => 'wss://www.example.com/wss',
// 服务器IP地址(多个IP用逗号隔开,用于限制后台操作长连接,填*则不限制)
'ips' => ['*'],
// 长连接配置
'socket' => [
// 端口(与nginx伪静态规则一致)
'port' => 8282,
// 进程数
'process_count' => 2,
// 心跳间隔(秒)
'ping_interval' => 50,
]
];
nginx 配置
需要配置 wss 伪静态规则,使用宝塔面板的话,打开网站设置-伪静态,添加以下规则:
location /wss {
proxy_pass http://127.0.0.1:8282;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
环境检查
启动服务之前,检查 php 扩展pcntl是否已安装,如果未安装,需要安装。
还需要检查 php 环境是否已去除以下禁用函数:
pcntl_signal
pcntl_fork
pcntl_alarm
pcntl_signal_dispatch
pcntl_wait
在宝塔面板的软件商店-已安装-PHP-设置,将以上函数从禁用函数中去除。
启动服务
检查完毕后,在/addons/tongcheng/socket目录下执行以下命令
启动服务:
php start.php start -d
停止服务:
php start.php stop
重启服务:
php start.php restart
重载服务(如果有改动文件的情况下,可使用此命令平滑重启不影响正在运行中的服务):
php start.php reload
计划任务部署
计划任务部署
宝塔面板的计划任务-添加计划任务,添加以下计划任务接口:
| 名称 | url | 频率 | 说明 |
|---|---|---|---|
| 处理退款队列 | https://你的接口域名/addons/tongcheng/cron.refund_log/refund | 1 分钟 1 次(能按秒的话,10 秒 1 次更好) | 用户申请退款同意后,计划任务异步处理退款 |
| 优惠券到期失效 | https://你的接口域名/addons/tongcheng/cron.coupon/expire | 1 分钟 1 次(能按秒的话,10 秒 1 次更好) | 优惠券或优惠券领取记录到期后自动失效 |
| 未支付订单自动取消 | https://你的接口域名/addons/tongcheng/cron.delivery_order/cancelUnpaid | 1 分钟 1 次(能按秒的话,10 秒 1 次更好) | 用户下单后,达到一定时间后未支付自动取消订单 |
| 已支付未接单订单自动取消 | https://你的接口域名/addons/tongcheng/cron.delivery_order/cancelUnreceived | 1 分钟 1 次(能按秒的话,10 秒 1 次更好) | 用户订单支付后,达到一定时间后无骑手接单自动取消订单 |
后台配置
后台配置
-
创建区域在后台同城配送系统-区域管理中创建区域,并配置区域信息。
-
创建配送模块在后台同城配送系统-配送模块中创建配送模块,并配置配送模块费用信息、类型(子类型),范围、重量、特殊时段规则。
-
系统配置在后台同城配送系统-系统配置中配置用户端小程序配置,配送、提现、关于我们等配置。
-
配置骑手端在后台同城配送系统-骑手端管理-骑手配置中配置骑手端小程序配置等相关信息。
-
订阅消息在后台同城配送系统-订阅消息中初始化订阅消息模板