init: 导入团队知识库内容
This commit is contained in:
@@ -0,0 +1,756 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>在线下单配送抢单小程序调研报告</title>
|
||||
<style>
|
||||
/* ===== Ant Design 阿里云风格 Design Tokens ===== */
|
||||
:root {
|
||||
--color-primary: #1677FF;
|
||||
--color-primary-hover: #4096FF;
|
||||
--color-primary-active: #0958D9;
|
||||
--color-primary-bg: #E6F4FF;
|
||||
--color-success: #52C41A;
|
||||
--color-warning: #FAAD14;
|
||||
--color-error: #FF4D4F;
|
||||
--color-info: #1677FF;
|
||||
--bg: #F5F5F5;
|
||||
--bg-container: #FFFFFF;
|
||||
--bg-elevated: #FAFAFA;
|
||||
--border: #D9D9D9;
|
||||
--border-light: #F0F0F0;
|
||||
--text-primary: #141414;
|
||||
--text-secondary: #595959;
|
||||
--text-tertiary: #8C8C8C;
|
||||
--radius-sm: 6px;
|
||||
--radius-md: 8px;
|
||||
--radius-lg: 12px;
|
||||
--shadow-sm: 0 1px 2px rgba(0,0,0,0.03), 0 1px 6px -1px rgba(0,0,0,0.02);
|
||||
--shadow-md: 0 2px 4px rgba(0,0,0,0.04), 0 4px 12px -2px rgba(0,0,0,0.04);
|
||||
--header-h: 64px;
|
||||
--content-max: 1200px;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
|
||||
'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei',
|
||||
'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
background: var(--bg);
|
||||
color: var(--text-primary);
|
||||
line-height: 1.57;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
/* ===== Header ===== */
|
||||
.header-bar {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
height: var(--header-h);
|
||||
background: rgba(255,255,255,0.85);
|
||||
backdrop-filter: blur(12px);
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 40px;
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.header-bar .brand { display: flex; align-items: baseline; gap: 12px; }
|
||||
.header-bar h1 {
|
||||
font-size: 18px;
|
||||
font-weight: 700;
|
||||
background: linear-gradient(135deg, var(--color-primary) 0%, #722ED1 100%);
|
||||
-webkit-background-clip: text;
|
||||
-webkit-text-fill-color: transparent;
|
||||
background-clip: text;
|
||||
}
|
||||
.header-bar .tagline { font-size: 12px; color: var(--text-tertiary); }
|
||||
|
||||
/* ===== Layout ===== */
|
||||
.container { max-width: var(--content-max); margin: 0 auto; padding: 32px 40px 64px; }
|
||||
|
||||
/* ===== Sidebar Layout ===== */
|
||||
.layout {
|
||||
display: flex;
|
||||
gap: 24px;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
width: 240px;
|
||||
flex-shrink: 0;
|
||||
position: sticky;
|
||||
top: calc(var(--header-h) + 32px);
|
||||
max-height: calc(100vh - var(--header-h) - 64px);
|
||||
overflow-y: auto;
|
||||
background: var(--bg-container);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: 16px 0;
|
||||
align-self: flex-start;
|
||||
}
|
||||
|
||||
.sidebar-title {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
color: var(--text-secondary);
|
||||
padding: 0 16px 12px;
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.sidebar a {
|
||||
display: block;
|
||||
padding: 8px 16px;
|
||||
font-size: 13px;
|
||||
color: var(--text-secondary);
|
||||
text-decoration: none;
|
||||
border-left: 3px solid transparent;
|
||||
transition: all 0.15s ease;
|
||||
}
|
||||
|
||||
.sidebar a:hover, .sidebar a.active {
|
||||
color: var(--color-primary);
|
||||
background: var(--color-primary-bg);
|
||||
border-left-color: var(--color-primary);
|
||||
}
|
||||
|
||||
.main { flex: 1; min-width: 0; }
|
||||
|
||||
/* ===== Section ===== */
|
||||
.section {
|
||||
background: var(--bg-container);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: var(--radius-md);
|
||||
padding: 24px;
|
||||
margin-bottom: 24px;
|
||||
box-shadow: var(--shadow-sm);
|
||||
}
|
||||
|
||||
.section-title {
|
||||
font-size: 20px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 16px;
|
||||
padding-bottom: 12px;
|
||||
border-bottom: 1px solid var(--border-light);
|
||||
}
|
||||
|
||||
.section-title small {
|
||||
font-size: 13px;
|
||||
color: var(--text-tertiary);
|
||||
font-weight: 400;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
margin: 20px 0 12px;
|
||||
color: var(--text-primary);
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
margin: 16px 0 8px;
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
|
||||
p { margin: 8px 0; }
|
||||
|
||||
/* ===== Table ===== */
|
||||
table {
|
||||
width: 100%;
|
||||
border-collapse: collapse;
|
||||
margin: 12px 0;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
thead th {
|
||||
background: var(--bg-elevated);
|
||||
font-weight: 600;
|
||||
text-align: left;
|
||||
padding: 10px 14px;
|
||||
border: 1px solid var(--border);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
tbody td {
|
||||
padding: 10px 14px;
|
||||
border: 1px solid var(--border);
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
tbody tr:hover { background: var(--color-primary-bg); }
|
||||
|
||||
/* ===== Badges ===== */
|
||||
.badge {
|
||||
display: inline-block;
|
||||
padding: 2px 10px;
|
||||
border-radius: 12px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
.badge--success { background: #F6FFED; color: #52C41A; border: 1px solid #B7EB8F; }
|
||||
.badge--warning { background: #FFFBE6; color: #FAAD14; border: 1px solid #FFE58F; }
|
||||
.badge--error { background: #FFF2F0; color: #FF4D4F; border: 1px solid #FFCCC7; }
|
||||
.badge--info { background: #E6F4FF; color: #1677FF; border: 1px solid #91CAFF; }
|
||||
|
||||
/* ===== Code ===== */
|
||||
code {
|
||||
background: var(--bg-elevated);
|
||||
padding: 2px 8px;
|
||||
border-radius: 4px;
|
||||
font-size: 13px;
|
||||
font-family: 'SF Mono', 'Menlo', 'Courier New', monospace;
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
/* ===== Card ===== */
|
||||
.info-card {
|
||||
background: var(--bg-elevated);
|
||||
border: 1px solid var(--border-light);
|
||||
border-radius: var(--radius-sm);
|
||||
padding: 16px;
|
||||
margin: 12px 0;
|
||||
}
|
||||
|
||||
.info-card .label {
|
||||
font-size: 12px;
|
||||
color: var(--text-tertiary);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.info-card .value {
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
/* ===== Progress ===== */
|
||||
.progress-bar {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
margin: 4px 0;
|
||||
}
|
||||
.progress-bar .dot {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.dot--filled { background: var(--color-primary); }
|
||||
.dot--empty { background: var(--border-light); }
|
||||
|
||||
/* ===== Responsive ===== */
|
||||
@media (max-width: 768px) {
|
||||
.header-bar { padding: 0 16px; }
|
||||
.header-bar h1 { font-size: 16px; }
|
||||
.container { padding: 24px 16px 48px; }
|
||||
.layout { flex-direction: column; }
|
||||
.sidebar { width: 100%; position: static; max-height: none; }
|
||||
table { font-size: 12px; }
|
||||
thead th, tbody td { padding: 8px 10px; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header class="header-bar">
|
||||
<div class="brand">
|
||||
<h1>在线下单配送抢单小程序调研报告</h1>
|
||||
<span class="tagline">Top 5 开源项目横向对比分析</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="container">
|
||||
<div class="layout">
|
||||
|
||||
<!-- Sidebar -->
|
||||
<nav class="sidebar" id="sidebar">
|
||||
<div class="sidebar-title">目录导航</div>
|
||||
<a href="#overview">总览对比</a>
|
||||
<a href="#dso2o">DSO2O 外卖</a>
|
||||
<a href="#ddrun">叮点跑腿 ddrun</a>
|
||||
<a href="#wanyue">万岳外卖系统</a>
|
||||
<a href="#siam">暹罗外卖</a>
|
||||
<a href="#minirun">MiniRun 校园跑腿</a>
|
||||
<a href="#recommendation">综合建议</a>
|
||||
</nav>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="main">
|
||||
|
||||
<!-- ==================== 总览对比 ==================== -->
|
||||
<div class="section" id="overview">
|
||||
<div class="section-title">总览对比 <small>5 个项目核心指标一览</small></div>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>项目</th>
|
||||
<th>Star</th>
|
||||
<th>前端</th>
|
||||
<th>后端</th>
|
||||
<th>数据库</th>
|
||||
<th>商户模式</th>
|
||||
<th>抢单功能</th>
|
||||
<th>综合评分</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>DSO2O 外卖</strong></td>
|
||||
<td>1,953</td>
|
||||
<td>UniApp</td>
|
||||
<td>ThinkPHP 6</td>
|
||||
<td>MySQL</td>
|
||||
<td>多商户</td>
|
||||
<td><span class="badge badge--success">✅ 自动派单 + 抢单</span></td>
|
||||
<td><strong>92/100</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>叮点跑腿 ddrun</strong></td>
|
||||
<td>1,211</td>
|
||||
<td>UniApp</td>
|
||||
<td>Midway 3.0</td>
|
||||
<td>MySQL</td>
|
||||
<td>单商户</td>
|
||||
<td><span class="badge badge--success">✅ 抢单 + 智能分配</span></td>
|
||||
<td><strong>88/100</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>万岳外卖系统</strong></td>
|
||||
<td>815</td>
|
||||
<td>UniApp</td>
|
||||
<td>ThinkCMF + PhalApi</td>
|
||||
<td>MySQL</td>
|
||||
<td>多商户</td>
|
||||
<td><span class="badge badge--success">✅ 抢单 + 智能派单</span></td>
|
||||
<td><strong>85/100</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>暹罗外卖</strong></td>
|
||||
<td>479</td>
|
||||
<td>原生小程序</td>
|
||||
<td>Spring Cloud</td>
|
||||
<td>MySQL + Redis</td>
|
||||
<td>多商户</td>
|
||||
<td><span class="badge badge--error">❌ 骑手端未开源</span></td>
|
||||
<td><strong>55/100</strong></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>MiniRun 校园跑腿</strong></td>
|
||||
<td>174</td>
|
||||
<td>微信小程序</td>
|
||||
<td>微信云开发</td>
|
||||
<td>云数据库</td>
|
||||
<td>单商户</td>
|
||||
<td><span class="badge badge--warning">⚠️ 任务接单</span></td>
|
||||
<td><strong>65/100</strong></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<!-- ==================== DSO2O 外卖 ==================== -->
|
||||
<div class="section" id="dso2o">
|
||||
<div class="section-title">DSO2O 外卖 <small>gitee.com/csdeshang/DSO2O_open · ⭐ 1,953</small></div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="label">项目简介</div>
|
||||
<div class="value">专业 O2O 本地生活平台,支持外卖送餐、同城跑腿、家政上门服务。ThinkPHP 6 + UniApp 架构,社区活跃度高,支持宝塔面板一键部署。</div>
|
||||
</div>
|
||||
|
||||
<h3>技术方案</h3>
|
||||
<table>
|
||||
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>前端(小程序)</td><td>UniApp(跨端:微信小程序 + APP)</td></tr>
|
||||
<tr><td>后端</td><td>ThinkPHP V6.0 + PHP + Composer 组件化</td></tr>
|
||||
<tr><td>数据库</td><td>MySQL + Redis / Memcached 缓存</td></tr>
|
||||
<tr><td>实时通信</td><td>Socket 长连接(骑手端实时订单推送)</td></tr>
|
||||
<tr><td>部署</td><td>宝塔面板一键部署 / 常规 LNMP</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>前端(小程序端)功能完成度</h3>
|
||||
<p><em>⚠️ 注意:小程序源码在独立 UniApp 仓库中(非本仓库),本仓库包含 PC 端模板和静态资源。</em></p>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>用户下单</td><td><span class="badge badge--success">✅ 完整</span></td><td>商品浏览、购物车、在线下单、支付,支持多门店</td></tr>
|
||||
<tr><td>配送方式选择</td><td><span class="badge badge--success">✅ 完整</span></td><td>外卖配送、到店自取、预约配送、同城跑腿、商家自配/平台配送/达达第三方配送</td></tr>
|
||||
<tr><td>骑手抢单界面</td><td><span class="badge badge--success">✅ 完整</span></td><td>骑手端独立页面,订单大厅可抢订单,GatewayWorker WebSocket 实时推送</td></tr>
|
||||
<tr><td>订单状态追踪</td><td><span class="badge badge--success">✅ 完整</span></td><td>全流程状态展示 + 订单日志 + 配送员地图定位</td></tr>
|
||||
<tr><td>实时通知</td><td><span class="badge badge--success">✅ 完整</span></td><td>GatewayWorker WebSocket 长连接实时推送</td></tr>
|
||||
<tr><td>商户管理界面</td><td><span class="badge badge--success">✅ 完整</span></td><td>PC 商家端 + 商家手机端,商品/订单/店铺管理</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>后端功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>订单管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>完整订单生命周期,含商品订单 + 跑腿订单 + 服务订单</td></tr>
|
||||
<tr><td>配送方式配置</td><td><span class="badge badge--success">✅ 完整</span></td><td>后台可配置配送费计算规则、配送范围、支持三种配送模式</td></tr>
|
||||
<tr><td>骑手抢单引擎</td><td><span class="badge badge--success">✅ 完整</span></td><td>WebSocket 推送抢单 + 自动派单 + 指定配送员,三种模式灵活切换</td></tr>
|
||||
<tr><td>多商户管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>多商户入驻、店铺等级、保证金、自营店铺,80+ 管理模块</td></tr>
|
||||
<tr><td>骑手管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>配送员注册/结算/投诉/保证金,平台配送 + 达达第三方配送</td></tr>
|
||||
<tr><td>支付集成</td><td><span class="badge badge--success">✅ 完整</span></td><td>微信 JSAPI/扫码、支付宝 APP、预存款、充值卡</td></tr>
|
||||
<tr><td>后台管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>80+ 管理模块:站点/会员/商品/店铺/交易/营销/统计/跑腿/上门服务</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>核心亮点</h3>
|
||||
<p>• <strong>双模式配送</strong>:同时支持自动派单和骑手抢单,可根据运营需求灵活切换</p>
|
||||
<p>• <strong>多业务线</strong>:外卖 + 跑腿 + 家政,可扩展为综合本地生活平台</p>
|
||||
<p>• <strong>城市级管理</strong>:支持多城市运营,每个城市独立后台管理</p>
|
||||
<p>• <strong>部署简单</strong>:宝塔面板一键部署,降低运维门槛</p>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 叮点跑腿 ddrun ==================== -->
|
||||
<div class="section" id="ddrun">
|
||||
<div class="section-title">叮点跑腿 ddrun <small>gitee.com/landalfyao/ddrun · ⭐ 1,211</small></div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="label">项目简介</div>
|
||||
<div class="value">专注跑腿场景的完整系统,后端采用 Midway 3.0(Node.js),管理后台基于 Nuxt 2.x,小程序端使用 UniApp。核心功能涵盖帮送、帮买、骑手抢单、智能分配、提现等。</div>
|
||||
</div>
|
||||
|
||||
<h3>技术方案</h3>
|
||||
<table>
|
||||
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>前端(小程序)</td><td>UniApp(Vue 50.2% + TypeScript 40.4% + JavaScript 7.9%)</td></tr>
|
||||
<tr><td>后端</td><td>Midway 3.0(Node.js 框架,企业级 IoC/DI)</td></tr>
|
||||
<tr><td>管理后台</td><td>Nuxt 2.x(Vue SSR)</td></tr>
|
||||
<tr><td>数据库</td><td>MySQL</td></tr>
|
||||
<tr><td>Node 版本</td><td>Node.js 16.x</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>前端(小程序端)功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>用户下单</td><td><span class="badge badge--success">✅ 完整</span></td><td>发布跑腿任务(帮送/帮买/帮取),填写地址、物品、时间要求</td></tr>
|
||||
<tr><td>配送方式选择</td><td><span class="badge badge--success">✅ 完整</span></td><td>帮送、帮买、帮取三大服务类型,优惠券/积分抵扣/小费</td></tr>
|
||||
<tr><td>骑手抢单界面</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>骑手端任务大厅,按距离排序展示空闲订单,先到先得,无并发锁保护</td></tr>
|
||||
<tr><td>订单状态追踪</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>完整状态时间线(创建/支付/接单/送完/完成),但无实时 GPS 地图追踪</td></tr>
|
||||
<tr><td>实时通知</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>依赖微信订阅消息推送,无 WebSocket 实时推送</td></tr>
|
||||
<tr><td>商户管理界面</td><td><span class="badge badge--error">❌ 无</span></td><td>纯 C2C 跑腿模式,无商户模块</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>后端功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>订单管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>30+ 字段全生命周期,状态机:-2取消/-1关闭/0未付/1已付待接/2接单配送/3已送达/4完成</td></tr>
|
||||
<tr><td>配送方式配置</td><td><span class="badge badge--success">✅ 完整</span></td><td>阶梯计价:起步价 + 距离阶梯 + 重量阶梯 + 时段加价,腾讯地图 API 计算距离</td></tr>
|
||||
<tr><td>骑手抢单引擎</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>广播池模型:所有骑手可见(status=1 且 riderNo=null),按距离排序,先到先得。无分布式锁,无智能派单算法</td></tr>
|
||||
<tr><td>骑手管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>注册→审核→启停接单→收入统计→银行卡→提现,Nuxt 管理后台 CRUD</td></tr>
|
||||
<tr><td>支付与提现</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>微信支付完整实现(统一下单+回调+退款),支付宝/QQ 仅枚举未实现</td></tr>
|
||||
<tr><td>定时任务</td><td><span class="badge badge--success">✅ 完整</span></td><td>三个延迟队列:15分钟未付自动关闭 / 2小时未接单自动取消 / 2小时送达后自动完成</td></tr>
|
||||
<tr><td>后台管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>Nuxt2 + Ant Design Vue:城市/计价/订单/骑手/优惠券/配置/资金走势全覆盖</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>核心亮点</h3>
|
||||
<p>• <strong>Node.js 高性能后端</strong>:Midway 3.0 + TypeScript + TypeORM,架构清晰,代码质量高</p>
|
||||
<p>• <strong>智能阶梯计价</strong>:起步价 + 距离/重量/时段多维计价,腾讯地图 API 自动算距</p>
|
||||
<p>• <strong>完整的资金流转</strong>:平台/代理/骑手收入自动分账,可配置比例</p>
|
||||
<p>• <strong>局限性</strong>:纯跑腿模式无商户端;抢单无并发锁;无实时 GPS 追踪</p>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 万岳外卖系统 ==================== -->
|
||||
<div class="section" id="wanyue">
|
||||
<div class="section-title">万岳外卖系统 <small>gitee.com/WanYueKeJi/wanyue_waimai_uniapp · ⭐ 815</small></div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="label">项目简介</div>
|
||||
<div class="value">最完整的同城外卖开源系统,包含用户端、商家端、配送端(骑手)、总管理后台、城市配送后台五大端口。PHP ThinkCMF + PhalApi 架构,WebSocket 长连接,队列管理。</div>
|
||||
</div>
|
||||
|
||||
<h3>技术方案</h3>
|
||||
<table>
|
||||
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>前端(小程序)</td><td>UniApp(Vue 60.5% + JavaScript 33.4%)</td></tr>
|
||||
<tr><td>后端</td><td>ThinkCMF(内容管理框架)+ PhalApi(API 框架)</td></tr>
|
||||
<tr><td>数据库</td><td>MySQL</td></tr>
|
||||
<tr><td>实时通信</td><td>WebSocket 长连接 + PHPExcel 数据导出</td></tr>
|
||||
<tr><td>异步处理</td><td>队列管理(Queue)</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>前端(小程序端)功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>用户下单</td><td><span class="badge badge--success">✅ 完整</span></td><td>在线点餐、购物车、下单支付,支持连锁餐饮、闪送跑腿</td></tr>
|
||||
<tr><td>配送方式选择</td><td><span class="badge badge--success">✅ 完整</span></td><td>外卖配送、到店自取、预约配送、扫码点餐、闪送</td></tr>
|
||||
<tr><td>骑手抢单界面</td><td><span class="badge badge--success">✅ 完整</span></td><td>Graborders 抢单组件、Transferorder 转单、cancleorder 取消,任务地图展示</td></tr>
|
||||
<tr><td>订单状态追踪</td><td><span class="badge badge--success">✅ 完整</span></td><td>Missionmap 任务地图 + detailmap 配送地图,实时状态更新</td></tr>
|
||||
<tr><td>实时通知</td><td><span class="badge badge--success">✅ 完整</span></td><td>WebSocket 实时推送新订单(后端 Swoole 实现)</td></tr>
|
||||
<tr><td>商户管理界面</td><td><span class="badge badge--success">✅ 完整</span></td><td>商家端独立页面:商品/订单/评论/利润/核销/优惠券/营业时间/规格管理</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>后端功能完成度</h3>
|
||||
<p><em>⚠️ 注意:此仓库仅包含前端代码,后端在独立仓库 <code>wanyue_waimai_web</code>(ThinkCMF + PHP + Swoole)。</em></p>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>订单管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>完整订单生命周期,含排队叫号、预约调度、退款处理</td></tr>
|
||||
<tr><td>配送方式配置</td><td><span class="badge badge--success">✅ 完整</span></td><td>配送费、配送范围、配送方式后台灵活配置</td></tr>
|
||||
<tr><td>骑手抢单引擎</td><td><span class="badge badge--success">✅ 完整</span></td><td>接单池抢单 + 系统智能派单 + 转单功能</td></tr>
|
||||
<tr><td>多商户管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>多商户入驻、连锁餐饮支持、店铺审核</td></tr>
|
||||
<tr><td>骑手管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>骑手管理、配送结算、投诉处理、收入统计、提现</td></tr>
|
||||
<tr><td>支付集成</td><td><span class="badge badge--success">✅ 完整</span></td><td>微信支付 + 支付宝</td></tr>
|
||||
<tr><td>后台管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>总管理后台 + 城市配送后台,五端全覆盖</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>核心亮点</h3>
|
||||
<p>• <strong>五端完整</strong>:用户端 + 商家端 + 骑手端 + 总后台 + 城市配送,业界最完整的开源外卖方案</p>
|
||||
<p>• <strong>双模式配送</strong>:接单池抢单 + 智能派单并存,支持转单</p>
|
||||
<p>• <strong>WebSocket 实时性</strong>:骑手端实时收到新订单推送</p>
|
||||
<p>• <strong>队列管理</strong>:异步处理订单,提高并发能力</p>
|
||||
<p>• <strong>连锁餐饮</strong>:支持多门店连锁运营</p>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 暹罗外卖 ==================== -->
|
||||
<div class="section" id="siam">
|
||||
<div class="section-title">暹罗外卖 <small>gitee.com/siam1026/siam-cloud · ⭐ 479</small></div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="label">项目简介</div>
|
||||
<div class="value">基于 Spring Cloud 微服务架构的多商户外卖配送系统,对标美团/饿了么。包含用户端小程序、商家管理后台、超管调度后台。v1.1 版本,2023 年 12 月开源。</div>
|
||||
</div>
|
||||
|
||||
<div class="info-card" style="border-left: 4px solid var(--color-error);">
|
||||
<div class="label">⚠️ 重要发现</div>
|
||||
<div class="value">
|
||||
<p><strong>骑手抢单功能在开源版中为空实现。</strong> 代码注释明确写着"目前商家自配送,配送费打到商家余额中",骑手配送分支为空。骑手端小程序代码未开源(需加 QQ 群获取)。骑手服务仅有 CRUD 和登录,无在线状态、无地理位置、无订单分配、无收入钱包。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h3>技术方案</h3>
|
||||
<table>
|
||||
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>前端(小程序)</td><td>原生微信小程序(wxapplet-siam-user)</td></tr>
|
||||
<tr><td>管理后台</td><td>Vue 2.5 + Element UI(vue-siam-admin + vue-siam-shop)</td></tr>
|
||||
<tr><td>后端</td><td>Spring Cloud Hoxton + Spring Cloud Alibaba + Spring Boot 2.2.2(13 个微服务)</td></tr>
|
||||
<tr><td>中间件</td><td>Redis + Redisson + RocketMQ(延迟队列/事务消息)+ RabbitMQ</td></tr>
|
||||
<tr><td>可观测性</td><td>Sentinel + Seata + SkyWalking + Prometheus + Grafana + ELK</td></tr>
|
||||
<tr><td>数据库</td><td>MySQL + MyBatis-Plus 3.1.2</td></tr>
|
||||
<tr><td>实时通信</td><td>WebSocket</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>前端(小程序端)功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>用户下单</td><td><span class="badge badge--success">✅ 完整</span></td><td>商品浏览、多规格 SKU、购物车、下单支付,完整价格计算</td></tr>
|
||||
<tr><td>配送方式选择</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>仅支持自取和配送两种,deliveryWay 始终为 1(商家自配送),平台骑手配送未实现</td></tr>
|
||||
<tr><td>骑手抢单界面</td><td><span class="badge badge--error">❌ 未开源</span></td><td>README 提及 uniapp-siam-rider 但代码不在仓库中,需加 QQ 群获取</td></tr>
|
||||
<tr><td>订单状态追踪</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>订单状态机完整(11 种状态),但无配送轨迹追踪(无骑手位置节点)</td></tr>
|
||||
<tr><td>实时通知</td><td><span class="badge badge--success">✅ 完整</span></td><td>WebSocket 通知商家新订单、支付成功等</td></tr>
|
||||
<tr><td>商户管理界面</td><td><span class="badge badge--success">✅ 完整</span></td><td>商家后台(vue-siam-shop):订单/商品/门店/促销/账单/提现全覆盖</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>后端功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>订单管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>完整下单逻辑:购物车校验→价格计算→订单号生成→支付截止→状态初始化</td></tr>
|
||||
<tr><td>支付</td><td><span class="badge badge--success">✅ 完整</span></td><td>微信支付集成,支付回调→状态流转→资金冻结→WebSocket 通知</td></tr>
|
||||
<tr><td>商家接单</td><td><span class="badge badge--success">✅ 完整</span></td><td>商家接单后自取订单转待处理、外卖订单转待配送,WebSocket 推送</td></tr>
|
||||
<tr><td>配送方式配置</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>仅支持商家自配送,平台骑手配送分支为空(handleRiderIncome 注释确认)</td></tr>
|
||||
<tr><td>骑手抢单引擎</td><td><span class="badge badge--error">❌ 缺失</span></td><td>骑手表仅 5 字段(id/shopId/realname/phone/sex),无在线状态/地理位置/钱包,无抢单/派单 API</td></tr>
|
||||
<tr><td>多商户管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>商户入驻审核、门店管理、商品管理、订单管理、账单/提现管理</td></tr>
|
||||
<tr><td>骑手管理</td><td><span class="badge badge--warning">⚠️ 基础</span></td><td>仅有骑手 CRUD 和登录,无审核/等级/排班/收入明细</td></tr>
|
||||
<tr><td>后台管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>超管后台:会员管理 + 系统设置 + 全模块管理</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>核心亮点</h3>
|
||||
<p>• <strong>企业级微服务架构</strong>:13 个微服务模块,Spring Cloud Alibaba 全家桶(Eureka/Zuul/Sentinel/Seata)</p>
|
||||
<p>• <strong>订单管理成熟</strong>:完整下单/支付/退款流程,11 种订单状态机,退款审批流完善</p>
|
||||
<p>• <strong>营销功能丰富</strong>:优惠券、满减规则、邀请返现、积分商城</p>
|
||||
<p>• <strong>核心缺陷</strong>:骑手抢单配送为空实现,仅支持商家自配送;骑手端小程序未开源</p>
|
||||
</div>
|
||||
|
||||
<!-- ==================== MiniRun 校园跑腿 ==================== -->
|
||||
<div class="section" id="minirun">
|
||||
<div class="section-title">MiniRun 校园跑腿 <small>github.com/dearancelan/MiniRun · ⭐ 174</small></div>
|
||||
|
||||
<div class="info-card">
|
||||
<div class="label">项目简介</div>
|
||||
<div class="value">面向校园场景的跑腿小程序,基于微信云开发(Serverless),无需独立后端服务器。支持代购食物、快递取送、打印文件等任务发布与接单。适合毕业设计或轻量级项目。</div>
|
||||
</div>
|
||||
|
||||
<h3>技术方案</h3>
|
||||
<table>
|
||||
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>前端</td><td>微信小程序原生框架(JavaScript 100%)+ Vant 组件库</td></tr>
|
||||
<tr><td>后端</td><td>微信云开发(云函数 + 云数据库 + 云存储 + 云定时器)</td></tr>
|
||||
<tr><td>地图</td><td>腾讯地图 SDK(定位、线路计算)</td></tr>
|
||||
<tr><td>消息推送</td><td>微信订阅消息</td></tr>
|
||||
<tr><td>支付</td><td>微信支付(云开发集成)</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>前端(小程序端)功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>用户下单</td><td><span class="badge badge--success">✅ 完整</span></td><td>任务发布:代购食物、快递取送、打印文件等</td></tr>
|
||||
<tr><td>配送方式选择</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>仅任务分类选择,无复杂配送方式配置</td></tr>
|
||||
<tr><td>骑手抢单界面</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>任务大厅浏览 + 接单,但非严格意义上的抢单(无并发锁)</td></tr>
|
||||
<tr><td>订单状态追踪</td><td><span class="badge badge--success">✅ 完整</span></td><td>云数据库实时更新,状态流转清晰</td></tr>
|
||||
<tr><td>实时通知</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>微信订阅消息推送,非实时 WebSocket</td></tr>
|
||||
<tr><td>商户管理界面</td><td><span class="badge badge--error">❌ 无</span></td><td>无商户概念,纯 C2C 任务模式</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>后端(云函数)功能完成度</h3>
|
||||
<table>
|
||||
<thead><tr><th>功能模块</th><th>完成度</th><th>说明</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>任务管理</td><td><span class="badge badge--success">✅ 完整</span></td><td>云函数实现任务 CRUD、分类管理</td></tr>
|
||||
<tr><td>接单逻辑</td><td><span class="badge badge--warning">⚠️ 部分</span></td><td>基础接单功能,无分布式锁,高并发可能重复接单</td></tr>
|
||||
<tr><td>用户认证</td><td><span class="badge badge--success">✅ 完整</span></td><td>微信登录,角色管理(用户 vs 跑腿者)</td></tr>
|
||||
<tr><td>定时器</td><td><span class="badge badge--success">✅ 完整</span></td><td>云定时器处理超时任务、清理过期数据</td></tr>
|
||||
<tr><td>支付</td><td><span class="badge badge--success">✅ 完整</span></td><td>微信支付云开发集成</td></tr>
|
||||
<tr><td>局限性</td><td><span class="badge badge--warning">⚠️ 明显</span></td><td>云开发有容量限制,不适合大规模商用;无商户管理</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>核心亮点</h3>
|
||||
<p>• <strong>零运维</strong>:基于微信云开发,无需服务器、域名、备案</p>
|
||||
<p>• <strong>快速上手</strong>:适合毕业设计、个人学习、校园小范围运营</p>
|
||||
<p>• <strong>局限性明显</strong>:非外卖场景(纯跑腿)、无商户管理、并发能力有限、抢单逻辑不够严谨</p>
|
||||
</div>
|
||||
|
||||
<!-- ==================== 综合建议 ==================== -->
|
||||
<div class="section" id="recommendation">
|
||||
<div class="section-title">综合建议 <small>选型与二次开发推荐</small></div>
|
||||
|
||||
<h3>按场景推荐</h3>
|
||||
<table>
|
||||
<thead><tr><th>使用场景</th><th>推荐项目</th><th>理由</th></tr></thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><strong>快速搭建完整外卖平台</strong></td>
|
||||
<td>万岳外卖系统</td>
|
||||
<td>五端完整(用户/商家/骑手/总后台/城市后台),开箱即用,PHP 生态成熟</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>学习 Spring Cloud 外卖架构</strong></td>
|
||||
<td>暹罗外卖</td>
|
||||
<td>微服务架构设计规范,订单/支付/退款流程成熟。但骑手抢单未实现,需自行开发配送模块</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>专注跑腿业务(非外卖)</strong></td>
|
||||
<td>叮点跑腿 ddrun</td>
|
||||
<td>Node.js 高性能后端,智能计价,分销系统,专注跑腿场景</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>轻量级/个人/毕业设计</strong></td>
|
||||
<td>MiniRun 校园跑腿</td>
|
||||
<td>零运维成本,云开发 Serverless,快速部署</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>综合本地生活平台</strong></td>
|
||||
<td>DSO2O 外卖</td>
|
||||
<td>外卖 + 跑腿 + 家政多业务线,宝塔一键部署,社区活跃</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>骑手抢单功能对比</h3>
|
||||
<table>
|
||||
<thead><tr><th>项目</th><th>抢单模式</th><th>实时通知</th><th>智能派单</th><th>转单</th><th>并发安全</th></tr></thead>
|
||||
<tbody>
|
||||
<tr><td>DSO2O</td><td>WebSocket 推送 + 抢单</td><td>GatewayWorker WS</td><td>✅ 自动派单</td><td>✅</td><td>✅ 数据库锁</td></tr>
|
||||
<tr><td>万岳外卖</td><td>接单池 + Graborders</td><td>WebSocket (Swoole)</td><td>✅ 智能派单</td><td>✅ Transferorder</td><td>✅ 队列 + 锁</td></tr>
|
||||
<tr><td>暹罗外卖</td><td>❌ 未实现</td><td>WebSocket</td><td>❌</td><td>❌</td><td>❌ 无</td></tr>
|
||||
<tr><td>叮点跑腿</td><td>广播池(先到先得)</td><td>⚠️ 订阅消息</td><td>❌ 无</td><td>❌</td><td>⚠️ 仅 DB 事务</td></tr>
|
||||
<tr><td>MiniRun</td><td>任务大厅接单</td><td>订阅消息</td><td>❌</td><td>❌</td><td>❌ 无并发锁</td></tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>最终推荐</h3>
|
||||
|
||||
<div class="info-card" style="border-left: 4px solid var(--color-primary);">
|
||||
<div class="label">🏆 首选推荐</div>
|
||||
<div class="value">
|
||||
<p><strong>万岳外卖系统</strong> — 如果目标是快速搭建一个包含骑手抢单功能的完整外卖平台,万岳是最佳选择。五端完整、开箱即用、PHP 生态成熟、部署简单,抢单/派单/转单功能齐全。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info-card" style="border-left: 4px solid var(--color-success);">
|
||||
<div class="label">🚀 企业级推荐</div>
|
||||
<div class="value">
|
||||
<p><strong>暹罗外卖</strong> — 如果团队熟悉 Java/Spring Cloud,需要企业级的高可用架构,暹罗的微服务方案和可观测性体系是最佳参考。但部署和运维门槛较高。</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="info-card" style="border-left: 4px solid var(--color-warning);">
|
||||
<div class="label">📋 补充推荐</div>
|
||||
<div class="value">
|
||||
<p><strong>DSO2O 外卖</strong> — 如果需要综合本地生活平台(外卖 + 跑腿 + 家政),DSO2O 是最活跃的选择,Star 数最高,支持宝塔一键部署。</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div><!-- end main -->
|
||||
</div><!-- end layout -->
|
||||
</div><!-- end container -->
|
||||
|
||||
<script>
|
||||
// Sidebar active state on scroll
|
||||
const sections = document.querySelectorAll('.section[id]');
|
||||
const links = document.querySelectorAll('.sidebar a');
|
||||
|
||||
function updateActiveLink() {
|
||||
let current = '';
|
||||
sections.forEach(section => {
|
||||
const top = section.offsetTop - 100;
|
||||
if (window.scrollY >= top) {
|
||||
current = section.id;
|
||||
}
|
||||
});
|
||||
links.forEach(link => {
|
||||
link.classList.remove('active');
|
||||
if (link.getAttribute('href') === '#' + current) {
|
||||
link.classList.add('active');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', updateActiveLink);
|
||||
updateActiveLink();
|
||||
|
||||
// Smooth scroll
|
||||
links.forEach(link => {
|
||||
link.addEventListener('click', function(e) {
|
||||
e.preventDefault();
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
if (target) {
|
||||
target.scrollIntoView({ behavior: 'smooth', block: 'start' });
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user