Skip to content

会员管理 PRD

文档信息

项目内容
产品名称PMForge - 会员管理
文档版本v2.0
创建日期2026-09-21
最后更新2026-09-24
文档状态评审中
优先级P0

一、功能概述

1.1 功能定位

会员管理是 PMForge 平台的用户运营中枢——如果把平台比作一家连锁酒店,会员管理就是前台的"宾客关系管理系统"。它记录每一位住客(会员)的基本信息、入住等级、偏好标签、积分余额,并围绕这些数据构建等级晋升、签到激励、精准营销等运营能力。

本模块承担三大核心职责:

  1. 会员档案中心:统一管理所有注册用户的基本信息、收货地址、账号状态,为客服和运营提供"一站式查询"能力
  2. 用户分层引擎:通过等级体系(经验值驱动)、标签体系(手动打标)、分组体系(运营自定义归类)三个维度将用户分层,让不同价值的用户看到不同的内容、享受不同的权益
  3. 日常活跃抓手:通过每日签到发放积分和经验值,培养用户"每天打开平台"的习惯,提升日活和留存

与"用户管理(01-01)"的区别:用户管理管的是"后台管理员账号"——谁能登录后台、有什么权限;会员管理管的是"前台C端用户"——平台的服务对象、收入来源。两套体系独立运行,但在数据上有关联(例如后台运营人员可以查看和修改会员信息)。

1.2 目标用户

用户类型核心诉求典型操作
超级管理员掌控全局会员数据,配置会员体系底层规则创建等级体系、配置签到规则、查看统计大盘
运营人员精细化运营不同类型的会员,提升活跃和转化打标签、调等级、分组推送、分析数据
客服人员快速定位会员问题,协助处理积分和等级诉求搜索会员、查看明细、手动调积分/等级
普通会员(C端)管理个人信息、签到领奖励、了解等级权益签到、改信息、管地址、查积分
高价值会员享受专属权益,快速升级查看等级权益、使用折扣、累积经验值

1.3 业务价值

价值维度具体收益衡量指标
用户留存签到积分机制培养每日打开习惯日活/月活比、7日留存率
用户分层等级+标签+分组实现"千人千面"运营分层运营覆盖率、精准推送转化率
消费激励等级折扣和积分奖励刺激持续消费会员客单价、复购率
运营效率统一管理后台减少跨系统查询单次会员问题处理时长
数据驱动会员增长、等级分布、活跃度可视化运营报表产出频率
SaaS 能力多租户隔离支持集团化运营租户数、数据隔离准确率

1.4 功能范围

功能分类后台管理端前台用户端
会员列表与搜索
会员详情查看
会员信息编辑
会员状态管理(启用/禁用)
会员数据导出
会员等级管理(CRUD)查看等级权益
会员标签管理(CRUD)
会员分组管理(CRUD)
签到规则配置每日签到 + 签到日历
签到记录查询
积分记录查询查看积分明细
经验值记录查询查看经验值明细
会员统计分析
个人中心
修改个人信息
修改手机号
修改/重置密码
收货地址管理

二、用户场景

2.1 用户角色

角色描述核心诉求
运营主管-李姐负责平台用户增长和活跃,有3年电商运营经验快速配置等级和标签体系,数据驱动决策
运营专员-小王日常执行运营活动,负责打标和推送批量操作高效,操作流程简洁
客服组长-小刘处理用户投诉和咨询,管理客服团队快速定位用户、查看明细、手动调整
学员-小张平台普通会员,每天来学习签到简单流畅、积分有用、等级权益清晰
学员-小陈高等级活跃会员,金卡用户享受专属折扣、快速升级路径明确
新注册学员-小赵刚注册还没完成签到快速了解等级体系、知道怎么升级

2.2 使用场景

场景1:运营李姐配置会员等级体系

背景:平台上线初期,需要建立"普通会员→银卡→金卡→钻石"四级体系。

操作流程

  1. 李姐登录后台 → 进入"会员等级管理"页面
  2. 点击"新增等级" → 依次创建四个等级
  3. 为每个等级设置:等级名称、等级序号(1/2/3/4)、升级所需经验值(0/1000/5000/20000)、折扣率(100/98/95/90)、等级图标和背景图
  4. 确认无误后发布上线
  5. 在前台等级权益页面,学员可以看到四个等级的权益对比

期望:等级配置灵活,支持可视化设置,发布后前台即时展示。

验收标准

  • AC-01:创建等级后,该等级出现在前台等级列表中
  • AC-02:经验值达到升级门槛时,系统自动升级并记录等级变更
  • AC-03:关闭某等级后,前台不再展示该等级作为可升级目标
  • AC-04:等级序号不重复,名称全局唯一

场景2:运营小王批量标签管理

背景:双十一活动即将开始,需要给符合条件的会员打上"活动参与"标签,便于后续精准推送。

操作流程

  1. 小王在后台"标签管理"中创建"活动参与"标签,归入"营销活动"分组
  2. 进入"会员列表" → 筛选条件:注册时间 > 30天 且 累计消费 > 500元
  3. 勾选筛选出的200名会员 → 点击"批量打标"
  4. 选择"活动参与"标签 → 确认
  5. 系统提示"已成功为200名会员添加标签"

期望:批量操作高效,标签管理支持分组归类。

验收标准

  • AC-01:批量打标后,会员详情中可看到新增标签
  • AC-02:同一分组下标签名称不可重复
  • AC-03:删除标签时,已关联会员自动解除关联
  • AC-04:标签支持按分组筛选查看

场景3:学员小张每日签到

背景:小张是普通会员,养成了每天签到领积分的习惯。

