yanxh 7a35ff4354 初始化项目 пре 2 дана
..
business-member-api 7a35ff4354 初始化项目 пре 2 дана
business-member-application 7a35ff4354 初始化项目 пре 2 дана
business-member-bean 7a35ff4354 初始化项目 пре 2 дана
business-member-controller 7a35ff4354 初始化项目 пре 2 дана
business-member-service 7a35ff4354 初始化项目 пре 2 дана
.flattened-pom.xml 7a35ff4354 初始化项目 пре 2 дана
README.md 7a35ff4354 初始化项目 пре 2 дана
pom.xml 7a35ff4354 初始化项目 пре 2 дана
后台接口文档.md 7a35ff4354 初始化项目 пре 2 дана
移动端接口文档.md 7a35ff4354 初始化项目 пре 2 дана

README.md

会员管理模块 (business-member)

模块概述

会员管理模块是企业级会员体系的核心模块,提供完整的会员全生命周期管理能力,包括会员注册、等级管理、积分体系、优惠券发放与核销等功能。

发票申请相关能力已迁移至 business-finance 模块(表名仍为 app_member_invoice_apply,管理端与小程序接口路径不变)。


模块结构

business-member/
├── business-member-bean/              # Bean层(Entity、DTO、VO、Convert)
│   └── src/main/java/com/jeesharp/business/modules/member/
│       ├── annotation/                # 自定义注解
│       │   ├── SensitiveField.java       # 敏感字段脱敏注解
│       │   └── SensitiveFieldSerializer.java  # 脱敏序列化器
│       ├── convert/                   # 转换器
│       │   └── MemberConvert.java        # 会员转换器
│       ├── dto/                       # 数据传输对象
│       │   └── MemberSaveDTO.java        # 会员保存DTO
│       ├── entity/                    # 实体类
│       │   ├── Member.java               # 会员实体
│       │   └── MemberLevel.java          # 会员等级实体
│       └── vo/                        # 视图对象
│           ├── MemberQueryVO.java        # 会员查询VO
│           ├── MemberInfoVO.java         # 会员信息VO
│           ├── MemberExportVO.java       # 会员导出VO
│           ├── MemberImportVO.java       # 会员导入VO
│           └── MemberLevelQueryVO.java   # 会员等级查询VO
│
├── business-member-service/           # Service层(Service、Mapper)
│   └── src/main/java/com/jeesharp/business/modules/member/
│       ├── mapper/                    # MyBatis Mapper
│       │   ├── MemberMapper.java         # 会员Mapper
│       │   ├── MemberLevelMapper.java    # 会员等级Mapper
│       │   └── xml/                      # Mapper XML
│       │       ├── MemberMapper.xml
│       │       └── MemberLevelMapper.xml
│       └── service/                   # 领域服务
│           ├── MemberService.java        # 会员服务接口
│           ├── MemberLevelService.java   # 会员等级服务接口
│           └── impl/                     # 服务实现
│               ├── MemberServiceImpl.java
│               └── MemberLevelServiceImpl.java
│
├── business-member-application/       # Application层(应用服务)
│   └── src/main/java/com/jeesharp/business/modules/member/
│       └── application/
│           └── MemberApplicationService.java  # 会员应用服务
│
├── business-member-controller/        # Controller层(控制器)
│   └── src/main/java/com/jeesharp/business/modules/member/
│       └── controller/
│           └── MemberController.java     # 会员管理控制器
│
└── src/main/resources/
    └── sql/
        └── member.sql                 # 数据库建表脚本

模块依赖关系

Controller → Application → Service → Bean
    │            │            │         │
    └────────────┴────────────┴─────────┴──→ jeesharp-spring-boot-starter-mybatis

敏感信息脱敏

本模块提供了完整的敏感信息脱敏解决方案,通过注解 @SensitiveField 实现。

支持的脱敏类型

类型 说明 示例
MOBILE 手机号脱敏(保留前3后4) 138****1234
ID_CARD 身份证脱敏(保留前6后4) 110101********1234
BANK_CARD 银行卡脱敏(保留前4后4) 6222****1234
EMAIL 邮箱脱敏(保留@前2位和域名) te****@example.com
NAME 姓名脱敏(保留姓) 张**
ADDRESS 地址脱敏(保留前6位) 北京市朝阳区****
PASSWORD 密码脱敏(全部替换) ******
CUSTOM 自定义脱敏 支持自定义前后保留长度

使用示例

@Data
public class MemberInfoVO {

    @SensitiveField(SensitiveField.SensitiveType.MOBILE)
    @JsonSerialize(using = SensitiveFieldSerializer.class)
    private String mobile;

