Skip to content

Commit

Permalink
[COZY-499] hotfix : 정수 반환 오류 해결 (#257)
Browse files Browse the repository at this point in the history
* [COZY-499] fix : 정수 반환 오류 해결

* [COZY-499] fix : 정수 반환 오류 해결
  • Loading branch information
genius00hwan authored Jan 31, 2025
1 parent 888ec92 commit d7a95b4
Show file tree
Hide file tree
Showing 3 changed files with 80 additions and 48 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class MemberStatConverter {

private static final Integer NO_EQUALITY = null;
Expand Down Expand Up @@ -67,35 +69,35 @@ public static MemberStatDetailResponseDTO toMemberStatDetailDTOFromEntity(
.turnOffTime(
QuestionAnswerMapper.calculateHour(lifestyle.getTurnOffTime()))
.smoking(
QuestionAnswerMapper.mapValue("흡연여부", lifestyle.getSmokingStatus()))
QuestionAnswerMapper.mapValue("smoking", lifestyle.getSmokingStatus()))
.sleepingHabit(
QuestionAnswerMapper.mapValues("잠버릇", lifestyle.getSleepingHabit())) // 중복선택
QuestionAnswerMapper.mapValues("sleepingHabit", lifestyle.getSleepingHabit())) // 중복선택
.airConditioningIntensity(lifestyle.getCoolingIntensity())
.heatingIntensity(lifestyle.getHeatingIntensity())
.lifePattern(
QuestionAnswerMapper.mapValue("생활패턴", lifestyle.getLifePattern()))
QuestionAnswerMapper.mapValue("lifePattern", lifestyle.getLifePattern()))
.intimacy(
QuestionAnswerMapper.mapValue("친밀도", lifestyle.getIntimacy()))
QuestionAnswerMapper.mapValue("intimacy", lifestyle.getIntimacy()))
.canShare(
QuestionAnswerMapper.mapValue("물건공유", lifestyle.getItemSharing()))
QuestionAnswerMapper.mapValue("canShare", lifestyle.getItemSharing()))
.isPlayGame(
QuestionAnswerMapper.mapValue("게임여부", lifestyle.getPlayingGameFrequency()))
QuestionAnswerMapper.mapValue("isPlayGame", lifestyle.getPlayingGameFrequency()))
.isPhoneCall(
QuestionAnswerMapper.mapValue("전화여부", lifestyle.getPhoneCallingFrequency()))
QuestionAnswerMapper.mapValue("isPhoneCall", lifestyle.getPhoneCallingFrequency()))
.studying(
QuestionAnswerMapper.mapValue("공부여부", lifestyle.getStudyingFrequency()))
QuestionAnswerMapper.mapValue("studying", lifestyle.getStudyingFrequency()))
.intake(
QuestionAnswerMapper.mapValue("섭취여부", lifestyle.getEatingFrequency()))
QuestionAnswerMapper.mapValue("intake", lifestyle.getEatingFrequency()))
.cleanSensitivity(lifestyle.getCleannessSensitivity())
.noiseSensitivity(lifestyle.getNoiseSensitivity())
.cleaningFrequency(
QuestionAnswerMapper.mapValue("청소빈도", lifestyle.getCleaningFrequency()))
QuestionAnswerMapper.mapValue("cleaningFrequency", lifestyle.getCleaningFrequency()))
.drinkingFrequency(
QuestionAnswerMapper.mapValue("음주빈도", lifestyle.getDrinkingFrequency()))
QuestionAnswerMapper.mapValue("drinkingFrequency", lifestyle.getDrinkingFrequency()))
.personality(
QuestionAnswerMapper.mapValues("성격", lifestyle.getPersonality()))
QuestionAnswerMapper.mapValues("personality", lifestyle.getPersonality()))
.mbti(
QuestionAnswerMapper.mapValue("MBTI", lifestyle.getMbti()))
QuestionAnswerMapper.mapValue("mbti", lifestyle.getMbti()))
.selfIntroduction(memberStat.getSelfIntroduction())
.build();
}
Expand Down Expand Up @@ -146,35 +148,38 @@ public static Lifestyle toLifestyleFromDto(CreateMemberStatRequestDTO dto) {
dto.sleepingTime()))
.turnOffTime(
QuestionAnswerMapper.convertTimeToInteger(dto.turnOffMeridian(), dto.turnOffTime()))
.smokingStatus(QuestionAnswerMapper.getIndex("흡연여부", dto.smoking()))
.smokingStatus(QuestionAnswerMapper.getIndex("smoking", dto.smoking()))
.sleepingHabit(
QuestionAnswerMapper.convertBitMaskToInteger("잠버릇", dto.sleepingHabit()))
QuestionAnswerMapper.convertBitMaskToInteger("sleepingHabit", dto.sleepingHabit()))
.coolingIntensity(dto.airConditioningIntensity())
.heatingIntensity(dto.heatingIntensity())
.lifePattern(QuestionAnswerMapper.getIndex("생활패턴", dto.lifePattern()))
.intimacy(QuestionAnswerMapper.getIndex("친밀도", dto.intimacy()))
.itemSharing(QuestionAnswerMapper.getIndex("물건공유", dto.canShare()))
.playingGameFrequency(QuestionAnswerMapper.getIndex("게임여부", dto.isPlayGame()))
.phoneCallingFrequency(QuestionAnswerMapper.getIndex("전화여부", dto.isPhoneCall()))
.studyingFrequency(QuestionAnswerMapper.getIndex("공부여부", dto.studying()))
.eatingFrequency(QuestionAnswerMapper.getIndex("섭취여부", dto.intake()))
.lifePattern(QuestionAnswerMapper.getIndex("lifePattern", dto.lifePattern()))
.intimacy(QuestionAnswerMapper.getIndex("intimacy", dto.intimacy()))
.itemSharing(QuestionAnswerMapper.getIndex("canShare", dto.canShare()))
.playingGameFrequency(QuestionAnswerMapper.getIndex("isPlayGame", dto.isPlayGame()))
.phoneCallingFrequency(QuestionAnswerMapper.getIndex("isPhoneCall", dto.isPhoneCall()))
.studyingFrequency(QuestionAnswerMapper.getIndex("studying", dto.studying()))
.eatingFrequency(QuestionAnswerMapper.getIndex("intake", dto.intake()))
.noiseSensitivity(dto.noiseSensitivity())
.cleannessSensitivity(dto.cleanSensitivity())
.cleaningFrequency(
QuestionAnswerMapper.getIndex("청소빈도", dto.cleaningFrequency()))
QuestionAnswerMapper.getIndex("cleaningFrequency", dto.cleaningFrequency()))
.drinkingFrequency(
QuestionAnswerMapper.getIndex("음주빈도", dto.drinkingFrequency()))
QuestionAnswerMapper.getIndex("drinkingFrequency", dto.drinkingFrequency()))
.personality(
QuestionAnswerMapper.convertBitMaskToInteger("성격", dto.personality()))
.mbti(QuestionAnswerMapper.getIndex("MBTI", dto.mbti().toUpperCase()))
QuestionAnswerMapper.convertBitMaskToInteger("personality", dto.personality()))
.mbti(QuestionAnswerMapper.getIndex("mbti", dto.mbti().toUpperCase()))
.build();
}

public static List<MemberStatPreferenceDetailColorDTO> toMemberStatPreferenceDetailColorDTOListWhenRandom(
MemberStat memberStat, List<String> preferences) {
Map<String, Object> memberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
Map<String, Object> rawMemberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
memberStat, preferences);

QuestionAnswerMapper.load();
Map<String, String> memberStatMap = QuestionAnswerMapper.convertToStringMap(
rawMemberStatMap);
return memberStatMap.entrySet().stream()
.map(entry -> toMemberStatPreferenceDetailColorDTO(entry.getKey(), entry.getValue(),
DifferenceStatus.NOT_SAME_NOT_DIFFERENT)
Expand All @@ -184,12 +189,19 @@ public static List<MemberStatPreferenceDetailColorDTO> toMemberStatPreferenceDet
public static List<MemberStatPreferenceDetailColorDTO> toMemberStatPreferenceDetailColorDTOList(
MemberStat memberStat, MemberStat criteriaMemberStat, List<String> preferences
) {
Map<String, Object> memberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
memberStat,
preferences);
Map<String, Object> criteriaMemberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
// 원본 Map (Integer 값을 포함)
Map<String, Object> rawMemberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
memberStat, preferences);
Map<String, Object> rawCriteriaMemberStatMap = FieldInstanceResolver.extractMultiMemberStatFields(
criteriaMemberStat, preferences);