操作流程

  1. 小张打开APP → 进入"签到中心"
  2. 看到今日未签到,点击"签到"按钮
  3. 页面动画反馈:获得10积分 + 5经验值
  4. 签到日历上今天标记为"已签到"
  5. 显示"已连续签到3天,再签4天可获得连续签到大奖"
  6. 第7天签到后,获得额外奖励(如50积分 + 20经验值),周期重新从第1天开始

期望:签到操作简单流畅,实时反馈奖励,连续签到有额外激励。

验收标准

  • AC-01:每日只能签到一次,重复点击提示"今日已签到"
  • AC-02:签到后积分和经验值即时到账
  • AC-03:连续签到天数正确计算,中断后从第1天重新计算
  • AC-04:签到日历准确展示当月签到记录
  • AC-05:签到奖励按后台配置的规则发放(第1天10积分/第7天50积分等)

场景4:客服小刘处理会员积分问题

背景:会员投诉"昨天消费了500元但积分没增加"。

操作流程

  1. 小刘在后台"会员列表"搜索该会员手机号
  2. 进入会员详情 → 查看"积分记录"标签页
  3. 发现消费订单的积分记录确实缺失
  4. 排查后发现是积分规则配置遗漏了该商品类目
  5. 手动为该会员补发积分 → 填写补发原因"消费积分遗漏补发"
  6. 系统记录积分变动明细,标注业务类型为"后台管理"

期望:积分记录清晰可查,支持手动调整和追溯。

验收标准

  • AC-01:积分记录按时间倒序展示,包含变动类型、金额、变动后余额
  • AC-02:手动调整积分需填写原因,记录操作人
  • AC-03:积分不可调整为负数(扣减时校验余额)
  • AC-04:调整操作写入操作日志

场景5:学员小陈查看等级权益

背景:小陈当前是银卡会员,想了解如何升级到金卡。

操作流程

  1. 小陈进入"个人中心" → 点击等级图标
  2. 进入等级详情页:当前等级"银卡"、当前经验值2800、升级金卡还需2200经验值
  3. 下方展示所有等级权益对比表:银卡9.8折、金卡9.5折、钻石9折
  4. 页面底部有"升级攻略":完成课程+50经验、每日签到+5经验、消费1元+1经验
  5. 小陈决定多完成几门课程来加速升级

期望:清晰展示等级权益和升级路径,激励用户提升等级。

验收标准

  • AC-01:准确展示当前等级、经验值、升级所需经验值
  • AC-02:等级权益对比表完整展示所有等级的折扣和特权
  • AC-03:升级攻略中的经验值获取途径与后台配置一致

场景6:运营李姐进行会员数据分析

背景:月底运营复盘,需要向管理层汇报会员运营数据。

操作流程

  1. 李姐进入"会员统计"页面
  2. 查看概览面板:会员总数12,580、今日新增35、今日活跃1,200
  3. 查看"会员增长趋势"折线图:选择最近30天,看到日均新增约30人
  4. 查看"等级分布"饼图:普通60%、银卡25%、金卡10%、钻石5%
  5. 查看"标签分布"柱状图:了解各标签关联的会员数量
  6. 导出Excel报表,用于管理层汇报

期望:数据可视化展示,支持多维度分析,可导出报表。

验收标准

  • AC-01:统计数据准确,与明细数据一致
  • AC-02:支持按日/周/月切换增长趋势
  • AC-03:导出Excel包含完整数据,格式规范
  • AC-04:页面加载时间 < 3秒(含图表渲染)

场景7:学员小赵管理收货地址

背景:小赵下单购买课程配套教材,需要填写收货地址。

操作流程

  1. 小赵进入"收货地址管理"
  2. 点击"新增地址" → 填写:收件人"赵同学"、手机号、选择省市区、输入详细地址
  3. 勾选"设为默认地址"
  4. 保存后返回列表,该地址排在最前
  5. 下单时自动填充默认地址信息

期望:地址管理方便,下单时能快速选择。

验收标准

  • AC-01:每个用户最多50个收货地址
  • AC-02:设置默认地址后,其他地址自动取消默认
  • AC-03:删除默认地址时提示重新设置默认
  • AC-04:用户只能查看和操作自己的地址

三、功能需求

3.1 后台管理端

3.1.1 功能清单

功能优先级说明
会员列表P0分页展示会员,支持多维度搜索筛选
会员详情P0查看会员完整信息(基本/账户/标签/订单/积分等)
会员编辑P0修改会员基本信息、标签、分组
会员等级调整P0手动调整会员等级(含降级)
会员积分调整P1手动调整会员积分(补发/扣减)
会员状态管理P0启用/禁用会员账号
会员数据导出P1导出会员数据Excel
等级管理(CRUD)P0创建/编辑/删除/查询会员等级
标签管理(CRUD)P0创建/编辑/删除/查询会员标签
标签分组管理P1管理标签的分组归类
用户分组管理P1管理会员分组
签到规则配置P1配置签到奖励规则(7天周期)
签到记录查询P1查询会员签到记录
积分记录查询P0查询会员积分变动记录
经验值记录查询P1查询会员经验值变动记录
会员统计分析P1增长趋势/等级分布/标签分布/活跃度

3.1.2 会员列表

页面描述

会员列表

业务规则

规则编号规则描述设计原因
R-01默认按创建时间倒序排列最新注册的用户优先展示,方便运营关注新用户
R-02手机号/昵称/邮箱支持模糊搜索运营通常只记得部分信息,模糊匹配提高查找效率
R-03标签筛选支持多选(AND关系)精准定位同时满足多个标签的用户
R-04列表中展示名称而非ID运营人员不需要记住ID,名称更直观
R-05支持多租户数据隔离SaaS场景下不同租户只能看到自己的会员
R-06手机号中间4位脱敏显示保护用户隐私,防止信息泄露
R-07禁用状态会员在列表中灰色标识一眼区分正常和禁用账号

