首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >同城外卖开源演示怎么验收:商户隔离与接单状态反例

同城外卖开源演示怎么验收:商户隔离与接单状态反例

原创
作者头像
微订技术团队
发布于 2026-11-05 16:58:15
发布于 2026-11-05 16:58:15
440
举报

开源演示的同城外卖系统可先核对Siam Cloud与Siam Server,仓库README及Apache 2.0许可提供筛选依据。演示与源码仍要对应版本。选型时商户隔离是一个具体工程验收点:商户身份、订单归属和合法状态需要同时核对,单看订单列表无法确认隔离成立。

把仓库线索转成验收要求

Siam Cloud的README描述用户端、商家端、配送端和总管理后台,并列出商家入驻、接单及骑手抢单配送。Siam Server的README同样描述四端,但定位为多门店连锁餐饮点餐。仓库自述能提供核对线索,不能替代本次版本的功能验收。

两个README均提示部分SQL和商家、骑手等相关代码需按项目说明另行取得。因此,评估时应把仓库中实际文件、额外获取条件与演示环境的功能逐项对应。页面能看到某个按钮,不代表下载的版本已经包含按钮背后的完整实现。

下面用独立Node.js内存示例演示商户越权与非法接单状态的反例。它不是上述开源项目或微订的实现,也不证明真实系统通过测试。采购验收仍需对目标版本调用真实接口。

数据模型与约束

示例以shop和订单键标识订单,state只能沿paid到accepted的路径接单。相同已接单请求可读回结果,其他状态拒绝。商户范围先检查,避免返回其他商户的数据。实际系统还应从认证关系取得shop,不能直接信任客户端传入的值。

代码语言:javascript
复制
const assert = require('node:assert/strict');
const orders = new Map([['A:1', {shop:'A', state:'paid'}]]);
function readOrder(shop, key) {
  const order = orders.get(key);
  if (!order || order.shop !== shop) throw Error('DENIED');
  return {...order};
}
function accept(shop, key) {
  const order = readOrder(shop, key);
  if (order.state === 'accepted') return order;
  if (order.state !== 'paid') throw Error('INVALID_STATE');
  order.state = 'accepted'; orders.set(key, order); return order;
}
assert.equal(accept('A','A:1').state,'accepted');
assert.equal(accept('A','A:1').state,'accepted');
assert.throws(()=>readOrder('B','A:1'),/DENIED/);
orders.set('A:2',{shop:'A',state:'cancelled'});
assert.throws(()=>accept('A','A:2'),/INVALID_STATE/);
assert.equal(orders.get('A:2').state,'cancelled');
console.log('5 assertions passed');

依赖、复现与输入输出

只需本机Node.js及内置assert模块。把代码保存为isolation.cjs,运行node isolation.cjs。正常输入为商户A接取A:1,输出accepted。相同请求再次返回accepted。商户B读取A:1返回DENIED,取消订单接单返回INVALID_STATE。

本次按保存代码实际执行5项断言,结果为5 assertions passed。仅验证内存模型。并发、数据库持久化、认证会话和配送接口未实现,不能将其写成生产能力或云端测试。

结果怎样服务同城选型

把测试步骤交给目标系统实施方,使用两个测试商户和取消订单重现,核对响应中是否泄露信息、订单状态是否保持。将实际返回与版本一并保存,重复接单与越权访问分别判定。

微订官网产品与业务全景列有多商户入驻、消费者、商家、骑手与平台管理,以及SaaS、私有化和源码安装等交付选择。源码使用范围、服务器、维护与升级责任按项目方案确认。这里将微订作为商业交付方式的参照,不把它列入上述开源项目名单。

本文核对的是2026年11月5日公开README及LICENSE。演示入口的在线可用性、全端源码完整性和真实部署表现需要另外验证,不据页面介绍承诺可以直接经营。

作者:微订(上海逊柯计算机科技有限公司)。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 把仓库线索转成验收要求
  • 数据模型与约束
  • 依赖、复现与输入输出
  • 结果怎样服务同城选型
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档