狐的传说
分析需求:有三种模式:礼拜提醒;日期提醒;隔天重复提醒;每种模式都有自己的提醒时间点存在疑问:如果模式冲突,优先级如何?表设计一共三张表,模式表;时间点表;结果表.模式表和时间点表关系为1对多,结果表为提醒信息考虑模式表上的设置的时间不会作为搜索条件,可以将模式表里面的时间存为JSON(这里需要限制日期提醒,允许设置最大个数)优化方案如果按照题主说的,定时任务轮询,当数据量很大,并且提示时间密度很小的时候,提醒时间差度会有点大,并且对数据库也是一个不小的负担.在每个礼拜六或者礼拜天,根据模式表和时间点表生成第三天的提醒条目放入结果库(条目状态为待提醒),当用户修改了提醒时间,直接删除该账号对应的提醒条目,并且重新生成(考虑到用户修改的频率不会很频繁)当push成功以后,发送一个消息,监听到消息以后将提醒条目状态修改为已提醒定时器扫描到数据以后,需要先将数据更新为提醒中,防止在push回调过程中该条记录被删除需要考虑的问题当把状态更新为提醒中,但是push消息失败如何处理如果发生某些异常情况导致提醒条目结果没有正确生成,怎么能快速发现其实定时器扫库的方式时效性不是很高主要难点个人觉得是,用户修改条目而引起的数据更新和边界问题