数据字段

字段名类型说明
idLong会员ID
nicknameString用户昵称
avatarString头像URL
mobileString手机号(脱敏显示)
emailString邮箱
sexInteger性别(0-未知 1-男 2-女)
birthdayLocalDateTime出生日期
areaNameString所在地名称
statusInteger状态(0-正常 1-禁用)
pointInteger当前积分
totalPointInteger累计积分
experienceInteger经验值
levelNameString会员等级名称
tagNamesList<String>标签名称列表
groupNameString分组名称
registerIpString注册IP
loginIpString最后登录IP
loginDateLocalDateTime最后登录时间
createTimeLocalDateTime注册时间

接口设计

接口名称请求方式接口路径说明
获取会员分页GET/admin-api/member/user/page获取会员分页列表
获取会员详情GET/admin-api/member/user/get获取会员详细信息

请求参数(分页查询)

参数名类型必填说明
nicknameString用户昵称(模糊匹配)
mobileString手机号(模糊匹配)
emailString邮箱(模糊匹配)
levelIdLong会员等级编号
tagIdsList<Long>会员标签编号列表
groupIdLong用户分组编号
loginDateLocalDateTime[]最后登录时间范围
createTimeLocalDateTime[]创建时间范围
pageNoInteger页码
pageSizeInteger每页条数

3.1.3 会员详情

页面描述

会员详情

业务规则

规则编号规则描述设计原因
R-01分区展示不同类型信息信息量大时分类展示,避免一页堆砌
R-02积分/签到/经验值记录内嵌展示运营无需跳转页面即可查看明细
R-03敏感信息脱敏(姓名、手机号)符合隐私保护要求

3.1.4 会员编辑

页面描述

会员编辑

业务规则

规则编号规则描述设计原因
R-01手机号不可修改手机号是账号唯一标识,修改需走专门流程
R-02修改标签后即时更新关联关系运营打标后希望立即在筛选中看到效果
R-03修改分组后即时更新归属同上
R-04修改信息后记录操作日志便于追溯谁改了什么,出问题时可定位
R-05头像需为URL格式,支持预览确保图片可正常展示

接口设计

接口名称请求方式接口路径说明
更新会员PUT/admin-api/member/user/update更新会员信息

请求参数

参数名类型必填说明
idLong会员ID
nicknameString昵称
avatarString头像URL
sexInteger性别
birthdayLocalDateTime出生日期
areaIdLong所在地编号
markString会员备注
tagIdsList<Long>标签ID列表
groupIdLong分组ID

3.1.5 会员等级调整

页面描述

会员等级调整

业务规则

规则编号规则描述设计原因
R-01调整后记录等级变更记录等级变动影响权益,需可追溯
R-02可选择任意等级(包括降级)运营可能需要因违规降级或特殊原因升级
R-03调整后即时生效运营调整后用户应立即看到变化
R-04需要"member:user:update-level"权限等级调整是敏感操作,需权限控制

接口设计

接口名称请求方式接口路径说明
更新会员等级PUT/admin-api/member/user/update-level手动调整会员等级

请求参数

参数名类型必填说明
idLong会员ID
levelIdLong目标等级ID

3.1.6 会员积分调整

页面描述

会员积分调整

业务规则

规则编号规则描述设计原因
R-01积分调整后记录积分变动明细每笔变动需可追溯
R-02积分变动业务类型标记为"后台管理"区分系统自动发放和人工调整
R-03积分不可调整为负数负积分无业务意义,扣减时校验余额
R-04需要"member:user:update-point"权限积分涉及用户资产,需权限控制

接口设计

接口名称请求方式接口路径说明
更新会员积分PUT/admin-api/member/user/update-point手动调整会员积分

请求参数

参数名类型必填说明
idLong会员ID
pointInteger调整积分(正数增加,负数扣减)

3.1.7 会员状态管理

业务规则

规则编号规则描述设计原因
R-01禁用后该会员无法登录违规用户需阻止访问
R-02禁用后该会员的所有Token失效立即踢出,不留安全隐患
R-03状态切换记录操作日志禁用/启用是高风险操作,需可追溯

接口设计

接口名称请求方式接口路径说明
更新会员状态PUT/admin-api/member/user/update通过更新接口修改状态字段

请求参数

参数名类型必填说明
idLong会员ID
statusInteger状态(0-正常 1-禁用)

3.1.8 会员数据导出

业务规则

规则编号规则描述设计原因
R-01支持xlsx格式通用格式,运营人员习惯使用Excel
R-02单次最多导出10000条防止大数据量导致服务器压力
R-03密码字段不导出安全底线
R-04大数据量采用异步导出避免导出过程阻塞页面操作
R-05导出字段:昵称、手机号、邮箱、性别、等级、积分、经验值、标签、分组、注册时间、最后登录时间覆盖运营常用分析维度

3.1.9 会员等级管理

页面描述

会员等级管理

等级列表数据字段

字段名类型说明
idLong等级ID
nameString等级名称
levelInteger等级序号
experienceInteger升级所需经验值
discountPercentInteger享受折扣(0-100,如98表示9.8折)
iconString等级图标URL
backgroundUrlString等级背景图URL
statusInteger状态(0-开启 1-关闭)
createTimeLocalDateTime创建时间

业务规则

规则编号规则描述设计原因
R-01等级名称全局唯一避免运营混淆不同等级
R-02等级序号不能重复序号决定等级高低排序
R-03升级经验值必须大于0(首个等级除外)确保等级体系有递进感
R-04折扣率范围0-100,0表示免费,100表示无折扣统一折扣表达标准
R-05已有关联会员的等级不可直接删除防止删除后会员等级数据丢失
R-06删除等级前需二次确认防止误操作
R-07等级列表默认按level升序排列从低到高展示,符合认知习惯
R-08关闭状态的等级不出现在前台升级选项中临时下线的等级不影响现有用户