    @SensitiveField(SensitiveField.SensitiveType.ID_CARD)
    @JsonSerialize(using = SensitiveFieldSerializer.class)
    private String idCard;

    @SensitiveField(value = SensitiveField.SensitiveType.CUSTOM, prefixLength = 2, suffixLength = 4)
    @JsonSerialize(using = SensitiveFieldSerializer.class)
    private String customField;
}

API 接口

接口基础路径

${jeesharp.web.adminPath}/member/member/v1

命名规则:${jeesharp.web.adminPath}/模块名/类名/版本号

会员管理接口

接口 方法 URL 说明
获取详情 GET /v1/info?id=xxx 获取会员详细信息
分页列表 POST /v1/list 分页查询会员列表
保存 POST /v1/save 新增或更新会员
删除 GET /v1/delete?ids=xxx 批量删除会员
导出 POST /v1/export 导出会员Excel
导入 POST /v1/import 导入会员Excel
下载模板 GET /v1/import/template 下载导入模板
禁用 GET /v1/disable?id=xxx 禁用会员
启用 GET /v1/enable?id=xxx 启用会员
增加积分 POST /v1/addPoints 增加会员积分
扣减积分 POST /v1/deductPoints 扣减会员积分
增加成长值 POST /v1/addGrowthValue 增加成长值

权限配置

权限标识 说明
member:member:info 查看会员详情
member:member:list 查看会员列表
member:member:save 保存会员
member:member:delete 删除会员
member:member:export 导出会员
member:member:import 导入会员
member:member:disable 禁用会员
member:member:enable 启用会员
member:member:points 积分管理
member:member:growth 成长值管理

基础字段规范

所有表均包含以下标准基础字段:

字段名 类型 说明
id VARCHAR(64) 主键ID
create_by VARCHAR(64) 创建者
create_date DATETIME 创建时间
update_by VARCHAR(64) 更新者
update_date DATETIME 更新时间
del_flag CHAR(1) 删除标记:0-正常 1-删除
remarks VARCHAR(255) 备注信息
tenant_code VARCHAR(64) 租户编码
tenant_id VARCHAR(64) 租户ID

功能特性

  • 会员管理:注册、认证、信息维护、状态管理
  • 等级体系:多级会员等级、自动升降级、等级特权配置
  • 积分系统:积分获取、消费、冻结、过期等全流程管理
  • 优惠券系统:优惠券模板、发放、领取、核销、退回
  • 会员标签:标签管理、自动打标、精准营销
  • 数据统计:消费统计、行为分析、会员画像

数据库表设计

表结构概览

序号 表名 说明 必需
1 app_member_level 会员等级配置表
2 app_member 会员主表
3 app_member_points_log 积分流水表
4 app_coupon_template 优惠券模板表
5 app_member_coupon 会员优惠券领取记录表
6 app_member_growth_log 会员成长值流水表 可选
7 app_member_balance_log 会员余额流水表 可选
8 app_member_tag 会员标签表 可选
9 app_member_tag_relation 会员标签关联表 可选

ER 关系图

┌─────────────────────────────────────────────────────────────────────────────┐
│                           会员管理系统 ER 图                                  │
└─────────────────────────────────────────────────────────────────────────────┘

┌──────────────────┐         ┌──────────────────┐
│ app_member_level │ 1    n  │    app_member    │
│   (会员等级配置)   │◄────────│     (会员主表)    │
└──────────────────┘         └────────┬─────────┘
                                      │
           ┌──────────────────────────┼──────────────────────────┐
           │                          │                          │
           ▼                          ▼                          ▼
┌──────────────────┐     ┌──────────────────┐     ┌──────────────────┐
│app_member_points │     │ app_member_coupon│     │app_member_growth │
│     _log         │     │                  │     │     _log         │
│   (积分流水)      │     │  (优惠券领取记录) │     │   (成长值流水)    │
└──────────────────┘     └────────┬─────────┘     └──────────────────┘
                                  │
                                  │ n
                                  │
                                  ▼ 1
                         ┌──────────────────┐
                         │app_coupon_template│
                         │   (优惠券模板)    │
                         └──────────────────┘

核心表详细设计

1. 会员等级配置表 (app_member_level)

存储会员等级的配置信息,包括升级条件、折扣率、积分倍率等特权配置。

