正在做一个动态显示广告的功能,大概描述一下需求: 每一条广告在一定的时间范围内(比如一个小时或者一天),只对用户显示一次,并且,显示的前提是广告通过了审核,并且账户上有足够的广告费用。另外,优先显示出价高的广告。 我的设计思路是用一个数据表记录广告信息,包含广告出价,投放时间间隔等。数据库结构如下图:
另外一个数据表记录 投放信息,包括广告主键,广告接受用户,广告展示时间。数据库结构如下图:
业务逻辑思路: 从《广告信息》数据表中,过滤审核是否通过,然后按广告出价从高到低排序,得到一个《广告信息》数据集,取出第一个数据行(出价最高的),把该行的广告主键,时间范围,连同登录用户名作为参数,在《广告投放信息》数据表中查找,如果在该时间范围内已经有该广告显示给该用户,就不返回该广告(该数据行),移动到往下一个《广告信息》的行,再做同样的对比,直到找到在该时间范围内,该广告信息没有展示过给该用户,返回该广告(该数据行),展示到前端。 这个画代码很复杂,我一直没能做成功,麻烦能指点一下吗?同时,我考虑到这样遍读两个数据表(《广告信息》和《投放信息》),性能会不会很低,有什么方式可以优化吗? 麻烦指导一下,谢谢!
|