gpt4 book ai didi

java - 如何在生效日期更新用户?

转载 作者:搜寻专家 更新时间:2023-10-30 19:46:28 25 4
gpt4 key购买 nike

我们目前正在用 java 开发一个基于用户的网络应用程序。

一个用户可以有很多属性,比如名字、姓氏、地区(例如亚洲、欧洲、美国、英国)、国家、部门、分支机构、产品等。

此用户的常规 CRUD 屏幕包含上述所有字段。

用户的添加/编辑屏幕还将有一个称为生效日期的日期字段。此添加/编辑用户与常规 CRUD 中的正常添加/编辑的不同之处在于,对用户所做的更新在生效日期之前不会反射(reflect)出来。

假设今天是 4 月 6 日,我添加了一个新用户,区域为亚洲,生效日期为 4 月 10 日。现在我去更改同一个用户并将他的区域从亚洲更改为美国,但生效日期为 5 月 15 日。

因此,在 5 月 15 日之前,系统应该仅将他的区域显示为亚洲,而在 5 月 15 日,他的区域应该自动更改为美国。

您可以将其视为 4 月在亚洲工作的用户,但从 5 月 15 日起他将搬到美国工作,即区域从亚洲更改为美国,生效日期为 5 月 15 日。因此,在 5 月 15 日之前,他应该仅显示为亚洲用户。

所以我不能通过简单的更新操作在数据库中将他的地区从亚洲更新到我们。

这也适用于许多其他领域,例如部门、分支机构和产品。

同一用户不能有多个记录。

编辑 1:

我们还应该能够看到用户历史记录或 future 的更新。

比如 4 月 6 日,我应该看到用户区域将从 5 月 15 日开始更改,他的部门将从 5 月 10 日开始从 A 更改为 B。

我还应该能够删除更新,比如我后来知道,提议的将用户从亚洲转移到美国的生效日期 15 现在可能不会发生,所以我应该能够删除该更新。

编辑 2:-

针对以上情况,如何修改我原来的用户表和用户变更日志表?

假设系统中的亚洲地区用户将在接下来的几周内从亚洲更改为我们。用户将为用户提供相同的更新。他将区域从亚洲更改为用户,并选择生效日期作为 future 的某个日期。

现在我如何检查区域是否从亚洲更改为我们(可以有名称的 mre 字段,如区域)。我应该在代码级别执行此操作还是可以使用触发器等在数据库级别执行此操作?

请帮助我为此设计系统和数据库。

最佳答案

我建议您可以实现此系统,维护一个CHANGELOG 表 和一个将在每天特定时间运行的调度程序

CHANGELOG 表属性:

  • 目标表
  • 目标主键
  • 目标列
  • 目标值
  • 生效日期

现在,每当对必填字段进行更新时,都会在变更日志表中插入相应的条目。

例子,

  • 目标表:用户
  • targetPrimaryKey : 3(用户记录的主行id)
  • 目标列:地区
  • 目标值:美国
  • 生效日期:2012 年 5 月 15 日

现在,调度程序将每天运行(例如在凌晨 12:00),并从 CHANGELOG 表中检查当天要完成的预定更改,并在相应的目标表中进行这些更改。

注意:这种方法有两个优点:

  1. 您不必为同一记录维护两个条目。

  2. 您可以定位多个字段(区域、部门、分支)和多个表。

关于java - 如何在生效日期更新用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10043340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com