refactor(domain): 将删除和恢复逻辑移至基类并实现幂等性

将SysUser、SysRole和SysPermission中的删除和恢复方法移至BaseDomain
实现删除操作的幂等性,已删除对象不会重复更新删除时间
更新测试用例以验证幂等行为
This commit is contained in:
张翔
2026-04-19 16:13:50 +08:00
parent e8e1e089fb
commit dac377d8ec
5 changed files with 22 additions and 38 deletions
@@ -76,10 +76,29 @@ public abstract class BaseDomain {
return this.id;
}
/**
* 删除(幂等操作)
* 已删除的对象不会更新删除时间
*/
public void delete() {
if (this.deletedAt == null) {
this.deletedAt = LocalDateTime.now();
}
}
/**
* 恢复已删除的对象
*/
public void restore() {
this.deletedAt = null;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (this == o)
return true;
if (o == null || getClass() != o.getClass())
return false;
BaseDomain that = (BaseDomain) o;
return id != null && id.equals(that.id);
}
@@ -77,18 +77,4 @@ public class SysPermission extends BaseDomain {
public void setStatus(Integer status) {
this.status = status;
}
/**
* 删除权限
*/
public void delete() {
this.deletedAt = java.time.LocalDateTime.now();
}
/**
* 恢复权限
*/
public void restore() {
this.deletedAt = null;
}
}
@@ -57,18 +57,4 @@ public class SysRole extends BaseDomain {
public void setStatus(Integer status) {
this.status = status;
}
/**
* 删除角色
*/
public void delete() {
this.deletedAt = LocalDateTime.now();
}
/**
* 恢复角色
*/
public void restore() {
this.deletedAt = null;
}
}
@@ -100,11 +100,4 @@ public class SysUser extends BaseDomain {
public void setStatus(Integer status) {
this.status = status;
}
/**
* 删除用户
*/
public void delete() {
this.deletedAt = LocalDateTime.now();
}
}
@@ -59,7 +59,7 @@ class SysUserTest {
assertNotNull(firstDeleteTime);
assertNotNull(secondDeleteTime);
assertNotEquals(firstDeleteTime, secondDeleteTime);
assertEquals(firstDeleteTime, secondDeleteTime);
}
@Test