Skip to content

Commit

Permalink
#65 feat: 보드유저 승인API(approveBoardUser)-호스트가 신청자 승인, fix:보드유저 생성할때 승인된…
Browse files Browse the repository at this point in the history
… 사람만 조회 조건 추가
  • Loading branch information
xhaktmchl committed Jan 26, 2023
1 parent 21a6256 commit 7ab1b51
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,23 @@ public ApplicationResponse<BoardUserRes> joinBoardUser(@RequestBody @Validated C
return boardUserService.joinBoardUser(dto);
}


/**
* 보드 멤버 입장 승인
* @author 토마스
*/
@ApiOperation(value = "호스트가 보드 멤버 입장 승인", notes = "호스트가 보드 모임 가입 신청 수락, applyStatus를 변경")
@ApiResponses({
@ApiResponse(code= 201, message = "요청에 성공하였습니다."),
@ApiResponse(code= 404, message = "존재하지 않는 유저입니다."),
@ApiResponse(code= 404, message = "존재하지 않는 Board아이디입니다."),
@ApiResponse(code = 4000 , message = "서버 오류입니다.")
})
@PostMapping
public ApplicationResponse<BoardUserRes> approveBoardUser(@RequestBody @Validated CreateBoardUserReq dto){
return boardUserService.approveBoardUser(dto);
}

/**
* 보드 멤버 제거
* @author peanut
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ public class BoardUser extends BaseEntity {
@JoinColumn(name = "board_id")
private Board board;

private Integer applyStatus; // 승인 전=0, 승인 됨=1

/*
연관관계 편의 메서드
*/
Expand All @@ -33,5 +35,10 @@ public BoardUser(User user, Board board) {
this.user = user;
this.board = board;
// board.addBoardUser(this);
this.applyStatus = 0;
}

public void changeApplyStatus(){
this.applyStatus = 1;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,7 @@ public interface BoardUserService {

ApplicationResponse<BoardUserRes> joinBoardUser(CreateBoardUserReq createBoardUserReq);

ApplicationResponse<BoardUserRes> approveBoardUser(CreateBoardUserReq createBoardUserReq);

ApplicationResponse<Void> delBoardUser(CreateBoardUserReq createBoardUserReq);
}
Original file line number Diff line number Diff line change
Expand Up @@ -65,16 +65,18 @@ public ApplicationResponse<BoardUserRes> joinBoardUser(CreateBoardUserReq dto) {
BoardUser boardUser = new BoardUser(user, board);
BoardUser savedBoardUser = boardUserRepository.save(boardUser);

board.addCurrentMember();// 보드 현재 인원 +1
//board.addCurrentMember();// 보드 현재 인원 +1
board.addBoardUser(boardUser); // 보드에 멤버 추가

List<User> participants = board.getBoardUsers().stream()
.filter(bu -> !bu.getUser().equals(board.getHost()))
//.filter(bu -> !bu.getUser().equals(board.getHost()))
.filter(bu -> bu.getApplyStatus().equals(1)) // 참여 승인된 사람만 조회
.map(bu -> bu.getUser())
.collect(Collectors.toList());

List<String> participantsImageUUIds = board.getBoardUsers().stream()
.filter(bu -> !bu.getUser().equals(board.getHost()))
//.filter(bu -> !bu.getUser().equals(board.getHost()))
.filter(bu -> bu.getApplyStatus().equals(1)) // 참여 승인된 사람만 조회
.map(bu -> bu.getUser().getProfileImg())
.collect(Collectors.toList());

Expand All @@ -92,6 +94,47 @@ public ApplicationResponse<BoardUserRes> joinBoardUser(CreateBoardUserReq dto) {
return ApplicationResponse.create("보드에 유저가 조인되었습니다.", res);
}


@Transactional(readOnly = false)
@Override
public ApplicationResponse<BoardUserRes> approveBoardUser(CreateBoardUserReq dto){

userService.validateRefreshToken(dto.getUserId(), dto.getRefreshToken());

User user = userRepository.findByUserId(dto.getUserId())
.orElseThrow(() -> new NotFoundUserException());

Board board = boardRepository.findBoardById(dto.getBoardId())
.orElseThrow(() -> new NotFoundBoardException());

BoardUser boardUser = boardUserRepository.findByUserIdAndBoardId(user.getId(), board.getId())
.orElseThrow(() -> new NotFoundUserBoard());

// Validation: 보드 인원 다 차면 신청 불가능 검증
if(board.getCurrentMember() >= board.getTotalMember()){
throw new MaxBoardUserException();
}

boardUser.changeApplyStatus(); // 참여 승인으로 상태 업데이트
board.addCurrentMember();// 보드 현재 인원 +1
//board.addBoardUser(boardUser); // 보드에 멤버 추가

List<User> participants = board.getBoardUsers().stream()
//.filter(bu -> !bu.getUser().equals(board.getHost()))
.filter(bu -> bu.getApplyStatus().equals(1)) // 참여 승인된 사람만 조회
.map(bu -> bu.getUser())
.collect(Collectors.toList());

List<String> participantsImageUUIds = board.getBoardUsers().stream()
//.filter(bu -> !bu.getUser().equals(board.getHost()))
.filter(bu -> bu.getApplyStatus().equals(1)) // 참여 승인된 사람만 조회
.map(bu -> bu.getUser().getProfileImg())
.collect(Collectors.toList());

BoardUserRes res = BoardUserRes.toDto(boardUser,user, board, participants, awsS3Service.makeUrlsOfFilenames(participantsImageUUIds));
return ApplicationResponse.create("보드에 유저가 조인되었습니다.", res);
}

@Transactional
@Override
public ApplicationResponse<Void> delBoardUser(CreateBoardUserReq dto){
Expand Down

0 comments on commit 7ab1b51

Please sign in to comment.