同城跑腿派送小程序搭建教程

296 阅读6分钟

同城派送小程序

介绍

同城派送一款基于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/refund1 分钟 1 次(能按秒的话,10 秒 1 次更好)用户申请退款同意后,计划任务异步处理退款
优惠券到期失效https://你的接口域名/addons/tongcheng/cron.coupon/expire1 分钟 1 次(能按秒的话,10 秒 1 次更好)优惠券或优惠券领取记录到期后自动失效
未支付订单自动取消https://你的接口域名/addons/tongcheng/cron.delivery_order/cancelUnpaid1 分钟 1 次(能按秒的话,10 秒 1 次更好)用户下单后,达到一定时间后未支付自动取消订单
已支付未接单订单自动取消https://你的接口域名/addons/tongcheng/cron.delivery_order/cancelUnreceived1 分钟 1 次(能按秒的话,10 秒 1 次更好)用户订单支付后,达到一定时间后无骑手接单自动取消订单

后台配置

后台配置

  1. 创建区域在后台同城配送系统-区域管理中创建区域,并配置区域信息。

  2. 创建配送模块在后台同城配送系统-配送模块中创建配送模块,并配置配送模块费用信息、类型(子类型),范围、重量、特殊时段规则。

  3. 系统配置在后台同城配送系统-系统配置中配置用户端小程序配置,配送、提现、关于我们等配置。

  4. 配置骑手端在后台同城配送系统-骑手端管理-骑手配置中配置骑手端小程序配置等相关信息。

  5. 订阅消息在后台同城配送系统-订阅消息中初始化订阅消息模板