Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public class Category extends BaseEntity {
private Long No;
@OneToMany(mappedBy = "category")
private List<Item> item = new ArrayList<>();
private String name;

@OneToMany(mappedBy = "category")
private List<categoryPrice> categoryPrices = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@ public class categoryPrice {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String status;
private int price;
private int status;
private int maxPrice;
private int minPrice;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="categoryNo")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@
import java.util.Optional;

public interface CategoryRepository extends JpaRepository<Category,Long>,CategoryRepositoryCustom {
Optional<Category> findByNo(Long no);

}
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
package Graduated.Task.C2C.Category.Repository;

import Graduated.Task.C2C.Category.Entity.Category;
import Graduated.Task.C2C.Category.Entity.categoryPrice;
import Graduated.Task.C2C.Item.Entity.Item;

import java.util.List;
import java.util.Optional;

public interface CategoryRepositoryCustom {
List<Item> findCategoryWithItem(Long categoryNo,final int startPage, final int PageSize);
Optional<categoryPrice> findCategoryPrice(Long categoryNo, int state);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import Graduated.Task.C2C.Category.Entity.Category;
import Graduated.Task.C2C.Category.Entity.QCategory;
import Graduated.Task.C2C.Category.Entity.QcategoryPrice;
import Graduated.Task.C2C.Category.Entity.categoryPrice;
import Graduated.Task.C2C.Item.Entity.Item;
import Graduated.Task.C2C.core.Querydsl4RepositorySupport;
import com.querydsl.jpa.impl.JPAQueryFactory;
Expand All @@ -23,11 +25,11 @@ public CategoryRepositoryImpl(EntityManager em) {
super(Category.class);
this.jpaQueryFactory = new JPAQueryFactory(em);
}

public List<Item> findCategoryWithItem(Long categoryNo,final int startPage, final int PageSize) {
return select(item).from(category).where(category.No.eq(categoryNo)).join(category.item,item).where(item.type.eq(Item.State.sale)).orderBy(item.createdDate.desc()).fetchJoin().offset(startPage)
.limit(PageSize).fetch();
public Optional<categoryPrice> findCategoryPrice(Long categoryNo,int state){
return Optional.ofNullable(selectFrom(QcategoryPrice.categoryPrice)
.where(QcategoryPrice.categoryPrice.category.No.eq(categoryNo), QcategoryPrice.categoryPrice.status.eq(state))
.join(QcategoryPrice.categoryPrice.category).fetchJoin()
.fetchOne());
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,7 @@
@RestController
@RequiredArgsConstructor
public class categoryController {
private final ItemService itemService;
@GetMapping("/api/{categoryNo}/{page}")
public ResponseEntity<?> CategoryItem(@PathVariable("categoryNo") Long categoryNo, @PathVariable("page") int page ){
List<ItemDto> itemDtos = itemService.viewCategoryItem(categoryNo, page, 10);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message, HttpStatus.OK);
}



}
145 changes: 145 additions & 0 deletions src/main/java/Graduated/Task/C2C/Item/Controller/itemController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
package Graduated.Task.C2C.Item.Controller;

import Graduated.Task.C2C.Item.Dto.ItemDetailDto;
import Graduated.Task.C2C.Item.Dto.ItemDto;
import Graduated.Task.C2C.Item.Dto.itemRequestDto;
import Graduated.Task.C2C.Item.Dto.joinItemDto;
import Graduated.Task.C2C.Item.Service.ItemService;
import Graduated.Task.C2C.core.ErrorMessage;
import Graduated.Task.C2C.core.JwtTokenUtil;
import Graduated.Task.C2C.core.Message;
import jakarta.servlet.http.HttpServletRequest;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.NoSuchElementException;

@RestController
@RequiredArgsConstructor
public class itemController {
private final ItemService itemService;
private final JwtTokenUtil jwtTokenUtil;
@GetMapping(value = {"/api/{categoryNo}/{page}","/api/{categoryNo}"})
public ResponseEntity<?> CategoryItem(@PathVariable("categoryNo") Long categoryNo, @PathVariable("page") Integer page ){
if(page==null) {
page = 1;
}
List<ItemDto> itemDtos = itemService.viewCategoryItem(categoryNo, page, 10);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message, HttpStatus.OK);
}

@GetMapping(value = {"/search/{item}/{page}","/search/{item}"})
public ResponseEntity<?> SearchItem(@PathVariable("item") String word,@PathVariable("page") Integer page){
if(page==null) {
page = 1;
}
List<ItemDto> itemDtos = itemService.searchItem(word, page, 10);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message, HttpStatus.OK);
}

@GetMapping("/itemInfo/{ItemNo}")
public ResponseEntity<?> itemDetail(@PathVariable("ItemNo") Long itemNo){
try {
ItemDetailDto itemDetailDto = itemService.itemInformation(itemNo);
Message<ItemDetailDto> itemDetailDtoMessage = Message.of(200, itemDetailDto);
return new ResponseEntity<>(itemDetailDtoMessage,HttpStatus.OK);
}
catch (NullPointerException e){
ErrorMessage errorMessage = ErrorMessage.of(404, e.getMessage());
return new ResponseEntity<>(errorMessage,HttpStatus.NOT_FOUND);
}
catch (NoSuchElementException e){
ErrorMessage errorMessage = ErrorMessage.of(401, e.getMessage());
return new ResponseEntity<>(errorMessage,HttpStatus.UNAUTHORIZED);}
catch (Exception e){
ErrorMessage errorMessage = ErrorMessage.of(500, "다시 시도해주십시오");
return new ResponseEntity<>(errorMessage,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PostMapping("/item/create")
public ResponseEntity<?> createItem(joinItemDto joinItemDto, HttpServletRequest request){
String accessToken = jwtTokenUtil.resolveAccessToken(request);
String userId = jwtTokenUtil.getclaims(accessToken).getSubject();
try{
Long itemNo = itemService.addItem(joinItemDto.getItemName(), joinItemDto.getPrice(), userId, joinItemDto.getCategoryNo(), joinItemDto.getItemState(),
joinItemDto.isPriceSimilar());
Message<itemRequestDto> message = Message.of(201,new itemRequestDto(itemNo,"상품이 성공적으로 수정되었습니다."));
return new ResponseEntity<>(message,HttpStatus.CREATED);
}
catch (NullPointerException e) {
ErrorMessage errorMessage = ErrorMessage.of(404, e.getMessage());
return new ResponseEntity<>(errorMessage,HttpStatus.NOT_FOUND);
}
catch (Exception e){
ErrorMessage errorMessage = ErrorMessage.of(500, "다시 시도해주십시오");
return new ResponseEntity<>(errorMessage,HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@PatchMapping("/item/patch/{itemNo}")
public ResponseEntity<?> changeItem(@PathVariable("itemNo") Long itemNo, joinItemDto joinItemDto,HttpServletRequest request){
try{
itemService.changeItem(itemNo, joinItemDto.getItemName(), joinItemDto.getPrice(), joinItemDto.getCategoryNo(), joinItemDto.getItemState(),
joinItemDto.isPriceSimilar());
Message<itemRequestDto> message = Message.of(200,new itemRequestDto(itemNo,"상품이 성공적으로 수정되었습니다."));
return new ResponseEntity<>(message,HttpStatus.OK);
}
catch (NullPointerException e) {
ErrorMessage errorMessage = ErrorMessage.of(404, e.getMessage());
return new ResponseEntity<>(errorMessage,HttpStatus.NOT_FOUND);
}
catch (Exception e){
ErrorMessage errorMessage = ErrorMessage.of(500, "다시 시도해주십시오");
return new ResponseEntity<>(errorMessage,HttpStatus.INTERNAL_SERVER_ERROR);
}
}

@DeleteMapping("/item/delete/{itemNo}")
public ResponseEntity<?> deleteItem(@PathVariable("itemNo") Long itemNo){
try{
itemService.deleteItem(itemNo);
Message<String> message = Message.of(200,"상품이 성공적으로 삭제되었습니다.");
return new ResponseEntity<>(message,HttpStatus.OK);
}
catch (NullPointerException e) {
ErrorMessage errorMessage = ErrorMessage.of(404, e.getMessage());
return new ResponseEntity<>(errorMessage,HttpStatus.NOT_FOUND);
}
catch (Exception e){
ErrorMessage errorMessage = ErrorMessage.of(500, "다시 시도해주십시오");
return new ResponseEntity<>(errorMessage,HttpStatus.INTERNAL_SERVER_ERROR);
}
}

@PostMapping("/userInfo/sellItems")
public ResponseEntity<?> sellItems(HttpServletRequest request) {
String accessToken = jwtTokenUtil.resolveAccessToken(request);
String userId = jwtTokenUtil.getclaims(accessToken).getSubject();
List<ItemDto> itemDtos = itemService.userSellerItem(userId);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message,HttpStatus.OK);
}

@PostMapping("/userInfo/buyItems")
public ResponseEntity<?> buyItems(HttpServletRequest request) {
String accessToken = jwtTokenUtil.resolveAccessToken(request);
String userId = jwtTokenUtil.getclaims(accessToken).getSubject();
List<ItemDto> itemDtos = itemService.userBuyItem(userId);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message,HttpStatus.OK);
}
@PostMapping("/userInfo/soldItems")
public ResponseEntity<?> soldItems(HttpServletRequest request) {
String accessToken = jwtTokenUtil.resolveAccessToken(request);
String userId = jwtTokenUtil.getclaims(accessToken).getSubject();
List<ItemDto> itemDtos = itemService.userSoldItem(userId);
Message<List<ItemDto>> message = Message.of(200, itemDtos);
return new ResponseEntity<>(message,HttpStatus.OK);
}

}
27 changes: 27 additions & 0 deletions src/main/java/Graduated/Task/C2C/Item/Dto/ItemDetailDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package Graduated.Task.C2C.Item.Dto;

import lombok.Data;

@Data
public class ItemDetailDto {
private Long itemId;
private String images;
private String itemName;
private int price;
private String category;
private int minPrice;
private int maxPrice;
private int itemState;

public ItemDetailDto(Long itemId, String itemName, int price, String category, int minPrice, int maxPrice, int itemState) {
this.itemId = itemId;
this.images = "";
this.itemName = itemName;
this.price = price;
this.category = category;
this.minPrice = minPrice;
this.maxPrice = maxPrice;
this.itemState = itemState;
}

}
11 changes: 11 additions & 0 deletions src/main/java/Graduated/Task/C2C/Item/Dto/itemRequestDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package Graduated.Task.C2C.Item.Dto;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class itemRequestDto {
private Long itemId;
private String message;
}
18 changes: 18 additions & 0 deletions src/main/java/Graduated/Task/C2C/Item/Dto/joinItemDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package Graduated.Task.C2C.Item.Dto;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

@Data
@Getter
@AllArgsConstructor
public class joinItemDto {
private String images;
private String itemName;
private int price;
private Long categoryNo;
private int itemState;
private boolean priceSimilar;

}
15 changes: 14 additions & 1 deletion src/main/java/Graduated/Task/C2C/Item/Entity/Item.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ public class Item extends BaseEntity {
@Enumerated(EnumType.STRING)
private State type;

private String image;
private Boolean priceSimilar;

private int itemState;
private int viewCount;

@ManyToOne(fetch = FetchType.LAZY)
Expand All @@ -47,8 +49,9 @@ public class Item extends BaseEntity {
@JsonIgnore//개발 과정에서만 사용 , 추후 DTO 변환과정에서는 삭제예정
private Category category;

public Item(String name, int price, Users seller, Category category) {
public Item(String name, int price, User seller, Category category,int itemState,boolean priceSimilar) {
this.name = name;
this.image="";
this.price = price;
this.seller = seller;
this.category = category;
Expand All @@ -57,6 +60,16 @@ public Item(String name, int price, Users seller, Category category) {
category.getItem().add(this);
}

public void changeItem(String name, int price, Boolean priceSimilar, int itemState, Category category) {
this.name = name;
this.image="";
this.price = price;
this.priceSimilar = priceSimilar;
this.itemState = itemState;
this.category = category;

}

public enum State{
sold,sale
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@
import Graduated.Task.C2C.Item.Entity.Item;

import java.util.List;
import java.util.Optional;

public interface ItemRepositoryCustom {
List<Item> searchItem(String word,final int startPage, final int PageSize);
List<Item> findCategoryWithItem(Long categoryNo,final int startPage, final int PageSize);
Optional<Item> findItemWithCategory(Long itemId);
List<Item> findBySellerItem(String userid);
List<Item> findByBuyerItem(String userid);

List<Item> findByCategoryItem(Long categoryNo);
List<Item> findBySellerItem(Long userNo);
List<Item> findByBuyerItem(Long userNo);

List<Item> findBySoldItem(Long userNo);
List<Item> findBySoldItem(String userid);
}
Loading