Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature 246 공지사항 삭제 기능 구현 #248

Closed
wants to merge 5 commits into from
Closed
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 @@ -2,13 +2,14 @@

import com.checkping.common.response.BaseResponse;
import com.checkping.dto.notice.request.NoticeCreateRequestDto;
import com.checkping.dto.notice.response.NoticeResponseDto;
import com.checkping.dto.notice.request.NoticeUpdateRequestDto;
import com.checkping.dto.notice.response.NoticeCreateResponseDto;
import com.checkping.dto.notice.response.NoticeUpdateResponseDto;
import com.checkping.service.notice.NoticeServiceImpl;
import jakarta.persistence.Id;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
Expand All @@ -18,8 +19,24 @@ public class NoticeController {
private NoticeServiceImpl noticeService;

@PostMapping("/admins/notices")
public BaseResponse<NoticeResponseDto> registerNotice(@RequestBody NoticeCreateRequestDto noticeCreateRequestDto) {
NoticeResponseDto noticeResponseDto = noticeService.registerNotice(noticeCreateRequestDto);
return BaseResponse.success(noticeResponseDto);
public BaseResponse<NoticeCreateResponseDto> registerNotice(@RequestBody NoticeCreateRequestDto noticeCreateRequestDto) {
NoticeCreateResponseDto noticeCreateResponseDto = noticeService.registerNotice(noticeCreateRequestDto);
return BaseResponse.success(noticeCreateResponseDto);
}

@PatchMapping("/admins/notices/{noticeid}")
oowtl marked this conversation as resolved.
Show resolved Hide resolved
public BaseResponse<NoticeUpdateResponseDto> updateNotice(
@PathVariable Long noticeid,
@RequestBody NoticeUpdateRequestDto noticeUpdateRequestDto) {
NoticeUpdateResponseDto noticeUpdateResponseDto = noticeService.updateNotice(noticeid, noticeUpdateRequestDto);
return BaseResponse.success(noticeUpdateResponseDto);
}

@DeleteMapping("/admins/notices/{noticeid}")
public BaseResponse<NoticeUpdateResponseDto> deleteNotice(
@PathVariable Long noticeid
){
NoticeUpdateResponseDto noticeDeleteResponseDto = noticeService.deleteNotice(noticeid);
return BaseResponse.success(noticeDeleteResponseDto);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,6 @@ public enum Category {
private final String descrption;

}

@Getter
@RequiredArgsConstructor
public enum Priority {
Expand All @@ -77,4 +76,11 @@ public enum Priority {

private final String descrption;
}

public void updateNotice(String title, String content,String category, String priority){
if (title != null) this.title = title;
if (content != null) this.content = content;
if (category != null) this.category = Category.valueOf(category);
if (priority != null) this.priority = Priority.valueOf(priority);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.checkping.dto.notice.request;

import com.checkping.domain.notice.Notice;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Getter
public class NoticeUpdateRequestDto {

private String title;

private String content;

private String category;

private String priority;

public Notice toEntity(){
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 메서드는 어디에서 사용될까요? 서비스 코드에서는 notice id 로 find 를 해서 나온 결과인 notice 엔티티를 사용하는 것 같아서요

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제거하겠습니다!

return Notice.builder()
.title(title)
.content(content)
.category(Notice.Category.valueOf(category))
.priority(Notice.Priority.valueOf(priority))
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@

@Getter
@Builder
public class NoticeResponseDto {
public class NoticeCreateResponseDto {
private Long id;

private Long adminId;

private String title;
Expand All @@ -22,8 +24,9 @@ public class NoticeResponseDto {

private LocalDateTime regAt;

public static NoticeResponseDto toDto(Notice notice){
return NoticeResponseDto.builder()
public static NoticeCreateResponseDto toDto(Notice notice){
return NoticeCreateResponseDto.builder()
.id(notice.getId())
.adminId(notice.getAdminId())
.title(notice.getTitle())
.content(notice.getContent())
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.checkping.dto.notice.response;

import com.checkping.domain.notice.Notice;
import com.checkping.dto.notice.request.NoticeUpdateRequestDto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Builder
@Getter
public class NoticeUpdateResponseDto {

jaseongkim marked this conversation as resolved.
Show resolved Hide resolved
private Long id;

private Long adminId;

private String title;

private String content;

private Notice.Category category;

private Notice.Priority priority;

private LocalDateTime regAt;

private LocalDateTime updatedAt;

public static NoticeUpdateResponseDto toDto(Notice notice){
return NoticeUpdateResponseDto.builder()
.id(notice.getId())
.adminId(notice.getAdminId())
.title(notice.getTitle())
.content(notice.getContent())
.category(notice.getCategory())
.priority(notice.getPriority())
.regAt(notice.getUpdatedAt())
.updatedAt(notice.getUpdatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package com.checkping.service.notice;

import com.checkping.dto.notice.request.NoticeCreateRequestDto;
import com.checkping.dto.notice.response.NoticeResponseDto;
import com.checkping.dto.notice.request.NoticeUpdateRequestDto;
import com.checkping.dto.notice.response.NoticeCreateResponseDto;
import com.checkping.dto.notice.response.NoticeUpdateResponseDto;

public interface NoticeService {

NoticeResponseDto registerNotice(NoticeCreateRequestDto noticeCreateRequestDto);
NoticeCreateResponseDto registerNotice(NoticeCreateRequestDto noticeCreateRequestDto);

NoticeUpdateResponseDto updateNotice(Long noticeid, NoticeUpdateRequestDto noticeUpdateRequestDto);

NoticeUpdateResponseDto deleteNotice(Long noticeid);

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@
import com.checkping.common.enums.ErrorCode;
import com.checkping.common.exception.BaseException;
import com.checkping.domain.notice.Notice;
import com.checkping.domain.project.Project;
import com.checkping.dto.notice.request.NoticeCreateRequestDto;
import com.checkping.dto.notice.response.NoticeResponseDto;
import com.checkping.dto.notice.request.NoticeUpdateRequestDto;
import com.checkping.dto.notice.response.NoticeCreateResponseDto;
import com.checkping.dto.notice.response.NoticeUpdateResponseDto;
import com.checkping.infra.repository.notice.NoticeRepository;
import jakarta.persistence.Id;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -19,7 +24,7 @@ public class NoticeServiceImpl implements NoticeService {
private NoticeRepository noticeRepository;

@Override
public NoticeResponseDto registerNotice(NoticeCreateRequestDto noticeCreateRequestDto) {
public NoticeCreateResponseDto registerNotice(NoticeCreateRequestDto noticeCreateRequestDto) {

if (noticeCreateRequestDto.getAdminId() == null ||
StringUtils.isBlank(noticeCreateRequestDto.getTitle()) ||
Expand All @@ -30,6 +35,37 @@ public NoticeResponseDto registerNotice(NoticeCreateRequestDto noticeCreateReque
}

Notice notice = noticeRepository.save(noticeCreateRequestDto.toEntity());
return NoticeResponseDto.toDto(notice);
return NoticeCreateResponseDto.toDto(notice);
}

@Override
@Transactional
public NoticeUpdateResponseDto updateNotice(Long noticeid, NoticeUpdateRequestDto noticeUpdateRequestDto) {

if(StringUtils.isBlank(noticeUpdateRequestDto.getTitle()) &&
StringUtils.isBlank(noticeUpdateRequestDto.getContent()) &&
noticeUpdateRequestDto.getCategory() == null &&
noticeUpdateRequestDto.getPriority() == null){
throw new BaseException(ErrorCode.BAD_REQUEST);
}

Notice notice = noticeRepository.findById(noticeid)
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND));

notice.updateNotice(noticeUpdateRequestDto.getTitle(), noticeUpdateRequestDto.getContent(), noticeUpdateRequestDto.getCategory(), noticeUpdateRequestDto.getPriority());

return NoticeUpdateResponseDto.toDto(notice);

}

@Override
public NoticeUpdateResponseDto deleteNotice(Long noticeid){

Notice notice = noticeRepository.findById(noticeid)
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND));

noticeRepository.deleteById(noticeid);

jaseongkim marked this conversation as resolved.
Show resolved Hide resolved
return NoticeUpdateResponseDto.toDto(notice);
}
}