diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/AiMessageDto.java b/src/main/java/com/sw19/sofa/domain/ai/dto/AiMessageDto.java new file mode 100644 index 0000000..7930bd3 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/ai/dto/AiMessageDto.java @@ -0,0 +1,7 @@ +package com.sw19.sofa.domain.ai.dto; + +import io.swagger.v3.oas.annotations.media.Schema; + +public record AiMessageDto(String role, @Schema(description = "prompt") String content) { + +} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/ChoiceDto.java b/src/main/java/com/sw19/sofa/domain/ai/dto/ChoiceDto.java new file mode 100644 index 0000000..a7fa6d1 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/ai/dto/ChoiceDto.java @@ -0,0 +1,4 @@ +package com.sw19.sofa.domain.ai.dto; + +public record ChoiceDto(int index, MessageDto message, String finishReason) { +} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/MessageDto.java b/src/main/java/com/sw19/sofa/domain/ai/dto/MessageDto.java new file mode 100644 index 0000000..68d9171 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/ai/dto/MessageDto.java @@ -0,0 +1,4 @@ +package com.sw19.sofa.domain.ai.dto; + +public record MessageDto(String role, String content) { +} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/request/ChatGptRequest.java b/src/main/java/com/sw19/sofa/domain/ai/dto/request/ChatGptRequest.java deleted file mode 100644 index 99a34f7..0000000 --- a/src/main/java/com/sw19/sofa/domain/ai/dto/request/ChatGptRequest.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.sw19.sofa.domain.ai.dto.request; - -import java.util.ArrayList; -import java.util.List; - -import com.sw19.sofa.global.common.dto.AiMessageDto; - -import lombok.Data; - -@Data -public class ChatGptRequest { - private String model; - private List messages; - private int maxTokens; - - public ChatGptRequest(String model, String prompt, int maxTokens) { - this.model = model; - this.maxTokens = maxTokens; - this.messages = new ArrayList<>(); - this.messages.add(new AiMessageDto("user", prompt)); - } -} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/request/GptReq.java b/src/main/java/com/sw19/sofa/domain/ai/dto/request/GptReq.java new file mode 100644 index 0000000..e5d6583 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/ai/dto/request/GptReq.java @@ -0,0 +1,13 @@ +package com.sw19.sofa.domain.ai.dto.request; + +import java.util.ArrayList; +import java.util.List; + +import com.sw19.sofa.domain.ai.dto.AiMessageDto; + +public record GptReq(String model, List messages, int maxToken) { + public GptReq(String model, String prompt, int maxToken) { + this(model, new ArrayList<>(), maxToken); + this.messages.add(new AiMessageDto("user", prompt)); + } +} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/response/ChatGptResponse.java b/src/main/java/com/sw19/sofa/domain/ai/dto/response/ChatGptResponse.java deleted file mode 100644 index 3e5fa43..0000000 --- a/src/main/java/com/sw19/sofa/domain/ai/dto/response/ChatGptResponse.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sw19.sofa.domain.ai.dto.response; - -import java.util.List; - -import lombok.Data; - -@Data -public class ChatGptResponse { - private String id; - private String object; - private long created; - private String model; - private List choices; - - @Data - public static class Choice { - private int index; - private Message message; - private String finishReason; - } - - @Data - public static class Message { - private String role; - private String content; - } -} diff --git a/src/main/java/com/sw19/sofa/domain/ai/dto/response/GPTRes.java b/src/main/java/com/sw19/sofa/domain/ai/dto/response/GPTRes.java new file mode 100644 index 0000000..651b990 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/ai/dto/response/GPTRes.java @@ -0,0 +1,14 @@ +package com.sw19.sofa.domain.ai.dto.response; + +import java.util.List; + +import com.sw19.sofa.domain.ai.dto.ChoiceDto; + +public record GPTRes( + String id, + String object, + long created, + String model, + List choices +) { +} diff --git a/src/main/java/com/sw19/sofa/domain/ai/service/OpenAiService.java b/src/main/java/com/sw19/sofa/domain/ai/service/OpenAiService.java index 9bdd423..1ece74b 100644 --- a/src/main/java/com/sw19/sofa/domain/ai/service/OpenAiService.java +++ b/src/main/java/com/sw19/sofa/domain/ai/service/OpenAiService.java @@ -7,8 +7,9 @@ import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; -import com.sw19.sofa.domain.ai.dto.request.ChatGptRequest; -import com.sw19.sofa.domain.ai.dto.response.ChatGptResponse; +import com.sw19.sofa.domain.ai.dto.MessageDto; +import com.sw19.sofa.domain.ai.dto.request.GptReq; +import com.sw19.sofa.domain.ai.dto.response.GPTRes; import lombok.extern.slf4j.Slf4j; @@ -33,23 +34,23 @@ public OpenAiService(RestTemplate restTemplate, public String sendPrompt(String prompt, int maxTokens) { log.info("Creating ChatGPT request with max tokens: {}", maxTokens); - ChatGptRequest request = new ChatGptRequest(model, prompt, maxTokens); + GptReq request = new GptReq(model, prompt, maxTokens); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); headers.set("Authorization", "Bearer " + apiKey); - HttpEntity entity = new HttpEntity<>(request, headers); + HttpEntity entity = new HttpEntity<>(request, headers); try { log.info("Sending request to OpenAI API"); - ChatGptResponse response = restTemplate.postForObject(apiUrl, entity, ChatGptResponse.class); + GPTRes response = restTemplate.postForObject(apiUrl, entity, GPTRes.class); log.info("Received response from OpenAI API"); - if (response != null && response.getChoices() != null && !response.getChoices().isEmpty()) { - ChatGptResponse.Message message = response.getChoices().get(0).getMessage(); + if (response != null && response.choices() != null && !response.choices().isEmpty()) { + MessageDto message = response.choices().get(0).message(); if (message != null) { - return message.getContent(); + return message.content(); } } } catch (Exception e) { diff --git a/src/main/java/com/sw19/sofa/domain/alarm/api/AlarmApi.java b/src/main/java/com/sw19/sofa/domain/alarm/api/AlarmApi.java index 1699b8d..e6c6f30 100644 --- a/src/main/java/com/sw19/sofa/domain/alarm/api/AlarmApi.java +++ b/src/main/java/com/sw19/sofa/domain/alarm/api/AlarmApi.java @@ -2,7 +2,7 @@ import org.springframework.http.ResponseEntity; -import com.sw19.sofa.domain.alarm.dto.response.AlarmListRes; +import com.sw19.sofa.domain.alarm.dto.response.AlarmsRes; import com.sw19.sofa.domain.member.entity.Member; import io.swagger.v3.oas.annotations.Operation; @@ -15,7 +15,7 @@ public interface AlarmApi { description = "사용자의 알람 목록을 반환합니다.") @ApiResponse(responseCode = "200", description = "알림 정보(id, 타입(REMIND:리마인드, RECOMMEND: 추천, UPDATE: 업데이트, NOTICE: 공지사항), 내용, 시간, 읽음 여부)") - ResponseEntity getAlarmList(Member member); + ResponseEntity getAlarmList(Member member); @Operation(summary = "알림 읽음 처리", description = "해당 알림을 읽음 처리합니다.") diff --git a/src/main/java/com/sw19/sofa/domain/alarm/controller/AlarmController.java b/src/main/java/com/sw19/sofa/domain/alarm/controller/AlarmController.java index f7b6413..d4963e9 100644 --- a/src/main/java/com/sw19/sofa/domain/alarm/controller/AlarmController.java +++ b/src/main/java/com/sw19/sofa/domain/alarm/controller/AlarmController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import com.sw19.sofa.domain.alarm.api.AlarmApi; -import com.sw19.sofa.domain.alarm.dto.response.AlarmListRes; +import com.sw19.sofa.domain.alarm.dto.response.AlarmsRes; import com.sw19.sofa.domain.alarm.service.AlarmService; import com.sw19.sofa.domain.member.entity.Member; import com.sw19.sofa.global.common.dto.BaseResponse; @@ -24,8 +24,8 @@ public class AlarmController implements AlarmApi { @Override @GetMapping - public ResponseEntity getAlarmList(@AuthMember Member member) { - AlarmListRes res = alarmService.getAlarmList(member); + public ResponseEntity getAlarmList(@AuthMember Member member) { + AlarmsRes res = alarmService.getAlarmList(member); return BaseResponse.ok(res); } diff --git a/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmRes.java b/src/main/java/com/sw19/sofa/domain/alarm/dto/AlarmDto.java similarity index 83% rename from src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmRes.java rename to src/main/java/com/sw19/sofa/domain/alarm/dto/AlarmDto.java index 77714a3..846ebb9 100644 --- a/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmRes.java +++ b/src/main/java/com/sw19/sofa/domain/alarm/dto/AlarmDto.java @@ -1,4 +1,4 @@ -package com.sw19.sofa.domain.alarm.dto.response; +package com.sw19.sofa.domain.alarm.dto; import java.time.LocalDateTime; @@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; -public record AlarmRes( +public record AlarmDto( @Schema(description = "아이디") String id, @Schema(description = "알림 종류(REMIND:리마인드, RECOMMEND: 추천, UPDATE: 업데이트, NOTICE: 공지사항)") @@ -16,7 +16,7 @@ public record AlarmRes( @Schema(description = "알림 날짜") LocalDateTime time ) { - public AlarmRes(Alarm alarm) { + public AlarmDto(Alarm alarm) { this(alarm.getEncryptId(), alarm.getType().name(), alarm.getContent(), alarm.getCreatedAt()); } } diff --git a/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmListRes.java b/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmListRes.java deleted file mode 100644 index b7458d2..0000000 --- a/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmListRes.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.sw19.sofa.domain.alarm.dto.response; - -import java.util.List; - -public record AlarmListRes( - List alarmList -) { -} diff --git a/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmsRes.java b/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmsRes.java new file mode 100644 index 0000000..5855fa9 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/alarm/dto/response/AlarmsRes.java @@ -0,0 +1,10 @@ +package com.sw19.sofa.domain.alarm.dto.response; + +import java.util.List; + +import com.sw19.sofa.domain.alarm.dto.AlarmDto; + +public record AlarmsRes( + List alarms +) { +} diff --git a/src/main/java/com/sw19/sofa/domain/alarm/service/AlarmService.java b/src/main/java/com/sw19/sofa/domain/alarm/service/AlarmService.java index e350100..fac2788 100644 --- a/src/main/java/com/sw19/sofa/domain/alarm/service/AlarmService.java +++ b/src/main/java/com/sw19/sofa/domain/alarm/service/AlarmService.java @@ -6,8 +6,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.sw19.sofa.domain.alarm.dto.response.AlarmListRes; -import com.sw19.sofa.domain.alarm.dto.response.AlarmRes; +import com.sw19.sofa.domain.alarm.dto.AlarmDto; +import com.sw19.sofa.domain.alarm.dto.response.AlarmsRes; import com.sw19.sofa.domain.alarm.entity.Alarm; import com.sw19.sofa.domain.alarm.enums.AlarmType; import com.sw19.sofa.domain.alarm.error.AlarmErrorCode; @@ -48,11 +48,11 @@ public void deleteExpiredAlarm() { alarmRepository.deleteAll(deleteList); } - public AlarmListRes getAlarmList(Member member) { + public AlarmsRes getAlarmList(Member member) { List alarmList = alarmRepository.findAllByMember(member); - List alarmResList = alarmList.stream().map(AlarmRes::new).toList(); + List alarmDtos = alarmList.stream().map(AlarmDto::new).toList(); - return new AlarmListRes(alarmResList); + return new AlarmsRes(alarmDtos); } @Transactional diff --git a/src/main/java/com/sw19/sofa/domain/folder/api/FolderApi.java b/src/main/java/com/sw19/sofa/domain/folder/api/FolderApi.java index 6f183e4..510c86a 100644 --- a/src/main/java/com/sw19/sofa/domain/folder/api/FolderApi.java +++ b/src/main/java/com/sw19/sofa/domain/folder/api/FolderApi.java @@ -3,8 +3,8 @@ import org.springframework.http.ResponseEntity; import com.sw19.sofa.domain.folder.dto.request.FolderReq; -import com.sw19.sofa.domain.folder.dto.response.FolderListRes; import com.sw19.sofa.domain.folder.dto.response.FolderRes; +import com.sw19.sofa.domain.folder.dto.response.FoldersRes; import com.sw19.sofa.domain.member.entity.Member; import com.sw19.sofa.global.error.dto.ErrorResponse; @@ -21,13 +21,13 @@ public interface FolderApi { @ApiResponses({ @ApiResponse(responseCode = "200", description = "전체 폴더(아이디, 폴더 이름) 리스트 반환") }) - ResponseEntity getFolderList(Member member); + ResponseEntity getFolderList(Member member); @Operation(summary = "폴더 추가", description = "새로운 폴더를 추가합니다.") @ApiResponses({ @ApiResponse(responseCode = "200", description = "폴더 추가 후 전체 폴더(아이디, 폴더 이름) 리스트 반환") }) - ResponseEntity addFolder(Member member, FolderReq req); + ResponseEntity addFolder(Member member, FolderReq req); @Operation(summary = "폴더 삭제", description = "폴더 아이디를 통해 폴더를 삭제합니다.") @ApiResponses({ diff --git a/src/main/java/com/sw19/sofa/domain/folder/controller/FolderController.java b/src/main/java/com/sw19/sofa/domain/folder/controller/FolderController.java index 04edcb3..80e0be3 100644 --- a/src/main/java/com/sw19/sofa/domain/folder/controller/FolderController.java +++ b/src/main/java/com/sw19/sofa/domain/folder/controller/FolderController.java @@ -12,8 +12,8 @@ import com.sw19.sofa.domain.folder.api.FolderApi; import com.sw19.sofa.domain.folder.dto.request.FolderReq; -import com.sw19.sofa.domain.folder.dto.response.FolderListRes; import com.sw19.sofa.domain.folder.dto.response.FolderRes; +import com.sw19.sofa.domain.folder.dto.response.FoldersRes; import com.sw19.sofa.domain.folder.service.FolderMangeService; import com.sw19.sofa.domain.member.entity.Member; import com.sw19.sofa.global.common.dto.BaseResponse; @@ -30,15 +30,15 @@ public class FolderController implements FolderApi { @Override @GetMapping - public ResponseEntity getFolderList(@AuthMember Member member) { - FolderListRes res = folderMangeService.getFolderList(member); + public ResponseEntity getFolderList(@AuthMember Member member) { + FoldersRes res = folderMangeService.getFolderList(member); return BaseResponse.ok(res); } @Override @PostMapping - public ResponseEntity addFolder(@AuthMember Member member, @RequestBody FolderReq req) { - FolderListRes res = folderMangeService.addFolder(member, req); + public ResponseEntity addFolder(@AuthMember Member member, @RequestBody FolderReq req) { + FoldersRes res = folderMangeService.addFolder(member, req); return BaseResponse.ok(res); } diff --git a/src/main/java/com/sw19/sofa/domain/folder/dto/FolderDto.java b/src/main/java/com/sw19/sofa/domain/folder/dto/FolderDto.java new file mode 100644 index 0000000..84b1954 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/folder/dto/FolderDto.java @@ -0,0 +1,14 @@ +package com.sw19.sofa.domain.folder.dto; + +import com.sw19.sofa.domain.folder.entity.Folder; +import com.sw19.sofa.global.util.EncryptionUtil; + +public record FolderDto(String id, String name) { + public FolderDto(Folder folder) { + this(folder.getEncryptId(), folder.getName()); + } + + public Long encryptionId() { + return EncryptionUtil.decrypt(id); + } +} diff --git a/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderListRes.java b/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderListRes.java deleted file mode 100644 index 98be52e..0000000 --- a/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderListRes.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.sw19.sofa.domain.folder.dto.response; - -import java.util.List; - -public record FolderListRes(List folderList) { -} diff --git a/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderRes.java b/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderRes.java index 582a41c..438bcb1 100644 --- a/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderRes.java +++ b/src/main/java/com/sw19/sofa/domain/folder/dto/response/FolderRes.java @@ -1,14 +1,9 @@ package com.sw19.sofa.domain.folder.dto.response; import com.sw19.sofa.domain.folder.entity.Folder; -import com.sw19.sofa.global.util.EncryptionUtil; public record FolderRes(String id, String name) { public FolderRes(Folder folder) { this(folder.getEncryptId(), folder.getName()); } - - public Long encryptionId() { - return EncryptionUtil.decrypt(id); - } } diff --git a/src/main/java/com/sw19/sofa/domain/folder/dto/response/FoldersRes.java b/src/main/java/com/sw19/sofa/domain/folder/dto/response/FoldersRes.java new file mode 100644 index 0000000..c5e6df7 --- /dev/null +++ b/src/main/java/com/sw19/sofa/domain/folder/dto/response/FoldersRes.java @@ -0,0 +1,8 @@ +package com.sw19.sofa.domain.folder.dto.response; + +import java.util.List; + +import com.sw19.sofa.domain.folder.dto.FolderDto; + +public record FoldersRes(List folders) { +} diff --git a/src/main/java/com/sw19/sofa/domain/folder/service/FolderMangeService.java b/src/main/java/com/sw19/sofa/domain/folder/service/FolderMangeService.java index 1217753..116f66d 100644 --- a/src/main/java/com/sw19/sofa/domain/folder/service/FolderMangeService.java +++ b/src/main/java/com/sw19/sofa/domain/folder/service/FolderMangeService.java @@ -7,9 +7,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.sw19.sofa.domain.folder.dto.FolderDto; import com.sw19.sofa.domain.folder.dto.request.FolderReq; -import com.sw19.sofa.domain.folder.dto.response.FolderListRes; import com.sw19.sofa.domain.folder.dto.response.FolderRes; +import com.sw19.sofa.domain.folder.dto.response.FoldersRes; import com.sw19.sofa.domain.folder.entity.Folder; import com.sw19.sofa.domain.linkcard.service.LinkCardService; import com.sw19.sofa.domain.member.entity.Member; @@ -25,25 +26,26 @@ public class FolderMangeService { private final LinkCardService linkCardService; @Transactional(readOnly = true) - public FolderListRes getFolderList(Member member) { + public FoldersRes getFolderList(Member member) { - List folderRes = folderService.getFolderList(member).folderList(); + List folderDtos = folderService.getFolderList(member); - Optional minEncryptedIdFolder = folderRes.stream() + Optional minEncryptedIdFolder = folderDtos.stream() .filter(f -> "휴지통".equals(f.name())) - .min(Comparator.comparingLong(FolderRes::encryptionId)); + .min(Comparator.comparingLong(FolderDto::encryptionId)); - List ret = folderRes.stream() + List ret = folderDtos.stream() .filter(f -> minEncryptedIdFolder.isEmpty() || !minEncryptedIdFolder.get().id().equals(f.id())) .toList(); - return new FolderListRes(ret); + return new FoldersRes(ret); } @Transactional - public FolderListRes addFolder(Member member, FolderReq req) { + public FoldersRes addFolder(Member member, FolderReq req) { folderService.addFolder(member, req.name()); - return folderService.getFolderList(member); + List folders = folderService.getFolderList(member); + return new FoldersRes(folders); } @Transactional diff --git a/src/main/java/com/sw19/sofa/domain/folder/service/FolderService.java b/src/main/java/com/sw19/sofa/domain/folder/service/FolderService.java index caf6b98..b34269b 100644 --- a/src/main/java/com/sw19/sofa/domain/folder/service/FolderService.java +++ b/src/main/java/com/sw19/sofa/domain/folder/service/FolderService.java @@ -7,7 +7,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.sw19.sofa.domain.folder.dto.response.FolderListRes; +import com.sw19.sofa.domain.folder.dto.FolderDto; import com.sw19.sofa.domain.folder.dto.response.FolderRes; import com.sw19.sofa.domain.folder.entity.Folder; import com.sw19.sofa.domain.folder.repository.FolderRepository; @@ -24,9 +24,8 @@ public class FolderService { private final FolderRepository folderRepository; @Transactional(readOnly = true) - public FolderListRes getFolderList(Member member) { - List folderResList = folderRepository.findAllByMember(member).stream().map(FolderRes::new).toList(); - return new FolderListRes(folderResList); + public List getFolderList(Member member) { + return folderRepository.findAllByMember(member).stream().map(FolderDto::new).toList(); } @Transactional diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/api/LinkCardApi.java b/src/main/java/com/sw19/sofa/domain/linkcard/api/LinkCardApi.java index aa07e23..760d355 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/api/LinkCardApi.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/api/LinkCardApi.java @@ -14,8 +14,8 @@ import com.sw19.sofa.domain.linkcard.dto.response.LinkCardInfoRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardSimpleRes; -import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagListRes; -import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardListRes; +import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagsRes; +import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardsRes; import com.sw19.sofa.domain.linkcard.enums.TagType; import com.sw19.sofa.domain.member.entity.Member; import com.sw19.sofa.global.common.dto.ListRes; @@ -51,23 +51,19 @@ ResponseEntity getLinkCard( @Operation(summary = "링크 카드 추가", description = "링크 카드를 추가합니다") @ApiResponses({ @ApiResponse(responseCode = "200", description = "링크 카드 추가 완료"), - @ApiResponse(responseCode = "404", description = "code: AR-001 | message: 기본 정보를 찾지 못했습니다..
" - + + @ApiResponse(responseCode = "404", description = "code: AR-001 | message: 기본 정보를 찾지 못했습니다..
" + "code: F-001 | message: 존재하지 않는 폴더입니다.", content = @Content(schema = @Schema(implementation = ErrorResponse.class))) }) ResponseEntity addLinkCard(LinkCardReq req); - @Operation(summary = "전체 링크 카드 리스트 조회", description = "링크 카드 리스트를 조회합니다
" - + + @Operation(summary = "전체 링크 카드 리스트 조회", description = "링크 카드 리스트를 조회합니다
" + "정렬 순서 및 정렬 방식 변경 시 새로운 조회 필요") @ApiResponses({ @ApiResponse(responseCode = "200", description = "링크 카드 간소화(아이디, 제목, 이미지, url) 리스트") }) ResponseEntity> getLinkCardList( - @Schema(description = "정렬 방식", example = - "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)" - ) LinkCardSortBy linkCardSortBy, + @Schema(description = "정렬 방식", example = "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)") LinkCardSortBy linkCardSortBy, @Schema(description = "정렬 순서", example = "ASCENDING(오름차순)/DESCENDING(내림차순)") SortOrder sortOrder, @Schema(description = "마지막 링크카드 아이디", example = "처음 조회시에는 0 입력") String lastId, @Schema(description = "요청 갯수") int limit, @@ -78,25 +74,22 @@ ResponseEntity> getLinkCardList( @ApiResponses({ @ApiResponse(responseCode = "200", description = "링크 카드 간소화(아이디, 제목, 이미지, url) 리스트") }) - ResponseEntity getMostTagLinkCardList( - @Schema(description = "정렬 방식", example = - "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)" - ) LinkCardSortBy linkCardSortBy, + ResponseEntity getMostTagLinkCardList( + @Schema(description = "정렬 방식", example = "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)") LinkCardSortBy linkCardSortBy, @Schema(description = "정렬 순서", example = "ASCENDING(오름차순)/DESCENDING(내림차순)") SortOrder sortOrder, @Schema(description = "마지막 링크카드 아이디", example = "처음 조회시에는 0 입력") String lastId, @Schema(description = "요청 갯수") int limit, Member member ); - @Operation(summary = "폴더 내 링크 카드 리스트 조회", description = "링크 카드 리스트를 조회합니다
" + "정렬 순서 및 정렬 방식 변경 시 새로운 조회 필요") + @Operation(summary = "폴더 내 링크 카드 리스트 조회", description = "링크 카드 리스트를 조회합니다
" + + "정렬 순서 및 정렬 방식 변경 시 새로운 조회 필요") @ApiResponses({ @ApiResponse(responseCode = "200", description = "링크 카드 간소화(아이디, 제목, 이미지, url) 리스트") }) ResponseEntity> getLinkCardListByFolder( @Schema(description = "폴더 아이디") String folderId, - @Schema(description = "정렬 방식", example = - "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)" - ) LinkCardSortBy linkCardSortBy, + @Schema(description = "정렬 방식", example = "RECENTLY_SAVED(최근 저장순)/RECENTLY_VIEWED(최근 방문순)/MOST_VIEWED(최다 방문순)/RECENTLY_MODIFIED(최근 수정순)/NAME(이름순)") LinkCardSortBy linkCardSortBy, @Schema(description = "정렬 순서", example = "ASCENDING(오름차순)/DESCENDING(내림차순)") SortOrder sortOrder, @Schema(description = "마지막 링크카드 아이디", example = "처음 조회시에는 0 입력") String lastId, @Schema(description = "요청 갯수") int limit @@ -114,7 +107,7 @@ ResponseEntity editLinkCardInfo( @ApiResponses({ @ApiResponse(responseCode = "200", description = "추가된 태그 정보 리스트") }) - ResponseEntity addLinkCardTag( + ResponseEntity addLinkCardTag( @Schema(description = "링크 카드 아이디") String id, LinkCardTagListReq req ); diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/controller/LinkCardController.java b/src/main/java/com/sw19/sofa/domain/linkcard/controller/LinkCardController.java index 48ef9e8..3f8c542 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/controller/LinkCardController.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/controller/LinkCardController.java @@ -24,8 +24,8 @@ import com.sw19.sofa.domain.linkcard.dto.response.LinkCardInfoRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardSimpleRes; -import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagListRes; -import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardListRes; +import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagsRes; +import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardsRes; import com.sw19.sofa.domain.linkcard.enums.TagType; import com.sw19.sofa.domain.linkcard.service.LinkCardMangeService; import com.sw19.sofa.domain.member.entity.Member; @@ -81,11 +81,11 @@ public ResponseEntity> getLinkCardList( @Override @GetMapping("/most-tag") - public ResponseEntity getMostTagLinkCardList( + public ResponseEntity getMostTagLinkCardList( @RequestParam(name = "sortBy") LinkCardSortBy linkCardSortBy, @RequestParam SortOrder sortOrder, @RequestParam String lastId, @RequestParam int limit, @AuthMember Member member) { - MostTagLinkCardListRes res = linkCardMangeService.getMostTagLinkCardList(member, linkCardSortBy, sortOrder, - lastId, limit); + MostTagLinkCardsRes res = linkCardMangeService.getMostTagLinkCardList(member, linkCardSortBy, sortOrder, lastId, + limit); return BaseResponse.ok(res); } @@ -111,10 +111,10 @@ public ResponseEntity editLinkCardInfo( @Override @PostMapping("/{id}/tag") - public ResponseEntity addLinkCardTag( + public ResponseEntity addLinkCardTag( @PathVariable String id, @RequestBody LinkCardTagListReq req ) { - LinkCardTagListRes res = linkCardMangeService.addLinkCardTag(id, req.tagList()); + LinkCardTagsRes res = linkCardMangeService.addLinkCardTag(id, req.tagList()); return BaseResponse.ok(res); } diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardFolderDto.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardFolderDto.java index aeb0d0f..8df31cf 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardFolderDto.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardFolderDto.java @@ -1,8 +1,6 @@ package com.sw19.sofa.domain.linkcard.dto; import com.sw19.sofa.domain.folder.entity.Folder; -import com.sw19.sofa.global.common.dto.FolderDto; -import com.sw19.sofa.global.util.EncryptionUtil; import io.swagger.v3.oas.annotations.media.Schema; @@ -10,10 +8,6 @@ public record LinkCardFolderDto( @Schema(description = "폴더 아이디") String id, @Schema(description = "폴더명") String name ) { - public LinkCardFolderDto(FolderDto folderDto) { - this(EncryptionUtil.encrypt(folderDto.id()), folderDto.name()); - } - public LinkCardFolderDto(Folder folder) { this(folder.getEncryptId(), folder.getName()); } diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagDto.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagDto.java index d37f1c6..4963fa3 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagDto.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagDto.java @@ -12,7 +12,7 @@ public record LinkCardTagDto( @Schema(description = "태그 속성", example = "AI/CUSTOM") TagType tagType ) { public LinkCardTagDto(TagDto tagDto) { - this(tagDto.getEncryptId(), tagDto.name(), TagType.AI); + this(tagDto.id(), tagDto.name(), TagType.AI); } public LinkCardTagDto(CustomTagDto customTagDto) { diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleDto.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleDto.java index 1cbaa5d..7273143 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleDto.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleDto.java @@ -2,18 +2,19 @@ import com.sw19.sofa.domain.linkcard.entity.LinkCardTag; import com.sw19.sofa.domain.linkcard.enums.TagType; +import com.sw19.sofa.global.util.EncryptionUtil; import io.swagger.v3.oas.annotations.media.Schema; public record LinkCardTagSimpleDto( - @Schema(description = "태그 아이디") Long id, + @Schema(description = "태그 아이디") String id, @Schema(description = "태그 속성", example = "AI/CUSTOM") TagType tagType ) { public LinkCardTagSimpleDto(LinkCardTag linkCardTag) { - this(linkCardTag.getTagId(), linkCardTag.getTagType()); + this(EncryptionUtil.encrypt(linkCardTag.getTagId()), linkCardTag.getTagType()); } - public LinkCardTagSimpleDto(LinkCardTagSimpleEncryptDto dto) { - this(dto.decryptionId(), dto.tagType()); + public Long decryptionId() { + return EncryptionUtil.decrypt(id); } } diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleEncryptDto.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleEncryptDto.java deleted file mode 100644 index 52a4f04..0000000 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/LinkCardTagSimpleEncryptDto.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.sw19.sofa.domain.linkcard.dto; - -import com.sw19.sofa.domain.linkcard.enums.TagType; -import com.sw19.sofa.global.util.EncryptionUtil; - -import io.swagger.v3.oas.annotations.media.Schema; - -public record LinkCardTagSimpleEncryptDto( - @Schema(description = "태그 아이디") String id, - @Schema(description = "태그 속성", example = "AI/CUSTOM") TagType tagType -) { - public Long decryptionId() { - return EncryptionUtil.decrypt(id); - } -} diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardReq.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardReq.java index 571a626..3065abc 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardReq.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardReq.java @@ -2,7 +2,7 @@ import java.util.List; -import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleEncryptDto; +import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleDto; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotBlank; @@ -18,7 +18,7 @@ public record LinkCardReq( @NotBlank(message = "폴더 ID가 필요합니다") String folderId, @Schema(description = "태그 리스트") - List tagList, + List tagList, @Schema(description = "메모") String memo, @Schema(description = "AI 요약") diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardTagListReq.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardTagListReq.java index 42dc414..00b1e0e 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardTagListReq.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/request/LinkCardTagListReq.java @@ -2,11 +2,11 @@ import java.util.List; -import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleEncryptDto; +import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleDto; import io.swagger.v3.oas.annotations.media.Schema; public record LinkCardTagListReq( - @Schema(description = "태그 아이디 및 타입 목록") List tagList + @Schema(description = "태그 아이디 및 타입 목록") List tagList ) { } diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagListRes.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagsRes.java similarity index 68% rename from src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagListRes.java rename to src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagsRes.java index b3db86a..001db6c 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagListRes.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/LinkCardTagsRes.java @@ -4,7 +4,7 @@ import com.sw19.sofa.domain.linkcard.dto.LinkCardTagDto; -public record LinkCardTagListRes( - List tagList +public record LinkCardTagsRes( + List tags ) { } diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardListRes.java b/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardsRes.java similarity index 93% rename from src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardListRes.java rename to src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardsRes.java index 2ec26ce..1fc1289 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardListRes.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/dto/response/MostTagLinkCardsRes.java @@ -6,7 +6,7 @@ import io.swagger.v3.oas.annotations.media.Schema; -public record MostTagLinkCardListRes( +public record MostTagLinkCardsRes( @Schema(description = "최다 태그 정보") LinkCardTagDto tag, diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardMangeService.java b/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardMangeService.java index 5583753..e3c0ea8 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardMangeService.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardMangeService.java @@ -12,13 +12,12 @@ import com.sw19.sofa.domain.article.entity.Article; import com.sw19.sofa.domain.article.service.ArticleService; import com.sw19.sofa.domain.article.service.ArticleTagService; -import com.sw19.sofa.domain.folder.dto.response.FolderRes; +import com.sw19.sofa.domain.folder.dto.FolderDto; import com.sw19.sofa.domain.folder.entity.Folder; import com.sw19.sofa.domain.folder.service.FolderService; import com.sw19.sofa.domain.linkcard.dto.LinkCardFolderDto; import com.sw19.sofa.domain.linkcard.dto.LinkCardTagDto; import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleDto; -import com.sw19.sofa.domain.linkcard.dto.LinkCardTagSimpleEncryptDto; import com.sw19.sofa.domain.linkcard.dto.enums.LinkCardSortBy; import com.sw19.sofa.domain.linkcard.dto.request.CreateLinkCardBasicInfoReq; import com.sw19.sofa.domain.linkcard.dto.request.LinkCardInfoEditReq; @@ -28,8 +27,8 @@ import com.sw19.sofa.domain.linkcard.dto.response.LinkCardInfoRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardRes; import com.sw19.sofa.domain.linkcard.dto.response.LinkCardSimpleRes; -import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagListRes; -import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardListRes; +import com.sw19.sofa.domain.linkcard.dto.response.LinkCardTagsRes; +import com.sw19.sofa.domain.linkcard.dto.response.MostTagLinkCardsRes; import com.sw19.sofa.domain.linkcard.entity.LinkCard; import com.sw19.sofa.domain.linkcard.entity.LinkCardTag; import com.sw19.sofa.domain.linkcard.enums.TagType; @@ -119,7 +118,7 @@ private CreateLinkCardBasicInfoRes tryCreateLinkCardBasicInfo(Member member, Cre articleDto = new ArticleDto(article); } - List userFolders = folderService.getFolderList(member).folderList().stream() + List userFolders = folderService.getFolderList(member).stream() .filter(folder -> !folder.name().equals(Constants.recycleBinName)) .toList(); @@ -128,7 +127,7 @@ private CreateLinkCardBasicInfoRes tryCreateLinkCardBasicInfo(Member member, Cre if (!userFolders.isEmpty()) { String recommendedFolderName = aiManageService.recommendFolder( titleAndSummaryDto.summary(), - userFolders.stream().map(FolderRes::name).toList() + userFolders.stream().map(FolderDto::name).toList() ); selectedFolder = folderService.getFolderByNameAndMemberOrNull(recommendedFolderName, member); } @@ -165,9 +164,8 @@ public LinkCardRes getLinkCard(String encryptId, Member member) { LinkCard linkCard = linkCardService.getLinkCardDto(linkCardId); remindService.removeFromRemind(linkCard, member); - List linkCardTagSimpleDtoList = - linkCardTagService.getLinkCardTagSimpleDtoListByLinkCardId( - linkCardId); + List linkCardTagSimpleDtoList = linkCardTagService.getLinkCardTagSimpleDtoListByLinkCardId( + linkCardId); List linkCardTagDtoList = getLinkCardTagDtoList(linkCardTagSimpleDtoList); @@ -182,10 +180,7 @@ public void addLinkCard(LinkCardReq req) { Article article = articleService.getArticleByUrl(req.url()); LinkCard linkCard = linkCardService.addLinkCard(req, folder, article); - List linkCardTagSimpleDtoList = req.tagList() - .stream() - .map(LinkCardTagSimpleDto::new) - .toList(); + List linkCardTagSimpleDtoList = req.tagList(); linkCardTagService.addLinkCardTagList(linkCard, linkCardTagSimpleDtoList); } @@ -193,15 +188,15 @@ public void addLinkCard(LinkCardReq req) { public ListRes getLinkCardList(Member member, LinkCardSortBy linkCardSortBy, SortOrder sortOrder, String encryptLastId, int limit) { Long lastId = encryptLastId.equals("0") ? 0 : EncryptionUtil.decrypt(encryptLastId); - List folderIdList = folderService.getFolderList(member).folderList().stream() + List folderIdList = folderService.getFolderList(member).stream() .filter(folder -> !"휴지통".equals(folder.name())) .map(folderRes -> EncryptionUtil.decrypt(folderRes.id())) .toList(); return linkCardListInfiniteScroll(folderIdList, linkCardSortBy, sortOrder, limit, lastId); } - public MostTagLinkCardListRes getMostTagLinkCardList(Member member, LinkCardSortBy linkCardSortBy, - SortOrder sortOrder, String encryptLastId, int limit) { + public MostTagLinkCardsRes getMostTagLinkCardList(Member member, LinkCardSortBy linkCardSortBy, SortOrder sortOrder, + String encryptLastId, int limit) { Long lsatId = EncryptionUtil.decrypt(encryptLastId); LinkCardTag linkCardTag = linkCardTagService.getMostTagIdByMember(member); @@ -218,7 +213,7 @@ public MostTagLinkCardListRes getMostTagLinkCardList(Member member, LinkCardSort linkCardTag, linkCardSortBy, sortOrder, limit, lsatId); List data = linkCardListRes.data().stream().map(LinkCardSimpleRes::new).toList(); - return new MostTagLinkCardListRes(tagDto, data, limit, linkCardListRes.size(), linkCardListRes.hasNext()); + return new MostTagLinkCardsRes(tagDto, data, limit, linkCardListRes.size(), linkCardListRes.hasNext()); } public ListRes getLinkCardListByFolder(String encryptFolderId, LinkCardSortBy linkCardSortBy, @@ -237,19 +232,18 @@ public LinkCardInfoRes editLinkCardInfo(String encryptId, LinkCardInfoEditReq re } @Transactional - public LinkCardTagListRes addLinkCardTag(String encryptId, List tagList) { + public LinkCardTagsRes addLinkCardTag(String encryptId, List tagList) { Long linkCardId = EncryptionUtil.decrypt(encryptId); LinkCard linkCard = linkCardService.getLinkCard(linkCardId); - List req = tagList.stream().map(LinkCardTagSimpleDto::new).toList(); - List linkCardTagSimpleDtoList = linkCardTagService.addLinkCardTagList(linkCard, req) + List linkCardTagSimpleDtoList = linkCardTagService.addLinkCardTagList(linkCard, tagList) .stream() .map(LinkCardTagSimpleDto::new) .toList(); List linkCardTagDtoList = getLinkCardTagDtoList(linkCardTagSimpleDtoList); - return new LinkCardTagListRes(linkCardTagDtoList); + return new LinkCardTagsRes(linkCardTagDtoList); } @Transactional @@ -291,11 +285,11 @@ public void moveLinkCardToRecycleBin(Member member, String encryptId) { private List getLinkCardTagDtoList(List linkCardTagSimpleDtoList) { List tagIdList = linkCardTagSimpleDtoList.stream() .filter(linkCardTagInfoDto -> linkCardTagInfoDto.tagType().equals(TagType.AI)) - .map(LinkCardTagSimpleDto::id) + .map(LinkCardTagSimpleDto::decryptionId) .toList(); List customIdList = linkCardTagSimpleDtoList.stream() .filter(linkCardTagInfoDto -> linkCardTagInfoDto.tagType().equals(TagType.CUSTOM)) - .map(LinkCardTagSimpleDto::id) + .map(LinkCardTagSimpleDto::decryptionId) .toList(); List linkCardTagDtoList = new ArrayList<>(); diff --git a/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardTagService.java b/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardTagService.java index 031928d..7b19af8 100644 --- a/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardTagService.java +++ b/src/main/java/com/sw19/sofa/domain/linkcard/service/LinkCardTagService.java @@ -26,7 +26,7 @@ public List addLinkCardTagList(LinkCard linkCard, List linkCardTagList = tagDtoList.stream() .map(tagDto -> LinkCardTag.builder() .linkCard(linkCard) - .tagId(tagDto.id()) + .tagId(tagDto.decryptionId()) .tagType(tagDto.tagType()) .build() ).toList(); diff --git a/src/main/java/com/sw19/sofa/domain/remind/dto/response/RemindRes.java b/src/main/java/com/sw19/sofa/domain/remind/dto/response/RemindRes.java index 64d6570..191a6c3 100644 --- a/src/main/java/com/sw19/sofa/domain/remind/dto/response/RemindRes.java +++ b/src/main/java/com/sw19/sofa/domain/remind/dto/response/RemindRes.java @@ -6,8 +6,8 @@ import com.sw19.sofa.domain.remind.entity.Remind; public record RemindRes( - String encryptedId, - String encryptedLinkCardId, + String id, + String linkCardId, String title, String url, String summary, diff --git a/src/main/java/com/sw19/sofa/domain/searchbox/dto/response/SearchBoxRes.java b/src/main/java/com/sw19/sofa/domain/searchbox/dto/response/SearchBoxRes.java index ed83f12..1bd9db6 100644 --- a/src/main/java/com/sw19/sofa/domain/searchbox/dto/response/SearchBoxRes.java +++ b/src/main/java/com/sw19/sofa/domain/searchbox/dto/response/SearchBoxRes.java @@ -8,7 +8,7 @@ import com.sw19.sofa.global.util.EncryptionUtil; public record SearchBoxRes( - String encryptedId, + String id, String title, String url, String summary, diff --git a/src/main/java/com/sw19/sofa/domain/searchbox/service/SearchBoxService.java b/src/main/java/com/sw19/sofa/domain/searchbox/service/SearchBoxService.java index 923600e..4803a01 100644 --- a/src/main/java/com/sw19/sofa/domain/searchbox/service/SearchBoxService.java +++ b/src/main/java/com/sw19/sofa/domain/searchbox/service/SearchBoxService.java @@ -126,7 +126,7 @@ private ListRes processSearchResults(List linkCards, int List tagDtoList = cardTags.stream() .map(cardTag -> new TagDto( cardTag.id(), - getTagName(cardTag.id()) + getTagName(cardTag.decryptionId()) )) .toList(); diff --git a/src/main/java/com/sw19/sofa/domain/setting/api/SettingApi.java b/src/main/java/com/sw19/sofa/domain/setting/api/SettingApi.java index 25e7db6..86bb836 100644 --- a/src/main/java/com/sw19/sofa/domain/setting/api/SettingApi.java +++ b/src/main/java/com/sw19/sofa/domain/setting/api/SettingApi.java @@ -3,8 +3,8 @@ import org.springframework.http.ResponseEntity; import com.sw19.sofa.domain.member.entity.Member; -import com.sw19.sofa.domain.setting.dto.request.ToggleAlarmRequest; -import com.sw19.sofa.domain.setting.dto.response.SettingResponse; +import com.sw19.sofa.domain.setting.dto.request.ToggleAlarmReq; +import com.sw19.sofa.domain.setting.dto.response.SettingRes; import com.sw19.sofa.global.error.dto.ErrorResponse; import io.swagger.v3.oas.annotations.Operation; @@ -17,37 +17,33 @@ @Tag(name = "⚙️ Setting") public interface SettingApi { @Operation(summary = "설정 조회", description = "사용자의 알림 설정을 조회합니다") - @ApiResponses( - { - @ApiResponse( - responseCode = "200", - description = "설정 정보(설정 id, " - ), - @ApiResponse( - responseCode = "404", - description = "설정 정보를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ErrorResponse.class)) - ) - } - ) - ResponseEntity getSetting(Member member); + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "설정 정보(설정 id, " + ), + @ApiResponse( + responseCode = "404", + description = "설정 정보를 찾을 수 없습니다.", + content = @Content(schema = @Schema(implementation = ErrorResponse.class)) + ) + }) + ResponseEntity getSetting(Member member); @Operation(summary = "알림 설정 변경", description = "특정 알림 설정을 토글 후 전체 설정 정보를 반환합니다.") - @ApiResponses( - { - @ApiResponse( - responseCode = "200", - description = "설정 정보(설정 id, 리마인드 알림 설정 정보, 추천 알림 설정 정보, 공지사항 및 업데이트 알림 설정 정보)" - ), - @ApiResponse( - responseCode = "404", - description = "설정 정보를 찾을 수 없습니다.", - content = @Content(schema = @Schema(implementation = ErrorResponse.class)) - ) - } - ) - ResponseEntity toggleAlarm( + @ApiResponses({ + @ApiResponse( + responseCode = "200", + description = "설정 정보(설정 id, 리마인드 알림 설정 정보, 추천 알림 설정 정보, 공지사항 및 업데이트 알림 설정 정보)" + ), + @ApiResponse( + responseCode = "404", + description = "설정 정보를 찾을 수 없습니다.", + content = @Content(schema = @Schema(implementation = ErrorResponse.class)) + ) + }) + ResponseEntity toggleAlarm( Member member, - ToggleAlarmRequest request + ToggleAlarmReq request ); } diff --git a/src/main/java/com/sw19/sofa/domain/setting/controller/SettingController.java b/src/main/java/com/sw19/sofa/domain/setting/controller/SettingController.java index e9d7936..1475089 100644 --- a/src/main/java/com/sw19/sofa/domain/setting/controller/SettingController.java +++ b/src/main/java/com/sw19/sofa/domain/setting/controller/SettingController.java @@ -9,8 +9,8 @@ import com.sw19.sofa.domain.member.entity.Member; import com.sw19.sofa.domain.setting.api.SettingApi; -import com.sw19.sofa.domain.setting.dto.request.ToggleAlarmRequest; -import com.sw19.sofa.domain.setting.dto.response.SettingResponse; +import com.sw19.sofa.domain.setting.dto.request.ToggleAlarmReq; +import com.sw19.sofa.domain.setting.dto.response.SettingRes; import com.sw19.sofa.domain.setting.service.SettingService; import com.sw19.sofa.global.common.dto.BaseResponse; import com.sw19.sofa.security.jwt.AuthMember; @@ -26,18 +26,18 @@ public class SettingController implements SettingApi { @Override @GetMapping - public ResponseEntity getSetting(@AuthMember Member member) { - SettingResponse res = settingService.getMemberSetting(member); + public ResponseEntity getSetting(@AuthMember Member member) { + SettingRes res = settingService.getMemberSetting(member); return BaseResponse.ok(res); } @Override @PatchMapping("/alarm") - public ResponseEntity toggleAlarm( + public ResponseEntity toggleAlarm( @AuthMember Member member, - @Valid @RequestBody ToggleAlarmRequest request + @Valid @RequestBody ToggleAlarmReq request ) { - SettingResponse res = settingService.toggleAlarm(member, request.alarmType()); + SettingRes res = settingService.toggleAlarm(member, request.alarmType()); return BaseResponse.ok(res); } } diff --git a/src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmRequest.java b/src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmReq.java similarity index 91% rename from src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmRequest.java rename to src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmReq.java index 6e75428..660adeb 100644 --- a/src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmRequest.java +++ b/src/main/java/com/sw19/sofa/domain/setting/dto/request/ToggleAlarmReq.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; -public record ToggleAlarmRequest( +public record ToggleAlarmReq( @NotNull(message = "알림 타입은 필수입니다") @Schema(description = "알림 타입", example = "REMIND") AlarmType alarmType diff --git a/src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingResponse.java b/src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingRes.java similarity index 50% rename from src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingResponse.java rename to src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingRes.java index 8118b92..65392be 100644 --- a/src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingResponse.java +++ b/src/main/java/com/sw19/sofa/domain/setting/dto/response/SettingRes.java @@ -2,18 +2,18 @@ import com.sw19.sofa.domain.setting.entity.Setting; -public record SettingResponse( - String encryptedId, +public record SettingRes( + String id, boolean isRemindAlarm, boolean isRecommendAlarm, boolean isNoticeAlarm ) { - public static SettingResponse from(Setting setting) { - return new SettingResponse( + public static SettingRes from(Setting setting) { + return new SettingRes( setting.getEncryptId(), - setting.getIsRemind(), - setting.getIsRecommend(), - setting.getIsNotice() + setting.getIs_remind(), + setting.getIs_recommend(), + setting.getIs_notice() ); } } diff --git a/src/main/java/com/sw19/sofa/domain/setting/service/SettingService.java b/src/main/java/com/sw19/sofa/domain/setting/service/SettingService.java index 46093ef..41960f3 100644 --- a/src/main/java/com/sw19/sofa/domain/setting/service/SettingService.java +++ b/src/main/java/com/sw19/sofa/domain/setting/service/SettingService.java @@ -4,7 +4,7 @@ import org.springframework.transaction.annotation.Transactional; import com.sw19.sofa.domain.member.entity.Member; -import com.sw19.sofa.domain.setting.dto.response.SettingResponse; +import com.sw19.sofa.domain.setting.dto.response.SettingRes; import com.sw19.sofa.domain.setting.entity.Setting; import com.sw19.sofa.domain.setting.enums.AlarmType; import com.sw19.sofa.domain.setting.error.SettingErrorCode; @@ -23,21 +23,21 @@ public class SettingService { public void setNewUser(Member member) { Setting setting = Setting.builder() .member(member) - .isRecommend(true) - .isRemind(true) - .isNotice(true) + .is_recommend(true) + .is_remind(true) + .is_notice(true) .build(); settingRepository.save(setting); } - public SettingResponse getMemberSetting(Member member) { + public SettingRes getMemberSetting(Member member) { Setting setting = settingRepository.findByMemberOrThrow(member); - return SettingResponse.from(setting); + return SettingRes.from(setting); } @Transactional - public SettingResponse toggleAlarm(Member member, AlarmType alarmType) { + public SettingRes toggleAlarm(Member member, AlarmType alarmType) { Setting setting = settingRepository.findByMemberOrThrow(member); switch (alarmType) { @@ -49,6 +49,6 @@ public SettingResponse toggleAlarm(Member member, AlarmType alarmType) { Setting save = settingRepository.save(setting); - return SettingResponse.from(save); + return SettingRes.from(save); } } diff --git a/src/main/java/com/sw19/sofa/global/common/dto/AiMessageDto.java b/src/main/java/com/sw19/sofa/global/common/dto/AiMessageDto.java deleted file mode 100644 index 0c13ee1..0000000 --- a/src/main/java/com/sw19/sofa/global/common/dto/AiMessageDto.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.sw19.sofa.global.common.dto; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class AiMessageDto { - private String role; - private String content; //prompt를 뜻함 - -} diff --git a/src/main/java/com/sw19/sofa/global/common/dto/FolderDto.java b/src/main/java/com/sw19/sofa/global/common/dto/FolderDto.java deleted file mode 100644 index 763782c..0000000 --- a/src/main/java/com/sw19/sofa/global/common/dto/FolderDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.sw19.sofa.global.common.dto; - -public record FolderDto(Long id, String name) { -} diff --git a/src/main/java/com/sw19/sofa/global/common/dto/FolderWithTagListDto.java b/src/main/java/com/sw19/sofa/global/common/dto/FolderWithTagListDto.java deleted file mode 100644 index 9f476b5..0000000 --- a/src/main/java/com/sw19/sofa/global/common/dto/FolderWithTagListDto.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.sw19.sofa.global.common.dto; - -import java.util.List; - -public record FolderWithTagListDto(Long folderId, String FolderName, List TagList) { -} diff --git a/src/main/java/com/sw19/sofa/global/common/dto/TagDto.java b/src/main/java/com/sw19/sofa/global/common/dto/TagDto.java index 9309922..6b8ed06 100644 --- a/src/main/java/com/sw19/sofa/global/common/dto/TagDto.java +++ b/src/main/java/com/sw19/sofa/global/common/dto/TagDto.java @@ -1,14 +1,9 @@ package com.sw19.sofa.global.common.dto; import com.sw19.sofa.domain.tag.entity.Tag; -import com.sw19.sofa.global.util.EncryptionUtil; -public record TagDto(Long id, String name) { +public record TagDto(String id, String name) { public TagDto(Tag tag) { - this(tag.getId(), tag.getName()); - } - - public String getEncryptId() { - return EncryptionUtil.encrypt(id); + this(tag.getEncryptedId(), tag.getName()); } } diff --git a/src/main/java/com/sw19/sofa/global/error/exception/BusinessException.java b/src/main/java/com/sw19/sofa/global/error/exception/BusinessException.java index 20a2649..4efe9b0 100644 --- a/src/main/java/com/sw19/sofa/global/error/exception/BusinessException.java +++ b/src/main/java/com/sw19/sofa/global/error/exception/BusinessException.java @@ -11,7 +11,7 @@ @Getter public class BusinessException extends RuntimeException { - private ErrorCode errorCode; + private final ErrorCode errorCode; private List errors = new ArrayList<>(); public BusinessException(String message, ErrorCode errorCode) {