Skip to content

Commit

Permalink
Merge pull request #194 from Modagbul/feat/block
Browse files Browse the repository at this point in the history
feat : 반복미션 시작 알림 기능 추가
  • Loading branch information
seungueonn authored Jan 7, 2024
2 parents d95b8e2 + f96edfd commit 6f81058
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.moing.backend.domain.mission.application.service;

import com.moing.backend.domain.history.application.dto.response.MemberIdAndToken;
import com.moing.backend.domain.history.application.dto.response.NewUploadInfo;
import com.moing.backend.domain.history.application.mapper.AlarmHistoryMapper;
import com.moing.backend.domain.history.domain.entity.AlarmType;
import com.moing.backend.domain.history.domain.entity.PagePath;
import com.moing.backend.domain.member.domain.entity.Member;
import com.moing.backend.domain.mission.domain.entity.Mission;
import com.moing.backend.domain.mission.domain.entity.constant.MissionStatus;
import com.moing.backend.domain.mission.domain.entity.constant.MissionType;
import com.moing.backend.domain.team.domain.entity.Team;
import com.moing.backend.domain.teamMember.domain.service.TeamMemberGetService;
import com.moing.backend.global.config.fcm.dto.event.MultiFcmEvent;
import lombok.RequiredArgsConstructor;
import net.minidev.json.JSONObject;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;
import java.util.List;
import java.util.Optional;

import static com.moing.backend.global.config.fcm.constant.NewMissionTitle.NEW_REPEAT_MISSION_COMING;
import static com.moing.backend.global.config.fcm.constant.NewMissionTitle.NEW_SINGLE_MISSION_COMING;

@Service
@Transactional
@RequiredArgsConstructor
public class SendMissionStartAlarmUseCase {

private final TeamMemberGetService teamMemberGetService;
private final ApplicationEventPublisher eventPublisher;

public void sendRepeatMissionStartAlarm(Mission mission) {
Team team = mission.getTeam();
String title = team.getName() + " " + NEW_REPEAT_MISSION_COMING.getTitle();
String message = mission.getTitle();
String type = mission.getType().toString();
String status = mission.getStatus().toString();

Optional<List<NewUploadInfo>> newUploadInfos=teamMemberGetService.getNewUploadInfo(team.getTeamId(), 0L);

Optional<List<MemberIdAndToken>> memberIdAndTokensByPush = AlarmHistoryMapper.getNewUploadPushInfo(newUploadInfos);
Optional<List<MemberIdAndToken>> memberIdAndTokensBySave = AlarmHistoryMapper.getNewUploadSaveInfo(newUploadInfos);
// 알림 보내기
eventPublisher.publishEvent(new MultiFcmEvent(title, message, memberIdAndTokensByPush, memberIdAndTokensBySave, createIdInfo(team.getTeamId(), mission.getId(),mission.getType(),mission.getStatus()), team.getName(), AlarmType.NEW_UPLOAD, PagePath.MISSION_PATH.getValue()));
}

private String createIdInfo(Long teamId, Long missionId,MissionType type, MissionStatus status) {
JSONObject jo = new JSONObject();
jo.put("isRepeated", type.equals(MissionType.REPEAT));
jo.put("teamId", teamId);
jo.put("missionId", missionId);
jo.put("status", status.name());
return jo.toJSONString();
}
}

Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.moing.backend.domain.missionState.application.service;

import com.moing.backend.domain.mission.application.service.MissionRemindAlarmUseCase;
import com.moing.backend.domain.mission.application.service.SendMissionStartAlarmUseCase;
import com.moing.backend.domain.mission.domain.entity.Mission;
import com.moing.backend.domain.mission.domain.entity.constant.MissionStatus;
import com.moing.backend.domain.mission.domain.service.MissionQueryService;
Expand Down Expand Up @@ -38,6 +39,8 @@ public class MissionStateScheduleUseCase {

private final TeamScoreLogicUseCase teamScoreLogicUseCase;

private final SendMissionStartAlarmUseCase sendMissionStartAlarmUseCase;

/**
* 반복미션 마감
* 일요일 마감 루틴
Expand Down Expand Up @@ -80,7 +83,11 @@ public void singleMissionEndRoutine() {
public void RepeatMissionStart() {
List<Mission> startMission = missionQueryService.findRepeatMissionByStatus(MissionStatus.WAIT);
startMission.forEach(
mission -> mission.updateStatus(MissionStatus.ONGOING)
mission -> {
// 미션 시작 알림
sendMissionStartAlarmUseCase.sendRepeatMissionStartAlarm(mission);
mission.updateStatus(MissionStatus.ONGOING);
}
);
}

Expand Down

0 comments on commit 6f81058

Please sign in to comment.