Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/#81 #82

Merged
merged 16 commits into from
Jun 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 23 additions & 2 deletions src/docs/asciidoc/message.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
== 그룹별 메세지 보내기

=== λ©”μ‹œμ§€ 보내기
=== μƒνƒœμ— λ”°λ₯Έ λ©”μ‹œμ§€ 보내기
메세지λ₯Ό 보낼 μ›μ„œμ˜ μƒνƒœλ₯Ό μž…λ ₯ν•΄ λ©”μ‹œμ§€λ₯Ό 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

==== μš”μ²­ ν˜•μ‹
Expand All @@ -21,4 +21,25 @@ include::{snippets}/message-controller-test/μ‘°νšŒν• _μƒνƒœμ˜_μ›μ„œλ₯Ό_가진
include::{snippets}/message-controller-test/μ‘°νšŒν• _μƒνƒœμ˜_μ›μ„œλ₯Ό_가진_ν•™μƒλ“€μ—κ²Œ/http-response.adoc[]

===== μž…λ ₯ν•œ μƒνƒœμ˜ μ›μ„œκ°€ μ—†κ±°λ‚˜ μƒνƒœλ₯Ό 잘λͺ» μž…λ ₯ν•œ 경우
include::{snippets}/message-controller-test/ν•΄λ‹Ήμ œμΆœμƒνƒœμΈ_μ›μ„œκ°€_μ—†μœΌλ©΄_였λ₯˜κ°€λ‚œλ‹€/http-response.adoc[]
include::{snippets}/message-controller-test/ν•΄λ‹Ήμ œμΆœμƒνƒœμΈ_μ›μ„œκ°€_μ—†μœΌλ©΄_였λ₯˜κ°€λ‚œλ‹€/http-response.adoc[]

=== μ „ν˜•μ— λ”°λ₯Έ λ©”μ‹œμ§€ 보내기
메세지λ₯Ό 보낼 μ›μ„œμ˜ μ „ν˜•μ„ μž…λ ₯ν•΄ λ©”μ‹œμ§€λ₯Ό 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

=== μš”μ²­ ν˜•μ‹

==== Request Header
include::{snippets}/message-controller-test/λ§ˆμ΄μŠ€ν„°μ „ν˜•κ³Ό_λ§ˆμ΄μŠ€ν„°μ—μ„œ_μΌλ°˜μ „ν˜•μœΌλ‘œ_바뀐_ν•©κ²©μžλ₯Ό_μ œμ™Έν•œ_1μ°¨_ν•©κ²©μžλ“€μ—κ²Œ_λ©”μ‹œμ§€λ₯Ό_보낸닀/request-headers.adoc[]

==== Request Body
include::{snippets}/message-controller-test/λ§ˆμ΄μŠ€ν„°μ „ν˜•κ³Ό_λ§ˆμ΄μŠ€ν„°μ—μ„œ_μΌλ°˜μ „ν˜•μœΌλ‘œ_바뀐_ν•©κ²©μžλ₯Ό_μ œμ™Έν•œ_1μ°¨_ν•©κ²©μžλ“€μ—κ²Œ_λ©”μ‹œμ§€λ₯Ό_보낸닀/request-fields.adoc[]

==== μš”μ²­
===== μΌλ°˜μ „ν˜•(λ§ˆμ΄μŠ€ν„°μ „ν˜• & λ§ˆμ΄μŠ€ν„° -> μΌλ°˜μ„ μ œμ™Έν•œ λͺ¨λ“  μ „ν˜•) 1μ°¨ ν•©κ²©μžμ—κ²Œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ” 경우
include::{snippets}/message-controller-test/λ§ˆμ΄μŠ€ν„°μ „ν˜•κ³Ό_λ§ˆμ΄μŠ€ν„°μ—μ„œ_μΌλ°˜μ „ν˜•μœΌλ‘œ_바뀐_ν•©κ²©μžλ₯Ό_μ œμ™Έν•œ_1μ°¨_ν•©κ²©μžλ“€μ—κ²Œ_λ©”μ‹œμ§€λ₯Ό_보낸닀/http-request.adoc[]

===== λ§ˆμ΄μŠ€ν„° -> 일반 μ „ν˜•μœΌλ‘œ 바뀐 1μ°¨ ν•©κ²©μžλ“€μ—κ²Œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ” 경우
include::{snippets}/message-controller-test/λ§ˆμ΄μŠ€ν„°μ „ν˜•μ—μ„œ_μΌλ°˜μ „ν˜•μœΌλ‘œ_바뀐_1μ°¨_ν•©κ²©μžλ“€μ—κ²Œ_λ©”μ‹œμ§€λ₯Ό_보낸닀/http-request.adoc[]

===== λ§ˆμ΄μŠ€ν„°μ „ν˜• 1μ°¨ ν•©κ²©μžλ“€μ—κ²Œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄λŠ” 경우
include::{snippets}/message-controller-test/λ§ˆμ΄μŠ€ν„°_μ „ν˜•_1μ°¨_ν•©κ²©μžλ“€μ—κ²Œ_λ©”μ‹œμ§€λ₯Ό_보낸닀/http-request.adoc[]https://xxx[]
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.bamdoliro.maru.application.message;

import com.bamdoliro.maru.domain.form.domain.Form;
import com.bamdoliro.maru.domain.form.domain.type.FormType;
import com.bamdoliro.maru.infrastructure.message.SendMessageService;
import com.bamdoliro.maru.infrastructure.persistence.form.FormRepository;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageRequest;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageByStatusRequest;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageByTypeRequest;
import com.bamdoliro.maru.shared.annotation.UseCase;
import lombok.RequiredArgsConstructor;

