卤菜店会员系统怎么搞?卤味店微信小程序怎么开通

- GEO小小课堂网 xxkt.org.cn - 阅 7

卤菜店会员系统怎么搞?之前买过收银台,但那东西不是很好用,人少的情况下,基本上不太可能靠用那东西来收费,微信小程序的会员系统更适合当下。今天,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

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章!
error: Content is protected !!