// Integer 값을 String으로 변환한 Map 생성
QuestionAnswerMapper.load();
Map<String, String> memberStatMap = QuestionAnswerMapper.convertToStringMap(
rawMemberStatMap);
Map<String, String> criteriaMemberStatMap = QuestionAnswerMapper.convertToStringMap(
rawCriteriaMemberStatMap);

return memberStatMap.entrySet().stream()
.map(entry ->
toMemberStatPreferenceDetailColorDTO(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,5 +144,25 @@ public static Integer convertBitMaskToInteger(String category, List<String> item
}
return bitMask;
}

public static Map<String, String> convertToStringMap(Map<String, Object> rawMap) {

log.info("🔹 [Before Conversion] Raw Map: {}", rawMap); // 변환 전 로그

return rawMap.entrySet().stream()
.collect(Collectors.toMap(
Map.Entry::getKey,
entry -> {
String key = entry.getKey();
Object value = entry.getValue();

if (value instanceof Integer && questionAnswerMap.containsKey(key)) {
return mapValue(key, (Integer) value);
}

return value.toString(); // Integer가 아니면 그냥 String 변환
}
));
}
}

34 changes: 17 additions & 17 deletions src/main/resources/memberstat/question_answer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,97 +13,97 @@
10,
11
],
"흡연여부": [
"smoking": [
"비흡연자",
"연초",
"궐련형 전자담배",
"액상형 전자담배"
],
"잠버릇": [
"sleepingHabit": [
"잠버릇이 없어요",
"코골이",
"이갈이",
"몽유병",
"잠꼬대",
"뒤척임"
],
"에어컨강도": [
"airConditioningIntensity": [
"안 틀어요",
"약하게 틀어요",
"적당하게 틀어요",
"강하게 틀어요"
],
"히터강도": [
"heatingIntensity": [
"안 틀어요",
"약하게 틀어요",
"적당하게 틀어요",
"강하게 틀어요"
],
"생활패턴": [
"lifePattern": [
"아침형 인간",
"새벽형 인간"
],
"친밀도": [
"intimacy": [
"필요한 말만 했으면 좋겠어요",
"어느정도 친하게 지내요",
"완전 친하게 지내요"
],
"물건공유": [
"canShare": [
"아무것도 공유하고 싶지 않아요",
"휴지정도는 빌려줄 수 있어요",
"옷정도는 빌려줄 수 있어요",
"칫솔만 아니면 돼요"
],
"게임여부": [
"isPlayGame": [
"아예 하지 않아요",
"키보드 채팅정도만 쳐요",
"보이스 채팅도 해요"
],
"전화여부": [
"isPhoneCall": [
"아예 하지 않아요",
"급한 전화만 해요",
"자주 해요"
],
"공부여부": [
"studying": [
"아예 하지 않아요",
"시험기간 때만 해요",
"매일 해요"
],
"섭취여부": [
"intake": [
"아예 안 먹어요",
"음료만 마셔요",
"간단한 간식정도만 먹어요",
"배달음식도 먹어요"
],
"청결예민도": [
"cleanSensitivity": [
"매우 예민하지 않아요",
"예민하지 않아요",
"보통이에요",
"예민해요",
"매우 예민해요"
],
"소음예민도": [
"noiseSensitivity": [
"매우 예민하지 않아요",
"예민하지 않아요",
"보통이에요",
"예민해요",
"매우 예민해요"
],
"청소빈도": [
"cleaningFrequency": [
"한 달에 한 번 해요",
"2주에 한 번 해요",
"일주일에 한 번 해요",
"이틀에 한 번 정도 해요",
"매일매일 해요"
],
"음주빈도": [
"drinkingFrequency": [
"아예 안 마셔요",
"한 달에 한 두번 마셔요",
"일주일에 한 두번 마셔요",
"일주일에 네 번이상 마셔요",
"거의 매일 마셔요"
],
"성격": [
"personality": [
"조용해요",
"활발해요",
"말이 많아요",
Expand All @@ -117,7 +117,7 @@
"귀차니즘이 있어요",
"부지런해요"
],
"MBTI": [
"mbti": [
"ISTJ","ISFJ","INFJ","INTJ",
"ISTP","ISFP","INFP","INTP",
"ESTP","ESFP","ENFP","ENTP",
Expand Down

0 comments on commit d7a95b4

Please sign in to comment.