updated audit table accroding to merchant panel

This commit is contained in:
Lincpay Tech
2025-12-11 17:35:26 +05:30
parent 67404c2279
commit 6079ce48a3
11 changed files with 63 additions and 75 deletions
@@ -6,75 +6,67 @@ import java.time.LocalDateTime;
import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
/**
* Generic JPA entity listener that populates common audit fields on entities.
*
* Behavior:
* - On PrePersist: sets createdAt/creationDate/createdEpochDate if present (only when null),
* and forces isDeleted/deleted to false if those fields exist.
* - On PreUpdate: sets modifiedDate/modifiedEpochDate/updatedAt/updatedOn if present.
*
* This uses reflection so entities don't need to extend a specific base class.
*/
public class AuditListener {
@PrePersist
public void prePersist(Object entity) {
LocalDateTime now = LocalDateTime.now();
setIfNull(entity, "createdAt", now);
setIfNull(entity, "createdOn", now);
setIfNull(entity, "creationDate", now == null ? null : now.toString());
// Creation fields
setIfNull(entity, "createDateTime", now);
setIfNull(entity, "createdBy", null); // handle manually in service if needed
setIfNull(entity, "createdEpochDate", System.currentTimeMillis());
// Ensure isDeleted / deleted exists and is set to false on create
// Set isDeleted = false on creation
setAlways(entity, "isDeleted", Boolean.FALSE);
}
/*@PreUpdate
public void preUpdate(Object entity) {
LocalDateTime now = LocalDateTime.now();
setIfNull(entity, "modifiedDate", now == null ? null : now.toString());
setIfNull(entity, "modifiedEpochDate", System.currentTimeMillis());
setIfNull(entity, "updatedAt", now);
setIfNull(entity, "updatedOn", now);
}
*/
/*
* @PreUpdate public void preUpdate(Object entity) { LocalDateTime now =
* LocalDateTime.now();
*
* // Update fields setAlways(entity, "updatedDateTime", now); setIfNull(entity,
* "updatedBy", null); // you can override manually in service setAlways(entity,
* "modifiedEpochDate", System.currentTimeMillis()); }
*/
private void setIfNull(Object entity, String fieldName, Object value) {
try {
Field f = findField(entity.getClass(), fieldName);
if (f == null) return;
boolean accessible = f.canAccess(entity);
f.setAccessible(true);
Object current = f.get(entity);
if (current == null && value != null) {
Object currentValue = f.get(entity);
if (currentValue == null) {
f.set(entity, value);
}
f.setAccessible(accessible);
} catch (Exception e) {
// ignore reflection failures
}
} catch (Exception ignored) {}
}
private void setAlways(Object entity, String fieldName, Object value) {
try {
Field f = findField(entity.getClass(), fieldName);
if (f == null) return;
boolean accessible = f.canAccess(entity);
f.setAccessible(true);
f.set(entity, value);
f.setAccessible(accessible);
} catch (Exception e) {
// ignore reflection failures
}
} catch (Exception ignored) {}
}
private Field findField(Class<?> cls, String name) {
Class<?> cur = cls;
while (cur != null && cur != Object.class) {
Class<?> current = cls;
while (current != null && current != Object.class) {
try {
return cur.getDeclaredField(name);
return current.getDeclaredField(name);
} catch (NoSuchFieldException e) {
cur = cur.getSuperclass();
current = current.getSuperclass();
}
}
return null;
@@ -17,25 +17,25 @@ import lombok.Setter;
@Getter
@Setter
public abstract class Auditable {
@Column(name = "create_date_time")
private LocalDateTime createDateTime;
@Column(name = "created_at")
private LocalDateTime createdAt;
@Column(name = "updated_date_time")
private LocalDateTime updatedDateTime;
@Column(name = "updated_at")
private LocalDateTime updatedAt;
@Column(name = "create_by")
private LocalDateTime createdBy;
@Column(name = "created_on")
private LocalDateTime createdOn;
@Column(name = "updated_by")
private LocalDateTime updatedBy;
@Column(name = "updated_on")
private LocalDateTime updatedOn;
@Column(name = "created_epoch_date")
private Long createdEpochDate;
@Column(name = "created_epoch_date")
private Long createdEpochDate;
@Column(name = "modified_epoch_date")
private Long modifiedEpochDate;
@Column(name = "modified_epoch_date")
private Long modifiedEpochDate;
@Column(name = "is_deleted")
private Boolean isDeleted = Boolean.FALSE;
@Column(name = "is_deleted")
private Boolean isDeleted = Boolean.FALSE;
}
@@ -1,5 +1,6 @@
package com.billpaymentservice.bbps.entites;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;