如何筛选出未被某特定管理员审批的报告记录?

发布于 2021-01-12 16:44:55
场景说明: 这次的项目遇到这样一个问题,报告将会被多个管理员进行审批,现在如何找出某个特定管理员还未审批的报告列表;

报告与管理员存在 多对多的 关联关系,单个报告需要多个管理员审批,一名管理员可以审批多个报告. 这里还包含一个管理员审批记录表.
table_report (id)
table_manager (id)
table_report_handle_log (id,manager_id,report_id)

通过 table_report_handle_log 的关联作用,我们可以获得"某个管理员已经审批的报告记录",但如果要获得还未审批的记录就会很麻烦,因为从表信息中只能直接找出"已审批"的属性."未审批"的只能间接反映出来,满足条件的有一下两条:

  1. 没有在log表中出现的report,即是未审批的;
  2. 在log中存在审批记录,但是manager_id不是目标管理员的;

这两条如果用mysql进行查询,需要进行大量的遍历判断,性能耗费非常巨大,方案pass.

那怎么办?

显然我们还需要个字段来管理 报告是否已审批,但报告被多个管理员审批,所以报告和审批存在1:N的关系,专门建立一张表来记录这个信息:
table_reprot_status (id,report_id,manager_id,state(审批状态?0:1))
这个就有点像通知模型了,当一个报告产生,我们将通知所有的管理员过来执行审批,由此产生如上记录信息.当管理员审批过后更新该表对应记录内容. 这样要获取特定管理员未审批的记录就很简单了
mysql: select * form table_report_status where manager_id = id and state = 0;

Bug天天改,头发日日疏,码字不易,如果有帮助到你,就点击"下方感谢"支持一下把.

©声明:本站所有文章,如无特殊说明或标注,均为izhnagbo.cn原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。本文链接 https://www.izhangbo.cn/article/40.html
1 条评论

学习
记录

发布
问题