接口设计

接口名称请求方式接口路径说明
创建会员等级POST/admin-api/member/level/create创建新等级
更新会员等级PUT/admin-api/member/level/update更新等级配置
删除会员等级DELETE/admin-api/member/level/delete删除等级
获取会员等级GET/admin-api/member/level/get获取等级详情
获取会员等级列表GET/admin-api/member/level/list获取等级列表
获取等级精简列表GET/admin-api/member/level/list-all-simple获取启用等级精简列表(下拉用)

创建/更新请求参数

参数名类型必填说明
nameString等级名称
levelInteger等级序号(正整数)
experienceInteger升级所需经验值(正整数)
discountPercentInteger享受折扣(0-100)
iconString等级图标URL
backgroundUrlString等级背景图URL
statusInteger状态(0-开启 1-关闭)

3.1.10 会员标签管理

页面描述

会员标签管理

业务规则

规则编号规则描述设计原因
R-01标签名称在同一分组下唯一同一分类下不允许重复标签
R-02删除标签前自动解除与会员的关联避免删除失败或产生脏数据
R-03删除标签前需二次确认防止误操作
R-04支持按标签ID列表批量查询会员列表展示标签名称时需要批量关联

接口设计

接口名称请求方式接口路径说明
创建会员标签POST/admin-api/member/tag/create创建新标签
更新会员标签PUT/admin-api/member/tag/update更新标签
删除会员标签DELETE/admin-api/member/tag/delete删除标签
获取会员标签GET/admin-api/member/tag/get获取标签详情
获取会员标签分页GET/admin-api/member/tag/page分页获取标签列表
获取标签精简列表GET/admin-api/member/tag/list-all-simple获取全部标签精简列表
批量获取标签GET/admin-api/member/tag/list根据ID列表批量获取标签

创建/更新请求参数

参数名类型必填说明
nameString标签名称
groupIdLong标签分组ID

3.1.11 会员分组管理

页面描述

会员分组管理

业务规则

规则编号规则描述设计原因
R-01分组名称全局唯一避免运营选择时混淆
R-02关闭状态的分组不出现在前端下拉选项中已停用的分组不应被新会员关联
R-03已有关联会员的分组不可直接删除防止会员分组数据丢失
R-04删除分组前需二次确认防止误操作

接口设计

接口名称请求方式接口路径说明
创建用户分组POST/admin-api/member/group/create创建新分组
更新用户分组PUT/admin-api/member/group/update更新分组
删除用户分组DELETE/admin-api/member/group/delete删除分组
获取用户分组GET/admin-api/member/group/get获取分组详情
获取分组分页GET/admin-api/member/group/page分页获取分组列表
获取分组精简列表GET/admin-api/member/group/list-all-simple获取启用分组精简列表

创建/更新请求参数

参数名类型必填说明
nameString分组名称
statusInteger状态(0-开启 1-关闭)
remarkString备注

3.1.12 签到规则配置

页面描述

签到规则配置

业务规则

规则编号规则描述设计原因
R-01同一签到天数不能重复配置每天只能有一套奖励标准
R-02奖励积分和经验不能同时为0签到必须有奖励,否则无激励效果
R-03积分和经验值均不能为负数签到不会扣减用户资产
R-04连续签到天数越大,奖励应越高(前端建议)递进奖励增强连续签到动力
R-05关闭状态的规则不参与签到奖励计算临时关闭某天的奖励而不删除配置
R-06签到周期通常为7天一轮一周一个完整周期,符合用户习惯

接口设计

接口名称请求方式接口路径说明
创建签到规则POST/admin-api/member/sign-in/config/create创建签到规则
更新签到规则PUT/admin-api/member/sign-in/config/update更新签到规则
删除签到规则DELETE/admin-api/member/sign-in/config/delete删除签到规则
获取签到规则GET/admin-api/member/sign-in/config/get获取规则详情
获取签到规则列表GET/admin-api/member/sign-in/config/list获取全部规则列表

创建/更新请求参数

参数名类型必填说明
dayInteger签到第x天
pointInteger奖励积分(>=0)
experienceInteger奖励经验(>=0)
statusInteger状态(0-开启 1-关闭)

3.1.13 签到记录查询

业务规则

规则编号规则描述设计原因
R-01按签到时间倒序排列最新签到优先展示
R-02关联查询会员昵称运营不需要记住会员ID

接口设计

接口名称请求方式接口路径说明
获取签到记录分页GET/admin-api/member/sign-in/record/page分页获取签到记录

请求参数

参数名类型必填说明
userIdLong会员ID
createTimeLocalDateTime[]签到时间范围
pageNoInteger页码
pageSizeInteger每页条数

3.1.14 积分记录查询

页面描述

积分记录查询

业务规则

规则编号规则描述设计原因
R-01变动积分正数显示绿色带+号,负数显示红色带-号直观区分收支方向
R-02支持按业务类型筛选运营通常只关心某一类变动
R-03支持按变动方向筛选快速定位扣减记录排查问题

接口设计

接口名称请求方式接口路径说明
获取积分记录分页GET/admin-api/member/point/record/page分页获取积分记录

3.1.15 经验值记录查询

业务规则:与积分记录查询类似,支持按会员、业务类型、时间范围筛选。

接口设计

接口名称请求方式接口路径说明
获取经验值记录分页GET/admin-api/member/experience/record/page分页获取经验值记录

3.1.16 会员统计分析

页面描述

会员统计分析

统计维度

