Skip to content

Commit f9264b9

Browse files
committed
♻️ chore: 알림 2개로 수정
1 parent 33e048c commit f9264b9

9 files changed

Lines changed: 106 additions & 28 deletions

File tree

src/main/java/com/api/advanced_mobile/domain/alarm/entity/Alarm.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.api.advanced_mobile.domain.alarm.entity;
22

3+
import com.api.advanced_mobile.domain.alarm.entity.enums.AlarmType;
34
import com.api.advanced_mobile.domain.member.entity.Member;
45
import com.api.advanced_mobile.global.entity.BaseEntity;
56
import jakarta.persistence.*;
@@ -23,16 +24,29 @@ public class Alarm extends BaseEntity {
2324

2425
private LocalTime alarmTime;
2526

26-
@OneToOne(fetch = FetchType.LAZY)
27+
@Enumerated(EnumType.STRING)
28+
private AlarmType type;
29+
30+
@ManyToOne(fetch = FetchType.LAZY)
2731
@JoinColumn(name = "member_id")
2832
private Member member;
2933

3034
//기본 생성
31-
public static Alarm createDefault(Member member){
35+
public static Alarm createMorning(Member member) {
36+
return Alarm.builder()
37+
.member(member)
38+
.type(AlarmType.MORNING)
39+
.activate(true)
40+
.alarmTime(LocalTime.of(8, 0))
41+
.build();
42+
}
43+
44+
public static Alarm createNight(Member member) {
3245
return Alarm.builder()
3346
.member(member)
47+
.type(AlarmType.NIGHT)
3448
.activate(true)
35-
.alarmTime(LocalTime.of(22,0))
49+
.alarmTime(LocalTime.of(20, 0))
3650
.build();
3751
}
3852

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.api.advanced_mobile.domain.alarm.entity.enums;
2+
3+
public enum AlarmType {
4+
MORNING,
5+
NIGHT
6+
}

src/main/java/com/api/advanced_mobile/domain/alarm/repository/AlarmRepository.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.api.advanced_mobile.domain.alarm.repository;
22

33
import com.api.advanced_mobile.domain.alarm.entity.Alarm;
4+
import com.api.advanced_mobile.domain.alarm.entity.enums.AlarmType;
45
import org.springframework.data.jpa.repository.JpaRepository;
56
import org.springframework.stereotype.Repository;
67

@@ -9,4 +10,6 @@
910
@Repository
1011
public interface AlarmRepository extends JpaRepository<Alarm,Long> {
1112
Optional<Alarm> findByMemberId(Long id);
13+
14+
Optional<Alarm> findByMemberIdAndType(Long id, AlarmType alarmType);
1215
}
Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.api.advanced_mobile.domain.alarm.service;
22

33
import com.api.advanced_mobile.domain.alarm.entity.Alarm;
4+
import com.api.advanced_mobile.domain.alarm.entity.enums.AlarmType;
45
import com.api.advanced_mobile.domain.alarm.exception.NotFoundAlarmException;
56
import com.api.advanced_mobile.domain.alarm.repository.AlarmRepository;
67
import com.api.advanced_mobile.domain.alarm.web.dto.AlarmRes;
@@ -18,34 +19,45 @@ public class AlarmServiceImpl implements AlarmService{
1819
//알림 조회
1920
@Override
2021
public AlarmRes getAlarm(Long id) {
21-
Alarm alarm = alarmRepo.findByMemberId(id)
22+
Alarm morning = alarmRepo.findByMemberIdAndType(id, AlarmType.MORNING)
2223
.orElseThrow(NotFoundAlarmException::new);
2324

24-
return AlarmRes.from(
25-
alarm.isActivate()
26-
,alarm.getAlarmTime()
27-
);
25+
Alarm night = alarmRepo.findByMemberIdAndType(id, AlarmType.NIGHT)
26+
.orElseThrow(NotFoundAlarmException::new);
27+
28+
29+
return AlarmRes.from(morning, night);
2830
}
2931

3032
//알림 수정
3133
@Transactional
3234
@Override
3335
public AlarmRes modifyAlarm(Long id, ModifyAlarmReq req) {
34-
Alarm alarm = alarmRepo.findByMemberId(id)
36+
37+
Alarm morning = alarmRepo.findByMemberIdAndType(id, AlarmType.MORNING)
3538
.orElseThrow(NotFoundAlarmException::new);
3639

37-
if (req.getActivate() != null) {
38-
alarm.modifyActivate(req.getActivate());
40+
Alarm night = alarmRepo.findByMemberIdAndType(id, AlarmType.NIGHT)
41+
.orElseThrow(NotFoundAlarmException::new);
42+
43+
44+
updateAlarm(morning, req.getMorning());
45+
updateAlarm(night, req.getNight());
46+
47+
48+
return AlarmRes.from(morning, night);
49+
}
50+
51+
private void updateAlarm(Alarm alarm, ModifyAlarmReq.AlarmUpdate update) {
52+
if (update == null) return;
53+
54+
if (update.getActivate() != null) {
55+
alarm.modifyActivate(update.getActivate());
3956
}
4057

4158
// time 변경 요청이 있을 때만 수정
42-
if (req.getTime() != null) {
43-
alarm.modifyTime(req.getTime());
59+
if (update.getTime() != null) {
60+
alarm.modifyTime(update.getTime());
4461
}
45-
46-
return AlarmRes.from(
47-
alarm.isActivate()
48-
,alarm.getAlarmTime()
49-
);
5062
}
5163
}
Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,38 @@
11
package com.api.advanced_mobile.domain.alarm.web.dto;
22

3+
import com.api.advanced_mobile.domain.alarm.entity.Alarm;
4+
import com.api.advanced_mobile.domain.alarm.entity.enums.AlarmType;
35
import jakarta.validation.Valid;
46
import lombok.Builder;
7+
import lombok.Data;
58
import lombok.Getter;
69

710
import java.time.LocalTime;
811

9-
@Getter
12+
@Data
1013
@Builder
1114
public class AlarmRes {
12-
private boolean activate;
13-
private LocalTime time;
1415

15-
public static AlarmRes from(boolean activate, LocalTime time){
16+
private AlarmInfo morning;
17+
private AlarmInfo night;
18+
19+
@Data
20+
@Builder
21+
public static class AlarmInfo{
22+
private boolean activate;
23+
private LocalTime time;
24+
}
25+
26+
public static AlarmRes from(Alarm morning, Alarm night) {
1627
return AlarmRes.builder()
17-
.activate(activate)
18-
.time(time)
28+
.morning(AlarmInfo.builder()
29+
.activate(morning.isActivate())
30+
.time(morning.getAlarmTime())
31+
.build())
32+
.night(AlarmInfo.builder()
33+
.activate(night.isActivate())
34+
.time(night.getAlarmTime())
35+
.build())
1936
.build();
2037
}
2138
}

src/main/java/com/api/advanced_mobile/domain/alarm/web/dto/ModifyAlarmReq.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,13 @@
77

88
@Data
99
public class ModifyAlarmReq {
10-
private Boolean activate;
11-
private LocalTime time;
10+
private AlarmUpdate morning;
11+
private AlarmUpdate night;
12+
13+
@Data
14+
public static class AlarmUpdate {
15+
private Boolean activate;
16+
private LocalTime time;
17+
}
1218

1319
}

src/main/java/com/api/advanced_mobile/domain/member/entity/Member.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,15 @@ public class Member extends BaseEntity {
5454
orphanRemoval = true)
5555
private List<Calender> calenders = new ArrayList<>();
5656

57+
@OneToMany(
58+
mappedBy = "member",
59+
fetch = FetchType.LAZY,
60+
cascade = CascadeType.ALL,
61+
orphanRemoval = true
62+
)
63+
@Builder.Default
64+
private List<Alarm> alarms = new ArrayList<>();
65+
5766
// Trouble 추가
5867
public void addTrouble(Trouble trouble){
5968
MemberTrouble mt = MemberTrouble.of(this, trouble);

src/main/java/com/api/advanced_mobile/domain/member/service/MemberServiceImpl.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,10 @@ private void createDefaultRoutines(Member member){
190190

191191
//기본 알림 생성
192192
private void createDefaultAlarm(Member member) {
193-
Alarm alarm = Alarm.createDefault(member);
193+
Alarm morning = Alarm.createMorning(member);
194+
Alarm night = Alarm.createNight(member);
194195

195-
alarmRepository.save(alarm);
196+
alarmRepository.save(morning);
197+
alarmRepository.save(night);
196198
}
197199
}

src/main/resources/application.properties

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,15 @@ spring.jpa.open-in-view: false
1515
#session cookies
1616
server.servlet.session.timeout=60m
1717

18+
#local
19+
server.servlet.session.cookie.same-site=lax
20+
server.servlet.session.cookie.secure=false
21+
22+
#server
23+
#server.servlet.session.cookie.same-site=none
24+
#server.servlet.session.cookie.secure=true
25+
26+
1827
#swagger
1928
springdoc.swagger-ui.use-root-path=true
2029
springdoc.swagger-ui.path=/swagger-ui.html

0 commit comments

Comments
 (0)