类似 Soul APP一样。虚拟金币,我的账单(消费明细),每日任务(每日发动态,每日给动态点个赞,可以领取金币),每日签到(可以领取金币)。这几样的数据库结构怎么设计,实现思路是怎样的?
有大佬们能帮忙解答下不,我有点迷糊。
类似 Soul APP一样。虚拟金币,我的账单(消费明细),每日任务(每日发动态,每日给动态点个赞,可以领取金币),每日签到(可以领取金币)。这几样的数据库结构怎么设计,实现思路是怎样的?
有大佬们能帮忙解答下不,我有点迷糊。
3 回答2.6k 阅读✓ 已解决
3 回答4.1k 阅读✓ 已解决
8 回答3.8k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
2 回答3.1k 阅读✓ 已解决
tasks[任务表]
task_logs[任务日志表]
任务表 字段描述:
id 主键ID
name 任务名称
key 任务触发的唯一标示 针对不通的业务进行触发,比如签到 key 为 sign:in 比如分享视频key为share:video
num 任务可完成次数
type 任务类型 once 比如一次任务也就是任务只能完成一次那么比如填写邀请码 day-每日任务 每天可完成的 比如签到 每日分享
reward 完成任务每次奖励数值
status 任务状态 开启或者关闭 比如1-关闭 0-默认开启
任务日志表 字段描述:
id 主键id
user_id 用户id
task_id 任务id
progress 完成进度 针对不通任务进行累加 比如每日观看视频 根据时间纬度查询出当日用户是否完成过该任务 如存在记录在该记录做更新操作
reward 已获取的奖励 如每日任务该字段累加记录
任务如何触发
如签到任务你可以单独出一个签到接口或者聚合一个接口包含比如:分享视频 观看视频都在次接口触发
如果需要在某个业务中触发那么需要单独处理 比如填写邀请码后需要触发一个填写邀请码任务
大致思路你你可以封装的一个公用方法 如果任务触发 如下是伪码:
金币建立一个用户钱包数据表
wallets:
id user_id balance .......
balance-金额余额
消费明细
wallet_logs:
id user_id amount type action extend......
amount-金额
type-流水类型比如是签到获取还是点赞获取
action-收支状态:收入/支出
extend-扩展字段使用josn