统计项说明数据来源
会员总数平台注册会员总数member_user 表 COUNT
今日新增今日新注册会员数member_user 表 create_time 筛选
今日活跃今日有登录或签到行为的会员数member_user.login_date + sign_in_record
会员增长趋势按日/周/月统计新注册会员数member_user 表按时间分组
等级分布各等级会员数量占比member_user 表按 level_id 分组
标签分布各标签关联会员数量统计member_user_tag 表按 tag_id 分组
活跃度统计日活/周活/月活会员数登录记录 + 签到记录综合

3.2 前台用户端

3.2.1 功能清单

功能优先级说明
查看个人信息P0查看自己的基本信息、等级、积分
修改个人信息P0修改昵称、性别、生日
修改手机号P0更换绑定手机号(需验证码验证)
修改密码P0修改登录密码
重置密码P1忘记密码时通过验证码重置
收货地址管理P0增删改查收货地址,设置默认地址
查看等级列表P0查看所有等级及权益说明
查看经验值记录P1查看经验值变动明细
每日签到P0每日签到获取积分和经验
签到日历P1查看签到日历和连续签到天数
查看积分记录P1查看积分变动明细

3.2.2 个人中心

页面描述

个人中心

接口设计

接口名称请求方式接口路径说明
获取个人信息GET/app-api/member/user/get获取当前用户基本信息

返回结果

字段名类型说明
idLong会员ID
nicknameString昵称
avatarString头像URL
levelNameString等级名称
levelIconString等级图标URL
pointInteger当前积分
experienceInteger当前经验值

3.2.3 修改个人信息

业务规则

规则编号规则描述设计原因
R-01手机号不可在此修改手机号修改需验证码验证,走专门流程
R-02修改后即时生效用户体验要求
R-03昵称为必填项昵称是社交展示的基础

接口设计

接口名称请求方式接口路径说明
修改个人信息PUT/app-api/member/user/update修改当前用户信息

请求参数

参数名类型必填说明
nicknameString昵称
sexInteger性别
birthdayLocalDateTime出生日期

3.2.4 修改手机号

业务规则

规则编号规则描述设计原因
R-01新手机号不能与其他会员重复手机号是账号唯一标识
R-02新手机号需短信验证码验证确保用户拥有该手机号
R-03修改成功后所有设备退出登录安全考虑,防止旧设备继续访问
R-04支持通过微信小程序授权获取手机号小程序场景下的便捷方式

接口设计

接口名称请求方式接口路径说明
修改手机号PUT/app-api/member/user/update-mobile通过验证码修改手机号
微信修改手机号PUT/app-api/member/user/update-mobile-by-weixin通过微信小程序授权修改

3.2.5 修改密码

业务规则

规则编号规则描述设计原因
R-01当前密码必须正确防止他人恶意修改
R-02新密码不能与当前密码相同确保密码真正被更改
R-03修改成功后所有设备退出登录安全考虑
R-04密码长度不少于6位基本安全要求

接口设计

接口名称请求方式接口路径说明
修改密码PUT/app-api/member/user/update-password修改登录密码

3.2.6 重置密码

业务规则

规则编号规则描述设计原因
R-01手机号必须是已注册的号码防止未注册用户重置
R-02短信验证码必须正确身份验证
R-03重置成功后所有设备退出登录安全考虑
R-04此接口无需登录(@PermitAll)用户忘记密码时无法登录

接口设计

接口名称请求方式接口路径说明
重置密码PUT/app-api/member/user/reset-password忘记密码重置(无需登录)

3.2.7 收货地址管理

页面描述

收货地址管理

业务规则

规则编号规则描述设计原因
R-01每个用户最多50个收货地址防止滥用存储资源
R-02设置默认地址时,其他地址自动取消默认同一时间只能有一个默认地址
R-03删除地址时,若为默认地址需提示重新设置默认避免下单时无默认地址
R-04收件人手机号需为合法手机号确保快递能联系到收件人
R-05用户只能操作自己的地址通过 loginUserId 隔离,防止越权

接口设计

接口名称请求方式接口路径说明
创建收货地址POST/app-api/member/address/create创建新收货地址
更新收货地址PUT/app-api/member/address/update更新收货地址
删除收货地址DELETE/app-api/member/address/delete删除收货地址
获取收货地址GET/app-api/member/address/get获取地址详情
获取默认地址GET/app-api/member/address/get-default获取默认地址
获取地址列表GET/app-api/member/address/list获取当前用户所有地址

3.2.8 签到中心

页面描述

签到中心

业务规则

规则编号规则描述设计原因
R-01每日只能签到一次(自然日0:00-23:59)签到本质是"每天一次"的激励
R-02签到后即时发放积分和经验值即时反馈增强签到体验
R-03连续签到中断后从第1天重新计算鼓励持续签到而非补签
R-04签到周期为7天一轮,第7天后重新从第1天开始周期性奖励循环
R-05签到奖励按后台配置的规则发放运营可灵活调整奖励力度
R-06签到同时记录积分变动和经验值变动明细便于用户查看来源

接口设计

接口名称请求方式接口路径说明
会员签到POST/app-api/member/sign-in/create执行签到
获取签到日历GET/app-api/member/sign-in/get-sign-in-calendar获取当月签到记录
获取签到统计GET/app-api/member/sign-in/get-sign-in-statistics获取连续签到天数等

四、非功能需求

4.1 性能需求

指标要求说明
会员列表查询< 500ms含标签和等级关联查询
会员详情加载< 300ms含积分记录和签到记录
签到操作< 200ms含积分和经验值发放
统计数据加载< 3s含图表数据聚合计算
数据导出< 30s(10000条)异步导出,完成后通知下载
并发签到支持1000 QPS早高峰签到场景
标签批量操作< 5s(1000名会员)批量打标/取消标签

4.2 安全需求

