From e3619b385f4b86fcf3fb0cb1c3711695b27dcc79 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 27 Jul 2026 20:11:20 +0900 Subject: [PATCH] =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0=20=EB=B3=80=EA=B2=BD=20=EC=9D=B4=EB=A0=A5=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EB=B0=8F=20=EB=A0=88=ED=8F=AC=EC=A7=80?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=20=EC=B6=94=EA=B0=80:=20-=20UserRoleHistory?= =?UTF-8?q?=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=A0=95=EC=9D=98=20=EB=B0=8F?= =?UTF-8?q?=20=ED=95=84=EB=93=9C=20=EB=A7=A4=ED=95=91=20-=20UserRoleHistor?= =?UTF-8?q?yRepository=20=EC=A1=B0=ED=9A=8C=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../portaluser/entity/UserRoleHistory.java | 76 +++++++++++++++++++ .../repository/UserRoleHistoryRepository.java | 13 ++++ 2 files changed, 89 insertions(+) create mode 100644 src/main/java/com/eactive/apim/portal/portaluser/entity/UserRoleHistory.java create mode 100644 src/main/java/com/eactive/apim/portal/portaluser/repository/UserRoleHistoryRepository.java diff --git a/src/main/java/com/eactive/apim/portal/portaluser/entity/UserRoleHistory.java b/src/main/java/com/eactive/apim/portal/portaluser/entity/UserRoleHistory.java new file mode 100644 index 0000000..0b6fbb1 --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/portaluser/entity/UserRoleHistory.java @@ -0,0 +1,76 @@ +package com.eactive.apim.portal.portaluser.entity; + +import com.eactive.eai.data.converter.LocalDateTimeToStringConverter14; +import lombok.Data; +import org.hibernate.annotations.Comment; +import org.hibernate.annotations.Parameter; +import org.hibernate.annotations.GenericGenerator; + +import javax.persistence.*; +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 사용자 역할(권한) 변경 감사 이력. + * + *

법인 관리자 위임/회수, 소속 제외 등으로 {@code PortalUser.roleCode} 가 변경될 때 + * 이전 역할 → 새 역할, 변경 유형, 변경 수행자(관리자)를 이력으로 남긴다. + * {@link UserPasswordHistory} 와 동일한 저장 패턴(시퀀스 PK, 14자리 문자열 일시)을 따른다.

+ */ +@Data +@Entity +@Table(name = "ptl_user_role_history") +public class UserRoleHistory implements Serializable, com.eactive.eai.data.Data { + private static final long serialVersionUID = 1L; + + @Id + @GenericGenerator( + name = "ptl_user_role_history_seq_gen", + strategy = "com.eactive.eai.rms.data.jpa.SchemaPrefixedSequenceGenerator", + parameters = { + @Parameter(name = "sequence_name", value = "PTL_USER_ROLE_HISTORY_SEQ"), + @Parameter(name = "initial_value", value = "1"), + @Parameter(name = "increment_size", value = "1") + } + ) + @GeneratedValue( + strategy = GenerationType.SEQUENCE, + generator = "ptl_user_role_history_seq_gen" + ) + @Column(name = "id", columnDefinition = "number(19)") + private Long id; + + @Column(name = "user_id", length = 255, nullable = false) + @Comment("대상 사용자 ID(loginId)") + private String userId; + + @Column(name = "before_role", length = 30) + @Comment("변경 전 역할") + private String beforeRole; + + @Column(name = "after_role", length = 30, nullable = false) + @Comment("변경 후 역할") + private String afterRole; + + @Column(name = "change_type", length = 30, nullable = false) + @Comment("변경 유형(MANAGER_ASSIGN/MANAGER_REVOKE/ORG_REMOVE 등)") + private String changeType; + + @Column(name = "changed_by", length = 255, nullable = false) + @Comment("변경 수행자(loginId)") + private String changedBy; + + @Column(name = "change_date", length = 14, nullable = false) + @Comment("변경 일시") + @Convert(converter = LocalDateTimeToStringConverter14.class) + private LocalDateTime changeDate; + + @Column(name = "created_by", length = 255, nullable = false) + @Comment("생성자") + private String createdBy; + + @Column(name = "created_date", length = 14, nullable = false) + @Comment("생성일시") + @Convert(converter = LocalDateTimeToStringConverter14.class) + private LocalDateTime createdDate; +} diff --git a/src/main/java/com/eactive/apim/portal/portaluser/repository/UserRoleHistoryRepository.java b/src/main/java/com/eactive/apim/portal/portaluser/repository/UserRoleHistoryRepository.java new file mode 100644 index 0000000..28f402d --- /dev/null +++ b/src/main/java/com/eactive/apim/portal/portaluser/repository/UserRoleHistoryRepository.java @@ -0,0 +1,13 @@ +package com.eactive.apim.portal.portaluser.repository; + +import com.eactive.apim.portal.portaluser.entity.UserRoleHistory; +import com.eactive.eai.rms.data.EMSDataSource; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +@EMSDataSource +public interface UserRoleHistoryRepository extends JpaRepository { + + List findByUserIdOrderByChangeDateDesc(String userId); +}