用户奖励的问题

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
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年前 评论

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