安全项要求说明
数据隔离多租户数据严格隔离所有查询自动注入 tenant_id
隐私保护手机号、姓名等敏感信息脱敏列表展示时中间位用*替代
权限控制后台接口基于 RBAC 权限模型不同操作需对应权限标识
操作审计敏感操作记录操作日志等级调整、积分调整、禁用等
防越权前台接口通过 loginUserId 隔离用户只能操作自己的数据
验证码修改手机号/重置密码需短信验证防止账号被盗后恶意修改
Token 失效修改密码/手机号后所有设备退出安全考虑,强制重新认证
防重复签到数据库唯一索引 + Redis分布式锁双重保障防止并发签到漏洞
积分安全积分扣减需校验余额防止出现负积分
防接口刷取签到等接口需限流保护防止恶意刷积分

4.3 兼容性需求

兼容项要求
数据库兼容支持 MySQL、PostgreSQL、Oracle 等(通过 MyBatis Plus 抽象层)
多端适配前台支持 H5、小程序、APP(uni-app)
接口规范后台 admin-api、前台 app-api 分离
时区处理签到按服务器时区的自然日判断
PC浏览器(后台)Chrome 80+、Firefox 75+、Safari 13+、Edge 80+
移动端H5(前台)iOS Safari 12+、Android Chrome 80+、微信内置浏览器
微信小程序基础库 2.10.0+

五、数据设计

5.1 member_user 会员用户表

字段名类型必填默认值说明
idbigint自增主键ID
nicknamevarchar(64)-用户昵称
avatarvarchar(512)NULL头像URL
mobilevarchar(20)NULL手机号(唯一)
emailvarchar(64)NULL邮箱
namevarchar(64)NULL真实姓名
sextinyint0性别:0-未知 1-男 2-女
birthdaydatetimeNULL出生日期
area_idintNULL所在地编号(关联地区表)
area_namevarchar(128)NULL所在地名称(冗余)
markvarchar(256)NULL会员备注(运营填写)
statustinyint0状态:0-正常 1-禁用
pointint0当前积分
total_pointint0累计积分(只增不减的累计值)
experienceint0当前经验值
level_idbigintNULL会员等级ID
group_idbigintNULL用户分组ID
register_ipvarchar(64)NULL注册IP
register_terminaltinyintNULL注册终端:1-H5 2-小程序 3-APP
login_ipvarchar(64)NULL最后登录IP
login_datedatetimeNULL最后登录时间
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 唯一索引:uk_mobile (mobile, tenant_id) — 同租户手机号唯一
  • 普通索引:idx_level_id (level_id)
  • 普通索引:idx_group_id (group_id)
  • 普通索引:idx_create_time (create_time)
  • 普通索引:idx_tenant_id (tenant_id)

5.2 member_level 会员等级表

字段名类型必填默认值说明
idbigint自增主键ID
namevarchar(64)-等级名称
levelint-等级序号(正整数,越大越高)
experienceint-升级所需经验值
discount_percentint100享受折扣(0-100)
iconvarchar(512)NULL等级图标URL
background_urlvarchar(512)NULL等级背景图URL
statustinyint0状态:0-开启 1-关闭
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 唯一索引:uk_name (name, tenant_id) — 同租户名称唯一
  • 普通索引:idx_level (level)
  • 普通索引:idx_tenant_id (tenant_id)

5.3 member_tag 会员标签表

字段名类型必填默认值说明
idbigint自增主键ID
namevarchar(64)-标签名称
group_idbigintNULL标签分组ID
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 唯一索引:uk_name_group (name, group_id, tenant_id) — 同分组下名称唯一
  • 普通索引:idx_group_id (group_id)
  • 普通索引:idx_tenant_id (tenant_id)

5.4 member_tag_group 标签分组表

字段名类型必填默认值说明
idbigint自增主键ID
namevarchar(64)-分组名称
statustinyint0状态:0-开启 1-关闭
remarkvarchar(200)NULL备注
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

5.5 member_user_tag 会员-标签关联表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
tag_idbigint-标签ID
create_timedatetimeCURRENT_TIMESTAMP创建时间

索引设计

  • 主键:id
  • 唯一索引:uk_user_tag (user_id, tag_id) — 防止重复打标
  • 普通索引:idx_tag_id (tag_id)

5.6 member_address 收货地址表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
namevarchar(64)-收件人姓名
mobilevarchar(20)-收件人手机号
area_idint-所在地区编号
area_namevarchar(128)NULL所在地区名称(冗余)
detail_addressvarchar(256)-详细地址
default_statusbit(1)0是否默认地址
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 普通索引:idx_user_id (user_id)
  • 普通索引:idx_tenant_id (tenant_id)

5.7 member_sign_in_config 签到规则配置表

字段名类型必填默认值说明
idint自增主键ID
dayint-签到第x天
pointint0奖励积分
experienceint0奖励经验
statustinyint0状态:0-开启 1-关闭
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP创建时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 唯一索引:uk_day (day, tenant_id) — 同租户天数不重复
  • 普通索引:idx_tenant_id (tenant_id)

5.8 member_sign_in_record 签到记录表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
dayint-签到天数(第几次连续签到)
pointint0获得积分
experienceint0获得经验
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP签到时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 普通索引:idx_user_id (user_id)
  • 唯一索引:uk_user_date (user_id, create_time) — 按用户+日期防重复签到
  • 普通索引:idx_tenant_id (tenant_id)

5.9 member_point_record 积分记录表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
biz_typetinyint-业务类型(见数据字典)
biz_idvarchar(64)NULL关联业务编号
titlevarchar(128)NULL标题/说明
pointint-变动积分(正增负减)
total_pointint-变动后总积分
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP变动时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 普通索引:idx_user_id (user_id)
  • 普通索引:idx_biz_type (biz_type)
  • 普通索引:idx_create_time (create_time)
  • 普通索引:idx_tenant_id (tenant_id)

