保证多个用户可能同时操作同一数据作的逻辑正确性:
打开操作界面前的逻辑判断:
(1)以用户当前所见数据为主:(适合数据改变的概率较小的情况)
a) 判断用户所见数据的逻辑正确性。
b) 判断用户所操作的数据是否最新。
(2)以数据库当前存储的数据为主:(适合数据改变的概率较大的情况)
a) 判断特别数据(不会因为正常的数据操作导致某些数据改变的数据,例如:数据创建时间、创建人)逻辑的正确性。
b) 判断用户所操作的数据是否最新。
c) 判断非特殊数据的逻辑正确性。
用户保存操作结果前判断:
判断当前操作数据与数据库中的数据是否一致(可以通过SysLastUpdateDate来判断),如果一致则插入数据库(此处假设数据插入不存在多线程问题),如果不一致则操作无效。
以下是本人以数据库当前存储的数据为主写的操作前数据逻辑判断(其中的权限判断略去)
操作类型 | 角色 | 操作特别说明 |
查询 | 普通员工、管理者 |
|
新增 | 普通员工、管理者 | 基本备注信息只有在新增的情况下才可以修改 |
编辑(不包括审核) | 普通员工、管理者 | 1、当前数据是否已经被删除(改变数据状态)。(因为数据一旦删除就不可以再添加了) 2、该数据是当前用户创建的。(因为SysCreateDate一旦插入就不会改变了) 3、审核后该数据不能编辑,只能审核。 |
删除 | 普通员工、管理者 | 1、当前数据是否已经被删除。 2、判断当前数据是否最新。 3、审核前:用户只能删除自己添加的数据。 4、审核后:只有审核人才能删除该数据。 |
审核 | 管理者 | 1、当前数据是否已经被删除。 2、判断当前数据是否最新。 3、审核后:管理者只可以修改自己审核过的劳动合同。 |