카드 매입 승인 경로 Spring Boot 3 전환 (ACX-E2E-1785394564819)
Some checks failed
Verify / source-contract (push) Has been cancelled
Some checks failed
Verify / source-contract (push) Has been cancelled
This commit is contained in:
parent
2ad4f820a2
commit
d671e38cba
1 changed files with 114 additions and 0 deletions
|
|
@ -0,0 +1,114 @@
|
|||
package com.acquirex.cardapproval.domain;
|
||||
|
||||
import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import jakarta.validation.constraints.Positive;
|
||||
import lombok.*;
|
||||
import org.springframework.data.jpa.repository.JpaRepository;
|
||||
import org.springframework.data.jpa.repository.Query;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* 카드 매입 승인 도메인 엔티티
|
||||
* Jakarta Persistence API 3.1 (JPA 3.1) - Spring Boot 3.x
|
||||
*/
|
||||
@Entity
|
||||
@Table(name = "acquisition_approvals")
|
||||
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder
|
||||
public class AcquisitionApproval {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||
private Long id;
|
||||
|
||||
@NotBlank(message = "가맹점 번호는 필수입니다")
|
||||
@Column(name = "merchant_id", nullable = false, length = 20)
|
||||
private String merchantId;
|
||||
|
||||
@NotBlank(message = "카드번호는 필수입니다")
|
||||
@Column(name = "card_number", nullable = false, length = 19)
|
||||
private String cardNumber;
|
||||
|
||||
@NotNull @Positive
|
||||
@Column(name = "acquisition_amount", nullable = false, precision = 15, scale = 2)
|
||||
private BigDecimal acquisitionAmount;
|
||||
|
||||
@NotNull @Positive
|
||||
@Column(name = "approval_amount", nullable = false, precision = 15, scale = 2)
|
||||
private BigDecimal approvalAmount;
|
||||
|
||||
@NotBlank
|
||||
@Column(name = "approval_number", nullable = false, length = 12)
|
||||
private String approvalNumber;
|
||||
|
||||
@NotNull
|
||||
@Column(name = "acquisition_datetime", nullable = false)
|
||||
private LocalDateTime acquisitionDatetime;
|
||||
|
||||
@NotNull
|
||||
@Enumerated(EnumType.STRING)
|
||||
@Column(name = "approval_status", nullable = false, length = 20)
|
||||
private ApprovalStatus approvalStatus;
|
||||
|
||||
@Column(name = "cancel_yn", length = 1)
|
||||
@Builder.Default
|
||||
private String cancelYn = "N";
|
||||
|
||||
@Column(name = "cancel_datetime")
|
||||
private LocalDateTime cancelDatetime;
|
||||
|
||||
@Column(name = "cancel_reason", length = 200)
|
||||
private String cancelReason;
|
||||
|
||||
@Column(name = "created_at", nullable = false, updatable = false)
|
||||
private LocalDateTime createdAt;
|
||||
|
||||
@Column(name = "updated_at")
|
||||
private LocalDateTime updatedAt;
|
||||
|
||||
@PrePersist
|
||||
protected void onCreate() {
|
||||
createdAt = LocalDateTime.now();
|
||||
updatedAt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
@PreUpdate
|
||||
protected void onUpdate() {
|
||||
updatedAt = LocalDateTime.now();
|
||||
}
|
||||
|
||||
public void cancel(String reason) {
|
||||
this.cancelYn = "Y";
|
||||
this.cancelDatetime = LocalDateTime.now();
|
||||
this.cancelReason = reason;
|
||||
this.approvalStatus = ApprovalStatus.CANCELLED;
|
||||
}
|
||||
|
||||
public enum ApprovalStatus {
|
||||
PENDING, APPROVED, REJECTED, CANCELLED, COMPLETED
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 카드 매입 승인 레포지토리
|
||||
* Spring Data JPA (Spring Boot 3.x)
|
||||
*/
|
||||
@Repository
|
||||
interface AcquisitionApprovalRepository extends JpaRepository<AcquisitionApproval, Long> {
|
||||
|
||||
List<AcquisitionApproval> findByMerchantIdAndCancelYn(String merchantId, String cancelYn);
|
||||
|
||||
Optional<AcquisitionApproval> findByApprovalNumber(String approvalNumber);
|
||||
|
||||
@Query("SELECT a FROM AcquisitionApproval a WHERE a.acquisitionDatetime BETWEEN :startDate AND :endDate")
|
||||
List<AcquisitionApproval> findByAcquisitionDatetimeBetween(
|
||||
@Param("startDate") LocalDateTime startDate,
|
||||
@Param("endDate") LocalDateTime endDate);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue