会员系统概要设计1022.md 50.5 KB

会员系统概要设计和细化分解

建设目的与背景

建立融合、跨平台的会员体系,对IPTV、互联网App、移动终端平台进行统一会员管理。对用户体系实现统一的会员认证,有效管理全平台会员数据。融合用户中心、Boss系统、商城服务体系、活动系统、任务权益体系、积分/成长体系、会员画像系统,提供多元化的产品形态,打造会员体系与运营模式的智能化平台,通过智能化的分析,把会员与平台的影片、产品、活动、增值业务等建立深度的联系,提高平台的服务能力,推动用户业务的使用,并为产品运营提供强有力的支撑。

近期目标交付

四川金熊猫OMO

核心需求
  • 核心是小屏

  • 会员权益体系,不同vip会员,权益不同,向下覆盖(核心是不同vip标识,弱化会员等级)

  • 主推主题活动

    • 报名环节(报名费,会员差异,商品关联)
    • 参与环节(ugc上载,审核,证书)
    • 数据环节(数据统计)
  • 积分体系,暂时只对应商城

重数会员系统

核心需求
  • 核心是大屏(至少短时间是大屏)
  • 重点关注会员成长体系、会员积分体系,注重会员等级,vip标识可能唯一
  • 任务权益体系
  • 积分商城

整体架构

整个会员系统由用户中心、Boss系统、商城系统、活动系统、用户画像系统组成,他们的整体架构如下:

User Center

用户中心,是整个会员系统的核心,负责用户的统一登录、鉴权、积分及权益

用户/账号体系(多屏账号)

账号:各业务系统拥有的独立的账号体系,如大屏的iptv账号,微信的openid或unionid,移动端app的账号

用户:对应“自然人”的概念,为了实现跨屏账号体系而抽象的用户概念,是会员体系的依附(会员是特殊身份的用户)

会员概要(等级/vip)
  • 会员是特殊的一类用户,本质上也是用户
  • 成为会员的方式
    • 购买会员
    • 订阅、关注
    • 。。。
  • 会员vip标识
    • 支持不同层级vip的界定,差异化服务
    • vip专享权益
    • 与会员等级独立,两个维度
  • 会员等级
    • 通过会员成长值驱动,不依赖于会员购买
    • 基于等级的权益体系
  • 会员的生效状态
    • 满足条件成为会员
    • 不满足条件会员失效
    • 使用vip标识来实现
  • 会员和成长值的关系
    • 无直接联系
    • 会员的成长值加速
    • 会员等级和成长值加速的关系
会员信息
  • 基本信息
    • 注册时间、注册手机号、性别、会员等级、会员积分、会员余额等
  • 地址信息
    • 收货地址
  • 积分信息
    • 变动明细
  • 优惠券信息
    • 优惠券明细及状态,优惠券金额、使用条件、领取时间、使用时间、有效期及使用状态等
    • 优惠券的信息一般和账户挂钩,此处需要关联查询
  • 订单信息
    • 用户对应账号的订单列表
  • 子女信息
    • 子女姓名,身份证,年龄

(会员)成长体系

成长值:作为会员成长体系中的核心数据,是贯穿整个会员体系重要依据之一。它直接或间接和会员等级、会员权益相关。

image-20210927114350241
成长值的来源
  • 日常登录
  • 观影
  • 参与活动
  • 订购
  • 后台赠送
  • ...
成长值的消耗
  • 单向模式:只增加不减少,初期就采用这种简单的模式
    • 一些产品中成长值一直累积,伴随的会员等级一直成长,例如:QQ等级随着在线时间的增加而成长,从星星到月亮到太阳最后到皇冠,这种会员等级是单向的,永远朝着更高级别成长。这种规则下,成长值是无消耗的
  • 双向模式:会根据规则增加和减少,也会影响对应的会员等级变化,一般适用于粘性较高,有一定用户基础的产品
    • 一些产品充成长值是双向的,根据规则可增加可减少,对应的会员等级也会动态的变化
    • 典型的例如王者荣耀的段位排名机制
    • 还有在电商体系中
      • 用户获得成长值的行为失效需要扣减对应成长值,例如:退货、删除评价等行为
      • 后台人工干预扣除成长值等
    • 一些平台也会在一个特定的时间周期评估用户的各种数据,根据规则重新计算出成长值,然后得出会员等级
