Knowledge note
group-buy-market 数据库表结构详细说明
group-buy-market 数据库表结构详细说明
数据库:
group_buy_market
字符集:utf8mb4_0900_ai_ci
SQL 文件:docs/dev-ops/mysql/sql/2-29-group_buy_market.sql
#目录
- sku — 商品信息
- sc_sku_activity — 渠道商品活动关联
- group_buy_discount — 折扣方案配置
- group_buy_activity — 拼团活动
- group_buy_order — 拼团队伍
- group_buy_order_list — 用户参团明细
- notify_task — 回调通知任务
- crowd_tags — 人群标签
- crowd_tags_detail — 人群标签明细
- crowd_tags_job — 人群标签任务
- 表关系说明
- 索引汇总
#1. sku — 商品信息
用途:存储参与拼团活动的商品基础信息,是整个营销链路的商品来源。
PO 类:cn.bugstack.infrastructure.dao.po.Sku
DAO 接口:cn.bugstack.infrastructure.dao.ISkuDao
CREATE TABLE `sku` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`source` varchar(8) NOT NULL COMMENT '渠道',
`channel` varchar(8) NOT NULL COMMENT '来源',
`goods_id` varchar(16) NOT NULL COMMENT '商品ID',
`goods_name` varchar(128) NOT NULL COMMENT '商品名称',
`original_price` decimal(10,2) NOT NULL COMMENT '商品价格',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_goods_id` (`goods_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| source | source | String | 渠道标识(如 s01) |
| channel | channel | String | 来源标识(如 c01) |
| goods_id | goodsId | String | 商品唯一 ID,唯一键 |
| goods_name | goodsName | String | 商品名称 |
| original_price | originalPrice | BigDecimal | 商品原价 |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
示例数据:
| goods_id | goods_name | original_price |
|---|---|---|
| 9890001 | 《手写MyBatis:渐进式源码实践》 | 100.00 |
#9. crowd_tags_detail — 人群标签明细
用途:某标签下具体的用户列表,是人群过滤(TagNode)的数据依据。系统查询用户是否在某标签内走此表。
PO 类:cn.bugstack.infrastructure.dao.po.CrowdTagsDetail
DAO 接口:cn.bugstack.infrastructure.dao.ICrowdTagsDetailDao
CREATE TABLE `crowd_tags_detail` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`tag_id` varchar(32) NOT NULL COMMENT '人群ID',
`user_id` varchar(16) NOT NULL COMMENT '用户ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_tag_user` (`tag_id`, `user_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| tag_id | tagId | String | 标签 ID → crowd_tags.tag_id |
| user_id | userId | String | 用户 ID |
| create_time / update_time | - | Date | 时间戳 |
唯一约束:(tag_id, user_id) — 同一用户在同一标签下只有一条记录。
使用场景:
- TagNode 在试算链路中查询
WHERE tag_id = ? AND user_id = ?,判断用户是否具备参与/可见资格。 crowd_tags_job批量计算完成后,将符合规则的用户批量写入此表。
#10. crowd_tags_job — 人群标签任务
用途:定义人群标签的批量计算任务,通过规则(参与次数、消费金额等)筛选符合条件的用户,将结果写入 crowd_tags_detail。
PO 类:cn.bugstack.infrastructure.dao.po.CrowdTagsJob
DAO 接口:cn.bugstack.infrastructure.dao.ICrowdTagsJobDao
CREATE TABLE `crowd_tags_job` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`tag_id` varchar(32) NOT NULL COMMENT '标签ID',
`batch_id` varchar(8) NOT NULL COMMENT '批次ID(唯一)',
`tag_type` tinyint(1) NOT NULL DEFAULT '1' COMMENT '标签类型(0参与量、1消费金额)',
`tag_rule` varchar(8) NOT NULL COMMENT '规则阈值(如 N 次/金额)',
`stat_start_time` datetime NOT NULL COMMENT '统计数据开始时间',
`stat_end_time` datetime NOT NULL COMMENT '统计数据结束时间',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0初始、1计划/执行中、2重置、3完成',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_batch_id` (`batch_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| tag_id | tagId | String | 关联 crowd_tags.tag_id |
| batch_id | batchId | String | 批次唯一 ID |
| tag_type | tagType | Integer | 0=参与次数统计;1=消费金额统计 |
| tag_rule | tagRule | String | 规则阈值,如 "100" |
| stat_start_time | statStartTime | Date | 统计时间范围开始 |
| stat_end_time | statEndTime | Date | 统计时间范围结束 |
| status | status | Integer | 0=初始;1=执行中;2=重置;3=完成 |
| create_time / update_time | - | Date | 时间戳 |
任务执行流程:
创建任务(0) → 调度器置为执行中(1) → 扫描 group_buy_order_list 统计
→ 批量写入 crowd_tags_detail → 更新 crowd_tags.statistics → 完成(3)
#11. 表关系说明
sku ─────────────────────────────────────────────────────┐
│ goods_id
sc_sku_activity ──── activity_id ──────────── group_buy_activity
│
┌──────────┼──────────────┐
│ │ │
discount_id tag_id activity_id
│ │ │
group_buy_discount crowd_tags group_buy_order (team)
│ tag_id │ team_id
crowd_tags_detail │
crowd_tags_job ▼
group_buy_order_list
│ team_id
▼
notify_task
核心链路(锁单流程):
前端请求 (source + channel + goods_id)
→ sc_sku_activity (查 activity_id)
→ group_buy_activity (查活动配置 + tag_id + discount_id)
→ group_buy_discount (查折扣方案)
→ sku (查商品原价)
→ crowd_tags_detail (若 tag_id 不为空:验证用户人群归属)
→ group_buy_order (写入/更新队伍记录,更新 lock_count)
→ group_buy_order_list (写入用户参团明细)
结算链路:
group_buy_order_list (status: 0→1, 填 out_trade_time)
→ group_buy_order (complete_count++)
→ 若 complete_count >= target_count: group_buy_order.status=1
→ notify_task (生成回调任务)
#12. 索引汇总
| 表名 | 索引名 | 索引列 | 类型 | 用途说明 |
|---|---|---|---|---|
| sku | uq_goods_id | goods_id | UNIQUE | 按商品 ID 唯一查询 |
| sc_sku_activity | uq_sc_goodsid | source, channel, goods_id | UNIQUE | 三元组查询活动 ID |
| group_buy_discount | uq_discount_id | discount_id | UNIQUE | 按折扣 ID 查询方案 |
| group_buy_activity | uq_activity_id | activity_id | UNIQUE | 活动配置主查询(含 Redis 缓存) |
| group_buy_order | uq_team_id | team_id | UNIQUE | 队伍进度查询 |
| group_buy_order_list | uq_order_id | order_id | UNIQUE | 防止重复写入同一系统订单 |
| group_buy_order_list | idx_user_id_activity_id | user_id, activity_id | INDEX | 查询用户参团次数(UserTakeLimitRuleFilter) |
| notify_task | uq_uuid | uuid | INDEX | 回调任务防重查询(建议改为 UNIQUE) |
| crowd_tags | uq_tag_id | tag_id | UNIQUE | 标签元数据查询 |
| crowd_tags_detail | uq_tag_user | tag_id, user_id | UNIQUE | 用户标签归属查询,天然防重 |
| crowd_tags_job | uq_batch_id | batch_id | UNIQUE | 批次任务去重查询 |
#2. sc_sku_activity — 渠道商品活动关联
用途:将"渠道 + 来源 + 商品"三元组绑定到某个拼团活动。用户发起拼团时,系统通过 source + channel + goods_id 查询对应的 activity_id。
PO 类:cn.bugstack.infrastructure.dao.po.SCSkuActivity
DAO 接口:cn.bugstack.infrastructure.dao.ISCSkuActivityDao
CREATE TABLE `sc_sku_activity` (
`id` int unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`source` varchar(8) NOT NULL COMMENT '渠道',
`channel` varchar(8) NOT NULL COMMENT '来源',
`activity_id` bigint NOT NULL COMMENT '活动ID',
`goods_id` varchar(16) NOT NULL COMMENT '商品ID',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_sc_goodsid` (`source`, `channel`, `goods_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| source | source | String | 渠道标识 |
| channel | channel | String | 来源标识 |
| activity_id | activityId | Long | 关联的拼团活动 ID |
| goods_id | goodsId | String | 关联的商品 ID |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
唯一约束:(source, channel, goods_id) — 同一渠道下同一商品只能关联一个活动。
#3. group_buy_discount — 折扣方案配置
用途:定义营销折扣规则,支持多种优惠计划(直减、满减、N 元购、折扣),可配置人群标签限定。
PO 类:cn.bugstack.infrastructure.dao.po.GroupBuyDiscount
DAO 接口:cn.bugstack.infrastructure.dao.IGroupBuyDiscountDao
CREATE TABLE `group_buy_discount` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`discount_id` varchar(8) NOT NULL COMMENT '折扣ID',
`discount_name` varchar(64) NOT NULL COMMENT '折扣标题',
`discount_desc` varchar(256) NOT NULL COMMENT '折扣描述',
`discount_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '折扣类型(0:base、1:tag)',
`market_plan` varchar(4) NOT NULL DEFAULT 'ZJ' COMMENT '营销优惠计划(ZJ直减、MJ满减、N元购、ZK折扣)',
`market_expr` varchar(32) NOT NULL COMMENT '营销优惠表达式',
`tag_id` varchar(8) DEFAULT NULL COMMENT '人群标签,特定优惠限定',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_discount_id` (`discount_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| discount_id | discountId | String | 折扣唯一 ID |
| discount_name | discountName | String | 折扣名称 |
| discount_desc | discountDesc | String | 折扣描述 |
| discount_type | discountType | Integer | 0=基础优惠(BASE);1=人群标签限定(TAG) |
| market_plan | marketPlan | String | ZJ=直减;MJ=满减;N=N元购;ZK=折扣 |
| market_expr | marketExpr | String | 优惠表达式(如 ZJ 直减 20 元则填 "20") |
| tag_id | tagId | String | 关联人群标签 ID(discount_type=1 时生效) |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
market_plan 枚举说明:
| 值 | 含义 | market_expr 格式示例 |
|---|---|---|
| ZJ | 直减 | "20"(直减 20 元) |
| MJ | 满减 | "100,20"(满 100 减 20) |
| N | N 元购 | "9.9"(以 9.9 元购买) |
| ZK | 折扣 | "0.8"(八折) |
#4. group_buy_activity — 拼团活动
用途:拼团活动的核心配置表,定义活动的时间、目标人数、有效时长、折扣方案、人群标签等。
PO 类:cn.bugstack.infrastructure.dao.po.GroupBuyActivity
DAO 接口:cn.bugstack.infrastructure.dao.IGroupBuyActivityDao
CREATE TABLE `group_buy_activity` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`activity_id` bigint NOT NULL COMMENT '活动ID',
`activity_name` varchar(128) NOT NULL COMMENT '活动名称',
`discount_id` varchar(8) NOT NULL COMMENT '折扣ID',
`group_type` tinyint(1) NOT NULL DEFAULT '0' COMMENT '拼团方式(0自动成团、1达成目标拼团)',
`take_limit_count` int NOT NULL DEFAULT '1' COMMENT '拼团次数限制',
`target` int NOT NULL DEFAULT '1' COMMENT '拼团目标人数',
`valid_time` int NOT NULL DEFAULT '15' COMMENT '拼团时长(分钟)',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '活动状态(0创建、1生效、2过期、3废弃)',
`start_time` datetime NOT NULL COMMENT '活动开始时间',
`end_time` datetime NOT NULL COMMENT '活动结束时间',
`tag_id` varchar(8) DEFAULT NULL COMMENT '人群标签规则标识',
`tag_scope` varchar(4) DEFAULT NULL COMMENT '人群标签规则范围(1可见限制、2参与限制)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_activity_id` (`activity_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| activity_id | activityId | Long | 活动业务 ID(唯一键) |
| activity_name | activityName | String | 活动名称 |
| discount_id | discountId | String | 关联折扣方案 ID → group_buy_discount.discount_id |
| group_type | groupType | Integer | 0=自动成团;1=达到目标才成团 |
| take_limit_count | takeLimitCount | Integer | 单个用户在该活动最多参团次数 |
| target | target | Integer | 拼团成功所需人数 |
| valid_time | validTime | Integer | 拼团有效时长(分钟),从首单锁定起计 |
| status | status | Integer | 0=创建;1=生效;2=过期;3=废弃(ActivityStatusEnumVO) |
| start_time | startTime | Date | 活动开始时间 |
| end_time | endTime | Date | 活动结束时间 |
| tag_id | tagId | String | 关联人群标签 ID(可为空,为空表示不限制人群) |
| tag_scope | tagScope | String | "1"=仅可见限制;"2"=仅参与限制;"1,2"=两者都限制 |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
Redis 缓存 Key:group_buy_market_cn.bugstack.infrastructure.dao.po.GroupBuyActivity_{activityId}
注意:tag_id 与 group_buy_discount.tag_id 作用不同:
group_buy_activity.tag_id控制活动可见性 / 参与资格(TagNode 过滤)group_buy_discount.tag_id控制人群专属折扣
#5. group_buy_order — 拼团队伍
用途:每一条记录代表一个拼团队伍(Team),记录队伍的整体进度、价格、回调配置和时效。
PO 类:cn.bugstack.infrastructure.dao.po.GroupBuyOrder
DAO 接口:cn.bugstack.infrastructure.dao.IGroupBuyOrderDao
CREATE TABLE `group_buy_order` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`team_id` varchar(8) NOT NULL COMMENT '拼单组队ID',
`activity_id` bigint NOT NULL COMMENT '活动ID',
`source` varchar(8) NOT NULL COMMENT '渠道',
`channel` varchar(8) NOT NULL COMMENT '来源',
`original_price` decimal(8,2) NOT NULL COMMENT '原始价格',
`deduction_price` decimal(8,2) NOT NULL COMMENT '折扣金额',
`pay_price` decimal(8,2) NOT NULL COMMENT '支付价格',
`target_count` int NOT NULL COMMENT '目标数量',
`complete_count` int NOT NULL COMMENT '完成数量(已支付)',
`lock_count` int NOT NULL COMMENT '锁单数量(已锁未必已付)',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态(0拼单中、1完成、2失败、3完成含退单)',
`valid_start_time` datetime NOT NULL COMMENT '拼团开始时间',
`valid_end_time` datetime NOT NULL COMMENT '拼团结束时间',
`notify_type` varchar(8) NOT NULL DEFAULT 'HTTP' COMMENT '回调类型(HTTP、MQ)',
`notify_url` varchar(512) DEFAULT NULL COMMENT '回调地址(HTTP 时不可为空)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_team_id` (`team_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| team_id | teamId | String | 队伍唯一 ID(8 位数字字符串,唯一键) |
| activity_id | activityId | Long | 关联活动 ID |
| source | source | String | 渠道 |
| channel | channel | String | 来源 |
| original_price | originalPrice | BigDecimal | 商品原价 |
| deduction_price | deductionPrice | BigDecimal | 优惠抵扣金额 |
| pay_price | payPrice | BigDecimal | 实付金额 |
| target_count | targetCount | Integer | 拼团成功所需人数 |
| complete_count | completeCount | Integer | 已完成支付的人数 |
| lock_count | lockCount | Integer | 已锁单(含未付款)的人数 |
| status | status | Integer | 0=拼单中;1=完成;2=失败;3=完成含退单(GroupBuyOrderEnumVO) |
| valid_start_time | validStartTime | Date | 拼团有效期开始(首单锁定时间) |
| valid_end_time | validEndTime | Date | 拼团有效期结束(开始时间 + valid_time 分钟) |
| notify_type | notifyType | String | HTTP 或 MQ |
| notify_url | notifyUrl | String | HTTP 回调地址(MQ 类型时为 null) |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
进度三值说明:
| 字段 | 含义 |
|---|---|
| lock_count | 已锁单人数(下单但未必支付),用于控制库存不超卖 |
| complete_count | 已支付结算的人数 |
| target_count | 拼团目标人数,complete_count >= target_count 时拼团成功 |
#6. group_buy_order_list — 用户参团明细
用途:每个用户参与某个拼团队伍的单条订单记录,记录锁单、支付、退单的完整状态流转。
PO 类:cn.bugstack.infrastructure.dao.po.GroupBuyOrderList
DAO 接口:cn.bugstack.infrastructure.dao.IGroupBuyOrderListDao
CREATE TABLE `group_buy_order_list` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`user_id` varchar(64) NOT NULL COMMENT '用户ID',
`team_id` varchar(8) NOT NULL COMMENT '拼单组队ID',
`order_id` varchar(12) NOT NULL COMMENT '订单ID(系统内部生成)',
`activity_id` bigint NOT NULL COMMENT '活动ID',
`start_time` datetime NOT NULL COMMENT '活动开始时间',
`end_time` datetime NOT NULL COMMENT '活动结束时间',
`goods_id` varchar(16) NOT NULL COMMENT '商品ID',
`source` varchar(8) NOT NULL COMMENT '渠道',
`channel` varchar(8) NOT NULL COMMENT '来源',
`original_price` decimal(8,2) NOT NULL COMMENT '原始价格',
`deduction_price` decimal(8,2) NOT NULL COMMENT '折扣金额',
`pay_price` decimal(8,2) NOT NULL COMMENT '支付金额',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '状态;0初始锁定、1消费完成、2用户退单',
`out_trade_no` varchar(12) NOT NULL COMMENT '外部交易单号(外部系统传入,唯一幂等键)',
`out_trade_time` datetime DEFAULT NULL COMMENT '外部交易时间(支付完成时间)',
`biz_id` varchar(64) NOT NULL COMMENT '业务唯一ID(格式:activityId_userId_takeCount)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_order_id` (`order_id`),
KEY `idx_user_id_activity_id` (`user_id`, `activity_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| user_id | userId | String | 用户 ID |
| team_id | teamId | String | 所属队伍 ID → group_buy_order.team_id |
| order_id | orderId | String | 系统内部 12 位订单号(唯一键) |
| activity_id | activityId | Long | 活动 ID |
| start_time | startTime | Date | 活动开始时间 |
| end_time | endTime | Date | 活动结束时间 |
| goods_id | goodsId | String | 商品 ID |
| source | source | String | 渠道 |
| channel | channel | String | 来源 |
| original_price | originalPrice | BigDecimal | 原价 |
| deduction_price | deductionPrice | BigDecimal | 优惠金额 |
| pay_price | payPrice | BigDecimal | 实付金额 |
| status | status | Integer | 0=初始锁定;1=消费完成;2=用户退单 |
| out_trade_no | outTradeNo | String | 外部单号(外部系统传入,用于幂等校验) |
| out_trade_time | outTradeTime | Date | 支付时间(调用结算接口时填入,退单流程可据此判断是否已付) |
| biz_id | bizId | String | 业务唯一 ID,格式:{activityId}_{userId}_{takeLimitCount},配合数据库唯一索引防重 |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
订单状态流转:
锁单 (status=0)
│
├─ 支付成功 → 结算 (status=1),out_trade_time 填入
│
└─ 退单 → (status=2)
#7. notify_task — 回调通知任务
用途:拼团完成(或退单完成)后,向外部系统发起 HTTP/MQ 回调的任务记录。支持失败重试,定时任务 GroupBuyNotifyJob 每日扫描未完成的任务进行补偿。
PO 类:cn.bugstack.infrastructure.dao.po.NotifyTask
DAO 接口:cn.bugstack.infrastructure.dao.INotifyTaskDao
CREATE TABLE `notify_task` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`activity_id` bigint NOT NULL COMMENT '活动ID',
`team_id` varchar(8) NOT NULL COMMENT '拼单组队ID',
`notify_category` varchar(64) DEFAULT NULL COMMENT '回调种类',
`notify_type` varchar(8) NOT NULL DEFAULT 'HTTP' COMMENT '回调类型(HTTP、MQ)',
`notify_mq` varchar(32) DEFAULT NULL COMMENT '回调消息队列 Topic',
`notify_url` varchar(128) DEFAULT NULL COMMENT '回调接口地址',
`notify_count` int NOT NULL COMMENT '已回调次数',
`notify_status` tinyint(1) NOT NULL COMMENT '回调状态(0初始、1完成、2重试、3失败)',
`parameter_json` varchar(256) NOT NULL COMMENT '回调参数 JSON',
`uuid` varchar(128) NOT NULL COMMENT '唯一标识(防重)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `uq_uuid` (`uuid`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| activity_id | activityId | Long | 关联活动 ID |
| team_id | teamId | String | 关联队伍 ID |
| notify_category | notifyCategory | String | 回调种类,区分拼团成功/退单场景(如 trade_paid_team2refund、trade_paid2refund、trade_unpaid2refund) |
| notify_type | notifyType | String | HTTP 或 MQ |
| notify_mq | notifyMQ | String | MQ Topic(如 topic.team_success、topic.team_refund) |
| notify_url | notifyUrl | String | HTTP 回调地址 |
| notify_count | notifyCount | Integer | 已发起回调次数(每次重试 +1) |
| notify_status | notifyStatus | Integer | 0=初始;1=完成;2=重试中;3=失败(NotifyTaskHTTPEnumVO) |
| parameter_json | parameterJson | String | 回调参数 JSON,含 teamId、outTradeNoList 等 |
| uuid | uuid | String | 幂等键,格式:{teamId}_{notify_category}_{orderId},防止重复插入 |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |
notify_category 常见值:
| 值 | 触发场景 |
|---|---|
null | 拼团成功正向通知 |
trade_unpaid2refund | 未支付订单退单 |
trade_paid2refund | 已支付个人退单 |
trade_paid_team2refund | 拼团完成后有人退单 |
parameter_json 格式示例(拼团成功):
{"teamId":"58693013","outTradeNoList":["214969043474"]}
parameter_json 格式示例(退单):
{"activityId":100123,"orderId":"281877272894","teamId":"21762498","type":"paid_formed","userId":"xfg103"}
#8. crowd_tags — 人群标签
用途:人群标签的定义表,记录每个标签的基本信息和用户量统计。活动可通过 group_buy_activity.tag_id 关联标签,实现人群定向营销。
PO 类:cn.bugstack.infrastructure.dao.po.CrowdTags
DAO 接口:cn.bugstack.infrastructure.dao.ICrowdTagsDao
CREATE TABLE `crowd_tags` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`tag_id` varchar(32) NOT NULL COMMENT '人群ID',
`tag_name` varchar(64) NOT NULL COMMENT '人群名称',
`tag_desc` varchar(256) NOT NULL COMMENT '人群描述',
`statistics` int NOT NULL COMMENT '人群标签统计量(该标签下的用户数)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uq_tag_id` (`tag_id`)
);
| 列名 | Java 字段 | 类型 | 说明 |
|---|---|---|---|
| id | id | Long | 自增主键 |
| tag_id | tagId | String | 标签唯一 ID(唯一键) |
| tag_name | tagName | String | 标签名称 |
| tag_desc | tagDesc | String | 标签描述 |
| statistics | statistics | Integer | 标签覆盖用户数(冗余统计,定期更新) |
| create_time | createTime | Date | 创建时间 |
| update_time | updateTime | Date | 更新时间 |