有一个代码的设计问题,大佬们帮帮我

18次阅读

共计 564 个字符,预计需要花费 2 分钟才能阅读完成。

简单介绍一下情况。

  1. 我们是用的是 jdk8+mybatis+MybatisPlus+diboot(小众的 MP 的增强,没看见过可忽略)的后端项目
  2. 每个业务表中都有一个 period(会计期间) 字段

现在有一个 PM 提了一个很容易理解但是很傻逼的 Feature:

只有管理员开放指定 period 之后,才能对指定 period 的业务表数据进行增删改查 (增删改已经做限制,采用下面第二种方法。),否则都不允许(返回空或提示权限不足)
管理员无视上面一条要求

初步想法

  1. 在所有的查询语句执行前在代码层添加可查询的 period 列表。

    • 比如 select * from table a where id = ‘xxx’, 那就改成 select * from table a where id = ‘xxx’ and period in (valid_period_list);
  2. 对所有的查询出来的数据进行校验。由于增删改单次进行的对象的数据量较小,所以在增删改操作进行前做一次查询取出所有被查询的数据并判断 period,这样损耗较小,目前可以接受。但是当查询的时候使用系统方法我认为会严重损耗性能。

    • 比如 select * from table a where id = ‘xxx’。在查询出数据之后,在代码层进行一次校验,判断 period 是否合理。

请问一下大佬们对这个 Feature 有什么比较好的实现经验吗,或者说比较好的 idea

正文完
 0