diff --git a/src/main/java/com/eactive/apim/portal/apprequest/entity/AppRequest.java b/src/main/java/com/eactive/apim/portal/apprequest/entity/AppRequest.java index 0150efe..f96b732 100644 --- a/src/main/java/com/eactive/apim/portal/apprequest/entity/AppRequest.java +++ b/src/main/java/com/eactive/apim/portal/apprequest/entity/AppRequest.java @@ -68,6 +68,11 @@ public class AppRequest implements com.eactive.eai.data.Data { @Column(name = "reason") private String reason; + //DELETE 승인 시 admin 이 선택한 GW 처리방식. null=차단(BLOCK)과 동일 + @Enumerated(EnumType.STRING) + @Column(name = "gw_action", length = 10) + private GwAction gwAction; + @Column(name = "app_description", length = 500) private String appDescription; diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java index ef65543..9482594 100644 --- a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentApiRepository.java @@ -6,6 +6,7 @@ import com.eactive.eai.rms.data.EMSDataSource; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.Collection; import java.util.List; @Repository @@ -15,5 +16,11 @@ public interface DjbApistatusIncidentApiRepository List findByIncidentIdOrderByApiId(Long incidentId); + List findByIncidentIdInOrderByIncidentIdAscApiIdAsc(Collection incidentIds); + + List findByApiIdInAndRecoveredAtIsNull(Collection apiIds); + + long countByIncidentIdAndRecoveredAtIsNull(Long incidentId); + void deleteByIncidentId(Long incidentId); } diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java index 0e15ec7..92796c2 100644 --- a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentRepository.java @@ -1,11 +1,17 @@ package com.eactive.apim.portal.djb.apistatus.incident.repository; import com.eactive.apim.portal.djb.apistatus.incident.entity.DjbApistatusIncident; +import com.eactive.apim.portal.djb.apistatus.incident.entity.IncidentKind; +import com.eactive.apim.portal.djb.apistatus.incident.entity.IncidentState; import com.eactive.eai.rms.data.EMSDataSource; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; +import java.util.Collection; +import java.util.List; import java.util.Optional; @Repository @@ -14,4 +20,27 @@ public interface DjbApistatusIncidentRepository extends JpaRepository, JpaSpecificationExecutor { Optional findByNoticeId(String noticeId); + + Optional findByInterfaceId(String interfaceId); + + List findByKindAndStateNotInOrderByStartedAtDesc( + IncidentKind kind, Collection excludedStates); + + /** + * 특정 API 들에 영향을 주는 미종결 장애. 자동 탐지 시 기존 장애 병합 대상 판별용. + * + *

{@code detectedBy} 로 등록 주체를 한정한다. 자동 탐지는 자동 등록 건에만 영향 API 를 덧붙여야 + * 관리자가 직접 작성한 장애 공지의 내용이 바뀌지 않는다.

+ */ + @Query("SELECT DISTINCT i FROM DjbApistatusIncident i, DjbApistatusIncidentApi a" + + " WHERE a.incidentId = i.incidentId" + + " AND i.kind = :kind" + + " AND i.detectedBy = :detectedBy" + + " AND i.state NOT IN :excludedStates" + + " AND a.apiId IN :apiIds" + + " ORDER BY i.startedAt DESC") + List findOpenByApiIds(@Param("kind") IncidentKind kind, + @Param("detectedBy") String detectedBy, + @Param("excludedStates") Collection excludedStates, + @Param("apiIds") Collection apiIds); } diff --git a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java index ca8dbe4..0adde8c 100644 --- a/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java +++ b/src/main/java/com/eactive/apim/portal/djb/apistatus/incident/repository/DjbApistatusIncidentTimelineRepository.java @@ -5,6 +5,7 @@ import com.eactive.eai.rms.data.EMSDataSource; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.Collection; import java.util.List; @Repository @@ -14,5 +15,10 @@ public interface DjbApistatusIncidentTimelineRepository List findByIncidentIdOrderByEventAtAsc(Long incidentId); + List findByIncidentIdOrderByEventAtDesc(Long incidentId); + + List findByIncidentIdInAndVisibleYnOrderByEventAtDesc( + Collection incidentIds, String visibleYn); + void deleteByIncidentId(Long incidentId); } diff --git a/src/main/java/com/eactive/apim/portal/partnership/event/PartnershipCreatedEvent.java b/src/main/java/com/eactive/apim/portal/partnership/event/PartnershipCreatedEvent.java deleted file mode 100644 index cb8824a..0000000 --- a/src/main/java/com/eactive/apim/portal/partnership/event/PartnershipCreatedEvent.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.eactive.apim.portal.partnership.event; - -import com.eactive.apim.portal.template.entity.MessageCode; -import com.eactive.apim.portal.template.service.MessageEventHandler; -import com.eactive.apim.portal.template.service.MessageRecipient; -import com.eactive.apim.portal.template.service.MessageSendEvent; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -@Component -public class PartnershipCreatedEvent implements MessageEventHandler { - - public static final MessageCode KEY = MessageCode.PARTNERSHIP_CREATED; - - @Override - public boolean allowAdditionalRecipients() { - return true; - } - - @Override - public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map params) { - Map requestParams = new HashMap<>(); - String subject = toStr(params.get("bizSubject")); - if (subject.isEmpty()) { - subject = toStr(params.get("subject")); - } - requestParams.put("partnershipId", toStr(params.get("partnershipId"))); - requestParams.put("bizSubject", subject); - requestParams.put("subject", subject); - requestParams.put("writerName", toStr(params.get("writerName"))); - return new MessageSendEvent(source, KEY, recipient, requestParams); - } - - private String toStr(Object value) { - return value == null ? "" : value.toString(); - } - - @Override - public MessageCode getKey() { - return KEY; - } - - @Override - public String getDisplayName() { - return "개선요청/제휴 게시물 등록"; - } - - @Override - public String getDescription() { - return "
사용 가능 변수:

" - + "
- userName: 수신자 이름

" - + "
- userId: 수신자 ID (이메일)

" - + "
- partnershipId: 신청 ID

" - + "
- bizSubject: 신청 제목

" - + "
- subject: 신청 제목 (별칭)

" - + "
- writerName: 작성자 이름

"; - } -} diff --git a/src/main/java/com/eactive/apim/portal/qna/event/InquiryCommentCreatedEvent.java b/src/main/java/com/eactive/apim/portal/qna/event/InquiryCommentCreatedEvent.java deleted file mode 100644 index 27f404d..0000000 --- a/src/main/java/com/eactive/apim/portal/qna/event/InquiryCommentCreatedEvent.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.eactive.apim.portal.qna.event; - -import com.eactive.apim.portal.template.entity.MessageCode; -import com.eactive.apim.portal.template.service.MessageEventHandler; -import com.eactive.apim.portal.template.service.MessageRecipient; -import com.eactive.apim.portal.template.service.MessageSendEvent; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -@Component -public class InquiryCommentCreatedEvent implements MessageEventHandler { - - public static final MessageCode KEY = MessageCode.INQUIRY_COMMENT_CREATED; - - @Override - public MessageCode getKey() { - return KEY; - } - - @Override - public boolean allowAdditionalRecipients() { - return true; - } - - @Override - public String getDisplayName() { - return "Q&A 댓글 등록 알림"; - } - - @Override - public String getDescription() { - return "
사용 가능 변수:

" - + "
- userName: 수신자 이름

" - + "
- userId: 수신자 ID

" - + "
- inquiryId: 문의 ID

" - + "
- inquirySubject: 문의 제목

" - + "
- commentContent: 댓글 본문

" - + "
- writerName: 작성자 이름

"; - } - - @Override - public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map params) { - Map requestParams = new HashMap<>(); - requestParams.put("inquiryId", toStr(params.get("inquiryId"))); - requestParams.put("inquirySubject", toStr(params.get("inquirySubject"))); - requestParams.put("commentContent", toStr(params.get("commentContent"))); - requestParams.put("writerName", toStr(params.get("writerName"))); - return new MessageSendEvent(source, KEY, recipient, requestParams); - } - - private String toStr(Object value) { - return value == null ? "" : value.toString(); - } -} diff --git a/src/main/java/com/eactive/apim/portal/qna/event/InquiryCreatedEvent.java b/src/main/java/com/eactive/apim/portal/qna/event/InquiryCreatedEvent.java deleted file mode 100644 index 908e225..0000000 --- a/src/main/java/com/eactive/apim/portal/qna/event/InquiryCreatedEvent.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.eactive.apim.portal.qna.event; - -import com.eactive.apim.portal.template.entity.MessageCode; -import com.eactive.apim.portal.template.service.MessageEventHandler; -import com.eactive.apim.portal.template.service.MessageRecipient; -import com.eactive.apim.portal.template.service.MessageSendEvent; -import org.springframework.stereotype.Component; - -import java.util.HashMap; -import java.util.Map; - -@Component -public class InquiryCreatedEvent implements MessageEventHandler { - // public static final String KEY = "inquiry_created"; - public static final MessageCode KEY = MessageCode.INQUIRY_CREATED; - - - @Override - public boolean allowAdditionalRecipients() { - return true; - } - - @Override - public MessageSendEvent createEvent(Object source, MessageRecipient recipient, Map params) { - Map requestParams = new HashMap<>(); - String subject = toStr(params.get("inquirySubject")); - if (subject.isEmpty()) { - subject = toStr(params.get("subject")); - } - requestParams.put("inquiryId", toStr(params.get("inquiryId"))); - requestParams.put("inquirySubject", subject); - requestParams.put("subject", subject); - requestParams.put("writerName", toStr(params.get("writerName"))); - return new MessageSendEvent(source, KEY, recipient, requestParams); - } - - private String toStr(Object value) { - return value == null ? "" : value.toString(); - } - - @Override - public MessageCode getKey() { - return KEY; - } - - @Override - public String getDisplayName() { - return "QnA 질문 등록"; - } - - @Override - public String getDescription() { - return "
사용 가능 변수:

" - + "
- userName: 수신자 이름

" - + "
- userId: 수신자 ID (이메일)

" - + "
- inquiryId: 질문 ID

" - + "
- inquirySubject: 질문 제목

" - + "
- subject: 질문 제목 (별칭)

" - + "
- writerName: 작성자 이름

"; - } -} - -