请问 任务中心 应该如何设计?
最近公司要做一个积分任务系统,做任务获取积分。 但是在表如何设计这块找不到相似的例子,百度上也搜不到,希望各位能提供下思路
需求:任务中心页面,可以查看当前所有的任务和进度。类似如下:
任务分为新人任务,每日任务,永久任务等,每日任务又有限制次数,比如每天只能收藏 5 次,签到 5 次等
现在我的想法是设计一个 任务表,一个 用户-任务关联表
但是用户每次进任务中心页面是需要查看自己的任务完成进度的,那难道是在每次进任务中心时初始化关联表吗? 这样的话如果用户没有进任务中心,直接收藏,该怎么加这个积分? 如果用户一注册就初始化用户-任务关联数据,好像也不太对,所以希望能够提供下思路,谢谢
回答
tasks(任务表):
id name desc icon cate type num reward.....
id 主键ID
name 任务名称
desc 任务描述
icon 任务图标
cate 任务分类 比如官网、线上、游戏
type 任务类型 比如新手、每日
num 任务次数
reward 积分奖励数值
task_notes(任务日志):
id uid tid progress time...
id 主键ID
uid 用户ID
tid 任务ID
progress 完成进度
date 完成时间
任务为主表,后台可以动态添加和修改任务
任务日志表,用户完成一次向数据查询一条数据,需要注意如果num>1那么,插入了日志记录在完成直接做更新,更新progress字段
例如任务(插入然后做更新 更新progress字段):
id uid tid progress time
1 1 1 2 2020-09-11 11:11:11
新手任务:
num=1一次性任务 做完一次直接奖励 是否完成直接查询根据uid tid查询记录即可 存在为完成
num>=1 证明是新手多次任务(也就是该任务需要完成多次才为完成) 那么就做查询更新progress字段操作直到 task_notes.progress >= tasks.num 即为完成
每日任务:
根据 uid tid date 去查询 task_notes 表,存在记录证明今日做了该任务,是否完成 task_notes.progress >= tasks.num
API接口返回
{ "id": 1,
"name": "分享任务",
"desc": "完成一次奖励1积分",
"cate": "官网",
"num": 20,
"type": "day",/*day-每日任务 novice-新手任务*/
"reward": 1,
"note": {
"id": 1,
"tid": 1,
"uid": 1,
"progress": 20,/*progress>=num 前端根据这个判断是否完成,如果note不存在直接返回null前端也可以判断*/
}
以上是 请问 任务中心 应该如何设计? 的全部内容, 来源链接: utcz.com/a/41998.html