上篇文章《通用抽獎工具之需求分析》咱們已經經過一些常見的抽獎場景,獲得了符合這些抽獎場景的抽獎工具五要素:node
抽獎五要素 | 要素名稱 |
---|---|
第一要素 | 活動 |
第二要素 | 場次 |
第三要素 | 獎品 |
第四要素 | 中獎機率 |
第五要素 | 均勻投獎 |
以及建立一個抽獎活動的5個基本步驟,以下:git
上篇文章回顧 《通用抽獎工具之需求分析》github
需求已經分析完了,今天咱們就來看看這通用抽獎工具具體的設計,分爲以下三個部分:web
第一要素活動配置
的抽獎活動表
:sql
-- 通用抽獎工具(萬能膠Glue) glue_activity 抽獎活動表
CREATE TABLE `glue_activity` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '活動ID',
`serial_no` char(16) unsigned NOT NULL DEFAULT '' COMMENT '活動編號(md5值中間16位)',
`name` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '活動名稱',
`description` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '活動描述',
`activity_type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '活動抽獎類型1: 按時間抽獎 2: 按抽獎次數抽獎 3:按數額範圍區間抽獎',
`probability_type` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '中獎機率類型1: static 2: dynamic',
`times_limit` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '抽獎次數限制,0默認不限制',
`start_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '活動開始時間',
`end_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '活動結束時間',
`create_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立時間',
`create_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立人staff_id',
`update_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
`update_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態 -1:deleted, 0:disable, 1:enable',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抽獎活動表';
複製代碼
第二要素場次配置
的抽獎場次表
:json
-- 通用抽獎工具(萬能膠Glue) glue_session 抽獎場次表
CREATE TABLE `glue_session` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '場次ID',
`activity_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '活動ID',
`times_limit` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '抽獎次數限制,0默認不限制',
`start_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '場次開始時間',
`end_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '場次結束時間',
`create_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立時間',
`create_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立人staff_id',
`update_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
`update_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態 -1:deleted, 0:disable, 1:enable',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抽獎場次表';
複製代碼
第3、四要素獎品配置
的抽獎場次獎品表
:設計模式
-- 通用抽獎工具(萬能膠Glue) glue_session_prizes 抽獎場次獎品表
CREATE TABLE `glue_session_prizes` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`session_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '場次ID',
`node` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '節點標識 按時間抽獎: 空值, 按抽獎次數抽獎: 第幾回參與值, 按數額範圍區間抽獎: 數額區間上限值',
`prize_type` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '獎品類型 1:優惠券, 2:積分, 3:實物, 4:空獎 ...',
`name` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '獎品名稱',
`pic_url` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '獎品圖片',
`value` varchar(255) unsigned NOT NULL DEFAULT '' COMMENT '獎品抽象值 優惠券:優惠券ID, 積分:積分值, 實物: sku ID',
`probability` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '中獎機率1~100',
`create_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立時間',
`create_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立人staff_id',
`update_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
`update_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態 -1:deleted, 0:disable, 1:enable',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抽獎場次獎品表';
複製代碼
第五要素均勻投獎
的抽獎場次獎品定時投放器表
:session
-- 通用抽獎工具(萬能膠Glue) glue_session_prizes_timer 抽獎場次獎品定時投放器表
CREATE TABLE `glue_session_prizes_timer` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`session_prizes_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '抽獎場次獎品ID',
`delivery_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '定時投放獎品數量的時間',
`prize_quantity` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '獎品數量',
`create_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立時間',
`create_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立人staff_id',
`update_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
`update_by` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '修改人staff_id',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態 -1:deleted, 0:wait, 1:success',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='抽獎場次獎品定時投放器表';
複製代碼
其餘表,抽獎記錄&獎品發放記錄表:工具
-- 通用抽獎工具(萬能膠Glue) glue_user_draw_record 用戶抽獎記錄表
CREATE TABLE `glue_user_draw_record` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增ID',
`activity_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '活動ID',
`session_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '場次ID',
`prize_type_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '獎品類型ID',
`user_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立人user_id',
`create_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '建立時間',
`update_at` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新時間',
`status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '狀態 -1:未中獎, 1:已中獎 , 2: 發獎失敗 , 3: 已發獎',
`log` text COMMENT '操做信息等記錄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶抽獎記錄表';
複製代碼
請求參數:post
字段 | 類型 | 是否必傳 | 描述 |
---|---|---|---|
serial_no | string | Y | 活動編號 |
響應內容:
{
"code": "200",
"msg": "OK",
"result": {
"serial_no": "string, 活動編號",
"type": "number, 活動抽獎類型1: 按時間抽獎 2: 按抽獎次數抽獎 3:按數額範圍區間抽獎",
"name": "string, 活動名稱",
"description": "string, 活動描述",
"start_time": "number, 活動開始時間",
"end_time": "number, 活動開始時間",
"remaining_times": "number, 活動抽獎次數限制,0不限制",
"sessions_list":[
{
"start_time": "number, 場次開始時間",
"end_time": "number, 場次開始時間",
"remaining_times": "number, 場次抽獎次數限制,0不限制",
"prizes_list": [
{
"name": "string, 獎品名稱",
"pic_url": "string, 獎品圖片"
}
]
}
]
}
}
複製代碼
請求參數:
字段 | 類型 | 是否必傳 | 描述 |
---|---|---|---|
serial_no | string | Y | 活動編號 |
uid | number | Y | 用戶ID |
響應內容:
// 中獎
{
"code": "200",
"msg": "OK",
"result": {
"serial_no": "string, spu id",
"act_remaining_times": "number, 本活動抽獎剩餘次數,0不限制",
"session_remaining_times": "number, 本場次抽獎剩餘次數,0不限制",
"prizes_info":
{
"name": "string, 獎品名稱",
"pic_url": "string, 獎品圖片"
}
}
}
// 未中獎
{
"code": "401",
"msg": "",
"result": {
}
}
複製代碼
活動營銷系統中的第一個字系統通用抽獎工具今天講完了,但願對你們有必定的幫助或啓示。
通用抽獎工具的代碼設計特別適合設計模式中的模板模式
,大家覺着呢😏😏😏。因此,新的一年我會再寫一篇《[Skr-Shop]通用抽獎工具之代碼設計》嗎?
(O_O)?
最後後,祝你們2020年新年🆕快樂~
[Skr Shop] 項目地址長按進入:github.com/skr-shop/ma…
Skr Shop系列更多文章: