Skip to content

Commit 08d64ff

Browse files
committed
Merge branch 'main' of github.com:9ITHON/7--ToGetHer
2 parents 33ff892 + 26265e0 commit 08d64ff

32 files changed

+495
-252
lines changed

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/controller/CalendarController.javaโ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public ResponseEntity<BaseResponse<List<CalendarRecordResponse>>> saveRecord(
5353

5454
try {
5555
calendarService.saveCalendarRecord(user, request);
56-
return ResponseEntity.ok(new BaseResponse<>(BaseResponseStatus.OK, null));
56+
return ResponseEntity.status(HttpStatus.OK)
57+
.body(new BaseResponse<>(BaseResponseStatus.OK));
5758
} catch (Exception e) {
5859
return ResponseEntity
5960
.status(HttpStatus.INTERNAL_SERVER_ERROR)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.together.backend.domain.calendar.dto;
22

33
import com.together.backend.domain.calendar.model.entity.CondomUsage;
4+
import com.together.backend.domain.calendar.model.entity.MoodType;
45
import lombok.*;
56

67
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder
@@ -9,5 +10,5 @@ public class CalendarDetailResponse {
910
private Boolean takenPill;
1011
private CondomUsage usedCondom;
1112
private Boolean hadSex;
12-
private String moodEmoji;
13+
private MoodType moodEmoji;
1314
}

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/dto/CalendarRecordRequest.javaโ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.together.backend.domain.calendar.dto;
22

33
import com.together.backend.domain.calendar.model.entity.CondomUsage;
4+
import com.together.backend.domain.calendar.model.entity.MoodType;
45
import lombok.*;
56

67
// ์บ˜๋ฆฐ๋” ๊ธฐ๋ก ๋“ฑ๋ก์šฉ DTO
@@ -11,5 +12,5 @@ public class CalendarRecordRequest {
1112
private Boolean hadSex;
1213
private Boolean takenPill;
1314
private CondomUsage usedCondom;
14-
private String moodEmoji;
15+
private MoodType moodEmoji;
1516
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.together.backend.domain.calendar.dto;
22

33
import com.together.backend.domain.calendar.model.entity.CondomUsage;
4+
import com.together.backend.domain.calendar.model.entity.MoodType;
45
import lombok.*;
56

67
@Getter @Setter @NoArgsConstructor @AllArgsConstructor @Builder
@@ -9,6 +10,6 @@ public class CalendarRecordResponse {
910
private Boolean hadSex;
1011
private Boolean takenPill;
1112
private CondomUsage usedCondom; // Enum!
12-
private String moodEmoji;
13+
private MoodType moodEmoji;
1314
}
1415

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.together.backend.domain.calendar.dto;
22

3+
import com.together.backend.domain.calendar.model.entity.MoodType;
34
import lombok.*;
45

56
@Getter @Setter
67
@NoArgsConstructor @AllArgsConstructor @Builder
78
public class CalendarSummaryResponse {
89
private String date;
9-
private String moodEmoji;
10+
private MoodType moodEmoji;
1011
}

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/model/entity/BasicRecord.javaโ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ public class BasicRecord {
1919
@JoinColumn(name = "user_id")
2020
private User user;
2121

22+
@Enumerated(EnumType.STRING)
2223
@Column(name = "mood_emoji", length = 10)
23-
private String moodEmoji;
24+
private MoodType moodEmoji;
2425

2526
@Column(name = "occured_at")
2627
private LocalDateTime occuredAt;
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.together.backend.domain.calendar.model.entity;
2+
3+
public enum MoodType {
4+
HAPPY, // ํ–‰๋ณตํ•ด์š”
5+
CALM, // ํ‰์˜จํ•ด์š”
6+
SLUGGISH, // ๋ฌด๊ธฐ๋ ฅํ•ด์š”
7+
ANXIOUS, // ๋ถˆ์•ˆํ•ด์š”
8+
SENSITIVE, // ์˜ˆ๋ฏผํ•ด์š”
9+
DEPRESSED // ์šฐ์šธํ•ด์š”
10+
}

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/repository/BasicRecordRepository.javaโ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ public interface BasicRecordRepository extends JpaRepository<BasicRecord, Long>
1616
// IntakeRecord๋กœ ์—ฐ๊ฒฐ๋œ BasicRecord ๋ชจ๋‘ ์‚ญ์ œ (custom ์ฟผ๋ฆฌ, bulk delete)
1717
void deleteByIntakeRecord(IntakeRecord intakeRecord);
1818

19+
void deleteByUser(User user);
1920
}

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/repository/RelationRecordRepository.javaโ€Ž

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@
1212
public interface RelationRecordRepository extends JpaRepository<RelationRecord, Long> {
1313
Optional<RelationRecord> findByUserEmailAndRecordDate(String email, LocalDate recordDate);
1414
Optional<RelationRecord> findByUserAndPartnerAndRecordDate(User user, User partner, LocalDate recordDate);
15+
16+
void deleteByUser(User user);
1517
}

โ€Žbackend/src/main/java/com/together/backend/domain/calendar/service/CalendarService.javaโ€Ž

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@
1616
import com.together.backend.domain.notification.service.NotificationService;
1717
import com.together.backend.domain.pill.model.UserPill;
1818
import com.together.backend.domain.pill.repository.UserPillRepository;
19-
import com.together.backend.domain.user.model.entity.Gender;
2019
import com.together.backend.domain.user.model.entity.Role;
2120
import com.together.backend.domain.user.model.entity.User;
21+
import com.together.backend.domain.calendar.model.entity.MoodType;
2222
import com.together.backend.domain.user.repository.UserRepository;
2323
import jakarta.transaction.Transactional;
24+
import lombok.extern.slf4j.Slf4j;
2425
import org.springframework.beans.factory.annotation.Autowired;
2526
import org.springframework.stereotype.Service;
2627

2728
import java.time.LocalDate;
2829
import java.time.LocalDateTime;
2930
import java.time.format.DateTimeFormatter;
30-
import java.util.ArrayList;
3131
import java.util.List;
3232
import java.util.Optional;
3333
import java.util.stream.Collectors;
34-
34+
@Slf4j
3535
@Service
3636
public class CalendarService {
3737
private final RelationRecordRepository relationRecordRepository;
@@ -113,6 +113,7 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
113113
if (isFemale) {
114114
// [๋ถˆ๊ฐ€] ์ฝ˜๋” ์‚ฌ์šฉ์—ฌ๋ถ€
115115
if (request.getUsedCondom() != null) {
116+
log.warn("[CalendarService] ์—ฌ์„ฑ ์œ ์ €๊ฐ€ ์ฝ˜๋” ์‚ฌ์šฉ์—ฌ๋ถ€ ๋“ฑ๋ก ์‹œ๋„");
116117
throw new IllegalArgumentException("์—ฌ์„ฑ์€ ์ฝ˜๋” ์‚ฌ์šฉ์—ฌ๋ถ€๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
117118
}
118119
// [๊ฐ€๋Šฅ] ๊ด€๊ณ„ ์—ฌ๋ถ€
@@ -126,7 +127,10 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
126127
.orElseThrow(() -> new RuntimeException("UserPill ์ •๋ณด ์—†์Œ"));
127128
IntakeRecord intakeRecord = intakeRecordRepository
128129
.findByUserPillAndIntakeDate(userPill, date)
129-
.orElseThrow(() -> new RuntimeException("๋ณต์šฉ ๊ธฐ๋ก ์—†์Œ"));
130+
.orElseThrow(() -> {
131+
log.warn("[CalendarService] ๋ณต์šฉ ๊ธฐ๋ก ์—†์Œ: date={}",date);
132+
return new RuntimeException("๋ณต์šฉ ๊ธฐ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.");
133+
});
130134

131135
if (request.getTakenPill() != null) {
132136
// ๊ธฐ์กด๊ฐ’๊ณผ ๋น„๊ต
@@ -139,10 +143,11 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
139143
if((prevTaken == null || !prevTaken) && nowTaken) {
140144
if(curRemain > 0) {
141145
userPill.setCurrentRemain(curRemain - 1);
142-
146+
log.info("[CalendarService] ๋ณต์šฉ ์ž”๋Ÿ‰ ๊ฐ์†Œ: remain={}", curRemain - 1);
143147
}
144148
} else if((prevTaken != null && prevTaken) && !nowTaken) {
145149
userPill.setCurrentRemain(curRemain + 1);
150+
log.info("[CalendarService] ๋ณต์šฉ ์ž”๋Ÿ‰ ๋ณต๊ตฌ: remain={}", curRemain + 1);
146151
}
147152
userPillRepository.save(userPill);
148153
intakeRecordRepository.save(intakeRecord);
@@ -154,11 +159,16 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
154159
.user(user)
155160
.intakeRecord(intakeRecord)
156161
.occuredAt(date.atStartOfDay())
157-
.moodEmoji(request.getMoodEmoji())
158162
.build();
159-
} else {
160-
if (request.getMoodEmoji() != null)
163+
}
164+
if (request.getMoodEmoji() != null) {
165+
try {
161166
basicRecord.setMoodEmoji(request.getMoodEmoji());
167+
log.info("[CalendarService] ๊ฐ์ • ๊ธฐ๋ก: userId={}, mood={}", user.getUserId(), request.getMoodEmoji());
168+
} catch (IllegalArgumentException e) {
169+
log.warn("[CalendarService] ์ž˜๋ชป๋œ ๊ฐ์ • ์ฝ”๋“œ: {}", request.getMoodEmoji());
170+
throw new IllegalArgumentException("์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฐ์ • ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค: " + request.getMoodEmoji());
171+
}
162172
}
163173
basicRecordRepository.save(basicRecord);
164174

@@ -177,6 +187,7 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
177187
} else if (isMale) {
178188
// [๋ถˆ๊ฐ€] ๊ฐ์ •, ๋ณต์šฉ ๊ธฐ๋ก
179189
if (request.getMoodEmoji() != null || request.getTakenPill() != null) {
190+
log.warn("[CalendarService] ๋‚จ์„ฑ ํŒŒํŠธ๋„ˆ๊ฐ€ ๊ฐ์ •/๋ณต์šฉ ๊ธฐ๋ก ์‹œ๋„: userId={}", user.getUserId());
180191
throw new IllegalArgumentException("ํŒŒํŠธ๋„ˆ(๋‚จ์„ฑ)๋Š” ๊ฐ์ • ๋ฐ ๋ณต์šฉ ๊ธฐ๋ก์„ ๋“ฑ๋กํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.");
181192
}
182193
// [์ฒ˜์Œ ์ƒ์„ฑ] ์—ฌ์„ฑ ๊ธฐ๋ก ๊ด€๋ จ ํ•„๋“œ๋Š” builder์—์„œ ์ด๋ฏธ null๋กœ ์ฒ˜๋ฆฌํ•จ
@@ -192,10 +203,11 @@ public void saveCalendarRecord(User user, CalendarRecordRequest request) {
192203

193204
// 4. RelationRecord ์ €์žฅ
194205
relationRecordRepository.save(relationRecord);
206+
log.info("[CalendarService] RelationRecord ์ €์žฅ ์™„๋ฃŒ: userId={}, partnerUserId={}, date={}", female.getUserId(), male.getUserId(), date);
195207

196208
} catch (Exception e) {
197-
System.out.println("[์บ˜๋ฆฐ๋” ๊ธฐ๋ก][์—๋Ÿฌ] " + e.getMessage());
198-
e.printStackTrace();
209+
System.out.println("[CalendarService][์—๋Ÿฌ] " + e.getMessage());
210+
log.error("[CalendarService] ์—๋Ÿฌ={}", e.getMessage());
199211
throw e;
200212
}
201213
}
@@ -278,7 +290,7 @@ public CalendarDetailResponse getCalendarDetail(User me, LocalDate date) {
278290
}
279291

280292
// 3. ๊ฐ์ • ๊ธฐ๋ก(ํ•ญ์ƒ ์—ฌ์ž user_id๋กœ ์กฐํšŒ!)
281-
String moodEmoji = basicRecordRepository
293+
MoodType moodEmoji = basicRecordRepository
282294
.findAllByUserAndOccuredAtBetween(female, date.atStartOfDay(), date.atTime(23, 59, 59))
283295
.stream()
284296
.findFirst()

0 commit comments

Comments
ย (0)