微信多商户电商小程序接入客服系统设计方案
vx: llike620
要实现一个多商户入驻的微信电商小程序,其中每个商户拥有独立的客服系统,以下是详细的设计方案:
1. 系统架构设计
核心组件
-
平台管理后台:用于管理所有入驻商户
-
商户管理后台:每个商户独立的后台
-
小程序前端:用户使用的界面
-
客服系统:集成微信客服API或自建客服系统
2. 数据库设计
主要数据表
-
商户表(merchants)
-
merchant_id (主键)
-
name
-
logo
-
contact_info
-
status (审核状态)
-
create_time
-
-
商品表(products)
-
product_id (主键)
-
merchant_id (外键)
-
name
-
price
-
description
-
images
-
status
-
-
客服账号表(customer_service)
-
cs_id (主键)
-
merchant_id (外键)
-
account_id (微信客服账号)
-
name
-
avatar
-
status
-
-
用户咨询记录表(consultations)
-
consult_id (主键)
-
user_id
-
merchant_id
-
product_id
-
cs_id
-
start_time
-
end_time
-
status
-
3. 客服系统实现方案
方案A:使用微信官方客服API
-
为每个商户创建独立的微信客服账号
-
在小程序商品页添加"联系客服"按钮
-
根据当前浏览的商品所属商户,调用对应的客服账号
// 小程序前端代码示例
Page({
contactService: function() {
const merchantId = this.data.product.merchant_id;
wx.openCustomerServiceChat({
extInfo: {url: `https://www.example.com/kf/${merchantId}`},
corpId: 'YOUR_CORP_ID',
success(res) {}
});
}
});
方案B:自建客服系统
-
开发独立的客服聊天模块
-
根据用户当前浏览的商品路由咨询到对应商户
-
商户后台可查看和管理自己的客服对话
4. 数据隔离实现
-
API层过滤:所有API请求都携带商户ID,服务端验证权限
-
数据库查询:所有商户相关查询必须包含merchant_id条件
-
缓存隔离:使用商户ID作为缓存key前缀
// 服务端示例 - 获取商户商品列表
router.get('/products', async (ctx) => {
const merchantId = ctx.state.merchantId; // 从token获取
const products = await Product.findAll({
where: { merchant_id: merchantId }
});
ctx.body = products;
});
5. 商户入驻流程
-
商户提交入驻申请
-
平台审核资质
-
审核通过后,商户设置基本信息
-
商户添加客服账号
-
商户上传商品
6. 用户使用流程
-
用户浏览小程序,查看不同商户的商品
-
点击"联系客服"时,系统自动路由到对应商户的客服
-
客服在商户后台查看并回复用户咨询
7. 技术实现建议
-
使用微信云开发或多租户SaaS架构
-
考虑使用微服务架构分离商户数据
-
实施严格的数据权限控制
-
定期进行安全审计
8. 扩展功能
-
客服绩效统计(每个商户独立)
-
客服自动分配算法
-
常见问题自动回复
-
客服评价系统
这个设计方案确保了各商户数据的完全隔离,同时提供了独立的客服系统,满足您的需求。