Skip to content

Commit

Permalink
✨ [Feature] AdminRoom show변경 API (#686)
Browse files Browse the repository at this point in the history
  • Loading branch information
JaBeast authored Mar 6, 2024
1 parent d57611c commit e32ca78
Show file tree
Hide file tree
Showing 7 changed files with 113 additions and 3 deletions.
4 changes: 4 additions & 0 deletions gg-data/src/main/java/gg/data/party/Room.java
Original file line number Diff line number Diff line change
Expand Up @@ -96,4 +96,8 @@ public void updateStatus(RoomType status) {
public void updateHost(User host) {
this.host = host;
}

public void updateRoomStatus(RoomType status) {
this.status = status;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,40 @@
package gg.pingpong.api.party.admin.room.controller;
package gg.party.api.admin.room.controller;

import javax.validation.Valid;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import gg.data.party.type.RoomType;
import gg.party.api.admin.room.controller.request.RoomShowChangeReqDto;
import gg.party.api.admin.room.service.RoomAdminService;
import gg.utils.exception.ErrorCode;
import gg.utils.exception.party.RoomStatNotFoundException;
import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping("/party/admin/rooms")
public class RoomAdminController {

private final RoomAdminService roomAdminService;

@PatchMapping("/{roomId}")
public ResponseEntity<Void> changeRoomVisibility(@PathVariable Long roomId,
@Valid @RequestBody RoomShowChangeReqDto reqDto) throws RoomStatNotFoundException {

RoomType roomType;
try {
roomType = RoomType.valueOf(reqDto.getStatus().toUpperCase());
} catch (IllegalArgumentException e) {
throw new RoomStatNotFoundException();
}

roomAdminService.modifyRoomStatus(roomId, roomType);
return ResponseEntity.ok().build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package gg.party.api.admin.room.controller.request;

import javax.validation.constraints.NotNull;

import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
public class RoomShowChangeReqDto {
@NotNull
private String status;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package gg.party.api.admin.room.service;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import gg.data.party.Room;
import gg.data.party.type.RoomType;
import gg.repo.party.RoomRepository;
import gg.utils.exception.party.RoomAlreadyHiddenException;
import gg.utils.exception.party.RoomNotFoundException;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class RoomAdminService {
private final RoomRepository roomRepository;

@Transactional
public void modifyRoomStatus(Long roomId, RoomType newStatus) {
Room room = roomRepository.findById(roomId)
.orElseThrow(RoomNotFoundException::new);

if (RoomType.HIDDEN == room.getStatus() && RoomType.HIDDEN == newStatus) {
throw new RoomAlreadyHiddenException();
}

room.updateRoomStatus(newStatus);
roomRepository.save(room);
}
}
6 changes: 4 additions & 2 deletions gg-utils/src/main/java/gg/utils/exception/ErrorCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -161,8 +161,10 @@ public enum ErrorCode {
USER_NOT_EXIST(404, "PT105", "방에 유저가 존재하지 않습니다."),
COMMENT_TOO_LONG(400, "PT201", "댓글은 100자 이하로 작성해주세요."),
ROOM_FINISHED(403, "PT501", "마감된 방입니다."),
ROOM_NOT_PARTICIPANT(400, "PT002", "해당 방의 참여자가 아닙니다."),
ROOM_NOT_OPEN(400, "PT003", "해당 방의 참여자가 아닙니다.");
ROOM_NOT_PARTICIPANT(400, "PT202", "해당 방의 참여자가 아닙니다."),
ROOM_NOT_OPEN(400, "PT203", "해당 방의 참여자가 아닙니다."),
ROOM_ALREADY_HIDDEN(400, "PT204", "이미 숨겨진 방입니다."),
ROOMSTAT_NOT_FOUND(404, "PT106", "존재하지 않는 방 status입니다.");

private final int status;
private final String errCode;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package gg.utils.exception.party;

import gg.utils.exception.ErrorCode;
import gg.utils.exception.custom.DuplicationException;

public class RoomAlreadyHiddenException extends DuplicationException {
public RoomAlreadyHiddenException(String message, ErrorCode errorCode) {
super(message, errorCode);
}

public RoomAlreadyHiddenException() {
super(ErrorCode.ROOM_ALREADY_HIDDEN.getMessage(), ErrorCode.ROOM_ALREADY_HIDDEN);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package gg.utils.exception.party;

import gg.utils.exception.ErrorCode;
import gg.utils.exception.custom.NotExistException;

public class RoomStatNotFoundException extends NotExistException {
public RoomStatNotFoundException(String message, ErrorCode errorCode) {
super(message, errorCode);
}

public RoomStatNotFoundException() {
super(ErrorCode.ROOMSTAT_NOT_FOUND.getMessage(), ErrorCode.ROOMSTAT_NOT_FOUND);
}
}

0 comments on commit e32ca78

Please sign in to comment.