迪口超市赠送购物卡
一 数据库设计
活动配置信息
--活动配置 conf.active
M[config_def.ACTIVE] = {
name = config_def.ACTIVE,
indexes = {{key = {id = 1},opt = {unique = true}}},
value = {
id = 0, --活动id
name = "**超市乱刮风购物卡", --活动名字
game_id = 0, --游戏id
begin_time = 0, --开始时间
end_time = 0, --结束时间
finish_total = 10, --领取条件(局数)
max_amount = 1, --购物卡总量
desc = "超市乱刮风购物卡", --活动描述
valid = db_def.STATE.VALID --是否有效
}
}
用户活动数据
--用户活动数据 user.active
M.USER_ACTIVE = {
name = "active",
indexes = {{"user_id", "id", unique = true}},
value = {
user_id = 0, --所属用户数据库唯一标示
id = 0, --active配置表中对应的id
finish_count = 0, --进度
state = 1, --状态(0 已完成 1 进行中) 注:后台操作记录领取就是修改该字段为0
}
}
用户领奖记录
网站可按照记录相关需求自行发挥。
注意事项
1.需求中用户每个活动的状态和领取记录。
有个参考查询方法:
不在有效期,用户数据没参考性
在有效期,局数<领取条件 进行中 不可领取
在有效期,局数>=领取条件 进行中 可领取(state=1) 已领取(state=0)
2.剩余卡片数量
参考统计:
剩余卡片数量=配置的max_amount-用户活动数据中改活动state为0的数量
当然网站也可按照领取记录去减。
3.用户领奖记录,网站按需发挥
有个参考设计supermarket_cards_record:
record_id,user_id,active_id,time
以上注意事项参考方案仅供参考。
二 服务端设计
1.服务器加载后台的有效的活动配置
2.游戏结束,更新有效活动的用户活动数据,并实时通知客户端
3.用户属性中添加active_list,存储用户活动数据
.User_Active { #活动信息
id 0 : integer #active配置表中对应的id
finish_count 1 : integer #进度
state 2 : integer #状态(0 已完成 1 进行中)
}
三 前后端协议
get_activeconf 7001 {
request {
}
response {
ret 0 : integer #err 中定义code
actives 1 : *Conf_Active
}
}
get_activeinfo 7002 {
request {
}
response {
ret 0 : integer #err 中定义code
}
}
.Conf_Active {
id 0 : integer #活动id
name 1 : string #活动名字
game_id 2 : integer #游戏id
begin_time 3 : integer #开始时间
end_time 4 : integer #结束时间
finish_total 5 : integer #领取条件(局数)
max_amount 6 : integer #购物卡总量
desc 7 : string #活动描述
}
注:
补充协议:获取剩余卡片数量
get_left_amount 7003 {
request {
active_id 0 : integer #活动id
}
response {
ret 0 : integer #err 中定义code
left_amount : integer #剩余数量(最大为max_amount)
}
}
四 网站协议
后台点击记录领取时的请求
1.内存
2.拓展
active?admin=111&active_id=1&user_id=123&state=1
伍 开发计划
总体设计(服务器):0.5天
1.数据库设计
2.服务器设计
3.协议设计
服务器部分:
1.配置模块(支持后台修改实时生效) 0.5天
2.用户统计模块 1天
3.每个活动剩余卡片 0.5天
网站
1.配置 0.5
2.记录+服务器请求 1天
客户端
1天