5.10 member_experience_record 经验值记录表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
biz_typetinyint-业务类型
biz_idvarchar(64)NULL关联业务编号
titlevarchar(128)NULL标题/说明
experienceint-变动经验值(正增负减)
total_experienceint-变动后总经验值
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP变动时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 普通索引:idx_user_id (user_id)
  • 普通索引:idx_biz_type (biz_type)
  • 普通索引:idx_create_time (create_time)
  • 普通索引:idx_tenant_id (tenant_id)

5.11 member_level_record 等级变更记录表

字段名类型必填默认值说明
idbigint自增主键ID
user_idbigint-会员ID
level_idbigint-等级ID
levelint-等级序号
experienceint-变更时经验值
change_typetinyint-变更类型:1-升级 2-降级 3-后台调整
creatorvarchar(64)NULL创建者
create_timedatetimeCURRENT_TIMESTAMP变更时间
updatervarchar(64)NULL更新者
update_timedatetimeCURRENT_TIMESTAMP更新时间
deletedbit(1)0逻辑删除
tenant_idbigint0租户ID

索引设计

  • 主键:id
  • 普通索引:idx_user_id (user_id)
  • 普通索引:idx_tenant_id (tenant_id)

5.12 数据字典

积分业务类型(biz_type)

枚举值编号说明
SIGN_IN1签到获得
ORDER2消费获得
ADMIN3后台调整
ACTIVITY4活动奖励
REFUND5退款扣减
EXCHANGE6积分兑换

经验值业务类型(biz_type)

枚举值编号说明
SIGN_IN1签到获得
ORDER2消费获得
COURSE3完成课程
ADMIN4后台调整
LEVEL_CHANGE5等级变更调整

等级变更类型(change_type)

枚举值编号说明
UPGRADE1自动升级(经验值达到门槛)
DOWNGRADE2自动降级(经验值过期扣减)
ADMIN3后台手动调整

注册终端(register_terminal)

枚举值编号说明
H51H5网页
MINI_APP2微信小程序
APP3APP客户端
WECHAT_MP4微信公众号

六、跨模块联动

6.1 联动关系总览

关联模块联动方式数据流向触发场景
钱包管理(04-02)积分可兑换为余额会员积分 → 钱包余额用户在积分商城兑换
支付模块(04-01)等级折扣影响订单价格等级折扣 → 订单计算下单时自动应用等级折扣
商城模块(06-xx)消费产生积分和经验值订单完成 → 积分/经验值订单支付成功后自动发放
通知模块(01-06)等级变更/积分变动通知事件触发 → 消息推送升级/降级/积分到账时通知
日志审计(01-08)敏感操作记录操作日志 → 审计记录等级调整/积分调整/禁用
短信服务(02-03)修改手机号发送验证码验证码请求 → 短信发送修改手机号/重置密码
文件存储(02-02)头像/等级图标存储图片上传 → 文件服务上传头像/配置等级图标

6.2 关键联动流程

流程1:消费产生积分和经验值

消费产生积分流程

流程2:每日签到全流程

每日签到全流程

流程3:等级自动升级

等级自动升级流程

6.3 数据一致性要求

一致性场景要求实现方式
签到发放积分签到记录、积分变动、经验值变动必须同时成功或失败数据库事务 @Transactional
等级变更等级更新和变更记录必须一致数据库事务
消费发放积分订单完成和积分发放最终一致事件驱动 + 重试机制
积分扣减积分余额不可为负数据库层面校验 + 业务校验

七、附录

7.1 名词解释

名词解释类比
会员(Member)在平台注册并使用服务的C端用户酒店的住客
会员等级(Level)根据经验值划分的用户层级,等级越高权益越多酒店的会员等级(普卡/银卡/金卡/钻石卡)
经验值(Experience)驱动等级晋升的数值,通过签到、消费、完成任务获得酒店的"住宿积分",攒够就升级
积分(Point)可在平台使用的虚拟货币,可兑换商品或抵扣金额信用卡积分,可换礼品
标签(Tag)给会员打上的分类标记,用于精准运营给文件贴的标签纸
标签分组(Tag Group)标签的分类容器,用于组织和管理标签文件夹,用来归类标签纸
用户分组(Group)将会员归入不同组别,便于批量管理学校的班级
签到(Sign In)每日一次的打卡行为,获得积分和经验值奖励上班打卡
连续签到不间断地每日签到,天数越多奖励越丰厚连续打卡30天的成就
签到日历以日历形式展示当月每天的签到状态墙上的打卡日历
收货地址会员收货的物理地址信息快递收件地址
默认地址下单时自动填充的首选收货地址通讯录里的"默认联系人"
等级折扣高等级会员享受的价格优惠VIP打折卡
脱敏将敏感信息的中间部分用*号替代显示手机号显示为 138****1234
多租户一套系统服务多个独立客户,数据互相隔离同一栋办公楼里的不同公司
RBAC基于角色的权限控制模型不同工牌进不同房间
逻辑删除数据不真正删除,通过标记字段表示已删除把文件放进回收站而非永久删除
业务类型(Biz Type)标识积分/经验值变动来源的分类编号银行流水的"交易类型"列

7.2 接口汇总

7.2.1 后台管理端接口

