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 @@ -9,6 +9,7 @@
import org.jullaene.walkmong_back.api.apply.dto.res.*;
import org.jullaene.walkmong_back.api.apply.repository.ApplyRepository;
import org.jullaene.walkmong_back.api.board.domain.Board;
import org.jullaene.walkmong_back.api.board.domain.enums.WalkingStatus;
import org.jullaene.walkmong_back.api.board.dto.res.BoardPreviewResponseDto;
import org.jullaene.walkmong_back.api.board.repository.BoardRepository;
import org.jullaene.walkmong_back.api.chat.dto.res.ChatRoomListResponseDto;
Expand Down Expand Up @@ -136,10 +137,16 @@ public ApplicationFormResponseDto getApplicationFormInfo(Long boardId, Long appl
*/
@Transactional
public void confirmMatching(Long boardId, Long applyId) {
Apply matchApply=applyRepository.findByApplyIdAndBoardIdAndDelYn(applyId,boardId,"N");
Apply matchApply = applyRepository.findByApplyIdAndBoardIdAndDelYn(applyId,boardId,"N");
log.info("진입");
matchApply.changeState(); //매칭 완료 상태로 바꾼다
applyRepository.save(matchApply);

Board board = boardRepository.findByBoardIdAndDelYn(matchApply.getBoardId(), "N")
.orElseThrow(() -> new CustomException(HttpStatus.NOT_FOUND, ErrorType.INVALID_BOARD));

board.updateWalkingStatus(WalkingStatus.BEFORE);

//나머지 지원을 취소처리
applyRepository.cancelOtherApplications(boardId,applyId);
}
Expand Down Expand Up @@ -178,9 +185,14 @@ public void cancelApply(Long applyId) {
*매칭 취소: status를 PENDING으로 바꾼다
*/
public void cancelMatching(Long applyId) {
Apply apply=applyRepository.findById(applyId).orElseThrow(()->new CustomException(HttpStatus.BAD_REQUEST,ErrorType.INVALID_USER));
Apply changedApply=apply.cancelMatching();
Apply apply = applyRepository.findById(applyId).orElseThrow(()->new CustomException(HttpStatus.BAD_REQUEST,ErrorType.INVALID_USER));
Apply changedApply = apply.cancelMatching();
applyRepository.save(changedApply);

Board board = boardRepository.findByBoardIdAndDelYn(apply.getBoardId(), "N")
.orElseThrow(() -> new CustomException(HttpStatus.NOT_FOUND, ErrorType.INVALID_BOARD));

board.updateWalkingStatus(WalkingStatus.PENDING);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,19 @@ public Board (BoardRequestDto boardRequestDto, String content, Long ownerId) {
this.endTime = boardRequestDto.getEndTime();
this.locationNegotiationYn = boardRequestDto.getLocationNegotiationYn();
this.preMeetAvailableYn = boardRequestDto.getPreMeetAvailableYn();
this.walkingStatus = WalkingStatus.BEFORE;
this.walkingStatus = WalkingStatus.PENDING;
this.ownerId = ownerId;
}

public void updateWalkingStatus(WalkingStatus walkingStatus) {
this.walkingStatus = walkingStatus;

if (walkingStatus.equals(WalkingStatus.PENDING) && this.matchingYn.equals("Y")) {
this.matchingYn = "N";
}
else if (this.matchingYn.equals("N")) {
this.matchingYn = "Y";
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -366,6 +366,8 @@ public List<MatchingResponseDto> getBoardInfoResponse(Long memberId, WalkMatchin
BooleanBuilder builder = new BooleanBuilder();
LocalDateTime now = LocalDateTime.now();

log.info("memberId : " + memberId);

// 매칭 전 : 지원 상태가 PENDING이고 산책 날짜 안 지남
if (status.equals(WalkMatchingStatus.PENDING)) {
builder.and(board.walkingStatus.eq(WalkingStatus.PENDING))
Expand All @@ -382,8 +384,9 @@ else if (status.equals(WalkMatchingStatus.AFTER)) {
}
// 매칭 취소 : 지원 상태가 REJECT이거나 지원 상태가 PENDING인데 날짜 지남
else if (status.equals(WalkMatchingStatus.REJECT)) {
log.info("매칭 취소 조건 추가");
builder.and(board.walkingStatus.eq(WalkingStatus.PENDING))
.and(board.startTime.after(now));
.and(board.startTime.before(now));
}

return queryFactory.selectDistinct(
Expand All @@ -409,15 +412,15 @@ else if (status.equals(WalkMatchingStatus.REJECT)) {
.join(apply)
.on(apply.boardId.eq(board.boardId)
.and(apply.delYn.eq(delYn))) // Apply와 Board를 연결하는 조건 추가
.join(member)
.leftJoin(member)
.on(member.memberId.eq(apply.memberId)
.and(member.delYn.eq(delYn))
.and(board.walkingStatus.ne(WalkingStatus.PENDING)) // board.walkingStatus가 PENDING이 아닌 경우
.and(apply.matchingStatus.eq(MatchingStatus.CONFIRMED))) // apply.matchingStatus가 CONFIRMED인 경우)
.where(board.ownerId.eq(memberId)
.and(board.delYn.eq(delYn))
.and(builder)
)
.where(builder)
.fetch();
}

Expand Down
Loading