用户奖励的问题

比如平台经常搞活动,参与就送奖励
奖励可以是积分 可以是抵用卷 可以聊天次数啥的。
但是这个不是一次性就能决定的。
感觉每出来新活动,就有新奖励 奖励名称 方式 都不同。
像这种是怎么设计数据库的?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
sanders
最佳答案

简述一下我的设计:

活动表:活动ID、参与条件数据、任务数据、奖励数据

条件数据使用 json 格式,分为处理服务类和对应的配置数据,用来判断用户参与活动的资格,服务类实现抽象方法 handle(User $user, array $options = []): bool。

任务数据使用 json 格式,分为任务判断服务类和对应的配置数据,用来判断用户的任务完成情况,服务类实现抽象 handle(User $user, array $options = []): bool。

奖励数据使用 json 格式,分为颁发奖励的服务类和配置数据,用来在用户完成任务后颁发奖励,服务类实现抽象方法 handle(User $user, Campaign $campaign, array $options): void。

活动用户任务表:活动ID、用户ID、任务标识、完成数据、完成任务时间

任务标识可用任务判断服务类名存储。

完成数据使用 json 格式可快照当时完成任务的主要特征数据。

活动用户奖励表:活动ID、用户ID、奖励标识、奖励数据、奖励时间

奖励标识可用奖励服务类名存储。

奖励数据快照奖励主要内容数据。

显示的时候,使用语言包翻译类名为输出的语言文案。使用配置数据存储以上所有服务类,并整理成数组以便管理后台进行编排配置。

1年前 评论
讨论数量: 11

看到聊天次数,你们的app是不是交友软件 :smirk:

1年前 评论
xiaofeishu (楼主) 1年前

按类型,类似优惠券

1年前 评论

虽然奖励不同,但这个奖励的使用肯定是程序中已有的功能才能运行,不然不就是重新开发功能?

1年前 评论

用一个type区分奖励类型,根据奖励类型走不同获取奖励的逻辑

1年前 评论
xiaofeishu (楼主) 1年前

一个奖励表,一个奖励类型表(积分,抵用券),奖励表保存类型的ID

1年前 评论
xiaofeishu (楼主) 1年前
Trace92 (作者) 1年前
随波逐流

可以尝试把奖励用 闭包 的形式,保存在数据库中,如果用户满足 条件,就可以执行 闭包 里面的程序。

1年前 评论
sanders

简述一下我的设计:

活动表:活动ID、参与条件数据、任务数据、奖励数据

条件数据使用 json 格式,分为处理服务类和对应的配置数据,用来判断用户参与活动的资格,服务类实现抽象方法 handle(User $user, array $options = []): bool。

任务数据使用 json 格式,分为任务判断服务类和对应的配置数据,用来判断用户的任务完成情况,服务类实现抽象 handle(User $user, array $options = []): bool。

奖励数据使用 json 格式,分为颁发奖励的服务类和配置数据,用来在用户完成任务后颁发奖励,服务类实现抽象方法 handle(User $user, Campaign $campaign, array $options): void。

活动用户任务表:活动ID、用户ID、任务标识、完成数据、完成任务时间

任务标识可用任务判断服务类名存储。

完成数据使用 json 格式可快照当时完成任务的主要特征数据。

活动用户奖励表:活动ID、用户ID、奖励标识、奖励数据、奖励时间

奖励标识可用奖励服务类名存储。

奖励数据快照奖励主要内容数据。

显示的时候,使用语言包翻译类名为输出的语言文案。使用配置数据存储以上所有服务类,并整理成数组以便管理后台进行编排配置。

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!