字段名 类型 说明
id VARCHAR(64) 主键ID
level_code VARCHAR(32) 等级编码(NORMAL/SILVER/GOLD/PLATINUM/DIAMOND)
level_name VARCHAR(64) 等级名称
level_sort INT 等级排序(越大越高)
min_growth_value INT 升级所需最低成长值
max_growth_value INT 该等级成长值上限
discount_rate DECIMAL(3,2) 折扣率(0.95 = 95折)
points_rate DECIMAL(5,2) 积分倍率(1.5 = 1.5倍积分)
birthday_points INT 生日赠送积分
upgrade_gift_points INT 升级赠送积分
privileges TEXT 会员特权(JSON格式)
downgrade_enabled TINYINT 是否启用降级

默认等级数据

等级编码 等级名称 成长值范围 折扣 积分倍率
NORMAL 普通会员 0-999 无折扣 1倍
SILVER 白银会员 1000-4999 98折 1.2倍
GOLD 黄金会员 5000-19999 95折 1.5倍
PLATINUM 铂金会员 20000-49999 92折 2倍
DIAMOND 钻石会员 50000+ 88折 3倍

2. 会员主表 (app_member)

存储会员基本信息、等级信息、积分信息、消费统计等核心数据。

基本信息字段

字段名 类型 说明
id VARCHAR(64) 主键(会员ID)
member_no VARCHAR(32) 会员编号(对外展示)
user_id VARCHAR(64) 关联系统用户ID
nickname VARCHAR(64) 昵称
real_name VARCHAR(64) 真实姓名
mobile VARCHAR(20) 手机号(加密)
avatar VARCHAR(500) 头像URL
gender TINYINT 性别:0-未知 1-男 2-女
birthday DATE 生日

第三方登录(OAuth):不在 app_member 冗余 openid/unionid,统一见表 app_member_oauth(平台、应用类型、appId、openid、unionid 等)。

等级相关字段

字段名 类型 说明
level_id VARCHAR(64) 当前等级ID
level_code VARCHAR(32) 当前等级编码
growth_value INT 成长值
level_expire_date DATETIME 等级过期时间

积分相关字段

字段名 类型 说明
total_points INT 累计获得积分
available_points INT 可用积分
frozen_points INT 冻结积分
used_points INT 已使用积分
expired_points INT 已过期积分

消费统计字段

字段名 类型 说明
total_consume_amount DECIMAL(12,2) 累计消费金额
total_consume_count INT 累计消费次数
last_consume_date DATETIME 最后消费时间
avg_consume_amount DECIMAL(10,2) 平均消费金额

状态字段

字段名 类型 说明
status TINYINT 状态:0-禁用 1-正常 2-待审核 3-已注销
source VARCHAR(32) 来源:APP/WECHAT_MINI/WECHAT_MP/H5/PC/HUAWEI/ALIPAY/QQ/WEIBO/APPLE/DOUYIN/DINGTALK/FEISHU
last_login_type VARCHAR(32) 最后登录方式
is_real_name TINYINT 是否实名认证

3. 积分流水表 (app_member_points_log)

记录会员积分的所有变动记录,支持积分追溯和对账。

字段名 类型 说明
id VARCHAR(64) 主键ID
member_id VARCHAR(64) 会员ID
points_type TINYINT 类型:1-获取 2-消费 3-冻结 4-解冻 5-过期 6-调整
points INT 变动数量(正/负)
before_points INT 变动前可用积分
after_points INT 变动后可用积分
biz_type VARCHAR(32) 业务类型
biz_id VARCHAR(64) 业务ID
expire_date DATETIME 积分过期时间

业务类型枚举 (biz_type)

编码 说明
CONSUME 消费获取
ORDER_CANCEL 订单取消扣回
SIGN_IN 签到获取
SHARE 分享获取
INVITE 邀请好友
BIRTHDAY 生日赠送
UPGRADE 升级赠送
EXCHANGE 积分兑换
REFUND 退款扣减
MANUAL 人工调整
EXPIRE 过期清零
ACTIVITY 活动获取

4. 优惠券模板表 (app_coupon_template)

定义优惠券的规则,包括优惠方式、使用条件、发放规则等。

字段名 类型 说明
id VARCHAR(64) 主键ID
coupon_code VARCHAR(32) 优惠券编码
coupon_name VARCHAR(128) 优惠券名称
coupon_type TINYINT 类型:1-满减券 2-折扣券 3-无门槛券 4-兑换券
discount_type TINYINT 优惠方式:1-金额 2-折扣
discount_value DECIMAL(10,2) 优惠值
min_consume_amount DECIMAL(10,2) 最低消费金额
max_discount_amount DECIMAL(10,2) 最大优惠金额
total_count INT 发行总量(-1不限)
per_member_limit INT 每人限领数量
get_type TINYINT 领取方式:1-手动 2-自动 3-兑换
validity_type TINYINT 有效期类型:1-固定时间段 2-领取后N天
status TINYINT 状态:0-下架 1-进行中 2-已结束 3-待开始

