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

refactor: 알림 서비스 구조 리팩토링 #235

Merged
merged 6 commits into from
Sep 24, 2022
Merged
27 changes: 16 additions & 11 deletions src/main/java/com/ceos/bankids/controller/ChallengeController.java
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,8 @@ public CommonResponse<ChallengeDTO> postChallenge(@AuthenticationPrincipal User

log.info("api = 돈길 생성, req = {}", challengeRequest);

ChallengeDTO challengeDTO = challengeMapper.postChallenge(authUser, challengeRequest);
ChallengeDTO challengeDTO = challengeMapper.createChallengeMapper(authUser,
challengeRequest);

return CommonResponse.onSuccess(challengeDTO);
}
Expand All @@ -57,7 +58,7 @@ public CommonResponse<ChallengeDTO> deleteChallenge(@AuthenticationPrincipal Use

log.info("api = 돈길 포기하기, user = {} challengeId = {}", authUser.getUsername(), challengeId);

ChallengeDTO challengeDTO = challengeMapper.deleteChallenge(authUser, challengeId);
ChallengeDTO challengeDTO = challengeMapper.deleteChallengeMapper(authUser, challengeId);

return CommonResponse.onSuccess(challengeDTO);
}
Expand All @@ -69,7 +70,8 @@ public CommonResponse<List<ChallengeDTO>> getListChallenge(

log.info("api = 돈길 리스트 가져오기, user = {}, status = {}", authUser.getUsername(), status);

List<ChallengeDTO> challengeDTOList = challengeMapper.getListChallenge(authUser, status);
List<ChallengeDTO> challengeDTOList = challengeMapper.readChallengeListMapper(authUser,
status);

return CommonResponse.onSuccess(challengeDTOList);
}
Expand All @@ -83,7 +85,8 @@ public CommonResponse<KidChallengeListDTO> getListKidChallenge(
log.info("api = 자녀의 돈길 리스트 가져오기, user = {}, kidId = {}, status = {}",
authUser.getUsername(), kidId, status);

KidChallengeListDTO kidChallengeListDTO = challengeMapper.getListKidChallenge(authUser,
KidChallengeListDTO kidChallengeListDTO = challengeMapper.readKidChallengeListMapper(
authUser,
kidId,
status);

Expand All @@ -99,7 +102,8 @@ public CommonResponse<ChallengeDTO> patchChallengeStatus(@AuthenticationPrincipa
log.info("api = 자녀의 돈길 수락 / 거절, user = {}, challengeId = {}, 수락여부 = {}",
authUser.getUsername(), challengeId, kidChallengeRequest.getAccept());

ChallengeDTO challengeDTO = challengeMapper.patchChallengeStatus(authUser, challengeId,
ChallengeDTO challengeDTO = challengeMapper.updateChallengeStatusMapper(authUser,
challengeId,
kidChallengeRequest);

return CommonResponse.onSuccess(challengeDTO);
Expand All @@ -111,7 +115,7 @@ public CommonResponse<WeekDTO> getWeekInfo(@AuthenticationPrincipal User authUse

log.info("api = 주차 정보 가져오기, user = {}", authUser.getUsername());

WeekDTO weekInfo = challengeMapper.getWeekInfo(authUser);
WeekDTO weekInfo = challengeMapper.readWeekInfoMapper(authUser);

return CommonResponse.onSuccess(weekInfo);
}
Expand All @@ -123,7 +127,7 @@ public CommonResponse<KidWeekDTO> getKidWeekInfo(@AuthenticationPrincipal User a

log.info("api = 자녀의 주차 정보 가져오기, user = {}, kid = {}", authUser.getUsername(), kidId);

KidWeekDTO kidWeekInfo = challengeMapper.getKidWeekInfo(authUser, kidId);
KidWeekDTO kidWeekInfo = challengeMapper.readKidWeekInfoMapper(authUser, kidId);

return CommonResponse.onSuccess(kidWeekInfo);
}
Expand All @@ -135,7 +139,7 @@ public CommonResponse<AchievedChallengeListDTO> getAchievedListChallenge(

log.info("api = 완주한 돈길 리스트 가져오기, user = {}", authUser.getUsername());

AchievedChallengeListDTO achievedListChallenge = challengeMapper.getAchievedListChallenge(
AchievedChallengeListDTO achievedListChallenge = challengeMapper.readAchievedChallengeListMapper(
authUser, interestPayment);

return CommonResponse.onSuccess(achievedListChallenge);
Expand All @@ -149,7 +153,7 @@ public CommonResponse<KidAchievedChallengeListDTO> getKidAchievedListChallenge(

log.info("api = 완주한 돈길 리스트 가져오기, user = {}, kid = {}", authUser.getUsername(), kidId);

KidAchievedChallengeListDTO kidAchievedListChallenge = challengeMapper.getKidAchievedListChallenge(
KidAchievedChallengeListDTO kidAchievedListChallenge = challengeMapper.readKidAchievedChallengeListMapper(
authUser, kidId, interestPayment);

return CommonResponse.onSuccess(kidAchievedListChallenge);
Expand All @@ -164,7 +168,8 @@ public CommonResponse<AchievedChallengeDTO> patchInterestPayment(
log.info("api = 완주한 돈길에 이자 지급, user = {}, challengeId = {}", authUser.getUsername(),
challengeId);

AchievedChallengeDTO achievedChallengeDTO = challengeMapper.patchInterestPayment(authUser,
AchievedChallengeDTO achievedChallengeDTO = challengeMapper.updateChallengeInterestPaymentMapper(
authUser,
challengeId);

return CommonResponse.onSuccess(achievedChallengeDTO);
Expand All @@ -177,7 +182,7 @@ public CommonResponse<ProgressDTO> patchProgress(@AuthenticationPrincipal User a

log.info("api = 돈길 걷기, user = {}, challengeId = {}", authUser, challengeId);

ProgressDTO progressDTO = challengeMapper.patchProgress(authUser, challengeId);
ProgressDTO progressDTO = challengeMapper.updateProgressMapper(authUser, challengeId);

return CommonResponse.onSuccess(progressDTO);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
package com.ceos.bankids.controller;

import com.ceos.bankids.config.CommonResponse;
import com.ceos.bankids.domain.User;
import com.ceos.bankids.dto.NotificationDTO;
import com.ceos.bankids.dto.NotificationIsReadDTO;
import com.ceos.bankids.dto.NotificationListDTO;
import com.ceos.bankids.mapper.NotificationMapper;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@Slf4j
@RestController
@RequestMapping("/notification")
@RequiredArgsConstructor
public class NotificationController {

private final NotificationMapper notificationMapper;

@ApiOperation(value = "유저 알림 리스트 가져오기")
@GetMapping(produces = "application/json; charset=utf-8")
public CommonResponse<NotificationListDTO> getNotificationList(
@AuthenticationPrincipal User authUser, @RequestParam(required = false) Long lastId) {

log.info("api = 유저 알림 리스트 가져오기 user = {}", authUser.getUsername());
NotificationListDTO notificationListDTOS = notificationMapper.readNotificationListMapper(
authUser, lastId);
return CommonResponse.onSuccess(notificationListDTOS);
}

@ApiOperation(value = "유저 안읽은 알림 있는지 확인")
@GetMapping(value = "/isRead", produces = "application/json; charset=utf-8")
public CommonResponse<NotificationIsReadDTO> getNotificationIsAllRead(
@AuthenticationPrincipal User authUser) {

log.info("api = 안읽은 알림 있는지 확인 user = {}", authUser.getId());
NotificationIsReadDTO notificationIsReadDTO = notificationMapper.readNotificationIsAllReadMapper(
authUser);
return CommonResponse.onSuccess(notificationIsReadDTO);
}


@ApiOperation(value = "유저 알림 읽음 확인")
@PatchMapping(value = "/{notificationId}", produces = "application/json; charset=utf-8")
public CommonResponse<NotificationDTO> patchNotification(@AuthenticationPrincipal User authUser,
@PathVariable Long notificationId) {

log.info("api = 유저 알림 읽음 처리 user = {} notification = {}", authUser.getUsername(),
notificationId);
NotificationDTO notificationDTO = notificationMapper.updateNotificationMapper(authUser,
notificationId);
return CommonResponse.onSuccess(notificationDTO);
}
}
70 changes: 36 additions & 34 deletions src/main/java/com/ceos/bankids/mapper/ChallengeMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,9 @@
import com.ceos.bankids.service.ChallengeServiceImpl;
import com.ceos.bankids.service.ChallengeUserServiceImpl;
import com.ceos.bankids.service.ExpoNotificationServiceImpl;
import com.ceos.bankids.service.FamilyServiceImpl;
import com.ceos.bankids.service.FamilyUserServiceImpl;
import com.ceos.bankids.service.KidServiceImpl;
import com.ceos.bankids.service.ParentServiceImpl;
import com.ceos.bankids.service.UserServiceImpl;
import java.sql.Timestamp;
import java.time.DayOfWeek;
import java.time.LocalDateTime;
Expand All @@ -47,8 +45,6 @@
public class ChallengeMapper {

private final ChallengeServiceImpl challengeService;
private final UserServiceImpl userService;
private final FamilyServiceImpl familyService;
private final FamilyUserServiceImpl familyUserService;
private final ChallengeUserServiceImpl challengeUserService;
private final ExpoNotificationServiceImpl notificationService;
Expand All @@ -57,7 +53,7 @@ public class ChallengeMapper {

// 돈길 생성 API Mapper
@Transactional
public ChallengeDTO postChallenge(User authUser, ChallengeRequest challengeRequest) {
public ChallengeDTO createChallengeMapper(User authUser, ChallengeRequest challengeRequest) {

// validation
sundayValidation();
Expand All @@ -72,7 +68,8 @@ public ChallengeDTO postChallenge(User authUser, ChallengeRequest challengeReque
ChallengePostDTO challengePostDTO = new ChallengePostDTO(challengeRequest, contractUser);
ChallengeDTO challengeDTO = challengeService.createChallenge(authUser, challengePostDTO);
Challenge challenge = challengeService.readChallenge(challengeDTO.getId());
ChallengeUser challengeUser = challengeUserService.postChallengeUser(authUser, challenge);
ChallengeUser challengeUser = challengeUserService.createdChallengeUser(authUser,
challenge);
parentService.updateParentForCreateChallenge(contractUser);

// 저장로직 성공시 알림 로직
Expand All @@ -83,11 +80,11 @@ public ChallengeDTO postChallenge(User authUser, ChallengeRequest challengeReque

// 돈길 삭제 API Mapper
@Transactional
public ChallengeDTO deleteChallenge(User authUser, Long challengeId) {
public ChallengeDTO deleteChallengeMapper(User authUser, Long challengeId) {

sundayValidation();
userRoleValidation(authUser, true);
ChallengeUser challengeUser = challengeUserService.getChallengeUser(challengeId);
ChallengeUser challengeUser = challengeUserService.readChallengeUser(challengeId);
Challenge deleteChallenge = challengeUser.getChallenge();
if (challengeUser.getUser().getId() != authUser.getId()) {
throw new ForbiddenException(ErrorCode.NOT_MATCH_CHALLENGE_USER.getErrorCode());
Expand Down Expand Up @@ -116,14 +113,14 @@ public ChallengeDTO deleteChallenge(User authUser, Long challengeId) {

// 돈길 리스트 가져오기 API Mapper
@Transactional
public List<ChallengeDTO> getListChallenge(User authUser, String status) {
public List<ChallengeDTO> readChallengeListMapper(User authUser, String status) {

userRoleValidation(authUser, true);
if (!Objects.equals(status, "walking") && !Objects.equals(status, "pending")) {
throw new BadRequestException(ErrorCode.INVALID_QUERYPARAM.getErrorCode());
}
List<ChallengeDTO> challengeDTOList = new ArrayList<>();
List<Challenge> challengeList = challengeUserService.getChallengeUserList(authUser,
List<Challenge> challengeList = challengeUserService.readChallengeUserList(authUser,
status);
if (Objects.equals(status, "walking")) {
challengeList.forEach(challenge -> {
Expand Down Expand Up @@ -163,13 +160,14 @@ public List<ChallengeDTO> getListChallenge(User authUser, String status) {

// 자녀의 돈길 리스트 가져오기 API Mapper
@Transactional
public KidChallengeListDTO getListKidChallenge(User authUser, Long kidId, String status) {
public KidChallengeListDTO readKidChallengeListMapper(User authUser, Long kidId,
String status) {

userRoleValidation(authUser, false);
Kid kid = kidService.getKid(kidId);
User kidUser = kid.getUser();
List<ChallengeDTO> challengeDTOList = new ArrayList<>();
List<Challenge> challengeList = challengeUserService.getChallengeUserList(kidUser,
List<Challenge> challengeList = challengeUserService.readChallengeUserList(kidUser,
status);
if (Objects.equals(status, "walking")) {
challengeList.forEach(challenge -> {
Expand All @@ -194,29 +192,31 @@ public KidChallengeListDTO getListKidChallenge(User authUser, Long kidId, String
}
});
} else if (Objects.equals(status, "pending")) {
challengeList.forEach(challenge -> {
if (challenge.getContractUser().getId() == authUser.getId()) {
ChallengeListMapperDTO challengeListMapperDTO = challengeService.readPendingChallenge(
challenge);
ChallengeDTO challengeDTO = new ChallengeDTO(
challengeListMapperDTO.getChallenge(),
null, challenge.getComment());
challengeDTOList.add(challengeDTO);
}
});
challengeList.stream()
.filter(challenge -> challenge.getChallengeStatus() != ChallengeStatus.REJECTED)
.forEach(challenge -> {
if (challenge.getContractUser().getId() == authUser.getId()) {
ChallengeListMapperDTO challengeListMapperDTO = challengeService.readPendingChallenge(
challenge);
ChallengeDTO challengeDTO = new ChallengeDTO(
challengeListMapperDTO.getChallenge(),
null, challenge.getComment());
challengeDTOList.add(challengeDTO);
}
});
}
return new KidChallengeListDTO(kidUser,
challengeDTOList);
}

// 돈길 수락 / 거절 API Mapper
@Transactional
public ChallengeDTO patchChallengeStatus(User authUser, Long challengeId,
public ChallengeDTO updateChallengeStatusMapper(User authUser, Long challengeId,
KidChallengeRequest kidChallengeRequest) {

sundayValidation();
userRoleValidation(authUser, false);
ChallengeUser challengeUser = challengeUserService.getChallengeUser(challengeId);
ChallengeUser challengeUser = challengeUserService.readChallengeUser(challengeId);
User user = challengeUser.getUser();
Challenge challenge = challengeService.readChallenge(challengeId);
if (challenge.getContractUser().getId() != authUser.getId()) {
Expand All @@ -239,10 +239,10 @@ public ChallengeDTO patchChallengeStatus(User authUser, Long challengeId,

// 주차 정보 가져오기 API Mapper
@Transactional(readOnly = true)
public WeekDTO getWeekInfo(User authUser) {
public WeekDTO readWeekInfoMapper(User authUser) {

userRoleValidation(authUser, true);
List<Challenge> walkingChallengeList = challengeUserService.getChallengeUserList(authUser,
List<Challenge> walkingChallengeList = challengeUserService.readChallengeUserList(authUser,
"walking")
.stream()
.filter(challenge -> challenge.getChallengeStatus() == ChallengeStatus.WALKING).collect(
Expand All @@ -253,13 +253,14 @@ public WeekDTO getWeekInfo(User authUser) {

// 자녀의 주차 정보 가져오기 API Mapper
@Transactional(readOnly = true)
public KidWeekDTO getKidWeekInfo(User authUser, Long kidId) {
public KidWeekDTO readKidWeekInfoMapper(User authUser, Long kidId) {

userRoleValidation(authUser, false);
Kid kid = kidService.getKid(kidId);
User kidUser = kid.getUser();
familyUserService.checkSameFamily(authUser, kidUser);
List<Challenge> kidWalkingChallengeList = challengeUserService.getChallengeUserList(kidUser,
List<Challenge> kidWalkingChallengeList = challengeUserService.readChallengeUserList(
kidUser,
"walking")
.stream()
.filter(challenge -> challenge.getChallengeStatus() == ChallengeStatus.WALKING).collect(
Expand All @@ -271,11 +272,11 @@ public KidWeekDTO getKidWeekInfo(User authUser, Long kidId) {

// 완주한 돈길 리스트 가져오기 API Mapper
@Transactional(readOnly = true)
public AchievedChallengeListDTO getAchievedListChallenge(User authUser,
public AchievedChallengeListDTO readAchievedChallengeListMapper(User authUser,
String interestPayment) {

userRoleValidation(authUser, true);
List<Challenge> achievedChallengeUserList = challengeUserService.getAchievedChallengeUserList(
List<Challenge> achievedChallengeUserList = challengeUserService.readAchievedChallengeUserList(
authUser);

return challengeService.readAchievedChallenge(
Expand All @@ -285,14 +286,14 @@ public AchievedChallengeListDTO getAchievedListChallenge(User authUser,

// 자녀의 완주한 돈길 리스트 가져오기 API Mapper
@Transactional(readOnly = true)
public KidAchievedChallengeListDTO getKidAchievedListChallenge(User authUser, Long kidId,
public KidAchievedChallengeListDTO readKidAchievedChallengeListMapper(User authUser, Long kidId,
String interestPayment) {

userRoleValidation(authUser, false);
Kid kid = kidService.getKid(kidId);
User kidUser = kid.getUser();
familyUserService.checkSameFamily(authUser, kidUser);
List<Challenge> achievedChallengeUserList = challengeUserService.getAchievedChallengeUserList(
List<Challenge> achievedChallengeUserList = challengeUserService.readAchievedChallengeUserList(
kidUser);

return challengeService.readKidAchievedChallenge(
Expand All @@ -301,7 +302,8 @@ public KidAchievedChallengeListDTO getKidAchievedListChallenge(User authUser, Lo

// 이자 지급 API Mapper
@Transactional
public AchievedChallengeDTO patchInterestPayment(User authUser, Long challengeId) {
public AchievedChallengeDTO updateChallengeInterestPaymentMapper(User authUser,
Long challengeId) {

sundayValidation();
userRoleValidation(authUser, false);
Expand All @@ -312,7 +314,7 @@ public AchievedChallengeDTO patchInterestPayment(User authUser, Long challengeId

// 돈길 걷기 API Mapper
@Transactional
public ProgressDTO patchProgress(User authUser, Long challengeId) {
public ProgressDTO updateProgressMapper(User authUser, Long challengeId) {

sundayValidation();
userRoleValidation(authUser, true);
Expand Down
Loading