Catatan Teknis zhaoJian

QingSi 会员管理系统

GitHub

通用会员管理系统 - 适用于美业、美容、美发、美甲、按摩、瑜伽、培训、宠物等行业,收银、会员、预约、报表一站式解决方案。

Bantuan & Dukungan: Proyek ini sepenuhnya open source dan gratis. Anda dapat mengunduh dan mendeploy sendiri. Untuk pengembangan kustom atau dukungan teknis profesional, silakan hubungi saya.

QingSi 会员管理系统

简单高效,管理不用愁,经营更省心

适用于:美业、美容、美发、美甲、按摩、瑜伽、培训、宠物等行业的会员管理系统。

功能

模块 功能
收银台 快速结算、多支付方式、会员卡支付、智能多卡组合、价格调整
会员管理 会员档案、办卡充值、余额查询、挂账管理、消费记录
预约管理 用户端在线预约、状态追踪、微信通知推送
营业报表 营业概览、支付统计、项目排行、生日提醒、沉睡会员
系统设置 服务项目、卡类型、员工管理、交易撤销

技术栈

  • 前端:Vue 3 + Element Plus + Vite + Pinia
  • 后端:Node.js + Fastify + Prisma
  • 数据库:MySQL
  • 部署:Docker Compose

快速开始

1. 克隆项目

git clone https://github.com/zhaojiannet/QingSi.git
cd QingSi

2. 配置环境变量

cp backend/app/.env.example backend/app/.env

编辑 backend/app/.env

JWT_SECRET=your-jwt-secret-here
SESSION_SECRET=your-session-secret-here
ADMIN_USERNAME=admin@yourdomain.com
ADMIN_PASSWORD=your-secure-password-here
DATABASE_URL=mysql://user:password@localhost:3306/database

生成密钥:openssl rand -hex 64

3. 启动服务

docker network create docker-net  # 如不存在
docker-compose up -d

4. 访问

品牌定制

编辑 frontend/app/src/config/app.js

export default {
  brandName: '青丝',           // 店铺名称
  industryType: '美业',        // 可选:美业、美容、美发、美甲、按摩、瑜伽、培训、宠物
  systemName: '会员管理系统',
  slogan: '简单高效,管理不用愁,经营更省心',
  logo: '/images/logo.png',
};

行业类型对应背景图:

industryType 背景图
美业 login_bg01.jpg
美容 login_bg02.jpg
美发 login_bg03.jpg
美甲 login_bg04.jpg
按摩 login_bg05.jpg
瑜伽 login_bg06.jpg
培训 login_bg07.jpg
宠物 login_bg08.jpg

图片位于 frontend/app/public/images/ 目录。

微信通知推送

支持通过微信公众号推送预约通知。

配置步骤

  1. 申请微信公众号测试号:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo

  2. 创建模板消息,内容如下:

姓名:{{name.DATA}}
电话:{{phone.DATA}}
时间:{{time.DATA}}
项目:{{services.DATA}}
员工:{{staff.DATA}}
留言:{{message.DATA}}

注意:不要使用 notesremark 作为字段名,这是微信保留字段,不会显示。

  1. 部署 Cloudflare Worker(文件在 cloudflare-workers/ 目录)

  2. 配置环境变量:

WXPUSH_URL=https://your-worker.workers.dev/wxsend
WXPUSH_TOKEN=your-api-token

版本升级

从旧版本升级

如果你的系统已在运行,升级到新版本需要执行数据库迁移:

# 进入后端容器
docker exec -it qingsi_backend sh

# 执行数据库迁移
npx prisma db push

新增字段说明:

  • SystemConfig.bookingCode - 用户端预约访问码
  • SystemConfig.bookingCodeUpdatedAt - 访问码更新时间

生产部署

Docker 部署

同"快速开始"。

传统部署(nginx + Node.js)

前端:

cd frontend/app
pnpm install && pnpm build
# 将 dist/ 上传到 nginx 静态目录

后端:

cd backend/app
pnpm install --prod
npx prisma generate
pm2 start src/server.js --name qingsi

nginx 配置:

server {
    listen 80;
    server_name your-domain.com;

    location / {
        root /var/www/qingsi/dist;
        try_files $uri $uri/ /index.html;
    }

    location /api {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

开发

docker-compose up              # 启动
docker-compose logs -f backend # 查看日志

# 进入容器
docker exec -it qingsi_backend sh
npx prisma studio              # 数据库可视化
node init-admin.js             # 重置管理员

项目结构

QingSi/
├── backend/app/
│   ├── src/routes/      # API 路由
│   ├── prisma/          # 数据模型
│   └── .env.example
├── frontend/app/
│   └── src/
│       ├── views/       # 页面
│       ├── components/  # 组件
│       └── config/      # 配置
└── docker-compose.yml

许可证

GPL-3.0