我有一个网站,允许会员上传视频,评论视频,评价视频并在论坛中发帖。
我还有一个管理用户组可用的“隐藏”功能(用于审核)(基本上是一个名为hidden
的列,它是boolean
(1
或{{1我在每个表中都有。例如;如果隐藏设置为0
它将不显示内容,但如果设置为1
,则显示内容),这是只是一个管理滥用行为的功能。
我说每张桌子的意思;是论坛主题有一个单独的表,视频内容有自己的表等 - 但他们所有(至少我希望使用的功能)有一些共同点,他们都有一个名为{{1}的列(我在上面解释了它的作用)。
现在我正在考虑添加基本的EXP(体验点)功能,以便会员可以获得X点数来执行特定操作,例如上传视频,在论坛中发布主题,评价视频,评论视频等。
总EXP将显示在会员资料中以及他们的活动流上(例如,用于发布主题的剩余X点数)。
但是我不确定如何实现这个,因为我只希望总EXP考虑不隐藏且与活动流相同的内容(仅显示从未隐藏的内容获得的EXP)
对我来说,dillema是由于我有多个包含不同内容的表,并且我会定期执行cron作业来清理(删除)隐藏内容,我希望每个动作的EXP都可以轻松改变 - 所以如果有一天我决定我不再慷慨,给那些发表主题并将其改为2的人给予50分,所有那些过去创建主题的人也会自动生效(所以也许有EXP某个动作在一个类或配置文件中?)。
概述:
我有一个想法,也许是动态做到这一点(就像根本没有将EXP存储在数据库中一样 - 而只是0
hidden
个查询COUNT()
然后WHERE hidden = 0
来多少EXP - 所以如果内容被隐藏,EXP将自动生效(这就是我喜欢它的方式),但是垮台可能意味着它可能意味着复杂*
s并且每天最多4个可能是一个问题)?
我很感激,如果你可以发布你将如何做到这一点(以及一个例子 - 如果可能的话),因为我已经敲了几个小时。
感谢您的回复。
答案 0 :(得分:0)
我会创建一个专门用于管理数据库中的日志的类。我在想数据库跟踪:
entity 是获得积分的内容类型的标识符,例如“视频”。 * entity_id *是实体的ID号(例如,为添加视频ID#24而奖励2分)。 计数是一个布尔值,告诉您的系统是否计算点数。
当管理员隐藏任何内容时,无论是视频,帖子还是评级,您的日志管理器都会查找为该实体指定的关联点,与entity_id匹配,并将计算的字段设置为0这使您可以轻松获得特定用户的点数总和,但只能计算应计算的点数。
当用户做任何保证接收积分的事情时,日志管理员可以找到在该特定日期为该用户授予了多少积分,并且如果全部金额推动总数超过4,则添加全部金额或差额
我还没有完全想到这一点,所以我的逻辑可能存在缺陷,但这可能足以让你开始。