init: 导入团队知识库内容

This commit is contained in:
yueqian-ai
2026-05-14 16:56:48 +08:00
commit acca2041f0
1681 changed files with 285734 additions and 0 deletions
@@ -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.0Node.js),管理后台基于 Nuxt 2.x,小程序端使用 UniApp。核心功能涵盖帮送、帮买、骑手抢单、智能分配、提现等。</div>
</div>
<h3>技术方案</h3>
<table>
<thead><tr><th>层级</th><th>技术栈</th></tr></thead>
<tbody>
<tr><td>前端(小程序)</td><td>UniAppVue 50.2% + TypeScript 40.4% + JavaScript 7.9%</td></tr>
<tr><td>后端</td><td>Midway 3.0Node.js 框架,企业级 IoC/DI</td></tr>
<tr><td>管理后台</td><td>Nuxt 2.xVue 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>UniAppVue 60.5% + JavaScript 33.4%</td></tr>
<tr><td>后端</td><td>ThinkCMF(内容管理框架)+ PhalApiAPI 框架)</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 UIvue-siam-admin + vue-siam-shop</td></tr>
<tr><td>后端</td><td>Spring Cloud Hoxton + Spring Cloud Alibaba + Spring Boot 2.2.213 个微服务)</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>