Skip to content

Commit

Permalink
Merge pull request #22 from BbeumbungE/feat/BACK-85
Browse files Browse the repository at this point in the history
Feat: Record 도메인 API 생성
  • Loading branch information
ah9mon authored Sep 11, 2023
2 parents 2b49be3 + 594945a commit 97159f5
Show file tree
Hide file tree
Showing 44 changed files with 607 additions and 135 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,4 @@ public ResponseEntity createAvatarItem(@RequestBody @Valid AvatarItemCreateReque
public ResponseEntity getAllAvatarItems(Pageable pageable) {
return ResponseEntity.status(HttpStatus.OK).body(avatarItemFindDao.getAvatarItemListByPage(pageable));
}

@GetMapping("/{itemId}")
public ResponseEntity getAvatarItem(
@PathVariable("itemId") Long itemId
) {
return ResponseEntity.status(HttpStatus.OK).body(avatarItemFindDao.getAvatarItemById(itemId));
}
}
36 changes: 36 additions & 0 deletions src/main/java/com/siliconvalley/domain/item/item/api/ItemApi.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package com.siliconvalley.domain.item.item.api;

import com.siliconvalley.domain.item.item.dao.AvatarItemFindDao;
import com.siliconvalley.domain.item.item.dao.SubjectItemFindDao;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/api/items")
@RequiredArgsConstructor
public class ItemApi {

private final AvatarItemFindDao avatarItemFindDao;
private final SubjectItemFindDao subjectItemFindDao;

@GetMapping("/{itemId}/avatars")
public ResponseEntity getAvatarItem(
@PathVariable("itemId") Long itemId
) {
return ResponseEntity.status(HttpStatus.OK).body(avatarItemFindDao.getAvatarItemById(itemId));
}

@GetMapping("/{itemId}/subjects")
public ResponseEntity getSubjectItem(
@PathVariable("itemId") Long itemId
) {
return ResponseEntity.status(HttpStatus.OK).body(subjectItemFindDao.getSubjectItemById(itemId));
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,4 @@ public ResponseEntity createSubjectItem(@RequestBody @Valid SubjectItemCreateReq
public ResponseEntity getAllSubjectItems(Pageable pageable) {
return ResponseEntity.status(HttpStatus.OK).body(subjectItemFindDao.getSubjectItemListByPage(pageable));
}

@GetMapping("/{itemId}")
public ResponseEntity getAvatarItem(
@PathVariable("itemId") Long itemId
) {
return ResponseEntity.status(HttpStatus.OK).body(subjectItemFindDao.getSubjectItemById(itemId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public Response createAvatarItem(AvatarItemCreateRequest dto) {
Item item = dto.getItem();

// Item과 Avatar 빌드 및 연관관계 매핑
item.addAvatar(dto.getAvatar());
item.addAvatar(dto.getAvatar(item));

// Item이 저장될 때 Avatar 자동 저장
itemRepository.save(item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
import com.siliconvalley.domain.item.item.dao.ItemRepository;
import com.siliconvalley.domain.item.item.domain.Item;
import com.siliconvalley.domain.item.item.dto.ItemPostSuccessResponse;
import com.siliconvalley.domain.item.stage.dao.StageRepository;
import com.siliconvalley.domain.item.subject.domain.Subject;
import com.siliconvalley.domain.item.item.dto.SubjectItemCreateRequest;
import com.siliconvalley.global.common.dto.Response;
import lombok.RequiredArgsConstructor;
Expand All @@ -23,7 +21,7 @@ public Response createSubjectItem(SubjectItemCreateRequest dto) {
Item item = dto.getItem();

// Item과 Subject빌드 및 연관관계 매핑
item.addSubject(dto.getSubject());
item.addSubject(dto.getSubject(item));

// Item이 저장될 때 Subject 자동 저장
itemRepository.save(item);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.siliconvalley.domain.item.item.domain.Item;
import com.siliconvalley.domain.item.item.dto.AvatarItemResponse;
import com.siliconvalley.domain.item.myitem.dao.MyItemFindDao;
import com.siliconvalley.domain.item.myitem.domain.MyItem;
import com.siliconvalley.global.common.code.CommonCode;
import com.siliconvalley.global.common.dto.Response;
import com.siliconvalley.global.common.dto.page.PageResponse;
Expand All @@ -20,13 +22,23 @@ public class AvatarItemFindDao {

private final ItemRepository itemRepository;
private final ItemFindDao itemFindDao;
private final MyItemFindDao myItemFindDao;

public Response getAvatarItemListByPage(Pageable pageable) {
Page<Item> itemPage = itemRepository.findAllByAvatarIsNotNull(pageable);
List<AvatarItemResponse> itemResponseList = itemPage.map(item -> new AvatarItemResponse(item)).getContent();
return Response.of(CommonCode.GOOD_REQUEST,new PageResponse(itemResponseList,itemPage));
}

public Response getAvatarItemListByPage(Long profileId, Pageable pageable) {
Page<Item> itemPage = itemRepository.findAllByAvatarIsNotNull(pageable);
List<AvatarItemResponse> itemResponseList = itemPage.map(item -> {
boolean hasItem = myItemFindDao.checkHasItem(profileId, "avatar", item);
return new AvatarItemResponse(item, hasItem);
}).getContent();
return Response.of(CommonCode.GOOD_REQUEST,new PageResponse(itemResponseList,itemPage));
}

public Response getAvatarItemById(Long itemId) {
Item item = itemFindDao.findById(itemId);
return Response.of(CommonCode.GOOD_REQUEST, new AvatarItemResponse(item));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.siliconvalley.domain.item.item.domain.Item;
import com.siliconvalley.domain.item.item.dto.SubjectItemResponse;
import com.siliconvalley.domain.item.myitem.dao.MyItemFindDao;
import com.siliconvalley.domain.item.myitem.domain.MyItem;
import com.siliconvalley.global.common.code.CommonCode;
import com.siliconvalley.global.common.dto.Response;
import com.siliconvalley.global.common.dto.page.PageResponse;
Expand All @@ -20,12 +22,21 @@ public class SubjectItemFindDao {

private final ItemRepository itemRepository;
private final ItemFindDao itemFindDao;
private final MyItemFindDao myItemFindDao;

public Response getSubjectItemListByPage(Pageable pageable) {
Page<Item> itemPage = itemRepository.findAllBySubjectIsNotNull(pageable);
List<SubjectItemResponse> itemResponseList = itemPage.map(item -> new SubjectItemResponse(item)).getContent();
return Response.of(CommonCode.GOOD_REQUEST, new PageResponse(itemResponseList, itemPage));
}
public Response getSubjectItemListByPage(Long profileId, Pageable pageable) {
Page<Item> itemPage = itemRepository.findAllBySubjectIsNotNull(pageable);
List<SubjectItemResponse> itemResponseList = itemPage.map(item -> {
boolean hasItem = myItemFindDao.checkHasItem(profileId, "subject", item);
return new SubjectItemResponse(item, hasItem);
}).getContent();
return Response.of(CommonCode.GOOD_REQUEST, new PageResponse(itemResponseList, itemPage));
}

public Response getSubjectItemById(Long itemId) {
Item item = itemFindDao.findById(itemId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,9 @@ public Item(Long itemPrice) {

public void addAvatar(Avatar avatar) {
this.avatar = avatar;
avatar.setItem(this); // 양방향 관계 설정
}

public void addSubject(Subject subject) {
this.subject = subject;
subject.setItem(this); // 양방향 관계 설정
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ public Item getItem() {
.build();
}

public Avatar getAvatar() {
public Avatar getAvatar(Item item) {
return Avatar.builder()
.avatarName(avatarName)
.avatarImage(avatarImage)
.item(item)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@ public class AvatarItemResponse {

private Long id;
private Long itemPrice;
private boolean hasItem;
private AvatarResponse avatarResponse;

public AvatarItemResponse(final Item item) {
this.id = item.getId();
this.itemPrice = item.getItemPrice();
this.avatarResponse = new AvatarResponse(item.getAvatar());
}

public AvatarItemResponse(final Item item, final boolean hasItem) {
this.id = item.getId();
this.itemPrice = item.getItemPrice();
this.hasItem = hasItem;
this.avatarResponse = new AvatarResponse(item.getAvatar());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@ public Item getItem() {
.build();
}

public Subject getSubject() {
public Subject getSubject(Item item) {
return Subject.builder()
.subjectName(subjectName)
.subjectImage(subjectImage)
.item(item)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,19 @@ public class SubjectItemResponse {

private Long id;
private Long itemPrice;
private boolean hasItem;
private SubjectResponse subject;

public SubjectItemResponse(final Item item) {
this.id = item.getId();
this.itemPrice = item.getItemPrice();
this.subject = new SubjectResponse(item.getSubject());
}

public SubjectItemResponse(final Item item, final boolean hasItem) {
this.id = item.getId();
this.itemPrice = item.getItemPrice();
this.hasItem = hasItem;
this.subject = new SubjectResponse(item.getSubject());
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.siliconvalley.domain.item.myitem.dao;

import com.siliconvalley.domain.item.item.domain.Item;
import com.siliconvalley.domain.item.myitem.domain.MyItem;
import com.siliconvalley.domain.item.myitem.dto.MyAvatarItemResponse;
import com.siliconvalley.domain.item.myitem.dto.MySubjectItemResponse;
Expand All @@ -12,6 +13,7 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

@Service
@Transactional
Expand All @@ -32,4 +34,12 @@ public PageResponse getMyItemListByPage(Long profileId, Pageable pageable, Strin

return new PageResponse(myItemResponseList, myItemPage);
}
public boolean checkHasItem(Long profileId, String category, Item item) {
List<MyItem> myItemList = myItemRepository.findByProfileIdAndItemType(profileId, category);
boolean hasItem = false;
for (MyItem myItem : myItemList) {
if (Objects.equals(myItem.getItem(), item)) hasItem = true;
}
return hasItem;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface MyItemRepository extends JpaRepository<MyItem, Long> {
Page<MyItem> findByProfileIdAndItemType(Long profileId, String itemType, Pageable pageable);
List<MyItem> findByProfileIdAndItemType(Long profileId, String itemType);
}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
import com.siliconvalley.domain.item.sketch.application.SketchCreateService;
import com.siliconvalley.domain.item.sketch.dao.SketchFindDao;
import com.siliconvalley.domain.item.sketch.dto.SketchCreateRequest;
import com.siliconvalley.domain.item.stage.application.StageCreateService;
import com.siliconvalley.domain.item.stage.application.StageUpdateService;
import com.siliconvalley.domain.item.stage.dto.StageCreateRequest;
import com.siliconvalley.domain.stage.application.StageCreateService;
import com.siliconvalley.domain.stage.application.StageUpdateService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -20,7 +19,6 @@ public class SubjectApi {

private final SketchCreateService sketchCreateService;
private final SketchFindDao sketchFindDao;
private final StageCreateService stageCreateService;
private final StageUpdateService stageUpdateService;


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

import com.siliconvalley.domain.item.item.domain.Item;
import com.siliconvalley.domain.item.sketch.domain.Sketch;
import com.siliconvalley.domain.item.stage.domain.Stage;
import com.siliconvalley.domain.item.stage.dto.StageCreateRequest;
import com.siliconvalley.domain.stage.domain.Stage;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.siliconvalley.domain.item.subject.dto;

import com.querydsl.core.annotations.QueryProjection;
import com.siliconvalley.domain.item.subject.domain.Subject;
import com.siliconvalley.domain.item.sketch.dto.SketchResponseList;
import lombok.AccessLevel;
Expand All @@ -12,12 +13,10 @@ public class SubjectResponse {
private Long id;
private String subjectName;
private String subjectImage;
private SketchResponseList sketchList;

public SubjectResponse(Subject subject) {
this.id = subject.getId();
this.subjectName = subject.getSubjectName();
this.subjectImage = subject.getSubjectImage();
this.sketchList = new SketchResponseList(subject.getSketchList());
}
}
Loading

0 comments on commit 97159f5

Please sign in to comment.