Skip to content

Commit

Permalink
Merge pull request #24 from KUSITMS-MOAMOA/chore/#23
Browse files Browse the repository at this point in the history
  • Loading branch information
daeun084 authored Feb 19, 2025
2 parents 57ed73a + e98a2ff commit 23d05c2
Show file tree
Hide file tree
Showing 12 changed files with 61 additions and 20 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,8 @@ public void parseAndSaveAbilities(Map<String, String> keywordList, Analysis anal

Ability ability = AbilityConverter.toAbility(keyword, entry.getValue(), analysis, user);
abilityDbService.saveAbility(ability);
analysis.addAbility(ability);

if (analysis.getAbilityList() != null)
analysis.addAbility(ability);
abilityCount++;
}
validAbilityCount(abilityCount);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import lombok.NoArgsConstructor;
import org.hibernate.annotations.BatchSize;

import java.util.ArrayList;
import java.util.List;

@Entity
Expand Down Expand Up @@ -37,8 +38,8 @@ public class Analysis extends BaseEntity {
private Record record;

@BatchSize(size = 3)
@OneToMany(mappedBy = "analysis", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private List<Ability> abilityList;
@OneToMany(mappedBy = "analysis", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<Ability> abilityList = new ArrayList<>();

public void updateContent(String content) {
if (content != null && !content.isEmpty())
Expand All @@ -52,9 +53,11 @@ public void updateComment(String comment) {
}

public void addAbility(Ability ability) {
if (abilityList == null)
abilityList = new ArrayList<>();

if (ability != null) {
this.abilityList.add(ability);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,12 @@ public void deleteRecordByFolder(Folder folder) {
recordRepository.deleteRecordByFolder(folder);
}

public int getRecordCount(User user) {
return recordRepository.getRecordCount(user);
public int getRecordCount(Long userId) {
return recordRepository.getRecordCount(userId);
}

public int getRecordCountByChatType(Long userId) {
return recordRepository.getRecordCountByType(userId);
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
public interface RecordService {

// record
RecordResponse.MemoRecordDto createMemoRecord(Long userId, RecordRequest.RecordDto recordDto);
RecordResponse.RecordAnalysisDto createRecord(Long userId, RecordRequest.RecordDto recordDto);
RecordResponse.MemoRecordDto getMemoRecordDetail(Long userId, Long recordId);

// tmp record
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import corecord.dev.domain.ability.exception.AbilityException;
import corecord.dev.domain.ability.status.AbilityErrorStatus;
import corecord.dev.domain.analysis.application.AnalysisService;
import corecord.dev.domain.analysis.domain.entity.Analysis;
import corecord.dev.domain.chat.application.ChatDbService;
import corecord.dev.domain.chat.domain.entity.ChatRoom;
import corecord.dev.domain.folder.application.FolderDbService;
Expand Down Expand Up @@ -37,13 +38,13 @@ public class RecordServiceImpl implements RecordService {
private final int listSize = 30;

/**
* user의 MEMO ver. 경험을 기록하고 폴더를 지정한 후 생성된 경험 기록 정보를 반환합니다.
* user의 경험을 기록하고 폴더를 지정한 후 생성된 경험 기록 정보를 반환합니다.
*
* @param userId, recordDto
* @return recordId, title, content, folderName, createdAt
*/
@Override
public RecordResponse.MemoRecordDto createMemoRecord(Long userId, RecordRequest.RecordDto recordDto) {
public RecordResponse.RecordAnalysisDto createRecord(Long userId, RecordRequest.RecordDto recordDto) {
User user = userDbService.findUserById(userId);
String title = recordDto.getTitle();
String content = recordDto.getContent();
Expand All @@ -56,10 +57,12 @@ public RecordResponse.MemoRecordDto createMemoRecord(Long userId, RecordRequest.
Record record = createRecordBasedOnType(recordDto, user, folder);

// 역량 분석 레포트 생성
analysisService.createAnalysis(record, user);
Analysis analysis = analysisService.createAnalysis(record, user);
recordDbService.saveRecord(record);

return RecordConverter.toMemoRecordDto(record);
// Chat 경험 기록 개수 카운트
int chatRecordCount = getChatRecordCount(record, userId);
return RecordConverter.toRecordAnalysisDto(analysis, chatRecordCount);
}

private Record createRecordBasedOnType(RecordRequest.RecordDto recordDto, User user, Folder folder) {
Expand All @@ -70,6 +73,12 @@ private Record createRecordBasedOnType(RecordRequest.RecordDto recordDto, User u
return RecordConverter.toChatRecordEntity(recordDto.getTitle(), recordDto.getContent(), user, folder, chatRoom);
}

private int getChatRecordCount(Record record, Long userId) {
return record.isMemoType()
? 0
: recordDbService.getRecordCountByChatType(userId);
}

/**
* recordId를 받아 MEMO ver. 경험 기록의 상세 정보를 반환합니다.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import corecord.dev.domain.ability.domain.enums.Keyword;
import corecord.dev.domain.ability.domain.entity.Ability;
import corecord.dev.domain.analysis.domain.converter.AnalysisConverter;
import corecord.dev.domain.analysis.domain.entity.Analysis;
import corecord.dev.domain.chat.domain.entity.ChatRoom;
import corecord.dev.domain.folder.domain.entity.Folder;
import corecord.dev.domain.record.domain.enums.RecordType;
Expand Down Expand Up @@ -59,6 +61,13 @@ public static RecordResponse.TmpMemoRecordDto toNotExistingTmpMemoRecordDto() {
.build();
}

public static RecordResponse.RecordAnalysisDto toRecordAnalysisDto(Analysis analysis, int chatRecordCount) {
return RecordResponse.RecordAnalysisDto.builder()
.analysisDto(AnalysisConverter.toAnalysisDto(analysis))
.chatRecordCount(chatRecordCount)
.build();
}

public static RecordResponse.RecordDto toRecordDto(Record record) {
List<String> keywordList = record.getAnalysis().getAbilityList().stream()
.map(Ability::getKeyword)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package corecord.dev.domain.record.domain.dto.response;

import corecord.dev.domain.analysis.domain.dto.response.AnalysisResponse;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down Expand Up @@ -30,6 +31,15 @@ public static class TmpMemoRecordDto {
private String content;
}

@Builder
@Getter
@AllArgsConstructor
@Data
public static class RecordAnalysisDto {
private AnalysisResponse.AnalysisDto analysisDto;
private int chatRecordCount;
}

@Builder
@Getter
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,16 @@ List<Record> findRecordsByKeyword(

@Query("SELECT COUNT(r) " +
"FROM Record r " +
"WHERE r.user = :user " +
"WHERE r.user.userId = :userId " +
"AND r.folder is not null") // 임시 저장 기록 제외
int getRecordCount(@Param(value = "user") User user);
int getRecordCount(@Param(value = "userId") Long userId);

@Query("SELECT COUNT(r) " +
"FROM Record r " +
"WHERE r.user.userId = :userId " +
"AND r.folder is not null " +
"AND r.type = 'CHAT' ")
int getRecordCountByType(@Param(value = "userId") Long userId);

@Modifying
@Query("DELETE " +
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ public class RecordController {
private final RecordService recordService;

@PostMapping("")
public ResponseEntity<ApiResponse<RecordResponse.MemoRecordDto>> createMemoRecord(
public ResponseEntity<ApiResponse<RecordResponse.RecordAnalysisDto>> createRecord(
@UserId Long userId,
@RequestBody RecordRequest.RecordDto recordDto
) {
RecordResponse.MemoRecordDto recordResponse = recordService.createMemoRecord(userId, recordDto);
return ApiResponse.success(RecordSuccessStatus.MEMO_RECORD_CREATE_SUCCESS, recordResponse);
RecordResponse.RecordAnalysisDto recordResponse = recordService.createRecord(userId, recordDto);
return ApiResponse.success(RecordSuccessStatus.RECORD_CREATE_SUCCESS, recordResponse);
}

@GetMapping("/memo/{recordId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
@AllArgsConstructor
public enum RecordSuccessStatus implements BaseSuccessStatus {

MEMO_RECORD_CREATE_SUCCESS(HttpStatus.CREATED, "S404", "경험 기록이 성공적으로 완료되었습니다."),
RECORD_CREATE_SUCCESS(HttpStatus.CREATED, "S404", "경험 기록이 성공적으로 완료되었습니다."),
MEMO_RECORD_DETAIL_GET_SUCCESS(HttpStatus.OK, "S401", "메모 경험 기록 세부 조회가 성공적으로 완료되었습니다."),
MEMO_RECORD_TMP_CREATE_SUCCESS(HttpStatus.OK, "S403", "메모 경험 기록 임시 저장이 성공적으로 완료되었습니다."),
MEMO_RECORD_TMP_GET_SUCCESS(HttpStatus.OK, "S402", "메모 경험 기록 임시 저장 내역 조회가 성공적으로 완료되었습니다."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ private void validateUserInfo(String nickName) {
public UserResponse.UserInfoDto getUserInfo(Long userId) {
User user = userDbService.getUser(userId);

int recordCount = recordDbService.getRecordCount(user);;
int recordCount = recordDbService.getRecordCount(user.getUserId());;
return UserConverter.toUserInfoDto(user, recordCount);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ void registerUser() {
void getUserInfo() {
// Given
when(userDbService.getUser(newUser.getUserId())).thenReturn(newUser);
when(recordDbService.getRecordCount(newUser)).thenReturn(0);
when(recordDbService.getRecordCount(newUser.getUserId())).thenReturn(0);

// When
UserResponse.UserInfoDto userInfoDto = userService.getUserInfo(newUser.getUserId());
Expand Down

0 comments on commit 23d05c2

Please sign in to comment.