Skip to content
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
Binary file modified .gradle/8.4/executionHistory/executionHistory.bin
Binary file not shown.
Binary file modified .gradle/8.4/executionHistory/executionHistory.lock
Binary file not shown.
Binary file modified .gradle/8.4/fileHashes/fileHashes.bin
Binary file not shown.
Binary file modified .gradle/8.4/fileHashes/fileHashes.lock
Binary file not shown.
Binary file modified .gradle/8.4/fileHashes/resourceHashesCache.bin
Binary file not shown.
Binary file modified .gradle/buildOutputCleanup/buildOutputCleanup.lock
Binary file not shown.
Binary file modified .gradle/file-system.probe
Binary file not shown.
177 changes: 97 additions & 80 deletions .idea/dataSources/f08ed712-aeaf-46f7-899a-5e3c9985035a.xml

Large diffs are not rendered by default.

82 changes: 48 additions & 34 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.podmate.domain.mypage.application.MyPageService;
import com.podmate.domain.mypage.dto.MyPageRequestDto;
import com.podmate.domain.orderForm.dto.OrderFormResponseDto;
import com.podmate.domain.pod.dto.PodRequestDto;
import com.podmate.domain.pod.dto.PodResponse;
import com.podmate.domain.pod.dto.PodResponseDto;
import com.podmate.domain.review.dto.ReviewResponseDto;
Expand Down Expand Up @@ -77,6 +78,19 @@ public BaseResponse<String> addTrackingNumber(@RequestBody MyPageRequestDto.Trac
return BaseResponse.onSuccess(SuccessStatus._OK, "successfully saved tracking number!");
}

//입금 계좌 입력
@PatchMapping("/inprogress/mypods/{podId}/deposit-account")
public BaseResponse<String> addDepositAccount(@RequestBody MyPageRequestDto.DepositAccountRequestDto request, @PathVariable("podId") Long podId, @AuthenticationPrincipal CustomOAuth2User customOAuth2User) {
myPageService.addDepositAccount(request, podId, customOAuth2User.getUserId());
return BaseResponse.onSuccess(SuccessStatus._OK, "successfully saved deposit account!");
}
// 입금 상태 변경하기
@PatchMapping("/{podId}/deposit-status")
public BaseResponse<String> updatePodStatus(@PathVariable Long podId, @AuthenticationPrincipal CustomOAuth2User customOAuth2User) {
myPageService.updateDepositStatus(podId, customOAuth2User.getUserId());
return BaseResponse.onSuccess(SuccessStatus._OK,"입금 상태가 성공적으로 변경되었습니다.");
}

//완료된 나의 팟 리스트 조회
@GetMapping("/completed/mypods")
public BaseResponse<List<PodResponse>> getCompletedMyPodList(@AuthenticationPrincipal CustomOAuth2User customOAuth2User) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@
import com.podmate.domain.pod.domain.enums.PodStatus;
import com.podmate.domain.pod.domain.enums.PodType;
import com.podmate.domain.pod.domain.repository.PodRepository;
import com.podmate.domain.pod.dto.PodRequestDto;
import com.podmate.domain.pod.dto.PodResponse;
import com.podmate.domain.pod.dto.PodResponseDto;
import com.podmate.domain.pod.exception.PodStatusMismatchException;
import com.podmate.domain.pod.exception.PodNotFoundException;
import com.podmate.domain.pod.exception.PodTypeNotFoundException;
import com.podmate.domain.podUserMapping.domain.entity.PodUserMapping;
import com.podmate.domain.podUserMapping.domain.enums.DepositStatus;
import com.podmate.domain.podUserMapping.domain.enums.IsApproved;
import com.podmate.domain.podUserMapping.domain.enums.PodRole;
import com.podmate.domain.podUserMapping.domain.repository.PodUserMappingRepository;
Expand All @@ -38,7 +40,9 @@
import com.podmate.domain.user.domain.entity.User;
import com.podmate.domain.user.domain.repository.UserRepository;
import com.podmate.domain.user.exception.UserNotFoundException;
import jakarta.persistence.EntityManager;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -49,14 +53,14 @@
import java.util.stream.Collectors;

import static com.podmate.domain.pod.converter.PodConverter.*;
import static com.podmate.domain.pod.domain.enums.InprogressStatus.ORDER_COMPLETED;
import static com.podmate.domain.pod.domain.enums.InprogressStatus.RECRUITING;
import static com.podmate.domain.pod.domain.enums.InprogressStatus.*;
import static com.podmate.domain.podUserMapping.domain.enums.PodRole.POD_LEADER;
import static com.podmate.domain.podUserMapping.domain.enums.PodRole.POD_MEMBER;

@Service
@Transactional
@RequiredArgsConstructor
@Slf4j
public class MyPageService {

private final UserRepository userRepository;
Expand Down Expand Up @@ -209,6 +213,38 @@ public void addTrackingNum(MyPageRequestDto.TrackingNumRequestDto request, Long
notificationService.notifyDeliveryStarted(userId, pod);
}

public void addDepositAccount(MyPageRequestDto.DepositAccountRequestDto request, Long podId, Long userId){
userRepository.findById(userId).orElseThrow(() -> new UserNotFoundException());
Pod pod = podRepository.findById(podId).orElseThrow(() -> new PodNotFoundException());
pod.updateDepositAccount(request.getDepositAccountBank(), request.getDepositAccountNumber(), request.getDepositAccountHolder());

//팟원에게 입금 요청 알림 전송
List<User> receivers = podUserMappingRepository.findMembersByPodId(pod.getId());
for (User receiver : receivers) {
notificationService.notifyPaymentRequest(receiver.getId(), pod, request);
}
}

public void updateDepositStatus(Long podId, Long userId) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new UserNotFoundException());
Pod pod = podRepository.findById(podId).orElseThrow(() -> new PodNotFoundException());
PodUserMapping podUserMapping = podUserMappingRepository.findByPod_IdAndUser_IdAndPodRole(podId, user.getId(), POD_MEMBER)
.orElseThrow(() -> new PodUserMappingNotFoundException());
podUserMapping.updatePodUserMappingDepositStatus(DepositStatus.DEPOSIT_COMPLETED);

Long receiverId = podUserMappingRepository.findLeaderUserIdByPodId(podId)
.orElseThrow(() -> new UserNotFoundException());
List<PodUserMapping> list = podUserMappingRepository.findAllByPod_Id(podId);
boolean allDeposited = list.stream()
.allMatch(mapping -> mapping.getDepositStatus() == DepositStatus.DEPOSIT_COMPLETED);

if (allDeposited) {
// 모든 팟원이 입금을 완료했다면 팟장에게 알림 전송
notificationService.notifyDepositCompleted(receiverId, pod);
}
}

public List<PodResponse> getCompletedMyPods(Long userId) {

List<Pod> pods = getPodList(userId, POD_LEADER, PodStatus.COMPLETED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,13 @@ public static class TrackingNumRequestDto{
public static class IsApprovedStatusRequestDto{
private String isApprovedStatus; //팟장의 팟원 수락 상태
}

@Getter
@Builder
@AllArgsConstructor
public static class DepositAccountRequestDto{
private String depositAccountBank; // 은행명
private String depositAccountNumber; // 계좌번호
private String depositAccountHolder; // 예금주
}
}
Loading