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
6 changes: 6 additions & 0 deletions src/main/java/com/sookmyung/concon/Coupon/Entity/Coupon.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,13 +60,19 @@ public void useCoupon(LocalDate useDate) {
@Setter
private boolean buyFlag; // 구매 여부

private boolean sellFlag;

private String memo;


public void changeUser(User user) {
this.user = user;
}

public void updateSellFlag(boolean sellFlag) {
this.sellFlag = sellFlag;
}

public void update(String barcode, Double remainingPrice,
LocalDate expirationDate, String memo,
Item item, String itemImageUrl, Double itemPrice) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public Coupon toEntity(User user, Item item, LocalDateTime now) {
.itemPrice(item.getPrice())
.remainingPrice(price)
.expirationDate(expirationDate)
.sellFlag(false)
.buyFlag(false)
.memo(memo)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class CouponCreateResponseDto {
private Double price;
private String category;
private boolean isUsed;
private boolean isSellFlag;
private boolean isBuyFlag;
private String barcodeImageUploadUrl;
private String couponImageUploadUrl;
Expand All @@ -29,6 +30,7 @@ public static CouponCreateResponseDto toDto(Coupon coupon, ItemSimpleResponseDto
.expirationDate(coupon.getExpirationDate())
.price(coupon.getRemainingPrice())
.isUsed(false)
.isSellFlag(coupon.isSellFlag())
.isBuyFlag(coupon.isBuyFlag())
.barcodeImageUploadUrl(barcodeImageUploadUrl)
.couponImageUploadUrl(couponImageUploadUrl)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,25 +26,32 @@ public class CouponDetailResponseDto {
private Double price;
private LocalDate expirationDate;
private LocalDate usedDate;
private Boolean buyFlag;
private boolean sellFlag;
private boolean buyFlag;
private String memo;
private List<ReviewSimpleResponseDto> reviews;

// TODO : Exception 처리
public static CouponDetailResponseDto toDto(Coupon coupon, UserSimpleResponseDto user,
ItemSimpleResponseDto item, String barcodeImageUrl,
String couponImageUrl, List<ReviewSimpleResponseDto> reviews) {
String barcode = "";
if (!coupon.isSellFlag()) {
barcode = coupon.getBarcode();
}

return CouponDetailResponseDto.builder()
.couponId(coupon.getId())
.user(user)
.item(item)
.barcode(coupon.getBarcode())
.barcode(barcode)
.barcodeImageUrl(barcodeImageUrl)
.itemImageUrl(item.getImageUrl())
.couponImageUrl(couponImageUrl)
.price(coupon.getRemainingPrice())
.expirationDate(coupon.getExpirationDate())
.usedDate(coupon.getUsedDate())
.sellFlag(coupon.isSellFlag())
.buyFlag(coupon.isBuyFlag())
.memo(coupon.getMemo())
.reviews(reviews)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class CouponSimpleResponseDto {
private Double price;
private boolean isUsed;
private boolean isBuyFlag;
private boolean isSellFlag;
private String memo;

public static CouponSimpleResponseDto toDto(Coupon coupon, ItemSimpleResponseDto item, boolean isUsed) {
Expand All @@ -25,6 +26,7 @@ public static CouponSimpleResponseDto toDto(Coupon coupon, ItemSimpleResponseDto
.expirationDate(coupon.getExpirationDate())
.price(coupon.getRemainingPrice())
.isUsed(isUsed)
.isSellFlag(coupon.isSellFlag())
.isBuyFlag(coupon.isBuyFlag())
.memo(coupon.getMemo())
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,15 @@ public class CouponFacade {
private final ReviewRepository reviewRepository;

public CouponDetailResponseDto toDetailDto(Coupon coupon, User user, Item item) {
String couponImageUrl = photoFacade.getCouponPhotoUrl(coupon);
String barcodeImageUrl = photoFacade.getCouponBarcodePhotoUrl(coupon);
String couponImageUrl = "";
String barcodeImageUrl = "";
if (!coupon.isSellFlag()) {
couponImageUrl = photoFacade.getCouponPhotoUrl(coupon);
barcodeImageUrl = photoFacade.getCouponBarcodePhotoUrl(coupon);
}
UserSimpleResponseDto userDto = UserSimpleResponseDto.toDto(user, photoFacade.getUserPhotoUrl(user));
ItemSimpleResponseDto itemDto = ItemSimpleResponseDto.toDto(item, photoFacade.getItemPhotoUrl(item));

List<ReviewSimpleResponseDto> reviews = reviewRepository.findAllByItemId(item.getId(), PageRequest.of(0, 10))
.stream().map(ReviewSimpleResponseDto::toDto).toList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ public class CouponService {
private final ItemFacade itemFacade;
private final OrderUserFacade orderUserFacade;
private final CouponFacade couponFacade;
private final PhotoFacade photoFacade;
private final UserFacade userFacade;
private final ReviewRepository reviewRepository;


Expand All @@ -61,6 +59,9 @@ public List<CouponSimpleResponseDto> getAllMyCoupon(String token) {
.map(couponFacade::toSimpleDto)
.toList();
}


// 쿠폰 ID 로 단일 조회
@Transactional(readOnly = true)
public CouponDetailResponseDto getCouponDetail(String token, Long couponId) {
User user = orderUserFacade.findUserByToken(token);
Expand Down Expand Up @@ -95,6 +96,7 @@ public CouponDetailResponseDto cancelCoupon(Long couponId) {
return couponFacade.toDetailDto(coupon, coupon.getUser(), coupon.getItem());
}

// 남은 돈 업데이트
@Transactional
public CouponDetailResponseDto changeRemainPrice(CouponChangePriceRequestDto request) {
Coupon coupon = couponFacade.findByCouponId(request.getCouponId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,8 @@ public ResponseEntity<? extends BasicResponse> requestOrder(
@PostMapping("/cancel/{order-id}")
public ResponseEntity<OrderDetailResponseDto> cancelTransaction(
@PathVariable("order-id") Long orderId) {
return ResponseEntity.ok(transactionService.cancelTransaction(orderId));
transactionService.cancelTransaction(orderId);
return ResponseEntity.noContent().build();
}

// 거래 완료
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,16 @@
@Builder @Getter
public class OrderRequestResponseDto {
private Long orderId;
private String orderTitle;
private Long requesterId;
private String requesterName;
private String qrImage;

public static OrderRequestResponseDto toDto(Orders orders, User requester) {
public static OrderRequestResponseDto toDto(Orders orders, User requester, String qrImage) {
return OrderRequestResponseDto.builder()
.orderId(orders.getId())
.requesterId(requester.getId())
.requesterName(requester.getUsername())
.qrImage(qrImage)
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,9 @@ public OrderDetailResponseDto createOrder(OrderCreateRequestDto request) {
User seller = coupon.getUser();
Orders orders = request.toEntity(coupon, seller);
orderRepository.save(orders);

coupon.updateSellFlag(true);

return OrderDetailResponseDto.toDto(orders,
CouponSimpleResponseDto.toDto(coupon,
ItemSimpleResponseDto.toDto(item, photoFacade.getItemPhotoUrl(item)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.sookmyung.concon.Order.exception.OrderInProgressException;
import com.sookmyung.concon.Order.repository.OrderRepository;
import com.sookmyung.concon.Order.repository.OrderRequestRedisRepository;
import com.sookmyung.concon.Photo.service.PhotoFacade;
import com.sookmyung.concon.Photo.service.PhotoService;
import com.sookmyung.concon.User.Entity.User;
import com.sookmyung.concon.User.Jwt.JwtUtil;
Expand Down Expand Up @@ -43,6 +44,7 @@ public class TransactionService {
private final UserFacade userFacade;
private final CouponFacade couponFacade;
private final OrderFacade orderFacade;
private final PhotoFacade photoFacade;


// order 아이디로 거래 찾기
Expand Down Expand Up @@ -108,7 +110,7 @@ private OrderDetailResponseDto toOrderDetailDto(Orders order) {

// 거래 요청 시 바로 거래 중으로 변경
@Transactional
public OrderDetailResponseDto requestOrder(Long orderId, String token) {
public OrderRequestResponseDto requestOrder(Long orderId, String token) {
Orders orders = findOrdersById(orderId);
User buyer = userFacade.findUserByToken(token);
if (orders.getStatus() != OrderStatus.AVAILABLE) {
Expand All @@ -122,12 +124,14 @@ public OrderDetailResponseDto requestOrder(Long orderId, String token) {
Long sellerId = orders.getSeller().getId();
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(orders, buyer);
eventPublisher.publishEvent(sellerId, ORDER_REQUESTED, response);
return toOrderDetailDto(orders);

String userQRPhotoUrl = photoFacade.getUserQRPhotoUrl(orders.getBuyer());
return OrderRequestResponseDto.toDto(orders, buyer, userQRPhotoUrl);
}

// 거래 중 취소
@Transactional
public OrderDetailResponseDto cancelTransaction(Long orderId) {
public void cancelTransaction(Long orderId) {
Orders order = findOrdersById(orderId);
User buyer = order.getBuyer();
order.setBuyer(null);
Expand All @@ -137,8 +141,6 @@ public OrderDetailResponseDto cancelTransaction(Long orderId) {
List<Long> userIds = List.of(order.getSeller().getId(), buyer.getId());
OrderEventAlarmDto response = OrderEventAlarmDto.toDto(order, buyer);
eventPublisher.publishEventToMultipleUsers(userIds, ORDER_CANCELED, response);

return toOrderDetailDto(order);
}

// 거래 완료
Expand All @@ -151,6 +153,7 @@ public OrderDetailResponseDto completeTransaction(Long orderId) {
Coupon coupon = order.getCoupon();
coupon.changeUser(order.getBuyer());
coupon.setBuyFlag(true);
coupon.updateSellFlag(false);

// orderRequestRedisRepository.delete(orderId);

Expand Down
Loading