Skip to content

Commit

Permalink
feat: alarm 생성 기능 구현
Browse files Browse the repository at this point in the history
review request 알람 생성 시 활용
Related to: #4
  • Loading branch information
heejjinkim committed Aug 16, 2024
1 parent 3770382 commit a00b500
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 0 deletions.
51 changes: 51 additions & 0 deletions src/main/java/com/_119/wepro/alarm/domain/Alarm.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package com._119.wepro.alarm.domain;

import com._119.wepro.global.BaseEntity;
import com._119.wepro.global.enums.AlarmType;
import com._119.wepro.member.domain.Member;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
public class Alarm extends BaseEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "sender_id")
private Member sender;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "receiver_id")
private Member receiver;

private Long targetId;

@Column(length = 50)
private String message;

@Enumerated(EnumType.STRING)
private AlarmType alarmType;

@Builder.Default
private boolean readFlag = false;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com._119.wepro.alarm.domain.repository;

import com._119.wepro.alarm.domain.Alarm;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface AlarmRepository extends JpaRepository<Alarm, Long> {

}
39 changes: 39 additions & 0 deletions src/main/java/com/_119/wepro/alarm/service/AlarmService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com._119.wepro.alarm.service;

import com._119.wepro.alarm.domain.Alarm;
import com._119.wepro.alarm.domain.repository.AlarmRepository;
import com._119.wepro.global.enums.AlarmType;
import com._119.wepro.global.exception.RestApiException;
import com._119.wepro.global.exception.errorcode.UserErrorCode;
import com._119.wepro.member.domain.Member;
import com._119.wepro.member.domain.repository.MemberRepository;
import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class AlarmService {

private final MemberRepository memberRepository;
private final AlarmRepository alarmRepository;

@Transactional
public void createAlarm(Member sender, Long receiverId, AlarmType alarmType, Long targetId,
String content) {
Member receiver = memberRepository.findById(receiverId).orElseThrow(()
-> new RestApiException(UserErrorCode.USER_NOT_FOUND));
content = sender.getName() + content;

alarmRepository.save(Alarm.builder()
.sender(sender)
.receiver(receiver)
.alarmType(alarmType)
.message(content)
.readFlag(false)
.targetId(targetId)
.build()
);
}

}
12 changes: 12 additions & 0 deletions src/main/java/com/_119/wepro/global/enums/AlarmType.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com._119.wepro.global.enums;

import lombok.Getter;
import lombok.RequiredArgsConstructor;

@Getter
@RequiredArgsConstructor
public enum AlarmType {
REVIEW_REQUEST("리뷰 요청");

private final String description;
}

0 comments on commit a00b500

Please sign in to comment.