卤菜店会员系统怎么搞?卤味店微信小程序怎么开通
- GEO小小课堂网 xxkt.org.cn - 阅 8卤菜店会员系统怎么搞?之前买过收银台,但那东西不是很好用,人少的情况下,基本上不太可能靠用那东西来收费,微信小程序的会员系统更适合当下。今天,GEO小小课堂网( www.xxkt.org.cn )带来的是《卤菜店会员系统怎么搞?卤味店微信小程序怎么开通》。希望对大家有所帮助。
前言
做一个卤味店微信小程序开发,会员充值系统。需要以下几个功能:1、充值钱会根据用户充值数量获得一些赠送金额;2、有拉新功能,上下关系绑定,下级每次充值,系统会自动给上级一些钱,有且仅有一层上下级关系,二代充值给一代奖励,三代充值只会给二代奖励,一代充值只有第一个功能的充值赠送金额。
这是一个典型的「充值赠送 + 一级分销」的小程序系统。我来完整设计,把数据库、接口逻辑、关键代码都给你。
一、核心业务流程

规则总结:
上下级只绑一层直接关系(parent_id = 邀请人的ID)
二级分销:下级充值 → 上级拿佣金;三代充值 → 二代拿佣金,一代不拿
充值赠送:任何人充值都按梯度送余额
二、数据库设计
User 表
CREATE TABLE user (
id INT PRIMARY KEY AUTO_INCREMENT,
openid VARCHAR(64) NOT NULL UNIQUE,
nickname VARCHAR(64),
phone VARCHAR(16),
balance DECIMAL(10,2) DEFAULT 0.00, — 余额(充值+赠送+佣金)
parent_id INT DEFAULT NULL, — 上级用户ID(一代)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_parent (parent_id)
);
Recharge 表(充值记录)
CREATE TABLE recharge (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL, — 充值人
amount DECIMAL(10,2) NOT NULL, — 实付金额
bonus_amount DECIMAL(10,2) DEFAULT 0.00, — 赠送金额
total_amount DECIMAL(10,2) DEFAULT 0.00, — 到账总额 = amount + bonus_amount
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_user (user_id)
);
Commission 表(佣金记录)
CREATE TABLE commission (
id INT PRIMARY KEY AUTO_INCREMENT,
from_user_id INT NOT NULL, — 谁充值触发
to_user_id INT NOT NULL, — 谁获得佣金(上级)
recharge_id INT NOT NULL, — 关联订单
amount DECIMAL(10,2) NOT NULL, — 佣金金额
level TINYINT DEFAULT 1, — 1=直接上级(一代佣金)
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
INDEX idx_to_user (to_user_id),
INDEX idx_recharge (recharge_id)
);
三、充值梯度规则
自定义规则示例(可后台配置):
// recharge_rules.js — 根据充值金额算赠送
const RECHARGE_BONUS_RULES = [
{ min: 5000, bonus: 1500 }, // 充5000送1500 → 到账6500
{ min: 2000, bonus: 400 }, // 充2000送400 → 到账2400
{ min: 1000, bonus: 150 }, // 充1000送150 → 到账1150
{ min: 500, bonus: 50 }, // 充500 送50 → 到账550
{ min: 200, bonus: 20 }, // 充200 送20 → 到账220
{ min: 0, bonus: 0 }, // 保底
];function calcBonus(amount) {
for (const rule of RECHARGE_BONUS_RULES) {
if (amount >= rule.min) return rule.bonus;
}
return 0;
}
佣金比例示例:下级充值金额的 10% 给上级。
四、核心业务逻辑(Node.js 云函数)
4.1 充值接口
// recharge.js — 云函数
const cloud = require(‘wx-server-sdk’);
cloud.init();
const db = cloud.database();// 充值赠送规则
const BONUS_RULES = [
{ min: 5000, bonus: 1500 },
{ min: 2000, bonus: 400 },
{ min: 1000, bonus: 150 },
{ min: 500, bonus: 50 },
{ min: 200, bonus: 20 },
{ min: 0, bonus: 0 },
];function calcBonus(amount) {
for (const r of BONUS_RULES) {
if (amount >= r.min) return r.bonus;
}
return 0;
}exports.main = async (event) => {
const { userId, amount } = event; // userId 从登录态获取
const bonus = calcBonus(amount);
const total = amount + bonus;// 1. 创建充值记录
const rechargeRes = await db.collection(‘recharge’).add({
data: {
userId,
amount,
bonusAmount: bonus,
totalAmount: total,
createdAt: db.serverDate(),
}
});const rechargeId = rechargeRes._id;
// 2. 增加用户余额(充值金额 + 赠送金额)
await db.collection(‘user’).doc(userId).update({
data: {
balance: db.command.inc(total),
}
});// 3. 查上级 → 给上级打佣金
const user = await db.collection(‘user’).doc(userId).get();
const parentId = user.data.parentId;if (parentId) {
const commissionRate = 0.1; // 10%
const commissionAmount = Math.floor(amount * commissionRate * 100) / 100;if (commissionAmount > 0) {
// 写佣金记录
await db.collection(‘commission’).add({
data: {
fromUserId: userId,
toUserId: parentId,
rechargeId,
amount: commissionAmount,
level: 1,
createdAt: db.serverDate(),
}
});// 给上级加余额
await db.collection(‘user’).doc(parentId).update({
data: {
balance: db.command.inc(commissionAmount),
}
});
}
}return { code: 0, totalAmount: total, bonus };
};
4.2 绑定上下级关系
// bindParent.js — 用户B扫码/点链接进入后绑定上级
exports.main = async (event) => {
const { userId, parentCode } = event;
// parentCode 可以是邀请码(上级的 userId 或 openid)// 不能自己绑自己
if (userId === parentCode) return { code: -1, msg: ‘不能绑定自己’ };const user = await db.collection(‘user’).doc(userId).get();
// 已有上级 → 不可再绑
if (user.data.parentId) return { code: -1, msg: ‘已绑定上级,不可更改’ };// 检查上级是否存在
const parent = await db.collection(‘user’).where({
_id: parentCode
}).get();if (parent.data.length === 0) return { code: -1, msg: ‘上级不存在’ };
// 绑定
await db.collection(‘user’).doc(userId).update({
data: { parentId: parentCode }
});return { code: 0 };
};
4.3 邀请机制(小程序端)
邀请页面
// 用户A的”邀请好友”页面
Page({
onLoad() {
// 生成带邀请码的二维码/路径
// 使用云调用生成小程序码
wx.cloud.callFunction({
name: ‘getInviteCode’,
data: { userId: getApp().globalData.userId }
}).then(res => {
this.setData({ qrCode: res.result.qrCodeUrl });
});
},copyLink() {
// 也可以用小程序的分享路径
wx.setClipboardData({
data: `/pages/index/index?inviter=${getApp().globalData.userId}`
});
}
});
app.js
// App.js — 用户打开小程序时检测是否是邀请链
App({
onLaunch(options) {
const inviterId = options.query.inviter;
if (inviterId) {
wx.setStorageSync(‘inviterId’, inviterId);
}wx.cloud.callFunction({
name: ‘login’,
success: res => {
const userId = res.result.userId;// 如果有邀请人且当前用户无上级 → 绑定
const inviter = wx.getStorageSync(‘inviterId’);
if (inviter) {
wx.cloud.callFunction({
name: ‘bindParent’,
data: { userId, parentCode: inviter }
});
wx.removeStorageSync(‘inviterId’);
}
}
});
}
});
五、数据流向图解
用户A(余额¥0)
│
├─ 邀请 → 用户B(parentId = A)
│
├─ A 充值 ¥200 → 获赠 ¥20 → 余额 ¥220
│
└─ B 充值 ¥500 → 获赠 ¥50 → B余额 ¥550
→ A获得佣金 ¥50 (500×10%) → A余额 ¥270 ✅
│
└─ 用户C扫码B的邀请码进入 → parentId = B
│
├─ C 充值 ¥1000 → 获赠 ¥150 → C余额 ¥1150
│ → B获得佣金 ¥100 (1000×10%) → B余额 ¥650 ✅
│ → A拿不到任何钱 ❌(只到二代)
│
└─ B 自己充值 ¥200 → 获赠 ¥20
→ A获得佣金 ¥20 (200×10%) → A余额 ¥290 ✅
六、小程序的页面结构建议
pages/
├── index/ # 首页 — 商品/卤味展示
├── recharge/ # 充值中心 — 选金额 → 微信支付 → 充值成功
├── balance/ # 我的余额 — 余额展示 + 充值/佣金明细
├── invite/ # 邀请好友 — 小程序码 + 分享组件
├── team/ # 我的团队 — 显示直接下级数量 + 下级充值动态
└── my/ # 个人中心 — 余额/充值记录/佣金记录/设置
七、关键点总结

整个系统最核心的代码就两个云函数:recharge(充值 + 赠送 + 佣金发放)和 bindParent(绑定上下级)。加上充值梯度配置和佣金比例,就是一个可用的 MVP。
以上就是GEO小小课堂网( www.xxkt.org.cn )带来的是《卤菜店会员系统怎么搞?卤味店微信小程序怎么开通》。感谢您的观看。
非特殊说明,本文为小小课堂SEO自学网原创,欢迎转载并保留版权 https://www.xxkt.org.cn/
本站提供SEO与GEO培训、咨询、诊断,微信(电话):13722793092 微信公众号:xxktorg
标签:会员系统怎么搞, 卤味店微信小程序怎么开通, 卤菜店会员系统, 卤菜店会员系统怎么搞, 小程序系统, 小程序系统开发, 微信小程序开通, 微信小程序怎么开通, 门店会员系统怎么搞 文章最后更新时间:六月 20, 2026

发表评论