경매 입찰 경매 입찰 POST /api/v1/auction/{auction_id}/bid 경매 입찰 입찰 내역 조회 GET /api/v1/auction/{auction_id}/bid 경매 입찰 경매 낙찰 POST /api/v1/auction/{auction_id}/conclude
- 입찰 기능
- 시간 지나면 입찰 안되게 ( time 기준 정해야됨 )
- 마감 시간 확인 어떻게 하지?
- DB에서?
- Service에서?
- 마감 시간 확인 어떻게 하지?
- 이전 입찰 가격보다 높게
- 시간 지나면 입찰 안되게 ( time 기준 정해야됨 )
- 입찰 전체 조회
- Sorting 위치?
- Service 에서 stream
- DB에서 조회 시 ?
- JPA?
- page 써야 하는지?
- Sorting 위치?
수정
- 메소드 파라미터 컨벤션 ✅ 2024-09-30
- auctionStatus 비교 ✅ 2024-09-30
- 입찰 연속 막는 기능
- DB 조회
- bid API parameter 만 넣기 ✅ 2024-09-30
- api end point ✅ 2024-09-30
- @RestController(“/api/v1/bid”) ✅ 2024-09-30
- @Entity(name = “bids”) ✅ 2024-09-30
- [ ]
- [ ]
수정
- 메소드 파라미터 컨벤션 ✅ 2024-09-30
- auctionStatus 비교 ✅ 2024-09-30
- 입찰 연속 막는 기능 ✅ 2024-09-30
- getBidList Sorting ( DB or Service 선택 )
- bid API parameter 만 넣기 ✅ 2024-09-30
- api end point ✅ 2024-09-30
- @RestController(“/api/v1/bid”) ✅ 2024-09-30
- @Entity(name = “bids”) ✅ 2024-09-30
- toDto return 수정 ✅ 2024-09-30
- checkLastBid Obtional 사용 ✅ 2024-09-30
- EntityListener ✅ 2024-09-30
- TimeInterface ✅ 2024-09-30
- Cascade 수정 ✅ 2024-09-30
- 입찰하기
- 연속 입찰 금지
- 경매 상태 확인
- 멤버별 입찰가보다 높게
- 입찰 전체 조회
- Sorting DB로 변경 ✅ 2024-10-02
- 개행 지우기 ✅ 2024-10-02
- buyer_id 에 TODO ✅ 2024-10-02
- 주석 제거 ✅ 2024-10-02
- ALL 오타 ✅ 2024-10-02
- bidBidprice 수정 ✅ 2024-10-02
return bidRepository.findTopByMemberEntityOrderByBidPriceDesc(memberEntity)
.map(bid → bid.getBidPrice() < bidPrice)
.orElse(true);
return auctionEntity.getAuctionStatus() == AuctionStatus.BIDDING
Optional 객체의 내부를 확인하지 않고 바로 get() 해오는것은 잘못된 방법입니다!
해당 코드에도 리팩토링이 필요할 것 같아요.
입찰 api CR
controller
입찰 기록 조회 입찰 bidding getbidsList
dto auctionId buyerId bidPrice
낙찰 api CR
controller concludding
dto auctionId buyerId hammerPrice
INSERT INTO member (created_at,updated_at,nickname, birth, email, phone_number, profile_image_url, role, user_status) VALUES (now(),now(),‘nickname123’, ‘1990-01-01’, ‘example@example.com’, ‘010-1234-5678’, ‘http://example.com/profile.jpg’, ‘USER’, ‘ACTIVATE’);
문제점
- member insert 쿼리 실패해도 autoincrement 적용됨
- db 연결이 맞는지?
error , log 메세지 컨벤션
- ~했습니다.
- ~합니다.
- 성공적으로 OO(처리)했습니다.
- OO에 성공하였습니다
- 입찰에 성공하였습니다.
- 성공적으로 입찰되었습니다.
시간 관리하는 엔티티를 하나 만들어서 비교하고 처리
이상함 - [ ] 멤버별 최저 입찰가보다 높게
global 익셉션 말고
어느 도메인에서 발생 할 지 예상되는 에러는 컨트롤러 밑에 붙인다
성능 높일려면 네이티브 쿼리 쓰는게 나음 인덱싱 조인 순서 서브 쿼리 파티셔닝
입찰 시간 비교는 서버의 시간을 기준으로 큐를 써서 비동기 처리
웬만하면 DB에서 소팅처리 그게 훨씬 빠르다
작은 테이블부터 조인
-
Map 사용
-
map 우선 조회 후 없으면 db 조회
-
메소드 명 수정
-
이전 입찰자 확인 코드 삭제
-
map에서 값이 있는지 확인 후 map에서 값을 꺼내옴
-
map에 있는 값과 현재 들어오는 가격을 비교 return
-
save 하고나서 값 업데이트 (대신 map에는 현재 가격이 하나만 들어있음)
1 번
A 5000 B 5500
A 4000
수정 사항
- 입찰 자기꺼는 등록 안되게
- bidUnit 대로 되게