5. 会员优惠券领取记录表 (app_member_coupon)

记录会员领取的优惠券实例,包含领取信息、使用状态、核销记录等。

字段名 类型 说明
id VARCHAR(64) 主键ID
coupon_sn VARCHAR(64) 优惠券唯一码(券码)
member_id VARCHAR(64) 会员ID
template_id VARCHAR(64) 优惠券模板ID
coupon_name VARCHAR(128) 优惠券名称(冗余)
get_type TINYINT 领取方式
get_date DATETIME 领取时间
valid_start_date DATETIME 有效期开始
valid_end_date DATETIME 有效期结束
status TINYINT 状态:0-未使用 1-已使用 2-已过期 3-已冻结 4-已作废
use_date DATETIME 使用时间
use_order_id VARCHAR(64) 使用订单ID
use_amount DECIMAL(10,2) 实际抵扣金额

业务流程

会员等级升级流程

消费/签到/邀请等行为
        │
        ▼
  ┌─────────────┐
  │ 计算成长值   │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐    否
  │ 是否达到升级 │────────┐
  │   条件?    │        │
  └──────┬──────┘        │
         │是             │
         ▼               │
  ┌─────────────┐        │
  │ 更新会员等级 │        │
  │ 发放升级礼包 │        │
  │ 记录成长值流水│       │
  └──────┬──────┘        │
         │               │
         ▼               │
  ┌─────────────┐        │
  │  完成       │◄───────┘
  └─────────────┘

积分消费流程

用户下单使用积分
        │
        ▼
  ┌─────────────┐
  │ 校验积分余额 │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐    否
  │ 积分是否充足?│────────┐
  └──────┬──────┘        │
         │是             │
         ▼               ▼
  ┌─────────────┐  ┌─────────────┐
  │ 冻结积分    │  │ 提示余额不足 │
  └──────┬──────┘  └─────────────┘
         │
         ▼
  ┌─────────────┐
  │ 支付成功    │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐
  │ 扣减积分    │
  │ 记录流水    │
  └─────────────┘

优惠券核销流程

用户选择优惠券下单
        │
        ▼
  ┌─────────────┐
  │ 校验优惠券   │
  │ 状态/有效期  │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐    否
  │ 是否满足    │────────┐
  │ 使用条件?   │        │
  └──────┬──────┘        │
         │是             ▼
         ▼        ┌─────────────┐
  ┌─────────────┐ │ 提示不满足  │
  │ 冻结优惠券   │ │ 使用条件    │
  └──────┬──────┘ └─────────────┘
         │
         ▼
  ┌─────────────┐
  │ 支付成功    │
  └──────┬──────┘
         │
         ▼
  ┌─────────────┐
  │ 核销优惠券   │
  │ 更新状态    │
  │ 记录抵扣金额 │
  └─────────────┘

索引设计说明

会员主表索引

索引名 字段 类型 说明
uk_member_no member_no UNIQUE 会员编号唯一
uk_mobile_tenant mobile, tenant_id UNIQUE 手机号+租户唯一
uk_openid openid UNIQUE 微信OpenID唯一
uk_invite_code invite_code UNIQUE 邀请码唯一
idx_level_code level_code INDEX 等级查询
idx_status status INDEX 状态筛选
idx_register_date register_date INDEX 注册时间范围查询

积分流水表索引

索引名 字段 说明
idx_member_id member_id 会员积分查询
idx_biz_type biz_type 业务类型筛选
idx_create_date create_date 时间范围查询
idx_expire_date expire_date 过期积分处理

优惠券领取表索引

索引名 字段 说明
uk_coupon_sn coupon_sn 券码唯一
idx_member_status member_id, status 会员可用券查询
idx_valid_end_date valid_end_date 过期券处理

使用说明

执行 SQL

# 执行建表语句
mysql -u root -p your_database < src/main/resources/sql/member.sql

注意事项

  1. 敏感信息加密:手机号、身份证号等敏感字段建议加密存储
  2. 积分过期处理:需要定时任务处理过期积分
  3. 优惠券过期处理:需要定时任务更新过期优惠券状态
  4. 等级降级处理:如启用降级机制,需要定时任务检查保级条件
  5. 多租户支持:所有表均包含 tenant_idtenant_code 字段

版本记录

版本 日期 说明
1.0.0 2026-01-24 初始版本,包含核心表设计