zjk
昨天 f8c73a38709f7120d11b04bd70c6af3ccc53014d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
-- ----------------------------
-- C 端会员 个人中心 相关变更(ruoyi-user 用户服务)
--
-- 需求:个人中心页需展示「会员等级」与「今日/本月/累计收益」。
-- 变更内容:新增「会员收益流水表」account_earning_record,收益三栏由其按时间实时聚合。
--
-- 说明(按权威库 192.168.110.111 的既有字段调整):
--   会员等级复用权威库既有列 account_user.system_level(C<L1<L2<L3<L4,从低到高),
--   故本脚本不再新增 member_level 重复列。
--
-- 目标库 hugray-account 由使用方预先创建(utf8mb4)。
-- 注意:库名含连字符,任何引用都必须用反引号。
-- ----------------------------
 
USE `hugray-account`;
 
-- 变更:新增会员收益流水表(一条流水=一次收益事件,三栏由 SQL 按时间聚合)
CREATE TABLE `account_earning_record` (
  `record_id`   bigint(20)   NOT NULL AUTO_INCREMENT COMMENT '收益记录ID',
  `user_id`     bigint(20)   NOT NULL                COMMENT '会员ID(关联 account_user.user_id)',
  `amount`      bigint(20)   NOT NULL DEFAULT 0      COMMENT '收益金额(单位:分,可正可负)',
  `source`      char(1)      NOT NULL                COMMENT '收益来源(1订单收益 2邀请奖励 3等级差价 9其他)',
  `biz_no`      varchar(64)  DEFAULT NULL            COMMENT '业务单号(同来源幂等去重)',
  `remark`      varchar(255) DEFAULT NULL            COMMENT '备注',
  `create_time` datetime     DEFAULT NULL            COMMENT '发生时间',
  `update_time` datetime     DEFAULT NULL            COMMENT '更新时间',
  PRIMARY KEY (`record_id`),
  -- 覆盖「按会员 + 时间区间」的聚合查询,避免全表扫描
  KEY `idx_earning_user_time` (`user_id`, `create_time`),
  -- 业务幂等:同来源同业务单号唯一(biz_no 为空时 MySQL 唯一索引不冲突,允许手工补录)
  UNIQUE KEY `uk_earning_source_biz` (`source`, `biz_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员收益流水表';
 
-- ----------------------------
-- 回滚语句(如需回滚,执行以下语句)
-- ----------------------------
-- DROP TABLE IF EXISTS `account_earning_record`;