Skip to content

Conversation

@nahjjun
Copy link
Member

@nahjjun nahjjun commented Jan 23, 2026

#️⃣연관된 이슈

📝작업 내용

[추가]

  1. 특정 카테고리의 아이템들을 조회하는 API

    • 특정 카테고리를 주면 해당 카테고리에 맞는 S3 이미지 링크 & 이미지 데이터들의 리스트를 Slice에 맞게 반환한다.
    • 한 Slice의 default size값은 화면 요구사항을 본 결과 6이 최고의 효율을 낼 것 같아 6으로 설정하였음.
  2. 특정 아이템 구매 API

    • 아이템의 PK를 클라이언트로부터 받아,
      (1) 해당 아이템이 실제로 존재하는 item인지?
      (2) 해당 사용자가 이미 구매한 Item인지?
      의 사항들을 검증함
    • 이후 해당 사용자가 갖고 있는 Ink에서 해당 item 가격만큼 차감한 뒤, 해당 아이템의 변경된 정보를 반환한다.
  3. 특정 아이템 장착/해체 API

    • 멱등성을 보장하기 위해, 토글식이 아니라 클라이언트로부터 해당 아이템의 변경시키고 싶은 상태값을 받아 UserItem.isEquipped 값을 바꾸도록 설정하였음
    • 같은 카테고리라면, 한번에 하나의 아이템만 장착할 수 있으므로, 다른 장착된 아이템의 상태를 해제 상태로 변경하는 로직 구성하였음
  4. 서버 시작 시, DB에 있는 Item Table의 내용을 확인하고, 설정된 값대로 Item 인스턴스들 자동으로 생성해서 Update 시켜주는 기능

[수정]
-1. User 회원가입(구글, Guest)시, 사용자 능력치(Ability) & Shop 아이템(기본 아이템) 부여해주도록 수정

💬리뷰 요구사항

  1. shop.loader.ItemInitializer

    • 해당 클래스는 서버가 실행될 때마다 코드로 생성해놓은대로 Item 인스턴스들이 DB에 업데이트 됨
    • 해당 방식이 과연 최적의 방식일지에 대한 검토가 필요할 것 같습니다.
  2. shopService.equipItem

    • 다른 아이템을 착용했을 때, 기존에 착용하던 아이템을 해제하는 로직의 시간복잡도(성능)을 높일 방법이 있는지에 대한 검토가 필요할 것 같습니다.

@nahjjun nahjjun self-assigned this Jan 23, 2026
@nahjjun nahjjun added the Feature New feature or request label Jan 23, 2026
@nahjjun nahjjun linked an issue Jan 23, 2026 that may be closed by this pull request
3 tasks
Copy link
Contributor

@phjlia2430 phjlia2430 left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!

insertCount++;
}
}
log.info("✅ 동기화 완료. [아이템 신규 추가: {}건, 아이템 수정: {}건", insertCount, updateCount);
Copy link
Contributor

Choose a reason for hiding this comment

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

아이템 신규 추가 부분에 [ ] 괄호 닫는 부분이 빠진거같습니다!

* - Key: Item::getFullUrl로 만든 Full Url
* - Value: Item 객체
*/
Map<String, Item> existItemMap = itemRepository.findAll().stream().collect(Collectors.toMap(
Copy link
Contributor

Choose a reason for hiding this comment

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

Collectors.toMap() 사용 시 key 중복이 발생하면 혹시나 부팅에서 오류가 발생할 가능성도 있어보입니다. 충돌 발생 시 어떤 데이터를 유지할지 지정해주거나 아니면 DB 에서 fullUrl에 unique 제약을 추가하는 방식도 함께 고려해볼 수 있을 것 같아요

@nahjjun nahjjun merged commit 81dfbed into develop Jan 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

✨ Feat: Shop 상점 & 아이템 & S3 API 개발

3 participants