成长值与会员等级

成长值与会员等级有确定的对应关系,当成长值累计到一定数值时,会员等级会随之提升

会员等级

尊享会员、钻石会员...(产品侧定义)

会员vip标识
  • 不同付费档次(OMO)
    • 非会员
    • 团粉(关注)
    • 上电视会员(99元购买)
    • 小演员普通版(999元购买)
    • 小演员黄金版(5999元购买)
会员等级/vip权益
  • 一次性奖励权益
    • 达到对应等级所能获得的奖励,可以是积分、优惠券、其他实体
    • 采用任务-权益体系实现
  • 解锁特权
    • 下单折扣
    • 包邮
    • 免费观影
    • 积分加成
    • 。。。
成长值风控(第一阶段不做)
  • 成长值上限
    • 在设置成长值来源时可针对每个来源设置每日获取上限值,同样也可针对每个账号设置每日获取上限值,超过上限时完成任务不再增加成长值
  • 异常数据报警
    • 通过系统监控所有会员的成长值增加&消耗情况,例如某个会员的成长值突然在短时间内剧增,增幅已经达到系统预警,则需要对该会员的具体数据&行为进行分析
  • 黑白名单
    • 黑名单无法获得成长值
    • 白名单特殊待遇
  • 人工干预
    • 针对部分系统无法自动处理的场景,可在开发时预留成长值更改接口,运营人员可在后台手动扣减/奖励用户的成长值
成长值明细/历史

详见成长值/积分计算引擎章节

积分体系

积分体系和会员成长体系最基本的模型是一样的,只不过从简单到复杂的演变的过程中表现出了不同的特点。积分可以抽象地理解为现实生活中的货币,货币有发行和回收机制,积分同样也有发行和回收机制,不然都会导致通货膨胀

image-20210927141420693
积分价值
  • 虚拟货币,需要预先调研定义其货币价值
  • 通过成本管控,防止通货膨胀和营销亏损
积分获取/风控
  • 同成长值获取,不在赘述
积分消耗
  • 积分商城
    • 使用商城服务,消耗积分获得商品
  • 抵扣购物
    • 属于积分商场的一种特殊情况,允许用户在购买某一件商品时,使用积分+货币的方式进行组合支付
  • 兑换活动机会
    • 虚拟物品的一种,也可以是某一张观影券,用户通过这些虚拟物品,可以得到享受到相关的服务
跨屏积分(一般指大小屏)
  • 积分合并
    • 策略A:小屏为主体,合并操作后大屏积分划为小屏积分(第一阶段以此策略为主)
    • 策略B:所有绑定大屏的小屏,共享使用小屏积分
  • 多屏积分的价值比例
积分到期
  • 积分有效期,定期清理,清理时机为查询积分或使用积分时
  • 即将到期积分,为用户每次登陆时计算一次
积分使用优先级
  • 优先使用即将到期积分
积分历史
  • 积分获取
    • 途径
    • 时间
    • 业务线
  • 积分消耗
    • 途径
    • 时间
    • 业务线
系统台账
  • 系统级别的整体积分清单

权益体系

权益体系定义了用户在整个会员系统中能获得的权益集合,包含多种不同的权益类型,用户通过完成任务获得对应的权益

权益种类
核心类
  • 成长值
  • 积分
其他类
  • 优惠券
  • 观影券
  • 活动参与机会
  • 。。。
权益的失效类型
  • 指定时间范围(每日清空也算是一种特殊的指定时间范围)
  • 获取权益后若干时间后
权益实体

之前在活动模块设计方案中,权益相关模型没有建立,只是使用权益类型和权益数量来描述权益的获得信息。针对会员系统的营销多元化手段,将成长值、积分两大常规权益单独独立出来,其余类型权益统一建立权益实体来维护。

