1616import com .together .backend .domain .notification .service .NotificationService ;
1717import com .together .backend .domain .pill .model .UserPill ;
1818import com .together .backend .domain .pill .repository .UserPillRepository ;
19- import com .together .backend .domain .user .model .entity .Gender ;
2019import com .together .backend .domain .user .model .entity .Role ;
2120import com .together .backend .domain .user .model .entity .User ;
21+ import com .together .backend .domain .calendar .model .entity .MoodType ;
2222import com .together .backend .domain .user .repository .UserRepository ;
2323import jakarta .transaction .Transactional ;
24+ import lombok .extern .slf4j .Slf4j ;
2425import org .springframework .beans .factory .annotation .Autowired ;
2526import org .springframework .stereotype .Service ;
2627
2728import java .time .LocalDate ;
2829import java .time .LocalDateTime ;
2930import java .time .format .DateTimeFormatter ;
30- import java .util .ArrayList ;
3131import java .util .List ;
3232import java .util .Optional ;
3333import java .util .stream .Collectors ;
34-
34+ @ Slf4j
3535@ Service
3636public 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