本篇文章是基于原先写的一篇文章 进行的另一种补充方案,原先的每次抽奖都会进行计算一次概率和奖品,内存消耗比较大,不太建议使用!本次方案借鉴了腾讯红包先计算在分发策略极大的提高系统的效率和减少内存的消耗。下面我给大家介绍一下本次抽奖补充方案内容。
一、思路
1.表结构:
drop table T_LOTTERY_MANAGEMENT cascade constraints;
/*==============================================================*/
/* Table: T_LOTTERY_MANAGEMENT 抽奖活动管理 */
/*==============================================================*/
create table T_LOTTERY_MANAGEMENT
(
LOTTERY_ID VARCHAR2(50) not null,
LOTTERY_NAME VARCHAR2(50),
SPONSOR_POINT INT,
LOTTERY_TYPE INT,
LOTTERY_POINT INT,
START_DATE DATE,
STOP_DATE DATE,
LOTTERY_TOTAIL_NUM INT,
LOTTERY_SURPLUS_NUM INT,
LOTTERY_NUM INT,
LOTTERY_OVER INT,
CREATE_TIME DATE,
constraint PK_T_LOTTERY_MANAGEMENT primary key (LOTTERY_ID)
);
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_ID is
'抽奖活动编号';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_NAME is
'活动名称';
comment on column T_LOTTERY_MANAGEMENT.SPONSOR_POINT is
'公司赞助积分';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_TYPE is
'公司赞助(0否1是)';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_POINT is
'每次抽奖消耗积分';
comment on column T_LOTTERY_MANAGEMENT.START_DATE is
'活动开始时间';
comment on column T_LOTTERY_MANAGEMENT.STOP_DATE is
'活动结束时间';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_TOTAIL_NUM is
'抽奖总次数';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_SURPLUS_NUM is
'抽奖剩余次数';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_NUM is
'已抽奖次数';
comment on column T_LOTTERY_MANAGEMENT.LOTTERY_OVER is
'抽奖次数是否耗尽(0未耗尽1已耗尽)';
comment on column T_LOTTERY_MANAGEMENT.CREATE_TIME is
'创建时间';
drop table T_PRIZE cascade constraints;
/*==============================================================*/
/* Table: T_PRIZE 奖品表 */
/*==============================================================*/
create table T_PRIZE
(
ID INT not null,
LOTTERY_ID VARCHAR(50),
PRIZE_TYPE INT,
CLASS_ID INT,
PRODUCT_ID VARCHAR(50),
PRODUCT_ATTRIBUTES_ID VARCHAR(50),
PRIZE_NAME VARCHAR(50),
PRIZE_PRICE DECIMAL(7,2),
POINT INT,
PRIZE_NUM INT,
PRIZE_TOTAIL_POINT INT,
PRIZE_LEV INT,
PRIZE_PROBABILITY DECIMAL(6,4),
REMARKS CLOB,
CREATE_TIME DATE,
constraint PK_T_PRIZE primary key (ID)
);
comment on column T_PRIZE.ID is
'自增ID';
comment on column T_PRIZE.LOTTERY_ID is
'抽奖活动编号';
comment on column T_PRIZE.PRIZE_TYPE is
'奖品类型';
comment on column T_PRIZE.CLASS_ID is
'虚拟奖品分类ID';
comment on column T_PRIZE.PRODUCT_ID is
'虚拟奖品ID';
comment on column T_PRIZE.PRODUCT_ATTRIBUTES_ID is
'奖品属性ID';
comment on column T_PRIZE.PRIZE_NAME is
'奖品名称';
comment on column T_PRIZE.PRIZE_PRICE is
'剩余价值';
comment on column T_PRIZE.POINT is
'单个奖品价值(能力豆)';
comment on column T_PRIZE.PRIZE_NUM is
'奖品数量';
comment on column T_PRIZE.PRIZE_TOTAIL_POINT is
'奖品总价值(能力豆)';
comment on column T_PRIZE.PRIZE_LEV is
'奖品等级';
comment on column T_PRIZE.PRIZE_PROBABILITY is
'中奖概率';
comment on column T_PRIZE.REMARKS is
'备注';
comment on column T_PRIZE.CREATE_TIME is
'创建时间';
drop table T_WINNING_RECORD cascade constraints;
/*==================================================