Expand All @@ -16,11 +18,43 @@ public class SendMessageUseCase {
private final FormRepository formRepository;
private final SendMessageService sendMessageService;

public void execute(SendMessageRequest request) {
public void execute(SendMessageByStatusRequest request) {
List<Form> formList = formRepository.findByStatus(request.getStatus());
List<String> phoneNumberList = formList.stream()
List<String> phoneNumberList = phoneNumberListConvert(formList);

sendMessageService.execute(phoneNumberList, request.getText(), request.getTitle());
}

public void execute(SendMessageByTypeRequest request) {
List<Form> formList = formListFilter(request.getFormType(), request.getIsChangeToRegular());
List<String> phoneNumberList = phoneNumberListConvert(formList);

sendMessageService.execute(phoneNumberList, request.getText(), request.getTitle());
}

private List<Form> formListFilter(FormType formType, Boolean isChangeToRegular) {
List<Form> formList;
if (formType.isMeister()) {
formList = formRepository.findMeisterTalentFirstRoundForm();
} else {
formList = formRepository.findNotExistsMeisterTalentFirstRoundForm();
if (isChangeToRegular) {
formList = formList.stream()
.filter(Form::getChangedToRegular)
.toList();
} else {
formList = formList.stream()
.filter(form -> !form.getChangedToRegular())
.toList();
}
}

return formList;
}

private List<String> phoneNumberListConvert(List<Form> formList) {
return formList.stream()
.map(form -> form.getUser().getPhoneNumber())
.toList();
sendMessageService.execute(phoneNumberList, request.getText(), request.getTitle());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ public boolean isFailedNow() {

public void changeToRegular(CalculateFormScoreService calculateFormScoreService) {
this.changedToRegular = true;
this.type = FormType.REGULAR;

Double subjectGradeScore = calculateFormScoreService.calculateSubjectGradeScore(this);
this.score.updateSubjectScore(subjectGradeScore);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ public class SendMessageService {

private final MessageProperties messageProperties;
private final DefaultMessageService messageService;
private final FormRepository formRepository;

public void execute(String to, String text) {
Message message = createMessage(to, text);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ public interface FormRepositoryCustom {
List<Form> findReceivedSpecialForm();
List<Form> findReceivedRegularOrSupernumeraryForm();
List<Form> findFirstRoundForm();
List<Form> findMeisterTalentFirstRoundForm();
List<Form> findNotExistsMeisterTalentFirstRoundForm();
List<Form> findSecondRoundForm();
List<Form> findByFormIdList(List<Long> idList);
List<FormUrlVo> findFormUrlByFormIdList(List<Long> idList);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,26 @@ public List<Form> findFirstRoundForm() {
.fetch();
}

@Override
public List<Form> findMeisterTalentFirstRoundForm() {
return queryFactory
.selectFrom(form)
.where(form.status.eq(FormStatus.FIRST_PASSED)
.and(form.type.eq(FormType.MEISTER_TALENT))
)
.fetch();
}

@Override
public List<Form> findNotExistsMeisterTalentFirstRoundForm() {
return queryFactory
.selectFrom(form)
.where(form.status.eq(FormStatus.FIRST_PASSED)
.and(form.type.ne(FormType.MEISTER_TALENT))
)
.fetch();
}

@Override
public List<Form> findSecondRoundForm() {
return queryFactory
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import com.bamdoliro.maru.application.message.SendMessageUseCase;
import com.bamdoliro.maru.domain.user.domain.User;
import com.bamdoliro.maru.infrastructure.message.SendMessageService;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageRequest;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageByStatusRequest;
import com.bamdoliro.maru.presentation.message.dto.request.SendMessageByTypeRequest;
import com.bamdoliro.maru.shared.auth.AuthenticationPrincipal;
import com.bamdoliro.maru.shared.auth.Authority;
import jakarta.validation.Valid;
Expand All @@ -22,7 +22,16 @@ public class MessageController {
@PostMapping("/status")
public void sendMessageByStatus(
@AuthenticationPrincipal(authority = Authority.ADMIN) User user,
@RequestBody @Valid SendMessageRequest request
@RequestBody @Valid SendMessageByStatusRequest request
) {
sendMessageUseCase.execute(request);
}

@ResponseStatus(HttpStatus.NO_CONTENT)
@PostMapping("/type")
public void sendMessageByType(
@AuthenticationPrincipal(authority = Authority.ADMIN) User user,
@RequestBody @Valid SendMessageByTypeRequest request
) {
sendMessageUseCase.execute(request);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class SendMessageRequest {
public class SendMessageByStatusRequest {

@NotBlank(message = "ν•„μˆ˜κ°’μž…λ‹ˆλ‹€.")
private String title;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.bamdoliro.maru.presentation.message.dto.request;

import com.bamdoliro.maru.domain.form.domain.type.FormType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor
@AllArgsConstructor
public class SendMessageByTypeRequest {

@NotBlank(message = "ν•„μˆ˜κ°’μž…λ‹ˆλ‹€.")
private String title;

@NotBlank(message = "ν•„μˆ˜κ°’μž…λ‹ˆλ‹€.")
private String text;

@NotNull(message = "ν•„μˆ˜κ°’μž…λ‹ˆλ‹€.")
private FormType formType;

@NotNull(message = "ν•„μˆ˜κ°’μž…λ‹ˆλ‹€.")
private Boolean isChangeToRegular;
}

Loading
Loading