Notas técnicas de zhaoJian

Sistema universal de gestión de miembros (Go + SaaS)

GitHub

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

Ayuda y Soporte: Este proyecto es completamente de código abierto y gratuito. Puedes descargarlo y desplegarlo por tu cuenta. Para desarrollo personalizado o soporte técnico profesional, no dudes en contactarme.

通用会员管理系统 · SaaS 版

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

面向小微商户的多租户 SaaS 会员管理平台。代码 AGPL-3.0 开源。

适用于:美业、美容、美发、美甲、按摩、瑜伽、培训、宠物等行业。

[!IMPORTANT] 🚧 项目正在加紧开发测试中,代码尚未发布。 完成内部验证后将第一时间在本仓库以 AGPL-3.0 开源,敬请关注 ⭐

预览

登录页

登录页:图形验证码 + 行业主题背景(美业 / 瑜伽 / 宠物等多套预设)。

POS 收银工作区

POS 收银工作区:选项目 / 多卡组合扣费 / 价格调整 / 一键结算。

系统设置

系统设置:店铺品牌、服务项目、卡型、员工、支付方式、撤单授权集中管理。

功能

模块 功能
收银台 快速结算、多支付方式、会员卡支付、智能多卡组合、价格调整
会员管理 会员档案、办卡充值、余额查询、挂账管理、消费记录
预约管理 顾客端在线预约(扫码直达)、状态追踪、预约码一键重置
营业报表 营业概览、支付统计、项目排行、会员卡销售、生日提醒、沉睡会员
系统设置 店铺品牌 / 服务项目 / 卡类型 / 员工 / 支付方式 / 账号 / 交易撤销 / 预约配置
操作日志 所有写操作追加审计,append-only 触发器拒绝 UPDATE/DELETE
多租户 每个商户独立数据 + 独立子域名 + 独立品牌(PostgreSQL FORCE RLS 隔离)
多店员 + 权限 超级管理员 / 管理员 / 员工 三级权限 + JWT token 版本吊销
通知与公告 顶部铃铛实时提醒(生日 / 预约待确认 / 系统公告)+ 侧边栏版本号 + changelog 页

计费订阅、行业模块、运营后台 规划中,当前版本(V 26.4)未实现。

技术栈

  • 前端:Nuxt 4 + Nuxt UI v4
  • 后端:Go 1.26 + Echo v5
  • 数据库:PostgreSQL 18(行级安全 RLS 实现多租户隔离)
  • 查询:sqlc + pgx/v5 + shopspring/decimal(金额全链路类型安全)
  • 迁移:goose
  • 部署:Docker Compose + 1Panel(OpenResty 反代 + 证书管理)

三种部署模式

模式 适用 说明
官方托管hosted 普通商户 访问 https://demo.zhaojian.net 自助注册,免费使用,也可按需付费
社区自建self-hosted 技术用户 / 个人店面 开源免费,自己搭服务器
企业私有部署enterprise 连锁品牌 / 合规客户 合同定制,支持定制开发和 SLA

通过环境变量 DEPLOYMENT_MODE 切换。

快速开始(自建)

1. 克隆项目

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

2. 配置环境变量

cp .env.example .env

编辑 .env 填写密码和密钥(参考注释)。生成密钥:openssl rand -hex 64

3. 启动服务

docker compose up -d

4. 访问

套餐(仅官方托管)

套餐 月付 年付 会员 员工 门店 微信推送/月
免费版 ¥0 100 2 1 100
Plus ¥9.9 ¥99 1000 10 1 1000
Pro ¥39.9 ¥399 5000 50 3 5000
Ultra ¥199.9 ¥1999 无限 无限 无限 无限
企业版 合同 私有部署 + 定制开发 + SLA

所有套餐均解锁全部功能,差异仅在数量与推送配额(以及 Ultra 的行业模块包)。

自建版无套餐限制(所有配额项视为无限)。

多租户 / 商户子域访问

每个商户访问自己的专属子域:

<slug>.vip.zhaojian.net         如 qingsi.vip.zhaojian.net

开发环境:<slug>.dev.vip.zhaojian.net

数据隔离基于 PostgreSQL Row Level Security:数据库强制执行按 tenant_id 过滤,即使代码写错也不会跨租户泄露。

品牌定制(每个商户独立)

商户在"设置 → 店铺"里配置:

  • 店铺名称、Logo(上传 PNG/JPG/WebP,启动时剥离 polyglot payload)
  • 登录背景主题(美业 / 美容 / 美发 / 美甲 / 按摩 / 瑜伽 / 培训 / 宠物 等预设)

微信 / 短信通知推送

当前版本未实现,规划中。已有"顶部铃铛 + 站内通知"作为替代。

开发

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

# 进入后端容器
docker compose exec backend sh
go mod tidy                    # 刷新依赖
go run ./cmd/server            # 手动启动

# 进入数据库
docker compose exec postgres psql -U mms -d mms

项目结构

mms/
├── backend/                      Go 后端
│   ├── cmd/server/main.go        入口
│   ├── internal/
│   │   ├── core/                 业务模块
│   │   │   ├── auth/             登录 / captcha / 账号锁定
│   │   │   ├── members/          会员 CRUD
│   │   │   ├── cards/            会员卡
│   │   │   ├── card_types/       卡型
│   │   │   ├── transactions/     消费 / 办卡 / 清账 / 撤销(FOR UPDATE 锁)
│   │   │   ├── member_credits/   挂账
│   │   │   ├── appointments/     预约
│   │   │   ├── booking/          对外预约页 API(无鉴权)
│   │   │   ├── staff/            员工
│   │   │   ├── services/         服务项目
│   │   │   ├── payment_methods/  支付方式
│   │   │   ├── reports/          报表
│   │   │   ├── tenant_settings/  店铺名 / Logo / 登录背景 / 撤单开关
│   │   │   ├── users/            账号管理(super_admin 专属)
│   │   │   ├── audit_logs/       操作日志
│   │   │   ├── notifications/    通知与系统公告(含 announcements.json seed)
│   │   │   └── uploads/          Logo 上传(重编码剥离 polyglot)
│   │   └── platform/             基础设施
│   │       ├── db/               pgxpool + DSN 构造
│   │       ├── auth/             JWT 签发 / 解析 / 版本吊销
│   │       ├── middleware/       TenantResolver / TenantTx / RequireAuth / Audit
│   │       └── bootstrap/        首次启动创建超管
│   ├── migrations/               goose SQL 迁移(00001-00030)
│   ├── sqlc/                     sqlc 生成代码
│   ├── sqlc.yaml
│   └── Dockerfile
├── frontend/                     Nuxt 4 前端(SPA 模式)
│   ├── app/
│   │   ├── pages/                收银 / 会员 / 预约 / 报表 / 设置 / changelog
│   │   ├── components/           SidebarContent / UserMenu / PosWorkbench / EmptyState
│   │   ├── composables/          useApi / useStoreInfo / useTheme / useSafeUrl
│   │   ├── middleware/           auth.global / super-admin / at-least-admin
│   │   └── stores/               auth (Pinia)
│   ├── nuxt.config.ts
│   └── Dockerfile
├── ops/                          运维脚本
├── docs/                         设计文档
│   ├── DESIGN.md
│   ├── decisions.md              关键决策记录
│   └── RELEASING.md              发版流程
├── docker-compose.yml
├── .env.example
└── README.md

阶段 4+ 按需添加:计费订阅 / 自助注册 / 支付 / 运营后台 / 行业扩展。当前不预留空目录。

许可证

GNU Affero General Public License v3.0 — 见 LICENSE

版权

© 2026 赵健