会员系统概要设计和细化分解
建设目的与背景
建立融合、跨平台的会员体系,对IPTV、互联网App、移动终端平台进行统一会员管理。对用户体系实现统一的会员认证,有效管理全平台会员数据。融合用户中心、Boss系统、商城服务体系、活动系统、任务权益体系、积分/成长体系、会员画像系统,提供多元化的产品形态,打造会员体系与运营模式的智能化平台,通过智能化的分析,把会员与平台的影片、产品、活动、增值业务等建立深度的联系,提高平台的服务能力,推动用户业务的使用,并为产品运营提供强有力的支撑。
近期目标交付
四川金熊猫OMO
核心需求
核心是小屏
会员权益体系,不同vip会员,权益不同,向下覆盖(核心是不同vip标识,弱化会员等级)
-
主推主题活动
- 报名环节(报名费,会员差异,商品关联)
- 参与环节(ugc上载,审核,证书)
- 数据环节(数据统计)
积分体系,暂时只对应商城
重数会员系统
核心需求
- 核心是大屏(至少短时间是大屏)
- 重点关注会员成长体系、会员积分体系,注重会员等级,vip标识可能唯一
- 任务权益体系
- 积分商城
整体架构
整个会员系统由用户中心、Boss系统、商城系统、活动系统、用户画像系统组成,他们的整体架构如下:
User Center
用户中心,是整个会员系统的核心,负责用户的统一登录、鉴权、积分及权益
用户/账号体系(多屏账号)
账号:各业务系统拥有的独立的账号体系,如大屏的iptv账号,微信的openid或unionid,移动端app的账号
用户:对应“自然人”的概念,为了实现跨屏账号体系而抽象的用户概念,是会员体系的依附(会员是特殊身份的用户)
会员概要(等级/vip)
- 会员是特殊的一类用户,本质上也是用户
- 成为会员的方式
- 购买会员
- 订阅、关注
- 。。。
- 会员vip标识
- 支持不同层级vip的界定,差异化服务
- vip专享权益
- 与会员等级独立,两个维度
- 会员等级
- 通过会员成长值驱动,不依赖于会员购买
- 基于等级的权益体系
- 会员的生效状态
- 满足条件成为会员
- 不满足条件会员失效
- 使用vip标识来实现
- 会员和成长值的关系
- 无直接联系
- 会员的成长值加速
- 会员等级和成长值加速的关系
会员信息
- 基本信息
- 注册时间、注册手机号、性别、会员等级、会员积分、会员余额等
- 地址信息
- 收货地址
- 积分信息
- 变动明细
- 优惠券信息
- 优惠券明细及状态,优惠券金额、使用条件、领取时间、使用时间、有效期及使用状态等
- 优惠券的信息一般和账户挂钩,此处需要关联查询
- 订单信息
- 用户对应账号的订单列表
- 子女信息
- 子女姓名,身份证,年龄
(会员)成长体系
成长值:作为会员成长体系中的核心数据,是贯穿整个会员体系重要依据之一。它直接或间接和会员等级、会员权益相关。
成长值的来源
- 日常登录
- 观影
- 参与活动
- 订购
- 后台赠送
- ...
成长值的消耗
- 单向模式:只增加不减少,初期就采用这种简单的模式
- 一些产品中成长值一直累积,伴随的会员等级一直成长,例如:QQ等级随着在线时间的增加而成长,从星星到月亮到太阳最后到皇冠,这种会员等级是单向的,永远朝着更高级别成长。这种规则下,成长值是无消耗的
- 双向模式:会根据规则增加和减少,也会影响对应的会员等级变化,一般适用于粘性较高,有一定用户基础的产品
- 一些产品充成长值是双向的,根据规则可增加可减少,对应的会员等级也会动态的变化
- 典型的例如王者荣耀的段位排名机制
- 还有在电商体系中
- 用户获得成长值的行为失效需要扣减对应成长值,例如:退货、删除评价等行为
- 后台人工干预扣除成长值等
- 一些平台也会在一个特定的时间周期评估用户的各种数据,根据规则重新计算出成长值,然后得出会员等级
成长值与会员等级
成长值与会员等级有确定的对应关系,当成长值累计到一定数值时,会员等级会随之提升
会员等级
尊享会员、钻石会员...(产品侧定义)
会员vip标识
- 不同付费档次(OMO)
- 非会员
- 团粉(关注)
- 上电视会员(99元购买)
- 小演员普通版(999元购买)
- 小演员黄金版(5999元购买)
会员等级/vip权益
- 一次性奖励权益
- 达到对应等级所能获得的奖励,可以是积分、优惠券、其他实体
- 采用任务-权益体系实现
- 解锁特权
- 下单折扣
- 包邮
- 免费观影
- 积分加成
- 。。。
成长值风控(第一阶段不做)
- 成长值上限
- 在设置成长值来源时可针对每个来源设置每日获取上限值,同样也可针对每个账号设置每日获取上限值,超过上限时完成任务不再增加成长值
- 异常数据报警
- 通过系统监控所有会员的成长值增加&消耗情况,例如某个会员的成长值突然在短时间内剧增,增幅已经达到系统预警,则需要对该会员的具体数据&行为进行分析
- 黑白名单
- 黑名单无法获得成长值
- 白名单特殊待遇
- 人工干预
- 针对部分系统无法自动处理的场景,可在开发时预留成长值更改接口,运营人员可在后台手动扣减/奖励用户的成长值
成长值明细/历史
详见成长值/积分计算引擎章节
积分体系
积分体系和会员成长体系最基本的模型是一样的,只不过从简单到复杂的演变的过程中表现出了不同的特点。积分可以抽象地理解为现实生活中的货币,货币有发行和回收机制,积分同样也有发行和回收机制,不然都会导致通货膨胀
积分价值
- 虚拟货币,需要预先调研定义其货币价值
- 通过成本管控,防止通货膨胀和营销亏损
积分获取/风控
- 同成长值获取,不在赘述
积分消耗
- 积分商城
- 使用商城服务,消耗积分获得商品
- 抵扣购物
- 属于积分商场的一种特殊情况,允许用户在购买某一件商品时,使用积分+货币的方式进行组合支付
- 兑换活动机会
- 虚拟物品的一种,也可以是某一张观影券,用户通过这些虚拟物品,可以得到享受到相关的服务
跨屏积分(一般指大小屏)
- 积分合并
- 策略A:小屏为主体,合并操作后大屏积分划为小屏积分(第一阶段以此策略为主)
- 策略B:所有绑定大屏的小屏,共享使用小屏积分
- 多屏积分的价值比例
积分到期
- 积分有效期,定期清理,清理时机为查询积分或使用积分时
- 即将到期积分,为用户每次登陆时计算一次
积分使用优先级
- 优先使用即将到期积分
积分历史
- 积分获取
- 途径
- 时间
- 业务线
- 积分消耗
- 途径
- 时间
- 业务线
系统台账
- 系统级别的整体积分清单
权益体系
权益体系定义了用户在整个会员系统中能获得的权益集合,包含多种不同的权益类型,用户通过完成任务获得对应的权益
权益种类
核心类
- 成长值
- 积分
其他类
- 优惠券
- 观影券
- 活动参与机会
- 。。。
权益的失效类型
- 指定时间范围(每日清空也算是一种特殊的指定时间范围)
- 获取权益后若干时间后
权益实体
之前在活动模块设计方案中,权益相关模型没有建立,只是使用权益类型和权益数量来描述权益的获得信息。针对会员系统的营销多元化手段,将成长值、积分两大常规权益单独独立出来,其余类型权益统一建立权益实体来维护。
权益实体可对应优惠券、观影券、奖品、活动参与机会(对应活动),采用entity_type和entity_id的常规模式来描述
权益的发放
即时发放
- 积分、成长值等通过会员引擎计算,即时发放
- 会员等级一次性权益发放
- 大多任务的权益为此类型
定期发放
- 会员vip/会员等级的月度权益,以月为时间单位发放
即时获取
- 会员权带来的活动次数增加
- 在参与活动时额外地为他增加一次活动机会
任务体系
所有的权益获得都通过完成任务这一统一概念获得,任务体系作为一个基础能力贯穿会员系统的始终。任务定义了不同种类、不同数量、不同组合的用户操作所能获得权益的规则
关注事件
- 任务的关注事件和消息生产者的topic相关
- 登录任务关注登录事件
- 观影类任务关注用户播放事件
对应权益
- 完成任务可以获得对应的权益
- 成长值、积分属于特殊权益,有别于其他类型权益单独配置
- 一个任务的完成,可配置可获得成长值、可获得积分、可获得其他类型权益(唯一)
- 权益需要配置,指定一个确定的权益,如果只有积分或成长值的权益奖励,那无需配置具体其他类型权益
任务类型
- 单次
- 每日
- 非每日
- 多次(有上线)
- 每日
- 非每日
- 无限次
任务进度
- 对于需要重复完成的操作才能满足条件的任务,进度表可做相关记录
- 已完成的行为量/目标行为量=任务完成进度
- 可支持累计观看、累计登录送XXX等业务
- 随着更多业务场景的引入和复杂度的提升,后续可能需要task detail表支持,验证任务进度的变化
User Center管理侧功能
会员管理
会员查询
- 基本属性
- 地址属性(不同选项卡)
- 标签(来自于用户画像系统)
- 积分信息
- 当前积分,近期过期的积分
- 历史明细
- 黑名单管理
分群管理
- 引用用户画像相关功能
会员等级管理
- 名称、标识、状态、对应成长值、对应权益
- 权益会走任务条线
- 数据以顺序排列
成长任务管理
- 任务的定义
- 关注事件
- 成长值的获得
积分管理
积分查询
- 按会员等级、地区、用户(可选)查询积分
- 查看指定用户积分详细
- 手工积分发放
- 也需要写明细
- 导出
积分任务管理
- 任务的定义
- 关注事件
- 积分的获得
积分台账
- 以日周月的维度展示系统整体积分变化
- 可查询特定时间整体积分的变化
权益管理
权益定义
- 名称、种类、失效类型。。。
- 对应实体类型
权益发放
不通任务驱动,直接手工发放
- 对应权益,指定用户,进行发放,权益发放记录(表)
权益获取记录
- 查询,见模型
User Center相关模型定义
账号
- uc_user_tv为大屏表
- 在服务系统中,该表只会有一个渠道的记录
- 在管理系统中,该表会汇聚所有会员系统对接的渠道对应的大屏账号数据
- 小屏侧由于业务的差异性,根据具体客户端进行模型的分离
uc_user_tv 大屏账号
# 大屏账号表
CREATE TABLE `uc_user_tv` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`member_id` bigint(20) DEFAULT NULL COMMENT '会员ID',
`platform` varchar(32) DEFAULT NULL COMMENT '运营商平台',
`platform_account` varchar(32) DEFAULT NULL COMMENT '运营商平台账号',
`cellphone` varchar(32) DEFAULT NULL COMMENT '手机号',
`username` varchar(32) DEFAULT NULL COMMENT '用户名',
`password` varchar(32) DEFAULT NULL COMMENT '密码 MD5',
`nickname` varchar(32) DEFAULT NULL COMMENT '昵称 Base64',
`image` varchar(1024) DEFAULT NULL COMMENT '头像',
`login_days` int(11) DEFAULT '0' COMMENT '登录天数(总天数)',
`continue_days` int(11) DEFAULT '0' COMMENT '连续登录天数',
`active_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '活跃时间',
`groups` varchar(32) DEFAULT NULL COMMENT '分组 分组ID用逗号分隔',
`tags` varchar(512) DEFAULT NULL COMMENT '标签 标签用逗号分隔',
`login_type` int(11) DEFAULT NULL COMMENT '登录类型 1-运营商隐式登录 2-手机验证登录 3-微信登录 4-QQ登录 5-微博登录 6-苹果登录',
`status` int(11) DEFAULT NULL COMMENT '状态 0-下线 1-上线',
`description` varchar(512) DEFAULT NULL COMMENT '描述',
`create_by` varchar(32) DEFAULT 'system' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(32) DEFAULT 'system' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `platform` (`platform`),
KEY `platform_account` (`platform_account`),
KEY `username` (`username`),
KEY `status` (`status`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='大屏账号表';
uc_user_weixin微信账号
# 微信账号表
CREATE TABLE `uc_user_weixin` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`member_id` bigint(20) DEFAULT NULL COMMENT '用户ID',
`unionid` varchar(32) DEFAULT NULL COMMENT '微信unionid,针对开发者',
`appid` varchar(32) DEFAULT NULL COMMENT '微信appid',
`openid` varchar(32) DEFAULT NULL COMMENT '微信openid,针对微信app',
`status` tinyint(4) DEFAULT '0' COMMENT '关注状态 0 -未关注 1 - 已关注',
`sync_status` tinyint(4) DEFAULT '0' COMMENT '关注同步状态 0-未同步,1-已同步',
`nickname` varchar(32) DEFAULT NULL COMMENT '昵称 base64',
`headimg_url` varchar(1024) DEFAULT NULL COMMENT '头像地址',
`privilege` varchar(32) DEFAULT NULL COMMENT '特权信息',
`refresh_token` varchar(128) DEFAULT NULL COMMENT '刷新凭据',
`access_token` varchar(128) DEFAULT NULL COMMENT '凭据',
`expires_in` int(11) DEFAULT NULL COMMENT '超时(秒)',
`expires_time` datetime DEFAULT NULL COMMENT '超时时间',
`description` varchar(512) DEFAULT NULL COMMENT '描述',
`create_by` varchar(32) DEFAULT 'system' COMMENT '创建者',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_by` varchar(32) DEFAULT 'system' COMMENT '更新者',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `unionid` (`unionid`)
) ENGINE=InnoDB AUTO_INCREMENT=48 DEFAULT CHARSET=utf8 COMMENT='微信账号表';
用户/会员
uc_member_level 会员等级
# 会员等级表
CREATE TABLE `uc_member_level` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(32) NOT NULL COMMENT '标识',
`name` varchar(255) NOT NULL COMMENT '名称',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态 0:未启用;1:启用',
`exp_value` bigint(255) NOT NULL COMMENT '对应成长值',
`level` tinyint(4) NOT NULL DEFAULT '1' COMMENT '等级(不可重复,数字越大等级越高)',
`icon_url` varchar(255) DEFAULT NULL COMMENT '会员徽标',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`task_id` bigint(20) DEFAULT NULL COMMENT '对应任务id,通过此字段可获得该等级所对应的权益',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员等级表';
uc_member
# 会员表
CREATE TABLE `uc_member` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(255) NOT NULL COMMENT '标识',
`type` tinyint(4) NOT NULL COMMENT '类型 1:大屏;2:小屏',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0:不可用;(禁用权益)1:可用',
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称 base64',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`gender` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '性别 0:女;1:男;-1:未知',
`birthday` varchar(32) DEFAULT NULL COMMENT '生日',
`avatar_url` varchar(1024) DEFAULT NULL COMMENT '头像',
`groups` varchar(255) DEFAULT NULL COMMENT '分组信息',
`tags` varchar(1024) DEFAULT NULL COMMENT '标签',
`vip` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:非会员;1:xx会员; 2:xx会员;(数据字典配置)',
`level` tinyint(4) NOT NULL DEFAULT '1' COMMENT '会员等级(对应level表的level字段,非id)',
`exp` bigint(20) DEFAULT NULL COMMENT '成长值',
`points` bigint(20) DEFAULT NULL COMMENT '当前积分',
`due_points` bigint(20) DEFAULT NULL COMMENT '即将到期积分(一个月内)',
`coupon_amount` int(11) DEFAULT NULL COMMENT '优惠券数量',
`due_coupon_amount` int(11) DEFAULT NULL COMMENT '即将过期优惠券数量',
`user_iptv_id` bigint(20) DEFAULT NULL COMMENT 'iptv账号id',
`bind_iptv_platform_type` tinyint(4) DEFAULT NULL COMMENT '绑定IPTV平台 0:未知;1:电信;2:移动;3:联通',
`bind_iptv_time` datetime DEFAULT NULL COMMENT 'iptv账号',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `code` (`code`),
KEY `nickname` (`nickname`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员表';
uc_member_profile 会员基础信息
# 会员基础信息表
CREATE TABLE `uc_member_profile` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`realname` varchar(32) DEFAULT NULL COMMENT '姓名',
`gender` tinyint(4) NOT NULL DEFAULT '-1' COMMENT '性别 0:女; 1:男 -1:未知',
`birthday` date NOT NULL DEFAULT '1900-01-01' COMMENT '生日',
`constellation` varchar(32) DEFAULT NULL COMMENT '星座',
`id_card` varchar(32) NOT NULL DEFAULT '000000000000000000' COMMENT '身份证',
`email` varchar(64) DEFAULT NULL COMMENT '电子邮件',
`country` varchar(32) DEFAULT NULL COMMENT '国家',
`province` varchar(32) DEFAULT NULL COMMENT '省份',
`city` varchar(32) DEFAULT NULL COMMENT '城市',
`district` varchar(32) DEFAULT NULL COMMENT '区县',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='会员基础信息表';
uc_member_address 会员地址信息
# 会员地址信息表
CREATE TABLE `uc_member_address` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '类型 1:家;2:公司;3:学校',
`is_default` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否默认地址',
`sequence` int(11) DEFAULT NULL COMMENT '显示顺序',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0:不可用;1-可用',
`contactor` varchar(64) NOT NULL COMMENT '联系人姓名',
`cellphone` varchar(32) NOT NULL COMMENT '联系人电话',
`country` varchar(64) NOT NULL COMMENT '国家',
`province` varchar(64) NOT NULL COMMENT '省份',
`city` varchar(64) NOT NULL COMMENT '城市',
`district` varchar(64) NOT NULL COMMENT '区县',
`address` varchar(255) NOT NULL COMMENT '地址',
`zip_code` varchar(16) DEFAULT NULL COMMENT '邮编',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `contactor` (`contactor`),
KEY `cellphone` (`cellphone`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员地址信息表';
uc_member_related_info 会员相关人信息
# 会员相关人信息表
CREATE TABLE `uc_member_related_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`type` tinyint(4) DEFAULT NULL COMMENT '人物关系 0:子女;1:父母',
`cellphone` varchar(32) DEFAULT NULL COMMENT '手机号',
`id_card` varchar(32) DEFAULT NULL COMMENT '身份证号',
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`sex` tinyint(4) DEFAULT NULL COMMENT '性别 0:女;1:男;-1:未知',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='会员相关人信息表';
uc_permanent_rights 永久权益
# 永久权益表
CREATE TABLE `uc_permanent_rights` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(64) NOT NULL COMMENT '标识',
`name` varchar(255) NOT NULL COMMENT '名称',
`type` tinyint(4) DEFAULT NULL COMMENT '永久权益类型 0:vip;1:会员等级',
`level` tinyint(4) DEFAULT NULL COMMENT '等级(当权益类型为vip时,对应vip值,当权益类型为会员等级时,对应等级index)',
`item_discount` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品折扣,10代表10% off,范围为0-100',
`extra_points` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '额外积分比率,范围为0-1000',
`ad_disabled` tinyint(4) NOT NULL DEFAULT '0' COMMENT '免广告',
`extra_activity_ticket` tinyint(4) NOT NULL DEFAULT '0' COMMENT '额外活动参与机会',
`free_trial` tinyint(4) NOT NULL DEFAULT '0' COMMENT '免费试看',
`zone_sds` tinyint(4) NOT NULL DEFAULT '0' COMMENT '上电视专区权益',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='永久权益表';
任务/权益
抽象统一的任务/权益模型,覆盖成长值任务、积分任务及其他任务
tr_rights 权益
# 权益表
CREATE TABLE `tr_rights` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(64) NOT NULL COMMENT '标识',
`type` tinyint(4) NOT NULL COMMENT '类型 1:实体类 (预留字段)',
`device_type` tinyint(4) DEFAULT NULL COMMENT '终端类型 0:大屏;1:微信小程序/公众号;2:App',
`entity_type` varchar(64) NOT NULL COMMENT '权益的实体类型',
`entity_id` bigint(20) NOT NULL COMMENT '实体id',
`image` varchar(1024) DEFAULT NULL COMMENT '图片',
`images` varchar(1024) DEFAULT NULL COMMENT '图片',
`description` varchar(1024) DEFAULT NULL COMMENT '描述',
`valid_time` datetime DEFAULT NULL COMMENT '生效时间,为null表示获取后立即生效,不为空时,表示特定的生效时间',
`expire_time` bigint(20) DEFAULT NULL COMMENT '失效时间,空为不失效,否则为获得权益后直到失效的毫秒数',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `entity_type` (`entity_type`),
KEY `entity_id` (`entity_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权益表';
tr_task_template 任务模板
# 任务模板表
CREATE TABLE `tr_task_template` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`code` varchar(64) DEFAULT NULL COMMENT '标识',
`name` varchar(255) DEFAULT NULL COMMENT '名称',
`event` varchar(255) DEFAULT NULL COMMENT '关注事件(和MQ topic相关)',
`description` varchar(1020) COMMENT '描述',
`status` tinyint(4) DEFAULT 1 COMMENT '状态 0:失效;1:生效',
`type` tinyint(4) DEFAULT 0 COMMENT '类型 0:活动任务模板',
`params` text DEFAULT NULL COMMENT '模板参数,json',
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='任务模板表';
tr_task 任务
CREATE TABLE `tr_task` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(255) NOT NULL COMMENT '标识',
`name` varchar(255) NOT NULL COMMENT '名称',
`task_template_id` bigint(20) NOT NULL COMMENT '任务模板id',
`task_repeat_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '任务重复类型,-1:不限次;1:单次;>1:多次',
`task_daily_reset` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务每日重置 0:不重置;1:重置',
`action_amount` int(11) NOT NULL DEFAULT '1' COMMENT '行为量(完成此任务需要多少次相同行为的触发)',
`valid_time` datetime DEFAULT NULL COMMENT '任务生效时间',
`expire_time` datetime DEFAULT NULL COMMENT '任务失效时间',
`sequence` int(11) DEFAULT NULL COMMENT '显示顺序',
`reward_exp` bigint(20) NOT NULL DEFAULT '0' COMMENT '获得成长值',
`reward_points` bigint(20) NOT NULL DEFAULT '0' COMMENT '获得积分(当积分获得类型为随机时,代表最小获得积分数)',
`reward_points_expire_time` bigint(20) DEFAULT NULL COMMENT '积分过期时间(空为不过期)',
`points_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '积分获取类型 0:定值;1:随机',
`reward_max_points` bigint(4) DEFAULT NULL COMMENT '随机积分最大值',
`groups` varchar(255) DEFAULT NULL COMMENT '能够获取该任务的用户分组,为空则都能获取',
`rights_send_strategy` tinyint(4) NOT NULL DEFAULT '0' COMMENT '权益发放策略 0:立即发放;1:次日发放;2:次月发放',
`member_exclusive` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员专享 0:非会员专享 1:会员专享',
`member_level` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员等级门槛(0表示无门槛)',
`member_vip` tinyint(4) DEFAULT NULL COMMENT '会员vip门槛(0表示没有门槛)',
`rights_id` bigint(20) DEFAULT NULL COMMENT '权益id',
`rights_amount` int(11) DEFAULT NULL COMMENT '权益数量(活动机会次数、优惠券数量、奖品数量)',
`rights2_id` bigint(20) DEFAULT NULL COMMENT '权益2id',
`rights2_amount` int(11) DEFAULT NULL COMMENT '权益2数量',
`rights3_id` bigint(20) DEFAULT NULL COMMENT '权益3id',
`rights3_amount` int(255) DEFAULT NULL COMMENT '权益3数量',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0:失效;1:生效',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
KEY `rights_id` (`rights_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='任务表';
tr_rights_history 权益发放记录
# 权益发放记录表
CREATE TABLE `tr_rights_histroy` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`rights_id` bigint(20) DEFAULT NULL COMMENT '权益id',
`member_id` bigint(20) DEFAULT NULL COMMENT '会员id',
`operator_id` bigint(20) DEFAULT NULL COMMENT '操作者id(手动发放时保存)',
`operator_name` varchar(255) DEFAULT NULL COMMENT '操作者名称(手动发放时保存)',
`send_time` datetime DEFAULT NULL COMMENT '发放时间',
`expire_time` datetime DEFAULT NULL COMMENT '失效时间',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='权益发放记录';
成长值
uc_exp_detail 成长值历史
# 成长值明细表
CREATE TABLE `uc_exp_detail` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(255) NOT NULL COMMENT '标识',
`app_code` varchar(64) DEFAULT NULL COMMENT '应用code',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`account_id` bigint(20) DEFAULT NULL COMMENT '账号id',
`original_exp` bigint(20) NOT NULL COMMENT '原始成长值',
`result_exp` bigint(20) NOT NULL COMMENT '结果成长值',
`exp` bigint(20) NOT NULL COMMENT '成长值变化,一般为正数',
`device_type` tinyint(4) NOT NULL COMMENT '设备类型 1:大屏;2:小屏(微信)3.小屏(xx)',
`evt_type` tinyint(4) NOT NULL DEFAULT '99' COMMENT '行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;98:系统操作;99:其他',
`order_id` bigint(20) DEFAULT '0' COMMENT '订单id(针对订购操作)',
`media_id` bigint(20) DEFAULT '0' COMMENT '节目id(针对观影操作)',
`activity_id` bigint(20) DEFAULT NULL COMMENT '活动id(针对参与活动)',
`description` varchar(255) NOT NULL COMMENT '成长值变化描述,用于管理侧显示',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `evt_type` (`evt_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成长值明细表';
uc_exp_detail_history 成长值明细历史
# 成长值明细历史表
CREATE TABLE `uc_exp_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(255) NOT NULL COMMENT '标识',
`app_code` varchar(64) DEFAULT NULL COMMENT '应用code',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`account_id` bigint(20) DEFAULT NULL COMMENT '账号id',
`original_exp` bigint(20) NOT NULL COMMENT '原始成长值',
`result_exp` bigint(20) NOT NULL COMMENT '结果成长值',
`exp` bigint(20) NOT NULL COMMENT '成长值变化,一般为正数',
`device_type` tinyint(4) NOT NULL COMMENT '设备类型 1:大屏;2:小屏(微信)3.小屏(xx)',
`evt_type` tinyint(4) NOT NULL DEFAULT '99' COMMENT '行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;98:系统操作;99:其他',
`order_id` bigint(20) DEFAULT '0' COMMENT '订单id(针对订购操作)',
`media_id` bigint(20) DEFAULT '0' COMMENT '节目id(针对观影操作)',
`activity_id` bigint(20) DEFAULT NULL COMMENT '活动id(针对参与活动)',
`description` varchar(255) NOT NULL COMMENT '成长值变化描述,用于管理侧显示',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `evt_type` (`evt_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='成长值明细历史表';
积分
uc_points_detail 积分明细
# 积分历史表
CREATE TABLE `uc_points_detail` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(64) NOT NULL COMMENT '标识',
`app_code` varchar(64) DEFAULT NULL COMMENT '应用code',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`account_id` bigint(20) DEFAULT NULL COMMENT '账号id',
`original_points` bigint(20) NOT NULL COMMENT '原始积分',
`result_points` bigint(20) NOT NULL COMMENT '结果积分',
`points` bigint(20) NOT NULL COMMENT '积分变化,积分获得为正,积分消耗为负',
`device_type` tinyint(4) NOT NULL COMMENT '设备类型 1:大屏;2:小屏(微信)3.小屏(xx)',
`evt_type` tinyint(4) NOT NULL DEFAULT '99' COMMENT '行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;30:积分兑换商品;98:系统操作;99:其他',
`order_id` bigint(20) DEFAULT '0' COMMENT '订单id(针对订购操作)',
`media_id` bigint(20) DEFAULT '0' COMMENT '节目id(针对观影操作)',
`activity_id` bigint(20) DEFAULT NULL COMMENT '活动id(针对参与活动)',
`item_id` bigint(20) DEFAULT NULL COMMENT '商品id(积分兑换,同时写入订单id)',
`description` varchar(255) NOT NULL COMMENT '积分变化描述,用于管理侧显示',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `evt_type` (`evt_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='积分明细表';
uc_points_detail_history 积分明细历史
# 积分历史表
CREATE TABLE `uc_points_detail_history` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(64) NOT NULL COMMENT '标识',
`app_code` varchar(64) DEFAULT NULL COMMENT '应用code',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`account_id` bigint(20) DEFAULT NULL COMMENT '账号id',
`original_points` bigint(20) NOT NULL COMMENT '原始积分',
`result_points` bigint(20) NOT NULL COMMENT '结果积分',
`points` bigint(20) NOT NULL COMMENT '积分变化,积分获得为正,积分消耗为负',
`device_type` tinyint(4) NOT NULL COMMENT '设备类型 1:大屏;2:小屏(微信)3.小屏(xx)',
`evt_type` tinyint(4) NOT NULL DEFAULT '99' COMMENT '行为事件类型 1:登录;2:观影;3:参与活动;4:订购;10:跨屏绑定;11:积分转移;98:系统操作;99:其他',
`order_id` bigint(20) DEFAULT '0' COMMENT '订单id(针对订购操作)',
`media_id` bigint(20) DEFAULT '0' COMMENT '节目id(针对观影操作)',
`activity_id` bigint(20) DEFAULT NULL COMMENT '活动id(针对参与活动)',
`description` varchar(255) NOT NULL COMMENT '积分变化描述,用于管理侧显示',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`),
KEY `evt_type` (`evt_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='积分明细历史表';
uc_points_available 可用积分表
# 可用积分表
CREATE TABLE `uc_points_available` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`code` varchar(64) NOT NULL COMMENT '标识',
`points_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '积分类型 0:通用型',
`device_type` tinyint(4) DEFAULT NULL COMMENT '设备类型 1:大屏;2:小屏(微信)3.小屏(xx)',
`member_id` bigint(20) NOT NULL COMMENT '会员id',
`points` bigint(20) NOT NULL COMMENT '积分值',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
`description` varchar(255) NOT NULL COMMENT '描述',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `member_id` (`member_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='可用积分表';
uc_points_standing_book 积分台账
# 积分台账表
CREATE TABLE `uc_points_standing_book` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`points_produce` bigint(20) NOT NULL COMMENT '积分生产',
`points_consume` bigint(20) NOT NULL COMMENT '积分消耗',
`points_available` bigint(20) NOT NULL COMMENT '可用总积分',
`points_expire` bigint(20) NOT NULL COMMENT '积分过期',
`day` varchar(16) DEFAULT NULL COMMENT '日期',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='积分台账表';
优惠券
使用商城系统中的营销模块,基本没有改变
m_coupon 优惠券
#优惠券表
CREATE TABLE `m_coupon` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`code` varchar(64) NOT NULL COMMENT '标识',
`title` varchar(255) NOT NULL COMMENT '名称',
`images` varchar(1024) DEFAULT NULL COMMENT '图片',
`stock` int(11) DEFAULT '-1' COMMENT '发行量,-1代表不限量',
`remain_stock` int(11) DEFAULT '-1' NULL COMMENT '剩余量,-1代表不限量',
`use_type` tinyint(4) DEFAULT '1' COMMENT '优惠形式:1:金额;2:折扣',
`denomination` decimal(10,2) DEFAULT NULL COMMENT '面额',
`discount` decimal(10,2) DEFAULT NULL COMMENT '折扣',
`user_range` tinyint(4) DEFAULT '2' COMMENT '适用用户范围:1:新用户;2:全体用户;3:指定用户分组',
`groups` varchar(1024) DEFAULT NULL COMMENT '用户分组,逗号分隔',
`collect_limit` tinyint(4) DEFAULT '1' COMMENT '限领次数 -1:无限次; >0:具体次数',
`threshold_type` tinyint(4) DEFAULT '1' COMMENT '适用门槛:1:无门槛;2:满减形式',
`amount_threshold` decimal(10,2) DEFAULT null COMMENT '满减门槛',
`item_range` tinyint(4) DEFAULT '1' COMMENT '产品范围:1:全部商品;2:指定商品',
`effect_type` tinyint(4) DEFAULT null COMMENT '生效形式:1:固定日期;2:相对日期',
`start_time` datetime DEFAULT NULL COMMENT '生效时间',
`expire_time` datetime DEFAULT NULL COMMENT '过期时间',
`valid_days` int(11) DEFAULT NULL COMMENT '自领取当日,几天内有效',
`description` varchar(255) DEFAULT NULL COMMENT '使用说明',
`status` tinyint(4) DEFAULT null COMMENT '状态 0:未开始,1:启用;2:停用',
`member_exclusive` tinyint(4) DEFAULT null COMMENT '会员专享 0:非会员专享 1:会员专享',
`member_level` tinyint(4) DEFAULT null COMMENT '会员等级门槛(0:表示无门槛)',
`member_vip` tinyint(4) DEFAULT null COMMENT '会员vi门槛(0:表示无门槛)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=' 优惠券表';
m_coupon_history
#优惠券领取、使用历史记录表
CREATE TABLE `m_coupon_history` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
`coupon_id` bigint DEFAULT NULL COMMENT '优惠券id',
`user_id` bigint DEFAULT NULL COMMENT '领券用户id(对应账号)',
`coupon_code` varchar(64) DEFAULT NULL COMMENT '优惠券code',
`user_nickname` varchar(255) DEFAULT NULL COMMENT '领取人昵称',
`receive_time` datetime DEFAULT NULL COMMENT '领取时间',
`expire_time` datetime DEFAULT NULL COMMENT '失效时间',
`use_status` int DEFAULT NULL COMMENT '使用状态 0:未使用;1:已使用;-1:已过期',
`use_time` datetime DEFAULT NULL COMMENT '使用时间',
`order_detail_id` bigint DEFAULT NULL COMMENT '订单详情id',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_member_id` (`user_id`) USING BTREE,
KEY `idx_coupon_id` (`coupon_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='优惠券领取、使用历史记录表';
User Center 成长值/积分计算引擎,API
会员成长/积分计算引擎内置于User Center中,负责异步处理成长值、积分的获得,一般为消息队列的消费者,通过不同的事件进行驱动,数据库指向服务侧
会员引擎统一API数据库指向管理侧,在中央统一处理积分的消耗,避免多端的数据一致性问题,具体部署时应考虑系统压力
简单来说,积分的获得实时性要求不高,由服务侧通过消息队列,异步更新到中央数据库中,积分的消耗由于牵涉到并发,数据一致性问题,直接请求api,中央统一处理保证数据的一致性
引擎功能
会员引擎架构
积分过期、积分消耗、积分明细查询的技术实现
积分明细表记录了用户积分的增减情况,需要展现给用户,所以无法在这上面下手,为此新添加了一张表来记录当前可用积分明细。该表的关键字段如下:
字段 | 含义 |
---|---|
积分值 | 该记录的积分值 |
创建时间 | 该积分的生效时间 |
过期时间 | 该积分的过期时间 |
积分过期
- 可用积分表(uc_points_available)删除过期记录
- 积分明细表(uc_points_detail)添加一条过期明细,即负的积分
- 积分总额表(uc_points)更新为当前积分总额
每天定时扫描可用积分表,将过期积分删除,并及时更新积分明细表和积分总额表
积分使用
商城服务体系
商品体系
商品整个设计见mall-service相关文档
- 支持商品会员价
- vip/会员等级权益(折扣)
- 会员专属价格(不建议等级差异化,过于复杂)
- 上述两者最好二选一,或者有会员专属价格的优先计算,不再使用vip/会员等级权益折扣
- 支持会员专享商品
- 角标
- 下单接口一定要区分领券购买和普通购买
营销体系
模型变更
i_item 商品
# 会员专享
ALTER TABLE i_item ADD COLUMN member_exclusive tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员专享 0:非会员专享 1:会员专享' AFTER is_unite_tail;
ALTER TABLE i_item ADD COLUMN member_price decimal(10,2) NOT NULL COMMENT '会员价格' AFTER price;
i_sku 商品规格
# 会员价
ALTER TABLE i_sku ADD COLUMN member_price decimal(10,2) DEFAULT NULL COMMENT '会员价格' AFTER promotion_price;
m_coupon
# 会员专享
ALTER TABLE `m_coupon` ADD COLUMN `member_exclusive` tinyint(4) NULL DEFAULT 0 COMMENT '会员专享 0:非会员专享 1:会员专享' AFTER `effect_type`;
# 会员等级门槛
ALTER TABLE `m_coupon` ADD COLUMN `member_level` tinyint(4) NULL DEFAULT 0 COMMENT '会员等级门槛(0表示无门槛)' AFTER `member_exclusive`;
# 会员vip门槛
ALTER TABLE `m_coupon` ADD COLUMN `member_vip` tinyint(4) NULL DEFAULT 0 COMMENT '会员vip门槛(0表示没有门槛)' AFTER `member_level`;
活动服务体系
为了区分IPTV常规营销活动和小屏侧主题活动(暂定名)或赛事,将原有的活动模型拆分为两个独立的模型,明晰模型定位
营销活动
常规的IPTV影响活动,现在主要分为三大类,投票、抽奖、闯关。后续可根据实际情况扩展。
此部分有单独文档定义,这里不再赘述。
主题活动
- OMO新版本的核心
- 支持报名相关配置
- 活动的参与条件
- 流程的完整定义(报名、参与、审核、支付、证书)
ugc
- ugc是主题活动关联的主体,不再关联原先的营销活动
- ugc支持作品、花絮不同种类的支持
- ugc的投票已支持
- ugc的点赞
- ugc的评论(短期不做)
- 动态???
报名
- 报名费统一采用商品支持,即主题活动可关联商品(开启报名为前提)
- 活动邀请券使用商品优惠券的方式实现
- 全额抵扣
- 部分抵扣
- 优惠券受会员等级约束
商品包装
主题活动可作为商品的一种包装形式,可支持特殊商品的定制化呈现
- 普通商品的包装
- 报名费的包装
主题活动专区
- OMO新版本需求核心“小演员”,“上电视”其实就是专区的概念
- 专区类似栏目,支持对主题活动的编排
模型定义
act_theme_activity_section 主题活动专区
# 主题活动专区表
CREATE TABLE `act_theme_activity_section` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(32) NOT NULL COMMENT '标识',
`name` varchar(255) NOT NULL COMMENT '名称',
`description` varchar(1000) DEFAULT NULL COMMENT '描述',
`sequence` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序',
`status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '状态 0:下线;1:上线',
`member_exclusive` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员专享 0:非会员专享 1:会员专享',
`member_level` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员等级门槛(0表示没有门槛)',
`member_vip` tinyint(4) DEFAULT NULL COMMENT '会员vip门槛(0表示没有门槛)',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主题活动专区表';
act_theme_activity 主题活动
# 主题活动表
CREATE TABLE `act_theme_activity` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(32) NOT NULL COMMENT '标识',
`name` varchar(255) NOT NULL COMMENT '名称',
`description` varchar(1000) DEFAULT NULL COMMENT '描述',
`status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态 0:下线;1:上线',
`sequence` int(11) NOT NULL DEFAULT '0' COMMENT '显示顺序',
`section_id` bigint(20) NOT NULL COMMENT '专区id',
`member_exclusive` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员专享 0:非会员专享 1:会员专享',
`member_level` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员等级门槛(0表示无门槛)',
`member_vip` tinyint(4) NOT NULL DEFAULT '0' COMMENT '会员vip门槛(0表示没有门槛)',
`app_id` bigint(20) NOT NULL COMMENT '所属应用',
`start_time` datetime NOT NULL COMMENT '活动开始时间',
`end_time` datetime NOT NULL COMMENT '活动结束时间',
`register_switch` tinyint(4) NOT NULL DEFAULT '1' COMMENT '报名开关 0:关闭报名环节;1:开启报名环节',
`register_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '报名类型 0:资质类;1:直通类',
`register_info` varchar(1000) DEFAULT NULL COMMENT '报名信息(json格式)',
`register_ugc_type` tinyint(4) DEFAULT NULL COMMENT '报名作品类型 0:图片;1:视频;10:图片或视频',
`register_start_time` datetime DEFAULT NULL COMMENT '报名开始时间',
`register_end_time` datetime DEFAULT NULL COMMENT '报名截止时间',
`item_id` bigint(20) DEFAULT NULL COMMENT '商品id(主题活动/报名费可视作一个商品,只有在开启报名时有效)',
`vote_activity_id` bigint(20) DEFAULT NULL COMMENT '投票活动id(当主题活动有投票环节时启用)',
`group_range` varchar(500) DEFAULT NULL COMMENT '活动分组列表,多个使用逗号分隔',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='主题活动表';
模型变更
x_ugc
# 会员id
ALTER TABLE x_ugc ADD COLUMN member_id bigint(20) COMMENT '会员id' AFTER user_id;
# ugc
ALTER TABLE x_ugc ADD COLUMN category tinyint(4) COMMENT '类别 0:作品;1:花絮' AFTER type;
# 审核原因
ALTER TABLE `x_ugc` ADD COLUMN `audit_remark` varchar(2048) NULL COMMENT '审核原因' AFTER `comment_number`;
act_user_sign_up
# 审核原因
ALTER TABLE `act_user_sign_up` ADD COLUMN `audit_remark` varchar(2048) NULL COMMENT '审核原因' AFTER `qualification_image`;
CMS系统
推荐位编排
支持上电视专区的瀑布流配置
- 支持主题活动跳转
- 支持主题活动专区跳转