权益实体可对应优惠券、观影券、奖品、活动参与机会(对应活动),采用entity_type和entity_id的常规模式来描述

权益的发放
即时发放
  • 积分、成长值等通过会员引擎计算,即时发放
  • 会员等级一次性权益发放
  • 大多任务的权益为此类型
定期发放
  • 会员vip/会员等级的月度权益,以月为时间单位发放
即时获取
  • 会员权带来的活动次数增加
    • 在参与活动时额外地为他增加一次活动机会

任务体系

所有的权益获得都通过完成任务这一统一概念获得,任务体系作为一个基础能力贯穿会员系统的始终。任务定义了不同种类、不同数量、不同组合的用户操作所能获得权益的规则

关注事件
  • 任务的关注事件和消息生产者的topic相关
    • 登录任务关注登录事件
    • 观影类任务关注用户播放事件
对应权益
  • 完成任务可以获得对应的权益
  • 成长值、积分属于特殊权益,有别于其他类型权益单独配置
    • 一个任务的完成,可配置可获得成长值、可获得积分、可获得其他类型权益(唯一)
  • 权益需要配置,指定一个确定的权益,如果只有积分或成长值的权益奖励,那无需配置具体其他类型权益
任务类型
  • 单次
    • 每日
    • 非每日
  • 多次(有上线)
    • 每日
    • 非每日
  • 无限次
任务进度
  • 对于需要重复完成的操作才能满足条件的任务,进度表可做相关记录
  • 已完成的行为量/目标行为量=任务完成进度
  • 可支持累计观看、累计登录送XXX等业务
  • 随着更多业务场景的引入和复杂度的提升,后续可能需要task detail表支持,验证任务进度的变化

User Center管理侧功能

会员管理

会员查询
  • 基本属性
  • 地址属性(不同选项卡)
  • 标签(来自于用户画像系统)
  • 积分信息
    • 当前积分,近期过期的积分
    • 历史明细
  • 黑名单管理
分群管理
  • 引用用户画像相关功能
会员等级管理
  • 名称、标识、状态、对应成长值、对应权益
    • 权益会走任务条线
  • 数据以顺序排列
成长任务管理
  • 任务的定义
    • 关注事件
    • 成长值的获得

积分管理

积分查询
  • 按会员等级、地区、用户(可选)查询积分
  • 查看指定用户积分详细
  • 手工积分发放
    • 也需要写明细
  • 导出
积分任务管理
  • 任务的定义
    • 关注事件
    • 积分的获得
积分台账
  • 以日周月的维度展示系统整体积分变化
  • 可查询特定时间整体积分的变化

权益管理

权益定义
  • 名称、种类、失效类型。。。
  • 对应实体类型
权益发放

不通任务驱动,直接手工发放

  • 对应权益,指定用户,进行发放,权益发放记录(表)
权益获取记录
  • 查询,见模型

User Center相关模型定义

image-20210927191840834

账号

  • 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,中央统一处理保证数据的一致性

引擎功能

image-20210927153528449

会员引擎架构

image-20210927181349132

积分过期、积分消耗、积分明细查询的技术实现

积分明细表记录了用户积分的增减情况,需要展现给用户,所以无法在这上面下手,为此新添加了一张表来记录当前可用积分明细。该表的关键字段如下:

字段 含义
积分值 该记录的积分值
创建时间 该积分的生效时间
过期时间 该积分的过期时间
积分过期
  • 可用积分表(uc_points_available)删除过期记录
  • 积分明细表(uc_points_detail)添加一条过期明细,即负的积分
  • 积分总额表(uc_points)更新为当前积分总额

每天定时扫描可用积分表,将过期积分删除,并及时更新积分明细表和积分总额表

积分使用

image-20210927155637989

商城服务体系

商品体系

商品整个设计见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系统

推荐位编排

支持上电视专区的瀑布流配置

  • 支持主题活动跳转
  • 支持主题活动专区跳转

boss系统