Skip to content

会员用户体系 ​

会员是 C 端注册用户,独立于管理员的 sys_user 账号体系,存储在 sys_member 表。

表结构 ​

字段类型说明
snvarchar(32)用户编号,全局唯一,pkg/sn 统一生成(cf 前缀 + 8 位小写字母和数字),管理端列表展示
nickname / real_namevarchar(32)昵称 / 姓名
accountvarchar(32)登录账号,可空唯一索引(未设置为 NULL),密码登录的凭据
mobilevarchar(16)手机号,全表唯一,注册必填
passwordvarchar(128)bcrypt 密文,注册后可为空(短信登录不受影响)
login_idvarchar(64)当前登录会话 ID,重新登录后旧会话失效
avatarvarchar(512)头像相对路径,展示时按当前存储渠道补全
gender / age / birthday-性别(1男 2女 3未知)、年龄、出生日期
register_ip / login_ipvarchar(64)注册 IP / 最近登录 IP
registered_at / logged_atdatetime(3)注册时间 / 最近登录时间
balancedecimal(12,2)账户余额(Go 侧字符串承载,避免浮点误差)
register_sourcetinyint注册来源:1 微信小程序,2 微信公众号,3 iOS,4 Android
statustinyint账号状态:1 启用,2 禁用

注册与登录 ​

  • 注册仅支持手机号 + 短信验证码,默认昵称与头像取自平台配置中的「用户端配置」;
  • 登录支持账号密码与手机号 + 验证码两种方式;账号不存在时明确提示「账号不存在」;
  • 注册成功直接返回令牌;未设置密码的账号使用短信验证码登录,并通过修改密码接口设置初始密码。

验证码安全策略 ​

短信验证码是独立于认证接口的通用能力,路由为 POST /api/sms/code,限流基于 Redis 计数实现。

策略值
有效期5 分钟
分钟限流同一手机号同一场景每分钟最多 2 条
窗口限流同一手机号同一场景 5 分钟内累计超过 5 条
超限禁令触发窗口限流后禁止发送 30 分钟,并提示用户「账号已被限制30分钟」
错误容忍校验错误超过 5 次验证码立即作废
使用方式一次性,校验成功即删除
审计所有发送与拦截行为写入短信发送记录,拦截请求记录具体原因

短信通过 pkg/sms 按系统短信配置(渠道、签名、验证码模板)发送,结果写入短信发送记录。

资料与账号安全 ​

  • 可修改:昵称、姓名、头像、登录账号(唯一)、登录密码(强度校验)、手机号(新手机号需验证码校验,唯一);
  • 修改密码成功后当前会话立即失效,需重新登录;
  • 手机号脱敏规则由 pkg/mask 统一提供(138****8001),展示型接口统一调用。

管理端能力 ​

  • 「用户管理 → 系统用户」页面:编号、用户、姓名、手机号(脱敏)、性别、年龄、出生日期、余额、注册来源、状态、注册时间与 IP、最近登录时间与 IP;
  • 一键启用/禁用(v-perm 权限控制),禁用后会员令牌即时失效;
  • 关键字搜索覆盖编号、昵称、姓名、账号、手机号。