做了三年多商户商城小程序,踩过的坑比写过的代码还多。今天把功能架构和实现要点一次讲清楚,希望能帮到正在规划这类项目的朋友。
一、多商户商城和单商户的本质区别
单商户商城只有一个卖家,商品、订单、库存都是自己的。多商户商城则是一个平台,里面住着几十上百个商家,每个商家有自己的商品、订单、结算体系。核心区别在于数据隔离和分账逻辑。
- 数据隔离:每个商户只能看到自己的商品、订单、客户数据
- 分账逻辑:平台抽成后,剩余货款结算给商户
- 权限体系:平台管理员、商户管理员、普通用户三层角色
二、核心功能模块拆解
1. 商户入驻与审核
商户通过小程序提交入驻申请,填写店铺名称、联系人、营业执照、经营类目等信息。平台管理员在后台审核,通过后自动创建商户账号和店铺。
// 商户入驻申请提交
wx.request({
url: 'https://api.example.com/merchant/apply',
method: 'POST',
data: {
shopName: '张三水果店',
contact: '13800138000',
license: 'uploaded_file_id',
category: 'fresh_food'
},
success(res) {
if (res.data.code === 0) {
wx.showToast({ title: '提交成功,等待审核' })
}
}
})2. 商品管理
商户端需要支持商品发布、编辑、上下架、库存管理。这里要注意的是,商品表必须带 merchant_id 字段,所有查询都要带上这个条件,否则数据就串了。
- 商品分类:平台统一分类 + 商户自定义分类
- 规格管理:支持多规格 SKU,价格和库存独立
- 图片存储:建议用云存储,避免服务器带宽压力
3. 订单与分账
这是整个系统最复杂的部分。用户下单后,订单需要按商户拆分成子订单,每个子订单独立发货、独立结算。
// 订单拆分逻辑示意
const orderItems = cartItems.reduce((acc, item) => {
if (!acc[item.merchantId]) acc[item.merchantId] = []
acc[item.merchantId].push(item)
return acc
}, {})
// 为每个商户生成子订单
Object.keys(orderItems).forEach(merchantId => {
createSubOrder({
merchantId,
items: orderItems[merchantId],
totalAmount: calcTotal(orderItems[merchantId])
})
})分账方面,微信支付的服务商模式支持直接分账,但需要商户号资质。如果资质不够,可以先走平台代收,再手动或定时结算给商户。
4. 营销工具
多商户商城的营销要区分平台级和商户级:
- 平台级:全场满减、平台优惠券、积分商城
- 商户级:店铺优惠券、限时折扣、满件包邮
- 注意优惠叠加规则,避免出现负价订单
5. 结算与提现
商户在后台查看待结算金额,发起提现申请。平台审核后打款。这里建议做一个结算周期,比如 T+7,避免退款纠纷。
三、技术架构建议
后端建议用 Node.js 或 Java,数据库用 MySQL 分表存储订单。小程序端用原生或 uni-app 都可以,关键是接口设计要清晰。
踩坑提醒:多商户系统的权限校验一定要做在服务端,前端隐藏菜单只是体验优化,不能当安全措施。
四、开发顺序建议
- 先做商户入驻和审核流程
- 再做商品管理和展示
- 接着做订单和支付
- 最后做分账和结算
多商户商城小程序开发周期一般在 2-3 个月,功能复杂度高,建议先跑通核心流程再迭代营销功能。
评论 (0)
还没有评论,快来抢沙发吧~