Skip to content
Open
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
7 changes: 7 additions & 0 deletions src/main/java/com/sw19/sofa/domain/ai/dto/AiMessageDto.java
Original file line number Diff line number Diff line change
@@ -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) {

}
4 changes: 4 additions & 0 deletions src/main/java/com/sw19/sofa/domain/ai/dto/ChoiceDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sw19.sofa.domain.ai.dto;

public record ChoiceDto(int index, MessageDto message, String finishReason) {
}
4 changes: 4 additions & 0 deletions src/main/java/com/sw19/sofa/domain/ai/dto/MessageDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.sw19.sofa.domain.ai.dto;

public record MessageDto(String role, String content) {
}

This file was deleted.

13 changes: 13 additions & 0 deletions src/main/java/com/sw19/sofa/domain/ai/dto/request/GptReq.java
Original file line number Diff line number Diff line change
@@ -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<AiMessageDto> messages, int maxToken) {
public GptReq(String model, String prompt, int maxToken) {
this(model, new ArrayList<>(), maxToken);
this.messages.add(new AiMessageDto("user", prompt));
}
}

This file was deleted.

14 changes: 14 additions & 0 deletions src/main/java/com/sw19/sofa/domain/ai/dto/response/GPTRes.java
Original file line number Diff line number Diff line change
@@ -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<ChoiceDto> choices
) {
}
17 changes: 9 additions & 8 deletions src/main/java/com/sw19/sofa/domain/ai/service/OpenAiService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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<ChatGptRequest> entity = new HttpEntity<>(request, headers);
HttpEntity<GptReq> 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) {
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/sw19/sofa/domain/alarm/api/AlarmApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -15,7 +15,7 @@ public interface AlarmApi {
description = "사용자의 알람 목록을 반환합니다.")
@ApiResponse(responseCode = "200",
description = "알림 정보(id, 타입(REMIND:리마인드, RECOMMEND: 추천, UPDATE: 업데이트, NOTICE: 공지사항), 내용, 시간, 읽음 여부)")
ResponseEntity<AlarmListRes> getAlarmList(Member member);
ResponseEntity<AlarmsRes> getAlarmList(Member member);

@Operation(summary = "알림 읽음 처리",
description = "해당 알림을 읽음 처리합니다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -24,8 +24,8 @@ public class AlarmController implements AlarmApi {

@Override
@GetMapping
public ResponseEntity<AlarmListRes> getAlarmList(@AuthMember Member member) {
AlarmListRes res = alarmService.getAlarmList(member);
public ResponseEntity<AlarmsRes> getAlarmList(@AuthMember Member member) {
AlarmsRes res = alarmService.getAlarmList(member);
return BaseResponse.ok(res);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package com.sw19.sofa.domain.alarm.dto.response;
package com.sw19.sofa.domain.alarm.dto;

import java.time.LocalDateTime;

import com.sw19.sofa.domain.alarm.entity.Alarm;

import io.swagger.v3.oas.annotations.media.Schema;

public record AlarmRes(
public record AlarmDto(
@Schema(description = "아이디")
String id,
@Schema(description = "알림 종류(REMIND:리마인드, RECOMMEND: 추천, UPDATE: 업데이트, NOTICE: 공지사항)")
Expand All @@ -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());
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<AlarmDto> alarms
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -48,11 +48,11 @@ public void deleteExpiredAlarm() {
alarmRepository.deleteAll(deleteList);
}

public AlarmListRes getAlarmList(Member member) {
public AlarmsRes getAlarmList(Member member) {
List<Alarm> alarmList = alarmRepository.findAllByMember(member);
List<AlarmRes> alarmResList = alarmList.stream().map(AlarmRes::new).toList();
List<AlarmDto> alarmDtos = alarmList.stream().map(AlarmDto::new).toList();

return new AlarmListRes(alarmResList);
return new AlarmsRes(alarmDtos);
}

@Transactional
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/com/sw19/sofa/domain/folder/api/FolderApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -21,13 +21,13 @@ public interface FolderApi {
@ApiResponses({
@ApiResponse(responseCode = "200", description = "전체 폴더(아이디, 폴더 이름) 리스트 반환")
})
ResponseEntity<FolderListRes> getFolderList(Member member);
ResponseEntity<FoldersRes> getFolderList(Member member);

@Operation(summary = "폴더 추가", description = "새로운 폴더를 추가합니다.")
@ApiResponses({
@ApiResponse(responseCode = "200", description = "폴더 추가 후 전체 폴더(아이디, 폴더 이름) 리스트 반환")
})
ResponseEntity<FolderListRes> addFolder(Member member, FolderReq req);
ResponseEntity<FoldersRes> addFolder(Member member, FolderReq req);

@Operation(summary = "폴더 삭제", description = "폴더 아이디를 통해 폴더를 삭제합니다.")
@ApiResponses({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -30,15 +30,15 @@ public class FolderController implements FolderApi {

@Override
@GetMapping
public ResponseEntity<FolderListRes> getFolderList(@AuthMember Member member) {
FolderListRes res = folderMangeService.getFolderList(member);
public ResponseEntity<FoldersRes> getFolderList(@AuthMember Member member) {
FoldersRes res = folderMangeService.getFolderList(member);
return BaseResponse.ok(res);
}

@Override
@PostMapping
public ResponseEntity<FolderListRes> addFolder(@AuthMember Member member, @RequestBody FolderReq req) {
FolderListRes res = folderMangeService.addFolder(member, req);
public ResponseEntity<FoldersRes> addFolder(@AuthMember Member member, @RequestBody FolderReq req) {
FoldersRes res = folderMangeService.addFolder(member, req);
return BaseResponse.ok(res);
}

Expand Down
14 changes: 14 additions & 0 deletions src/main/java/com/sw19/sofa/domain/folder/dto/FolderDto.java
Original file line number Diff line number Diff line change
@@ -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);
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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<FolderDto> folders) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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> folderRes = folderService.getFolderList(member).folderList();
List<FolderDto> folderDtos = folderService.getFolderList(member);

Optional<FolderRes> minEncryptedIdFolder = folderRes.stream()
Optional<FolderDto> minEncryptedIdFolder = folderDtos.stream()
.filter(f -> "휴지통".equals(f.name()))
.min(Comparator.comparingLong(FolderRes::encryptionId));
.min(Comparator.comparingLong(FolderDto::encryptionId));

List<FolderRes> ret = folderRes.stream()
List<FolderDto> 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<FolderDto> folders = folderService.getFolderList(member);
return new FoldersRes(folders);
}

@Transactional
Expand Down
Loading