Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/pick-PICKLE/pickle-server
Browse files Browse the repository at this point in the history
…into Feature/order-history
  • Loading branch information
llprn committed Feb 13, 2023
2 parents 2050c36 + 2ad8e06 commit e7b434b
Show file tree
Hide file tree
Showing 11 changed files with 66 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,5 @@
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;

@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "해당 id에 해당하는 의상이나 매장이 없습니다.")
@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "해당 id에 해당하는 데이터가 없습니다.")
public class NotFoundIdException extends RuntimeException{ }
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public ResponseEntity<DressDetailDto> viewDressDetail(@PathVariable("dress_id")
response = JSONObject.class,
notes = "카테고리 : 아우터, 상의, 하의, 원피스, 기타, (미입력시)전체\n"
+ "정렬 : 낮은가격순, 가까운거리순, (미입력시)좋아요많은순, 최신순\n"
+ "의상 검색 API"
+ "의상 검색 API\n"
+ "2km 이내의 의상 정보 리스트가 response로 나옵니다."
)
@ApiResponses({
Expand All @@ -60,8 +60,8 @@ public ResponseEntity<DressDetailDto> viewDressDetail(@PathVariable("dress_id")
public ResponseEntity<JSONObject> searchDress(@RequestParam("name") String name,
@RequestParam(value = "sort", required = false, defaultValue = DressSortBy.Constants.like) String sort,
@RequestParam(value = "category", required = false, defaultValue = DressCategory.Constants.all) String category,
@RequestParam(value = "latitude", required = false) Double latitude,
@RequestParam(value = "longitude", required = false) Double longitude,
@RequestParam(value = "latitude") Double latitude,
@RequestParam(value = "longitude") Double longitude,
@ApiIgnore @AuthenticationPrincipal User user){

return new ResponseEntity<>(
Expand Down Expand Up @@ -101,6 +101,22 @@ public ResponseEntity<JSONObject> makeReservation(@RequestBody DressReservationD
, HttpStatus.OK);
}

@ApiOperation(value = "의상 예약 취소하기",
httpMethod = "POST",
response = JSONObject.class,
notes = "의상 예약 취소 API"
)
@ApiResponses({
@ApiResponse(code = 200, message = "의상 예약 취소 성공")
})
@PostMapping("/reservation/cancel/{reservation_id}")
public ResponseEntity<JSONObject> cancelReservation(@PathVariable("reservation_id") Long reservationId){
dressService.cancelReservation(reservationId);
return new ResponseEntity<>(
PropertyUtil.response("예약 취소 완료")
, HttpStatus.OK);
}

@ApiOperation(value="의상 좋아요",
httpMethod = "POST",
response = UpdateDressLikeDto.class,
Expand All @@ -111,8 +127,7 @@ public ResponseEntity<JSONObject> makeReservation(@RequestBody DressReservationD
})
@PostMapping("/like")
public ResponseEntity<UpdateDressLikeDto> likeDress(@RequestBody UpdateDressLikeDto updatedressLikeDto,@ApiIgnore @AuthenticationPrincipal User user){
dressService.likesDress(updatedressLikeDto,user);
return new ResponseEntity<>(updatedressLikeDto
return new ResponseEntity<>(dressService.likesDress(updatedressLikeDto,user)
, HttpStatus.OK);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,4 +55,8 @@ public DressReservation(DressReservationDto dressReservationDto, User user, Stor
this.reservedDressList = reservedDressList;
this.status = DressReservationStatus.Constants.orderCompletion;
}

public void setStatus(String status) {
this.status = status;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ public enum DressReservationStatus {
ORDER_COMPLETION(Constants.orderCompletion),
PICKUP_WAITING(Constants.pickupWaiting),
PICKUP_COMPLETION(Constants.pickupCompletion),
PURCHASE_CONFIRMATION(Constants.purchaseCompletion);
PURCHASE_CONFIRMATION(Constants.purchaseCompletion),
CANCELED_ORDER(Constants.purchaseCompletion);

private final String sortBy;

Expand All @@ -27,5 +28,6 @@ public static class Constants {
public static final String pickupWaiting = "픽업대기";
public static final String pickupCompletion = "픽업완료";
public static final String purchaseCompletion = "구매확정";
public static final String canceledOrder = "주문취소";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,12 @@ public class UpdateDressLikeDto {
@JsonProperty("dress_id")
private Long dressId;

@ApiModelProperty(example = "의상 좋아요 여부")
@JsonProperty("is_like")
private Boolean isLike;

public UpdateDressLikeDto(DressLike dressLike) {
this.dressId = getDressId();

this.isLike = getIsLike();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,7 @@
import com.pickle.server.dress.domain.DressCategory;
import com.pickle.server.dress.domain.DressSortBy;
import com.pickle.server.dress.dto.*;
import com.querydsl.core.types.dsl.MathExpressions;
import com.querydsl.core.types.dsl.NumberExpression;
import com.querydsl.core.types.dsl.NumberPath;
import com.querydsl.core.types.dsl.*;
import com.querydsl.jpa.JPAExpressions;
import com.querydsl.jpa.impl.JPAQuery;
import com.querydsl.jpa.impl.JPAQueryFactory;
Expand Down Expand Up @@ -72,7 +70,9 @@ public List<DressBriefDto> findDressByCondition(String name, String sort, String

case DressSortBy.Constants.like:
return findDressByCategoryCondition(findDressByNameCondition(name, userId, latitude, longitude), category)
/*좋아요 순 정렬*/
.leftJoin(dressLike).on(dress.id.eq(dressLike.dress.id))
.groupBy(dress.id)
.orderBy(dressLike.count().desc())
.fetch();

case DressSortBy.Constants.newDress:
Expand Down
14 changes: 13 additions & 1 deletion src/main/java/com/pickle/server/dress/service/DressService.java
Original file line number Diff line number Diff line change
Expand Up @@ -66,14 +66,18 @@ public List<DressLikeDto> findDressLikeByUser(Long userId) {
}

@Transactional
public void likesDress(UpdateDressLikeDto updateDressLikeDto,User user){
public UpdateDressLikeDto likesDress(UpdateDressLikeDto updateDressLikeDto,User user){
Dress dress = dressRepository.findById(updateDressLikeDto.getDressId()).orElseThrow(NotFoundIdException::new);
if(dressLikeRepository.findByUserAndDress(user,dress).isPresent()){
dressLikeRepository.deleteDress(dress.getId(), user.getId());

return new UpdateDressLikeDto(updateDressLikeDto.getDressId(), Boolean.FALSE);
}
else{
DressLike dressLike = DressLike.builder().dress(dress).user(user).build();
dressLikeRepository.save(dressLike);

return new UpdateDressLikeDto(updateDressLikeDto.getDressId(), Boolean.TRUE);
}
}

Expand Down Expand Up @@ -111,4 +115,12 @@ public List<DressOrderListDto> getDressOrderList(String status,Long userId){
User user = userRepository.findById(userId).orElseThrow(() -> new NotFoundIdException());
return dressRepository.findReservationListByStatusAndUser(status,userId);
}

public void cancelReservation(Long reservationId) {
DressReservation dressReservation = dressReservationRepository.findById(reservationId).orElseThrow(
() -> new NotFoundIdException()
);
dressReservation.setStatus(DressReservationStatus.Constants.canceledOrder);
dressReservationRepository.save(dressReservation);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ public List<DressOverviewDto> getNewDresses(Long userId, Double lat, Double lng)
Stream<DressOverviewDto> newStream = dressRepository.findDressByStoreAndCreatedAt(userId, lat, lng, stdTime).stream().limit(30);
List<DressOverviewDto> newDresses = newStream.collect(Collectors.toList());

Collections.shuffle(newDresses);

return newDresses;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,8 @@ public ResponseEntity<StoreDetailDto> viewDressDetail(@PathVariable("store_id")
)
@ApiResponses({@ApiResponse(code = 200, message = "스토어 좋아요 추가/삭제 성공")})
@PostMapping("/like")
public ResponseEntity<UpdateStoreLikeDto> likeStore(@RequestBody UpdateStoreLikeDto updatestoreLikeDto,@ApiIgnore @AuthenticationPrincipal User user){
storeService.likesStore(updatestoreLikeDto,user);
return new ResponseEntity<>(updatestoreLikeDto
public ResponseEntity<UpdateStoreLikeDto> likeStore(@RequestBody UpdateStoreLikeDto updatestoreLikeDto, @ApiIgnore @AuthenticationPrincipal User user){
return new ResponseEntity<>(storeService.likesStore(updatestoreLikeDto,user)
, HttpStatus.OK);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,24 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.pickle.server.store.domain.StoreLike;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class UpdateStoreLikeDto {
@ApiModelProperty(example = "스토어 id")
@JsonProperty("store_id")
private Long storeId;

@ApiModelProperty(example = "스토어 좋아요 여부")
@JsonProperty("is_like")
private Boolean isLike;

public UpdateStoreLikeDto(StoreLike storeLike) {
this.storeId = getStoreId();
this.isLike = getIsLike();
}
}
12 changes: 9 additions & 3 deletions src/main/java/com/pickle/server/store/service/StoreService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.pickle.server.common.error.NotValidParamsException;
import com.pickle.server.dress.domain.DressCategory;
import com.pickle.server.dress.dto.DressBriefInStoreDto;
import com.pickle.server.dress.dto.UpdateDressLikeDto;
import com.pickle.server.store.domain.Store;
import com.pickle.server.store.domain.StoreLike;
import com.pickle.server.store.dto.StoreCoordDto;
Expand Down Expand Up @@ -57,12 +58,17 @@ public List<StoreLikeDto> findStoreLikeByUser(Long userId){
return storeRepository.findStoreByUsers(userId);
}
@Transactional
public void likesStore(UpdateStoreLikeDto updateStoreLikeDto,User user){
public UpdateStoreLikeDto likesStore(UpdateStoreLikeDto updateStoreLikeDto, User user){
Store store = storeRepository.findById(updateStoreLikeDto.getStoreId()).orElseThrow(()-> new NotFoundIdException());
if(storeLikeRepository.findByUserAndStore(user,store).isPresent()){storeLikeRepository.deleteStore(store.getId(),user.getId());}
else{
if(storeLikeRepository.findByUserAndStore(user,store).isPresent()){
storeLikeRepository.deleteStore(store.getId(),user.getId());

return new UpdateStoreLikeDto(updateStoreLikeDto.getStoreId(), Boolean.FALSE);
} else{
StoreLike storeLike = StoreLike.builder().store(store).user(user).build();
storeLikeRepository.save(storeLike);

return new UpdateStoreLikeDto(updateStoreLikeDto.getStoreId(), Boolean.TRUE);
}
}
/*
Expand Down

0 comments on commit e7b434b

Please sign in to comment.