序号接口名称请求方式路径权限标识说明
1会员分页GET/admin-api/member/user/pagemember:user:query分页查询会员列表
2会员详情GET/admin-api/member/user/getmember:user:query获取会员详细信息
3更新会员PUT/admin-api/member/user/updatemember:user:update更新会员信息
4更新会员等级PUT/admin-api/member/user/update-levelmember:user:update-level手动调整等级
5更新会员积分PUT/admin-api/member/user/update-pointmember:user:update-point手动调整积分
6创建等级POST/admin-api/member/level/createmember:level:create创建会员等级
7更新等级PUT/admin-api/member/level/updatemember:level:update更新等级配置
8删除等级DELETE/admin-api/member/level/deletemember:level:delete删除等级
9等级详情GET/admin-api/member/level/getmember:level:query获取等级详情
10等级列表GET/admin-api/member/level/listmember:level:query获取等级列表
11等级精简列表GET/admin-api/member/level/list-all-simple无需特殊权限启用等级下拉列表
12创建标签POST/admin-api/member/tag/createmember:tag:create创建标签
13更新标签PUT/admin-api/member/tag/updatemember:tag:update更新标签
14删除标签DELETE/admin-api/member/tag/deletemember:tag:delete删除标签
15标签详情GET/admin-api/member/tag/getmember:tag:query获取标签详情
16标签分页GET/admin-api/member/tag/pagemember:tag:query分页获取标签
17标签精简列表GET/admin-api/member/tag/list-all-simple无需特殊权限全部标签下拉
18批量获取标签GET/admin-api/member/tag/listmember:tag:query按ID列表批量获取
19创建分组POST/admin-api/member/group/createmember:group:create创建分组
20更新分组PUT/admin-api/member/group/updatemember:group:update更新分组
21删除分组DELETE/admin-api/member/group/deletemember:group:delete删除分组
22分组详情GET/admin-api/member/group/getmember:group:query获取分组详情
23分组分页GET/admin-api/member/group/pagemember:group:query分页获取分组
24分组精简列表GET/admin-api/member/group/list-all-simple无需特殊权限启用分组下拉
25创建签到规则POST/admin-api/member/sign-in/config/createpoint:sign-in-config:create创建签到规则
26更新签到规则PUT/admin-api/member/sign-in/config/updatepoint:sign-in-config:update更新签到规则
27删除签到规则DELETE/admin-api/member/sign-in/config/deletepoint:sign-in-config:delete删除签到规则
28签到规则详情GET/admin-api/member/sign-in/config/getpoint:sign-in-config:query获取规则详情
29签到规则列表GET/admin-api/member/sign-in/config/listpoint:sign-in-config:query获取全部规则
30签到记录分页GET/admin-api/member/sign-in/record/pagepoint:sign-in-record:query查询签到记录
31积分记录分页GET/admin-api/member/point/record/pagepoint:record:query查询积分记录
32经验值记录分页GET/admin-api/member/experience/record/pageexperience:record:query查询经验值记录

7.2.2 前台用户端接口

序号接口名称请求方式路径认证要求说明
1获取个人信息GET/app-api/member/user/get需登录获取当前用户信息
2修改个人信息PUT/app-api/member/user/update需登录修改昵称等
3修改手机号PUT/app-api/member/user/update-mobile需登录验证码方式
4微信修改手机号PUT/app-api/member/user/update-mobile-by-weixin需登录小程序授权
5修改密码PUT/app-api/member/user/update-password需登录需验证旧密码
6重置密码PUT/app-api/member/user/reset-password无需登录忘记密码重置
7创建收货地址POST/app-api/member/address/create需登录新增地址
8更新收货地址PUT/app-api/member/address/update需登录修改地址
9删除收货地址DELETE/app-api/member/address/delete需登录删除地址
10获取收货地址GET/app-api/member/address/get需登录地址详情
11获取默认地址GET/app-api/member/address/get-default需登录默认地址
12获取地址列表GET/app-api/member/address/list需登录所有地址
13获取等级列表GET/app-api/member/level/list公开接口所有启用等级
14会员签到POST/app-api/member/sign-in/create需登录执行签到
15签到日历GET/app-api/member/sign-in/get-sign-in-calendar需登录当月签到记录
16签到统计GET/app-api/member/sign-in/get-sign-in-statistics需登录连续天数等
17获取积分记录GET/app-api/member/point/record/page需登录积分变动明细
18获取经验值记录GET/app-api/member/experience/record/page需登录经验值变动明细

7.3 错误码

错误码说明处理建议
MEMBER_USER_NOT_EXISTS会员不存在检查会员ID是否正确
MEMBER_USER_MOBILE_EXISTS手机号已注册提示用户直接登录或使用其他手机号
MEMBER_USER_EMAIL_EXISTS邮箱已注册提示使用其他邮箱
MEMBER_LEVEL_NOT_EXISTS等级不存在检查等级ID,可能已被删除
MEMBER_LEVEL_NAME_EXISTS等级名称已存在更换一个不重复的名称
MEMBER_LEVEL_HAS_USER等级下有关联会员无法删除先调整关联会员的等级再删除
MEMBER_TAG_NAME_EXISTS标签名称已存在同分组下标签名不可重复
MEMBER_GROUP_NAME_EXISTS分组名称已存在更换分组名称
MEMBER_GROUP_HAS_USER分组下有关联会员无法删除先移除关联会员再删除
MEMBER_POINT_NOT_ENOUGH积分余额不足扣减时余额不够,减少扣减数量
MEMBER_SIGN_IN_TODAY今日已签到明天再来
MEMBER_SIGN_IN_CONFIG_EXISTS签到天数配置已存在同一天不能重复配置
MEMBER_ADDRESS_LIMIT收货地址数量达到上限删除不用的地址后再添加
MEMBER_PASSWORD_WRONG当前密码错误输入正确的当前密码
MEMBER_MOBILE_NOT_SAME两次输入的手机号不一致重新确认手机号

7.4 变更记录

版本日期变更内容
v1.02026-09-24初稿,基础功能定义
v2.02026-09-19全面增强:补充用户场景和验收标准、ASCII原型图、业务规则增加设计原因、新增跨模块联动章节(消费积分/签到/升级3条关键流程)、完善名词解释(18项含类比)和错误码(15项)