Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat : 주문 승인 , 조회 (#67) #83

Merged
merged 10 commits into from
Jan 11, 2023
Merged

feat : 주문 승인 , 조회 (#67) #83

merged 10 commits into from
Jan 11, 2023

Conversation

ImNM
Copy link
Member

@ImNM ImNM commented Jan 10, 2023

개요

작업사항

  • 주문 승인 & 주문 조회까지 같이 작업해뒀습니다

  • 만들고자 한 화면
    무제

  • 보니깐 예매정보가 결국 여러개 들어가야합니다.

  • 옵션이 다르면 다른 오더라인으로 잡히기 때문에

  • 그에 따라서 예매정보 부분 ( 밑 응답예시의 tickets 부분입니다. ) 이 여러개달라져야합니다.

  • 가령,

  • 고스락22회티켓 3매 옵션 예로 3개 동일

  • 고스락 22회 티켓 1매 옵션 아니오

  • 이렇게되면 오더라인이 2개가 되고, 결제완료창에서 보여지는 주문 정보에도 예매정보 부분이 2개가 되어야합니다.(위의 빨간색 네모 부분)

{
  "success": true,
  "status": 200,
  "data": {
    "paymentInfo": {
      "paymentMethod": "간편 결제",
      "supplyAmount": "15000원",
      "discountAmount": "0원",
      "couponName": "사용하지 않음",
      "totalAmount": "15000원",
      "orderStatus": "결제 완료"
    },
    "tickets": [
      {
        "ticketName": "계좌이체티켓",
        "orderNo": "R1000022-42",
        "ticketNos": "",
        "paymentAt": "2023-01-11T03:49:58",
        "userName": "이찬진",
        "supplyAmount": 3,
        "answers": [
          {
            "optionGroupType": "TRUE_FALSE",
            "questionName": "뒷풀이 참석 여부 조사",
            "questionDescription": "오케이포차 조사입니다.",
            "answer": "",
            "additionalPrice": "1000원"
          },
          {
            "optionGroupType": "TRUE_FALSE",
            "questionName": "신한은행(110- )으로 3000원 입금 바랍니다.",
            "questionDescription": "계좌이체 확인후 티켓을 발급해드립니다 ( 승인 결제 )",
            "answer": "안갈꺼에요",
            "additionalPrice": "0원"
          }
        ]
      },
      {
        "ticketName": "계좌이체티켓",
        "orderNo": "R1000022-43",
        "ticketNos": "",
        "paymentAt": "2023-01-11T03:49:58",
        "userName": "이찬진",
        "supplyAmount": 1,
        "answers": [
          {
            "optionGroupType": "TRUE_FALSE",
            "questionName": "뒷풀이 참석 여부 조사",
            "questionDescription": "오케이포차 조사입니다.",
            "answer": "아니오",
            "additionalPrice": "0원"
          },
          {
            "optionGroupType": "TRUE_FALSE",
            "questionName": "신한은행(110- )으로 3000원 입금 바랍니다.",
            "questionDescription": "계좌이체 확인후 티켓을 발급해드립니다 ( 승인 결제 )",
            "answer": "갈게요 ㅋㅋ",
            "additionalPrice": "0원"
          }
        ]
      }
    ],
    "refundInfo": {
      "endAt": "2023-01-12T18:10:51",
      "availAble": true
    }
  },
  "timeStamp": "2023-01-11T03:49:58.610862"
}

데이터 더 집어넣을꺼 있을것 같긴한데 이렇게 두겠습니다 일다눙

  • RefundInfoVo 를 만들었습니다 취소관련 정보가 이벤트로 부터 나옵니다.

  • 취소가능기간이 이벤트 시작 시간 전까지 입니다!

  • 다음번엔 승인 결제 작업들어갈건데 좀 더 로직들 깔끔하게 정제해보겠습니다

  • 트랜잭션 관련...

  • ConfirmOrderUseCase 클래스 관련 내용입니다.

  • 트랜잭션 시작 -> 주문생성을위해 레디슨락 호출 -> 레디슨락안에서 새로운 트랜잭션 시작 -> 성공적으로 commit
    -> 이후에 lazy로딩으로 응답을 해줄려다보니... 데이터가 최신화가 안됨.

보니깐 트랜잭션을 먼저 시작해버리니.. read_commit 룰 때문에
안에서 락걸고 안전하게 성공적으로 작업한 데이터가 안 읽힘...

( 트랜잭션 내부에서 같은 클래스의 메소드를 호출하면 트랜잭션 새로안생김 )

변경로직

@ImNM ImNM added For: API [이슈 대상] 외부 API Type: Feature [이슈 목적] 새로운 기능 추가 labels Jan 10, 2023
@ImNM ImNM self-assigned this Jan 10, 2023
@ImNM ImNM changed the title Feature/67 order confirm feat : 주문 승인 , 조회 (#67) Jan 10, 2023
Comment on lines +57 to +67
/**
* 트랜잭션이 클래스 래벨에서 시작해서 레디스 락도 트랜잭션을 격리성 보장하기위해서 새로시작하는데 레디슨 락 끝나고 커밋된후에 데이타가 안읽힘. 왜냐면 클래스 레벨
* 트랜잭션이 레디슨 락보다 먼저 시작했기때문 (Read_commited) 그래서 새로운 트랜잭션 만들어서 반영 근데 이거 그냥 lazy 로딩 때문에 그런거지 쿼리
* 짜야되는거임!
*
* @param confirmedOrderId
* @param userName
* @return
*/
// TODO : 쿼리만들기
@Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = true)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lazy 로딩 관련해서 QueryDsl로 쿼리 짜서 해결해봅시당

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

커맨드 관련한 api 먼저 쫙뽑구
조회용 따로 만들어야겠네유

Copy link
Member

@sanbonai06 sanbonai06 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고민 많이하신 만큼 훌륭합니다
LGTM 🌟


추가로 컨플릭트 난 부분 저희 둘 작업 모두 반영해주시면 감사하겠습니당

Copy link
Member

@gengminy gengminy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 고생하셨습니다✨

@ImNM ImNM merged commit 3dd608f into dev Jan 11, 2023
@ImNM ImNM deleted the feature/67-order-confirm branch January 11, 2023 05:29
@sonarqubecloud
Copy link

Kudos, SonarCloud Quality Gate passed!    Quality Gate passed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 127 Code Smells

8.3% 8.3% Coverage
0.4% 0.4% Duplication

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
For: API [이슈 대상] 외부 API Type: Feature [이슈 목적] 새로운 기능 추가
Projects
None yet
Development

Successfully merging this pull request may close these issues.

🚀 [feature] 결제 승인 기능을 개발합니다
3 participants