From c2b8eaac1ae37988fd5b3f5ba373e34867108c5a Mon Sep 17 00:00:00 2001 From: yang Date: Tue, 6 Aug 2024 04:23:01 +0900 Subject: [PATCH 01/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/AdminSeniorUseCase.java | 37 ++++--------- .../application/usecase/AdminUserUseCase.java | 13 ++--- .../repository/AdminSeniorRepository.java | 54 +++++++++++++++++++ .../repository/AdminUserRepository.java | 43 +++++++++++++++ .../domain/service/AdminSeniorService.java | 52 ++++++++++++++++++ .../domain/service/AdminUserService.java | 30 +++++++++++ 6 files changed, 193 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/postgraduate/admin/domain/repository/AdminSeniorRepository.java create mode 100644 src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java create mode 100644 src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java create mode 100644 src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java index a3b9dac9..c0829f4a 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java @@ -2,66 +2,47 @@ import com.postgraduate.admin.application.dto.res.CertificationDetailsResponse; import com.postgraduate.admin.application.dto.res.SeniorInfo; +import com.postgraduate.admin.application.dto.res.SeniorInfoQuery; import com.postgraduate.admin.application.mapper.AdminMapper; -import com.postgraduate.domain.salary.domain.entity.Salary; -import com.postgraduate.domain.salary.domain.service.SalaryGetService; +import com.postgraduate.admin.domain.service.AdminSeniorService; import com.postgraduate.domain.senior.domain.entity.Senior; -import com.postgraduate.domain.senior.domain.service.SeniorGetService; -import com.postgraduate.domain.senior.domain.service.SeniorUpdateService; -import com.postgraduate.domain.senior.exception.SeniorCertificationException; -import com.postgraduate.domain.wish.domain.entity.Wish; -import com.postgraduate.domain.wish.domain.service.WishGetService; import com.postgraduate.global.bizppurio.application.usecase.BizppurioSeniorMessage; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; -import java.util.Optional; - -import static com.postgraduate.domain.senior.domain.entity.constant.Status.APPROVE; @Service @Transactional @RequiredArgsConstructor public class AdminSeniorUseCase { - private final SeniorGetService seniorGetService; - private final SeniorUpdateService seniorUpdateService; - private final SalaryGetService salaryGetService; - private final WishGetService wishGetService; private final BizppurioSeniorMessage bizppurioSeniorMessage; + private final AdminSeniorService adminSeniorService; private final AdminMapper adminMapper; @Transactional(readOnly = true) public List allSenior() { - List seniors = seniorGetService.allSenior(); - return seniors.stream() - .map(senior -> { - Salary salary = salaryGetService.bySenior(senior); - Optional wish = wishGetService.byUser(senior.getUser()); - return adminMapper.mapToSeniorInfo(senior, salary.getTotalAmount(), wish.isPresent()); - }) + List salaries = adminSeniorService.allSeniors(); + return salaries.stream() + .map(adminMapper::mapToSeniorInfo) .toList(); } @Transactional(readOnly = true) public CertificationDetailsResponse getCertification(Long seniorId) { - Senior senior = seniorGetService.bySeniorId(seniorId); - if (senior.getStatus() == APPROVE) - throw new SeniorCertificationException(); + Senior senior = adminSeniorService.seniorInfo(seniorId); return adminMapper.mapToCertificationInfo(senior); } public void updateNotApprove(Long seniorId) { - Senior senior = seniorGetService.bySeniorId(seniorId); - seniorUpdateService.certificationUpdateNotApprove(senior); + Senior senior = adminSeniorService.certificationUpdateNotApprove(seniorId); bizppurioSeniorMessage.certificationDenied(senior.getUser()); } public void updateApprove(Long seniorId) { - Senior senior = seniorGetService.bySeniorId(seniorId); - seniorUpdateService.certificationUpdateApprove(senior); + Senior senior = adminSeniorService.certificationUpdateApprove(seniorId); bizppurioSeniorMessage.certificationApprove(senior.getUser()); } diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java index 98601da6..7eab7083 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java @@ -4,9 +4,8 @@ import com.postgraduate.admin.application.dto.res.UserInfo; import com.postgraduate.admin.application.dto.res.WishResponse; import com.postgraduate.admin.application.mapper.AdminMapper; +import com.postgraduate.admin.domain.service.AdminUserService; import com.postgraduate.domain.wish.domain.entity.Wish; -import com.postgraduate.domain.wish.domain.service.WishGetService; -import com.postgraduate.domain.wish.domain.service.WishUpdateService; import com.postgraduate.global.bizppurio.application.dto.req.JuniorMatchingSuccessRequest; import com.postgraduate.global.bizppurio.application.usecase.BizppurioJuniorMessage; import lombok.RequiredArgsConstructor; @@ -19,14 +18,13 @@ @Transactional @RequiredArgsConstructor public class AdminUserUseCase { - private final WishGetService wishGetService; - private final WishUpdateService wishUpdateService; private final BizppurioJuniorMessage bizppurioJuniorMessage; + private final AdminUserService adminUserService; private final AdminMapper adminMapper; @Transactional(readOnly = true) public List userInfos() { - List all = wishGetService.all(); + List all = adminUserService.allJunior(); return all.stream() .map(adminMapper::mapToUserInfo) .toList(); @@ -34,13 +32,12 @@ public List userInfos() { @Transactional(readOnly = true) public WishResponse wishInfo(Long userId) { - Wish wish = wishGetService.byUserId(userId); + Wish wish = adminUserService.byUserId(userId); return adminMapper.mapToWishResponse(wish); } public void wishDone(Long wishId) { - Wish wish = wishGetService.byWishId(wishId); - wishUpdateService.updateWishDone(wish); + adminUserService.updateWishDone(wishId); } public void sendMatchingMessage(SendMessageRequest request) { diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminSeniorRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminSeniorRepository.java new file mode 100644 index 00000000..9c1a4fd5 --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminSeniorRepository.java @@ -0,0 +1,54 @@ +package com.postgraduate.admin.domain.repository; + +import com.postgraduate.admin.application.dto.res.SeniorInfoQuery; +import com.postgraduate.domain.senior.domain.entity.Senior; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.salary.domain.entity.QSalary.salary; +import static com.postgraduate.domain.senior.domain.entity.QSenior.senior; +import static com.postgraduate.domain.user.user.domain.entity.QUser.user; +import static com.postgraduate.domain.wish.domain.entity.QWish.wish; +import static java.util.Optional.ofNullable; + +@RequiredArgsConstructor +@Repository +public class AdminSeniorRepository { + private final JPAQueryFactory queryFactory; + + public List allSeniorInfo(LocalDate salaryDate) { + return queryFactory.select(salary, wish) + .from(salary) + .distinct() + .join(salary.senior, senior) + .fetchJoin() + .join(salary.senior.user, user) + .fetchJoin() + .leftJoin(wish) + .on(wish.user.eq(salary.senior.user)) + .fetchJoin() + .where(salary.senior.user.isDelete.isFalse(), salary.salaryDate.eq(salaryDate)) + .orderBy(salary.senior.createdAt.desc()) + .fetch() + .stream() + .map(tuple -> new SeniorInfoQuery(tuple.get(salary), ofNullable(tuple.get(wish)))) + .toList(); + } + + public Optional findBySeniorId(Long seniorId) { + return ofNullable(queryFactory.selectFrom(senior) + .distinct() + .leftJoin(senior.user, user) + .fetchJoin() + .where( + senior.seniorId.eq(seniorId), + senior.user.isDelete.isFalse() + ) + .fetchOne()); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java new file mode 100644 index 00000000..55fa239f --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java @@ -0,0 +1,43 @@ +package com.postgraduate.admin.domain.repository; + +import com.postgraduate.domain.wish.domain.entity.Wish; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.user.user.domain.entity.QUser.user; +import static com.postgraduate.domain.wish.domain.entity.QWish.wish; + +@RequiredArgsConstructor +@Repository +public class AdminUserRepository { + private final JPAQueryFactory queryFactory; + + public List findAllJunior() { + return queryFactory.selectFrom(wish) + .join(wish.user, user) + .fetchJoin() + .fetch(); + } + + public Optional findByUserId(Long userId) { + return Optional.ofNullable(queryFactory.selectFrom(wish) + .where( + wish.matchingReceive.isTrue(), + wish.user.userId.eq(userId), + wish.user.isDelete.isFalse() + ) + .join(wish.user, user) + .fetchJoin() + .fetchOne()); + } + + public Optional findByWishId(Long wishId) { + return Optional.ofNullable(queryFactory.selectFrom(wish) + .where(wish.wishId.eq(wishId)) + .fetchOne()); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java new file mode 100644 index 00000000..b2fbdd03 --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java @@ -0,0 +1,52 @@ +package com.postgraduate.admin.domain.service; + +import com.postgraduate.admin.application.dto.res.SeniorInfoQuery; +import com.postgraduate.admin.domain.repository.AdminSeniorRepository; +import com.postgraduate.domain.salary.util.SalaryUtil; +import com.postgraduate.domain.senior.domain.entity.Senior; +import com.postgraduate.domain.senior.exception.NoneSeniorException; +import com.postgraduate.domain.senior.exception.SeniorCertificationException; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.List; + +import static com.postgraduate.domain.senior.domain.entity.constant.Status.*; + +@Service +@RequiredArgsConstructor +@Slf4j +public class AdminSeniorService { + private final AdminSeniorRepository adminSeniorRepository; + + public List allSeniors() { + LocalDate salaryDate = SalaryUtil.getSalaryDate(); + return adminSeniorRepository.allSeniorInfo(salaryDate); + } + + public Senior seniorInfo(Long seniorId) { + Senior senior = getSenior(seniorId); + if (!senior.getStatus().equals(WAITING)) + throw new SeniorCertificationException(); + return senior; + } + + public Senior certificationUpdateApprove(Long seniorId) { + Senior senior = getSenior(seniorId); + senior.updateStatus(APPROVE); + return senior; + } + + public Senior certificationUpdateNotApprove(Long seniorId) { + Senior senior = getSenior(seniorId); + senior.updateStatus(NOT_APPROVE); + return senior; + } + + private Senior getSenior(Long seniorId) { + return adminSeniorRepository.findBySeniorId(seniorId) + .orElseThrow(NoneSeniorException::new); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java new file mode 100644 index 00000000..64fe089c --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java @@ -0,0 +1,30 @@ +package com.postgraduate.admin.domain.service; + +import com.postgraduate.admin.domain.repository.AdminUserRepository; +import com.postgraduate.domain.wish.domain.entity.Wish; +import com.postgraduate.domain.wish.exception.WishNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +@RequiredArgsConstructor +public class AdminUserService { + private final AdminUserRepository adminUserRepository; + + public List allJunior() { + return adminUserRepository.findAllJunior(); + } + + public Wish byUserId(long userId) { + return adminUserRepository.findByUserId(userId) + .orElseThrow(WishNotFoundException::new); + } + + public void updateWishDone(Long wishId) { + Wish wish = adminUserRepository.findByWishId(wishId) + .orElseThrow(WishNotFoundException::new); + wish.updateDone(); + } +} From 8e56389d6cb3659afa6ec5e2940a3413910ba3e7 Mon Sep 17 00:00:00 2001 From: yang Date: Tue, 6 Aug 2024 04:23:20 +0900 Subject: [PATCH 02/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/dto/res/SeniorInfoQuery.java | 8 ++++++++ .../admin/application/mapper/AdminMapper.java | 12 +++++++++--- .../wish/domain/service/WishUpdateService.java | 15 --------------- 3 files changed, 17 insertions(+), 18 deletions(-) create mode 100644 src/main/java/com/postgraduate/admin/application/dto/res/SeniorInfoQuery.java delete mode 100644 src/main/java/com/postgraduate/domain/wish/domain/service/WishUpdateService.java diff --git a/src/main/java/com/postgraduate/admin/application/dto/res/SeniorInfoQuery.java b/src/main/java/com/postgraduate/admin/application/dto/res/SeniorInfoQuery.java new file mode 100644 index 00000000..63a0a63e --- /dev/null +++ b/src/main/java/com/postgraduate/admin/application/dto/res/SeniorInfoQuery.java @@ -0,0 +1,8 @@ +package com.postgraduate.admin.application.dto.res; + +import com.postgraduate.domain.salary.domain.entity.Salary; +import com.postgraduate.domain.wish.domain.entity.Wish; + +import java.util.Optional; + +public record SeniorInfoQuery(Salary salary, Optional wish){} diff --git a/src/main/java/com/postgraduate/admin/application/mapper/AdminMapper.java b/src/main/java/com/postgraduate/admin/application/mapper/AdminMapper.java index 2a0d1696..9f812aa8 100644 --- a/src/main/java/com/postgraduate/admin/application/mapper/AdminMapper.java +++ b/src/main/java/com/postgraduate/admin/application/mapper/AdminMapper.java @@ -16,6 +16,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.Optional; + import static com.postgraduate.domain.mentoring.domain.entity.constant.TermUnit.SHORT; @RequiredArgsConstructor @@ -57,17 +59,21 @@ public UserInfo mapToUserInfo(Wish wish) { isSenior ); } + - public SeniorInfo mapToSeniorInfo(Senior senior, int totalAmount, Boolean isUser) { + public SeniorInfo mapToSeniorInfo(SeniorInfoQuery query) { + Salary salary = query.salary(); + Optional wish = query.wish(); + Senior senior = salary.getSenior(); User user = senior.getUser(); return new SeniorInfo( senior.getSeniorId(), user.getNickName(), user.getPhoneNumber(), senior.getStatus(), - totalAmount, + salary.getTotalAmount(), user.getMarketingReceive(), - isUser + wish.isPresent() ); } diff --git a/src/main/java/com/postgraduate/domain/wish/domain/service/WishUpdateService.java b/src/main/java/com/postgraduate/domain/wish/domain/service/WishUpdateService.java deleted file mode 100644 index 1d5b7f47..00000000 --- a/src/main/java/com/postgraduate/domain/wish/domain/service/WishUpdateService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.postgraduate.domain.wish.domain.service; - -import com.postgraduate.domain.wish.domain.entity.Wish; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -import static com.postgraduate.domain.wish.domain.entity.constant.Status.MATCHED; - -@Service -@RequiredArgsConstructor -public class WishUpdateService { - public void updateWishDone(Wish wish) { - wish.updateStatus(MATCHED); - } -} From 7216766906d2d74596021f47632dcc7dabe9bfec Mon Sep 17 00:00:00 2001 From: yang Date: Tue, 6 Aug 2024 04:53:49 +0900 Subject: [PATCH 03/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=ED=8E=98=EC=9D=B4=EC=A7=80=20Salary=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/AdminSalaryUseCase.java | 23 ++--- .../repository/AdminSalaryRepository.java | 73 +++++++++++++++ .../domain/service/AdminSalaryService.java | 38 ++++++++ .../domain/service/AdminSeniorService.java | 2 - .../repository/SalaryDslRepositoryImpl.java | 88 ------------------- .../domain/service/SalaryGetService.java | 10 --- .../domain/service/SalaryUpdateService.java | 4 - 7 files changed, 119 insertions(+), 119 deletions(-) create mode 100644 src/main/java/com/postgraduate/admin/domain/repository/AdminSalaryRepository.java create mode 100644 src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java index 9e36c510..d00cef92 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java @@ -3,12 +3,9 @@ import com.postgraduate.admin.application.dto.res.SalaryInfoWithOutId; import com.postgraduate.admin.application.dto.res.UnSettledSalaryInfo; import com.postgraduate.admin.application.mapper.AdminMapper; +import com.postgraduate.admin.domain.service.AdminSalaryService; import com.postgraduate.domain.salary.domain.entity.Salary; import com.postgraduate.domain.salary.domain.entity.SalaryAccount; -import com.postgraduate.domain.salary.domain.service.SalaryGetService; -import com.postgraduate.domain.salary.domain.service.SalaryUpdateService; -import com.postgraduate.domain.senior.domain.entity.Senior; -import com.postgraduate.domain.senior.domain.service.SeniorGetService; import com.postgraduate.global.config.security.util.EncryptorUtils; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -20,15 +17,13 @@ @Transactional @RequiredArgsConstructor public class AdminSalaryUseCase { - private final SeniorGetService seniorGetService; - private final SalaryGetService salaryGetService; - private final SalaryUpdateService salaryUpdateService; private final EncryptorUtils encryptorUtils; + private final AdminSalaryService adminSalaryService; private final AdminMapper adminMapper; @Transactional(readOnly = true) public List salaryInfos() { - List all = salaryGetService.findAll(); + List all = adminSalaryService.findAllDoneSalary(); return all.stream() .map(salary -> { if (salary.getSenior() == null) @@ -42,23 +37,21 @@ public List salaryInfos() { @Transactional(readOnly = true) public SalaryInfoWithOutId seniorSalary(Long seniorId) { - Senior senior = seniorGetService.bySeniorId(seniorId); - Salary salary = salaryGetService.bySenior(senior); + Salary salary = adminSalaryService.findBySeniorId(seniorId); SalaryAccount account = salary.getAccount(); if (account == null) - return adminMapper.mapToSalaryResponse(senior, salary); + return adminMapper.mapToSalaryResponse(salary.getSenior(), salary); String accountNumber = encryptorUtils.decryptData(account.getAccountNumber()); - return adminMapper.mapToSalaryResponse(senior, accountNumber, salary); + return adminMapper.mapToSalaryResponse(salary.getSenior(), accountNumber, salary); } public void salaryDone(Long salaryId) { - Salary salary = salaryGetService.bySalaryId(salaryId); - salaryUpdateService.updateDone(salary); + adminSalaryService.updateDone(salaryId); } @Transactional(readOnly = true) public List unSettledSalaryInfo() { - List salaries = salaryGetService.allByNotDone(); + List salaries = adminSalaryService.findAllByNotDone(); return salaries.stream() .map(salary -> { SalaryAccount account = salary.getAccount(); diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminSalaryRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminSalaryRepository.java new file mode 100644 index 00000000..25ecd2a3 --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminSalaryRepository.java @@ -0,0 +1,73 @@ +package com.postgraduate.admin.domain.repository; + +import com.postgraduate.domain.salary.domain.entity.Salary; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.time.LocalDate; +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.salary.domain.entity.QSalary.salary; +import static com.postgraduate.domain.senior.domain.entity.QSenior.senior; +import static com.postgraduate.domain.user.user.domain.entity.QUser.user; + +@RequiredArgsConstructor +@Repository +public class AdminSalaryRepository { + private final JPAQueryFactory queryFactory; + + public List findAllByDone() { + return queryFactory.selectFrom(salary) + .distinct() + .where( + salary.status.isTrue(), + salary.totalAmount.gt(0) + ) + .leftJoin(salary.senior, senior) + .fetchJoin() + .leftJoin(senior.user, user) + .fetchJoin() + .orderBy(salary.salaryDoneDate.desc()) + .fetch(); + } + + public Optional findBySeniorId(Long seniorId, LocalDate salaryDate) { + return Optional.ofNullable(queryFactory.selectFrom(salary) + .distinct() + .where( + salary.salaryDate.eq(salaryDate), + salary.senior.seniorId.eq(seniorId), + salary.senior.user.isDelete.isFalse() + ) + .join(salary.senior, senior) + .fetchJoin() + .join(salary.senior.user, user) + .fetchJoin() + .fetchOne()); + } + + public Optional findBySalaryId(Long salaryId) { + return Optional.ofNullable(queryFactory.selectFrom(salary) + .where(salary.salaryId.eq(salaryId)) + .fetchOne()); + } + + public List findAllByNotDoneFromLast(LocalDate salaryDate) { + return queryFactory.selectFrom(salary) + .distinct() + .where( + salary.status.isFalse(), + salary.salaryDate.lt(salaryDate), + salary.totalAmount.gt(0), + salary.senior.user.isDelete.isFalse() + ) + .leftJoin(salary.senior, senior) + .fetchJoin() + .leftJoin(senior.user, user) + .fetchJoin() + .orderBy(salary.salaryDate.asc()) + .fetch(); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java new file mode 100644 index 00000000..549ad91f --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java @@ -0,0 +1,38 @@ +package com.postgraduate.admin.domain.service; + +import com.postgraduate.admin.domain.repository.AdminSalaryRepository; +import com.postgraduate.domain.salary.domain.entity.Salary; +import com.postgraduate.domain.salary.exception.SalaryNotFoundException; +import com.postgraduate.domain.salary.util.SalaryUtil; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.time.LocalDate; +import java.util.List; + +@Service +@RequiredArgsConstructor +public class AdminSalaryService { + private final AdminSalaryRepository adminSalaryRepository; + + public List findAllDoneSalary() { + return adminSalaryRepository.findAllByDone(); + } + + public Salary findBySeniorId(Long seniorId) { + LocalDate salaryDate = SalaryUtil.getSalaryDate(); + return adminSalaryRepository.findBySeniorId(seniorId, salaryDate) + .orElseThrow(SalaryNotFoundException::new); + } + + public void updateDone(Long salaryId) { + Salary salary = adminSalaryRepository.findBySalaryId(salaryId) + .orElseThrow(SalaryNotFoundException::new); + salary.updateStatus(true); + } + + public List findAllByNotDone() { + LocalDate salaryDate = SalaryUtil.getSalaryDate(); + return adminSalaryRepository.findAllByNotDoneFromLast(salaryDate); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java index b2fbdd03..1df23740 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java @@ -7,7 +7,6 @@ import com.postgraduate.domain.senior.exception.NoneSeniorException; import com.postgraduate.domain.senior.exception.SeniorCertificationException; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.time.LocalDate; @@ -17,7 +16,6 @@ @Service @RequiredArgsConstructor -@Slf4j public class AdminSeniorService { private final AdminSeniorRepository adminSeniorRepository; diff --git a/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepositoryImpl.java b/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepositoryImpl.java index 467ef961..6252c813 100644 --- a/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepositoryImpl.java +++ b/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepositoryImpl.java @@ -28,60 +28,6 @@ public class SalaryDslRepositoryImpl implements SalaryDslRepository { private final JPAQueryFactory queryFactory; - @Override - public Page findDistinctBySearchSenior(String search, Pageable pageable) { - List seniorSalaries = queryFactory - .select( - constructor( - SeniorSalary.class, - salary.senior, - salary.salaryDate - ) - ) - .from(salary) - .distinct() - .where( - searchLike(search), - salary.senior.user.isDelete.eq(FALSE) - ) - .orderBy(salary.salaryDate.desc()) - .groupBy(salary.senior.seniorId, salary.salaryDate) - .offset(pageable.getOffset()) - .limit(pageable.getPageSize()) - .fetch(); - - Long total = queryFactory.select(salary.count()) - .from(salary) - .where( - searchLike(search), - salary.senior.user.isDelete.isFalse() - ) - .fetchOne(); - - return new PageImpl<>(seniorSalaries, pageable, total); - } - - private BooleanExpression searchLike(String search) { - JPAQuery accountQuery = queryFactory.select(account.senior.seniorId) - .from(account) - .where(searchAccount(search)); - - if (StringUtils.hasText(search)) { - return salary.senior.user.nickName.contains(search) - .or(salary.senior.user.phoneNumber.contains(search)) - .or(salary.senior.seniorId.in(accountQuery)); - } - return null; - } - - private BooleanExpression searchAccount(String search) { - if (StringUtils.hasText(search)) { - return account.accountHolder.contains(search); - } - return null; - } - - @Override public List findAllLastSalary(LocalDate salaryDate) { return queryFactory.selectFrom(salary) @@ -97,40 +43,6 @@ public List findAllLastSalary(LocalDate salaryDate) { .fetch(); } - @Override - public List findAllByNotDoneFromLast(LocalDate salaryDate) { - return queryFactory.selectFrom(salary) - .distinct() - .where( - salary.status.isFalse(), - salary.salaryDate.lt(salaryDate), - salary.totalAmount.gt(0), - salary.senior.user.isDelete.isFalse() - ) - .leftJoin(salary.senior, senior) - .fetchJoin() - .leftJoin(senior.user, user) - .fetchJoin() - .orderBy(salary.salaryDate.asc()) - .fetch(); - } - - @Override - public List findAllByDone() { - return queryFactory.selectFrom(salary) - .distinct() - .where( - salary.status.isTrue(), - salary.totalAmount.gt(0) - ) - .leftJoin(salary.senior, senior) - .fetchJoin() - .leftJoin(senior.user, user) - .fetchJoin() - .orderBy(salary.salaryDoneDate.desc()) - .fetch(); - } - @Override public List findAllBySalaryNoneAccount(LocalDate salaryDate, Senior searchSenior) { List nowSalaries = queryFactory.selectFrom(salary) diff --git a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryGetService.java b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryGetService.java index ee75b967..1416300b 100644 --- a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryGetService.java +++ b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryGetService.java @@ -19,12 +19,6 @@ public class SalaryGetService { private final SalaryRepository salaryRepository; - public List allByNotDone() { - LocalDate salaryDate = SalaryUtil.getSalaryDate(); - log.info("salaryDate : {}", salaryDate); - return salaryRepository.findAllByNotDoneFromLast(salaryDate); - } - public Salary bySalaryId(Long salaryId) { return salaryRepository.findById(salaryId) .orElseThrow(SalaryNotFoundException::new); @@ -48,8 +42,4 @@ public List findAllLast() { log.info("salaryDate : {}", salaryDate); return salaryRepository.findAllLastSalary(salaryDate); } - - public List findAll() { - return salaryRepository.findAllByDone(); - } } diff --git a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java index 2948a903..2b25d9ec 100644 --- a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java +++ b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java @@ -8,10 +8,6 @@ @Service @RequiredArgsConstructor public class SalaryUpdateService { - public void updateDone(Salary salary) { - salary.updateStatus(true); - } - public void updateNot(Salary salary) { salary.updateStatus(false); } From 10d0b6ea01c0ea66d88ba12e4365b3db5b8fabb8 Mon Sep 17 00:00:00 2001 From: yang Date: Tue, 6 Aug 2024 05:54:26 +0900 Subject: [PATCH 04/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=ED=8E=98=EC=9D=B4=EC=A7=80=20payment=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/res/PaymentWithMentoringQuery.java | 8 ++++ .../usecase/AdminPaymentUseCase.java | 44 +++++++----------- .../repository/AdminPaymentRepository.java | 46 +++++++++++++++++++ .../domain/service/AdminPaymentService.java | 38 +++++++++++++++ .../domain/service/AdminSalaryService.java | 8 ++++ .../repository/PaymentDslRepository.java | 5 -- .../repository/PaymentDslRepositoryImpl.java | 16 ------- .../domain/service/PaymentGetService.java | 6 --- 8 files changed, 116 insertions(+), 55 deletions(-) create mode 100644 src/main/java/com/postgraduate/admin/application/dto/res/PaymentWithMentoringQuery.java create mode 100644 src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java create mode 100644 src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java diff --git a/src/main/java/com/postgraduate/admin/application/dto/res/PaymentWithMentoringQuery.java b/src/main/java/com/postgraduate/admin/application/dto/res/PaymentWithMentoringQuery.java new file mode 100644 index 00000000..91823fca --- /dev/null +++ b/src/main/java/com/postgraduate/admin/application/dto/res/PaymentWithMentoringQuery.java @@ -0,0 +1,8 @@ +package com.postgraduate.admin.application.dto.res; + +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.postgraduate.domain.payment.domain.entity.Payment; + +import java.util.Optional; + +public record PaymentWithMentoringQuery(Payment payment, Optional mentoring) {} diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java index 82a92e27..d8415ff6 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java @@ -2,17 +2,12 @@ import com.postgraduate.admin.application.dto.res.MentoringWithPaymentResponse; import com.postgraduate.admin.application.dto.res.PaymentInfo; +import com.postgraduate.admin.application.dto.res.PaymentWithMentoringQuery; import com.postgraduate.admin.application.mapper.AdminMapper; +import com.postgraduate.admin.domain.service.AdminPaymentService; +import com.postgraduate.admin.domain.service.AdminSalaryService; import com.postgraduate.domain.mentoring.domain.entity.Mentoring; -import com.postgraduate.domain.mentoring.domain.service.MentoringGetService; -import com.postgraduate.domain.mentoring.domain.service.MentoringUpdateService; import com.postgraduate.domain.payment.application.usecase.PaymentManageUseCase; -import com.postgraduate.domain.payment.domain.entity.Payment; -import com.postgraduate.domain.payment.domain.service.PaymentGetService; -import com.postgraduate.domain.salary.domain.entity.Salary; -import com.postgraduate.domain.salary.domain.service.SalaryGetService; -import com.postgraduate.domain.salary.domain.service.SalaryUpdateService; -import com.postgraduate.domain.senior.domain.entity.Senior; import com.postgraduate.domain.user.user.domain.entity.User; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -24,43 +19,36 @@ @Transactional @RequiredArgsConstructor public class AdminPaymentUseCase { - private final PaymentGetService paymentGetService; - private final MentoringGetService mentoringGetService; - private final MentoringUpdateService mentoringUpdateService; private final PaymentManageUseCase paymentManageUseCase; - private final SalaryGetService salaryGetService; - private final SalaryUpdateService salaryUpdateService; + private final AdminSalaryService adminSalaryService; + private final AdminPaymentService adminPaymentService; private final AdminMapper adminMapper; @Transactional(readOnly = true) public List paymentInfos() { - List all = paymentGetService.all(); + List all = adminPaymentService.allPayments(); return all.stream() - .map(payment -> { - Mentoring mentoring = mentoringGetService.byPaymentWithNull(payment); - if (mentoring == null) - return adminMapper.mapToPaymentInfo(payment); - return adminMapper.mapToPaymentInfo(payment, mentoring); + .map(pm -> { + if (pm.mentoring().isEmpty()) + return adminMapper.mapToPaymentInfo(pm.payment()); + return adminMapper.mapToPaymentInfo(pm.payment(), pm.mentoring().get()); }) .toList(); } @Transactional(readOnly = true) public MentoringWithPaymentResponse paymentMentoringInfo(Long paymentId) { - Payment payment = paymentGetService.byId(paymentId); - Mentoring mentoring = mentoringGetService.byPayment(payment); + Mentoring mentoring = adminPaymentService.findByPaymentId(paymentId); return adminMapper.mapToMentoringWithPaymentResponse(mentoring); } public void refundPayment(User user, Long paymentId) { paymentManageUseCase.refundPayByAdmin(user, paymentId); - Payment payment = paymentGetService.byId(paymentId); - Mentoring mentoring = mentoringGetService.byPaymentWithNull(payment); - if (mentoring != null) { - mentoringUpdateService.updateCancel(mentoring); - Senior senior = mentoring.getSenior(); - Salary salary = salaryGetService.bySenior(senior); - salaryUpdateService.minusTotalAmount(salary, mentoring.calculateForSenior()); + try { + Mentoring mentoring = adminPaymentService.refundPayment(paymentId); + adminSalaryService.minusTotalAmount(mentoring); + } catch (Exception ex) { + // todo: 환불 이후 예외 발생시 처리 } } } diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java new file mode 100644 index 00000000..35f4fb8a --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java @@ -0,0 +1,46 @@ +package com.postgraduate.admin.domain.repository; + +import com.postgraduate.admin.application.dto.res.PaymentWithMentoringQuery; +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.postgraduate.domain.mentoring.domain.entity.QMentoring; +import com.postgraduate.domain.payment.domain.entity.Payment; +import com.querydsl.core.Tuple; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.mentoring.domain.entity.QMentoring.mentoring; +import static com.postgraduate.domain.payment.domain.entity.QPayment.payment; +import static com.postgraduate.domain.user.user.domain.entity.QUser.user; +import static java.util.Optional.ofNullable; + +@RequiredArgsConstructor +@Repository +public class AdminPaymentRepository { + private final JPAQueryFactory queryFactory; + + public List findAllPayment() { + List fetch = queryFactory.select(payment, mentoring) + .distinct() + .leftJoin(payment.user, user) + .fetchJoin() + .leftJoin(mentoring.payment, payment) + .fetchJoin() + .fetch(); + + return fetch.stream() + .map(tuple -> new PaymentWithMentoringQuery(tuple.get(payment), ofNullable(tuple.get(mentoring)))) + .toList(); + } + + public Optional findByPaymentId(Long paymentId) { + return ofNullable(queryFactory.selectFrom(mentoring) + .where(mentoring.payment.paymentId.eq(paymentId)) + .join(mentoring.payment, payment) + .fetchJoin() + .fetchOne()); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java new file mode 100644 index 00000000..8ee43319 --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java @@ -0,0 +1,38 @@ +package com.postgraduate.admin.domain.service; + +import com.postgraduate.admin.application.dto.res.PaymentWithMentoringQuery; +import com.postgraduate.admin.domain.repository.AdminPaymentRepository; +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.postgraduate.domain.mentoring.domain.entity.constant.Status; +import com.postgraduate.domain.mentoring.exception.MentoringNotFoundException; +import com.postgraduate.domain.payment.domain.entity.Payment; +import com.postgraduate.domain.payment.exception.PaymentNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.mentoring.domain.entity.constant.Status.CANCEL; + +@Service +@RequiredArgsConstructor +public class AdminPaymentService { + private final AdminPaymentRepository adminPaymentRepository; + + public List allPayments() { + return adminPaymentRepository.findAllPayment(); + } + + public Mentoring findByPaymentId(Long paymentId) { + return adminPaymentRepository.findByPaymentId(paymentId) + .orElseThrow(MentoringNotFoundException::new); + } + + public Mentoring refundPayment(Long paymentId) { + Mentoring mentoring = adminPaymentRepository.findByPaymentId(paymentId) + .orElseThrow(MentoringNotFoundException::new); + mentoring.updateStatus(CANCEL); + return mentoring; + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java index 549ad91f..204dfc6a 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminSalaryService.java @@ -1,9 +1,11 @@ package com.postgraduate.admin.domain.service; import com.postgraduate.admin.domain.repository.AdminSalaryRepository; +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; import com.postgraduate.domain.salary.domain.entity.Salary; import com.postgraduate.domain.salary.exception.SalaryNotFoundException; import com.postgraduate.domain.salary.util.SalaryUtil; +import com.postgraduate.domain.senior.domain.entity.Senior; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -35,4 +37,10 @@ public List findAllByNotDone() { LocalDate salaryDate = SalaryUtil.getSalaryDate(); return adminSalaryRepository.findAllByNotDoneFromLast(salaryDate); } + + public void minusTotalAmount(Mentoring mentoring) { + Senior senior = mentoring.getSenior(); + Salary salary = findBySeniorId(senior.getSeniorId()); + salary.minusAmount(mentoring.calculateForSenior()); + } } diff --git a/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepository.java b/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepository.java index ca1c5f7c..c0f1dfab 100644 --- a/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepository.java +++ b/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepository.java @@ -1,9 +1,4 @@ package com.postgraduate.domain.payment.domain.repository; -import com.postgraduate.domain.payment.domain.entity.Payment; - -import java.util.List; - public interface PaymentDslRepository { - List findAllPayment(); } diff --git a/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepositoryImpl.java b/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepositoryImpl.java index 94880a59..9d4e6b52 100644 --- a/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepositoryImpl.java +++ b/src/main/java/com/postgraduate/domain/payment/domain/repository/PaymentDslRepositoryImpl.java @@ -1,26 +1,10 @@ package com.postgraduate.domain.payment.domain.repository; -import com.postgraduate.domain.payment.domain.entity.Payment; -import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; -import java.util.List; - -import static com.postgraduate.domain.payment.domain.entity.QPayment.payment; -import static com.postgraduate.domain.user.user.domain.entity.QUser.user; - @Repository @RequiredArgsConstructor public class PaymentDslRepositoryImpl implements PaymentDslRepository { - private final JPAQueryFactory queryFactory; - @Override - public List findAllPayment() { - return queryFactory.selectFrom(payment) - .distinct() - .leftJoin(payment.user, user) - .fetchJoin() - .fetch(); - } } diff --git a/src/main/java/com/postgraduate/domain/payment/domain/service/PaymentGetService.java b/src/main/java/com/postgraduate/domain/payment/domain/service/PaymentGetService.java index 7f4daaa6..4b2b7841 100644 --- a/src/main/java/com/postgraduate/domain/payment/domain/service/PaymentGetService.java +++ b/src/main/java/com/postgraduate/domain/payment/domain/service/PaymentGetService.java @@ -8,8 +8,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; - import static com.postgraduate.domain.payment.domain.entity.constant.Status.DONE; @Service @@ -35,8 +33,4 @@ public Payment byUserIdAndOrderId(Long userId, Long paymentId) { public Payment bySeniorAndOrderId(Senior senior, String orderId) { return paymentRepository.findBySeniorAndOrderIdAndStatus(senior, orderId, DONE).orElseThrow(PaymentNotFoundException::new); } - - public List all() { - return paymentRepository.findAllPayment(); - } } From 702c9c138effe2ff9909a58e06b2ac95fdbc4bee Mon Sep 17 00:00:00 2001 From: yang Date: Tue, 6 Aug 2024 05:54:57 +0900 Subject: [PATCH 05/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=B6=84=EB=A6=AC=EC=97=90=20=EC=9D=98=ED=95=9C=20?= =?UTF-8?q?=EA=B8=B0=EC=A1=B4=20=EC=BD=94=EB=93=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../salary/domain/repository/SalaryDslRepository.java | 7 ------- .../domain/senior/domain/service/SeniorGetService.java | 4 ---- .../senior/domain/service/SeniorUpdateService.java | 8 -------- .../postgraduate/domain/wish/domain/entity/Wish.java | 4 ++-- .../domain/wish/domain/service/WishGetService.java | 10 ---------- .../senior/domain/service/SeniorUpdateServiceTest.java | 9 --------- 6 files changed, 2 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepository.java b/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepository.java index 061c1601..1ba65ff9 100644 --- a/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepository.java +++ b/src/main/java/com/postgraduate/domain/salary/domain/repository/SalaryDslRepository.java @@ -1,19 +1,12 @@ package com.postgraduate.domain.salary.domain.repository; -import com.postgraduate.domain.salary.application.dto.SeniorSalary; import com.postgraduate.domain.salary.domain.entity.Salary; import com.postgraduate.domain.senior.domain.entity.Senior; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; - import java.time.LocalDate; import java.util.List; public interface SalaryDslRepository { - Page findDistinctBySearchSenior(String search, Pageable pageable); List findAllLastSalary(LocalDate salaryDate); - List findAllByNotDoneFromLast(LocalDate salaryDate); - List findAllByDone(); List findAllBySalaryNoneAccount(LocalDate salaryDate, Senior senior); boolean existIncompleteSalary(Senior senior); } diff --git a/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorGetService.java b/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorGetService.java index 3f8e0e1f..8d28aa0b 100644 --- a/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorGetService.java +++ b/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorGetService.java @@ -39,10 +39,6 @@ public List allSeniorId() { return seniorRepository.findAllByUser_IsDelete(FALSE); } - public List allSenior() { - return seniorRepository.findAllSenior(); - } - public Senior bySeniorId(Long seniorId) { return seniorRepository.findBySeniorId(seniorId) .orElseThrow(NoneSeniorException::new); diff --git a/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateService.java b/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateService.java index 980c48df..d52f624e 100644 --- a/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateService.java +++ b/src/main/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateService.java @@ -36,12 +36,4 @@ public void minusMentoring(Senior senior) { public void updateHit(Senior senior) { senior.updateHit(); } - - public void certificationUpdateApprove(Senior senior) { - senior.updateStatus(APPROVE); - } - - public void certificationUpdateNotApprove(Senior senior) { - senior.updateStatus(NOT_APPROVE); - } } diff --git a/src/main/java/com/postgraduate/domain/wish/domain/entity/Wish.java b/src/main/java/com/postgraduate/domain/wish/domain/entity/Wish.java index 3dc9fc2d..15e0108e 100644 --- a/src/main/java/com/postgraduate/domain/wish/domain/entity/Wish.java +++ b/src/main/java/com/postgraduate/domain/wish/domain/entity/Wish.java @@ -32,7 +32,7 @@ public class Wish { @Enumerated(EnumType.STRING) private Status status; - public void updateStatus(Status status) { - this.status = status; + public void updateDone() { + this.status = Status.MATCHED; } } diff --git a/src/main/java/com/postgraduate/domain/wish/domain/service/WishGetService.java b/src/main/java/com/postgraduate/domain/wish/domain/service/WishGetService.java index fbbb9b0c..73d5a202 100644 --- a/src/main/java/com/postgraduate/domain/wish/domain/service/WishGetService.java +++ b/src/main/java/com/postgraduate/domain/wish/domain/service/WishGetService.java @@ -7,7 +7,6 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.List; import java.util.Optional; @Service @@ -23,13 +22,4 @@ public Wish byWishId(Long wishId) { public Optional byUser(User user) { return wishRepository.findByUserAndUser_IsDeleteIsFalse(user); } - - public Wish byUserId(Long userId) { - return wishRepository.findByMatchingReceiveIsTrueAndUser_UserIdAndUser_IsDeleteIsFalse(userId) - .orElseThrow(WishNotFoundException::new); - } - - public List all() { - return wishRepository.findAllWish(); - } } diff --git a/src/test/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateServiceTest.java b/src/test/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateServiceTest.java index 3c5a98df..f9f8c7e0 100644 --- a/src/test/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateServiceTest.java +++ b/src/test/java/com/postgraduate/domain/senior/domain/service/SeniorUpdateServiceTest.java @@ -104,13 +104,4 @@ void updateHit() { assertThat(senior.getHit()) .isEqualTo(++originHit); } - - @Test - @DisplayName("상태 변경") - void updateStatus() { - seniorUpdateService.certificationUpdateApprove(senior); - - assertThat(senior.getStatus()) - .isEqualTo(APPROVE); - } } \ No newline at end of file From d7c44e4a84bb1516e14ef81d0bb5b2c8ffaaa275 Mon Sep 17 00:00:00 2001 From: yang Date: Wed, 7 Aug 2024 06:15:12 +0900 Subject: [PATCH 06/18] =?UTF-8?q?RAC-412=20refactor=20:=20payment=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/AdminPaymentUseCase.java | 12 +++++++++--- .../domain/repository/AdminPaymentRepository.java | 12 ------------ .../admin/domain/service/AdminPaymentService.java | 12 ------------ 3 files changed, 9 insertions(+), 27 deletions(-) diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java index d8415ff6..96fc47c3 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminPaymentUseCase.java @@ -4,9 +4,11 @@ import com.postgraduate.admin.application.dto.res.PaymentInfo; import com.postgraduate.admin.application.dto.res.PaymentWithMentoringQuery; import com.postgraduate.admin.application.mapper.AdminMapper; +import com.postgraduate.admin.domain.service.AdminMentoringService; import com.postgraduate.admin.domain.service.AdminPaymentService; import com.postgraduate.admin.domain.service.AdminSalaryService; import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.postgraduate.domain.mentoring.domain.entity.constant.Status; import com.postgraduate.domain.payment.application.usecase.PaymentManageUseCase; import com.postgraduate.domain.user.user.domain.entity.User; import lombok.RequiredArgsConstructor; @@ -15,6 +17,8 @@ import java.util.List; +import static com.postgraduate.domain.mentoring.domain.entity.constant.Status.DONE; + @Service @Transactional @RequiredArgsConstructor @@ -22,6 +26,7 @@ public class AdminPaymentUseCase { private final PaymentManageUseCase paymentManageUseCase; private final AdminSalaryService adminSalaryService; private final AdminPaymentService adminPaymentService; + private final AdminMentoringService adminMentoringService; private final AdminMapper adminMapper; @Transactional(readOnly = true) @@ -38,15 +43,16 @@ public List paymentInfos() { @Transactional(readOnly = true) public MentoringWithPaymentResponse paymentMentoringInfo(Long paymentId) { - Mentoring mentoring = adminPaymentService.findByPaymentId(paymentId); + Mentoring mentoring = adminMentoringService.byPaymentId(paymentId); return adminMapper.mapToMentoringWithPaymentResponse(mentoring); } public void refundPayment(User user, Long paymentId) { paymentManageUseCase.refundPayByAdmin(user, paymentId); try { - Mentoring mentoring = adminPaymentService.refundPayment(paymentId); - adminSalaryService.minusTotalAmount(mentoring); + Mentoring mentoring = adminMentoringService.updateCancelWithPaymentId(paymentId); + if (mentoring.getStatus() == DONE) + adminSalaryService.minusTotalAmount(mentoring); } catch (Exception ex) { // todo: 환불 이후 예외 발생시 처리 } diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java index 35f4fb8a..4db22b7e 100644 --- a/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java @@ -1,16 +1,12 @@ package com.postgraduate.admin.domain.repository; import com.postgraduate.admin.application.dto.res.PaymentWithMentoringQuery; -import com.postgraduate.domain.mentoring.domain.entity.Mentoring; -import com.postgraduate.domain.mentoring.domain.entity.QMentoring; -import com.postgraduate.domain.payment.domain.entity.Payment; import com.querydsl.core.Tuple; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; import java.util.List; -import java.util.Optional; import static com.postgraduate.domain.mentoring.domain.entity.QMentoring.mentoring; import static com.postgraduate.domain.payment.domain.entity.QPayment.payment; @@ -35,12 +31,4 @@ public List findAllPayment() { .map(tuple -> new PaymentWithMentoringQuery(tuple.get(payment), ofNullable(tuple.get(mentoring)))) .toList(); } - - public Optional findByPaymentId(Long paymentId) { - return ofNullable(queryFactory.selectFrom(mentoring) - .where(mentoring.payment.paymentId.eq(paymentId)) - .join(mentoring.payment, payment) - .fetchJoin() - .fetchOne()); - } } diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java index 8ee43319..5ffe7db7 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminPaymentService.java @@ -23,16 +23,4 @@ public class AdminPaymentService { public List allPayments() { return adminPaymentRepository.findAllPayment(); } - - public Mentoring findByPaymentId(Long paymentId) { - return adminPaymentRepository.findByPaymentId(paymentId) - .orElseThrow(MentoringNotFoundException::new); - } - - public Mentoring refundPayment(Long paymentId) { - Mentoring mentoring = adminPaymentRepository.findByPaymentId(paymentId) - .orElseThrow(MentoringNotFoundException::new); - mentoring.updateStatus(CANCEL); - return mentoring; - } } From 29cbe011d2987fdba386ad45575c654bb2507c1f Mon Sep 17 00:00:00 2001 From: yang Date: Wed, 7 Aug 2024 06:15:25 +0900 Subject: [PATCH 07/18] =?UTF-8?q?RAC-412=20refactor=20:=20mentoring=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EA=B4=80=EB=A6=AC=EC=9E=90=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/AdminMentoringUseCase.java | 29 ++++----- .../repository/AdminMentoringRepository.java | 62 +++++++++++++++++++ .../domain/service/AdminMentoringService.java | 43 +++++++++++++ 3 files changed, 117 insertions(+), 17 deletions(-) create mode 100644 src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java create mode 100644 src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminMentoringUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminMentoringUseCase.java index 28ef21c8..5d714d5b 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminMentoringUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminMentoringUseCase.java @@ -4,6 +4,7 @@ import com.postgraduate.admin.application.dto.res.UserMentoringInfo; import com.postgraduate.admin.application.dto.res.MentoringInfo; import com.postgraduate.admin.application.mapper.AdminMapper; +import com.postgraduate.admin.domain.service.*; import com.postgraduate.domain.mentoring.domain.entity.Mentoring; import com.postgraduate.domain.mentoring.domain.service.MentoringGetService; import com.postgraduate.domain.mentoring.domain.service.MentoringUpdateService; @@ -28,19 +29,17 @@ @Transactional @RequiredArgsConstructor public class AdminMentoringUseCase { - private final MentoringGetService mentoringGetService; - private final MentoringUpdateService mentoringUpdateService; - private final SeniorGetService seniorGetService; - private final UserGetService userGetService; private final PaymentManageUseCase paymentManageUseCase; - private final SalaryGetService salaryGetService; - private final SalaryUpdateService salaryUpdateService; + private final AdminSeniorService adminSeniorService; + private final AdminMentoringService adminMentoringService; + private final AdminUserService adminUserService; + private final AdminSalaryService adminSalaryService; private final AdminMapper adminMapper; @Transactional(readOnly = true) public MentoringManageResponse seniorMentorings(Long seniorId) { - Senior senior = seniorGetService.bySeniorId(seniorId); - List mentorings = mentoringGetService.bySeniorId(seniorId); + Senior senior = adminSeniorService.bySeniorId(seniorId); + List mentorings = adminMentoringService.allBySeniorId(seniorId); List mentoringInfos = mentorings.stream() .map(adminMapper::mapToMentoringInfoWithSenior) .toList(); @@ -50,8 +49,8 @@ public MentoringManageResponse seniorMentorings(Long seniorId) { @Transactional(readOnly = true) public MentoringManageResponse userMentoringInfos(Long userId) { - User user = userGetService.byUserId(userId); - List mentorings = mentoringGetService.byUserId(userId); + User user = adminUserService.userByUserId(userId); + List mentorings = adminMentoringService.allByUserId(userId); List mentoringInfos = mentorings.stream() .map(adminMapper::mapToMentoringInfoWithUser) .toList(); @@ -60,14 +59,10 @@ public MentoringManageResponse userMentoringInfos(Long userId) { } public void refundMentoring(User user, Long mentoringId) { - Mentoring mentoring = mentoringGetService.byMentoringId(mentoringId); + Mentoring mentoring = adminMentoringService.updateCancelWithMentoringId(mentoringId); Payment payment = mentoring.getPayment(); paymentManageUseCase.refundPayByAdmin(user, payment.getPaymentId()); - if (mentoring.getStatus() == DONE) { - Senior senior = mentoring.getSenior(); - Salary salary = salaryGetService.bySenior(senior); - salaryUpdateService.minusTotalAmount(salary, mentoring.calculateForSenior()); - } - mentoringUpdateService.updateCancel(mentoring); + if (mentoring.getStatus() == DONE) + adminSalaryService.minusTotalAmount(mentoring); } } diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java new file mode 100644 index 00000000..cfb1e04a --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java @@ -0,0 +1,62 @@ +package com.postgraduate.admin.domain.repository; + +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Optional; + +import static com.postgraduate.domain.mentoring.domain.entity.QMentoring.mentoring; +import static com.postgraduate.domain.payment.domain.entity.QPayment.payment; +import static com.postgraduate.domain.senior.domain.entity.QSenior.senior; +import static com.postgraduate.domain.user.user.domain.entity.QUser.user; +import static java.util.Optional.ofNullable; + +@Repository +@RequiredArgsConstructor +public class AdminMentoringRepository { + private final JPAQueryFactory queryFactory; + + public List findAllBySeniorId(Long seniorId) { + return queryFactory.selectFrom(mentoring) + .distinct() + .leftJoin(mentoring.senior, senior) + .fetchJoin() + .leftJoin(mentoring.user, user) + .fetchJoin() + .where(mentoring.senior.seniorId.eq(seniorId)) + .orderBy(mentoring.createdAt.desc()) + .fetch(); + } + + public List findAllByUserId(Long userId) { + return queryFactory.selectFrom(mentoring) + .distinct() + .leftJoin(mentoring.senior, senior) + .fetchJoin() + .leftJoin(mentoring.senior.user, user) + .fetchJoin() + .where(mentoring.user.userId.eq(userId)) + .orderBy(mentoring.createdAt.desc()) + .fetch(); + } + + public Optional findByMentoringId(Long mentoringId) { + return Optional.ofNullable(queryFactory.selectFrom(mentoring) + .distinct() + .join(mentoring.payment, payment) + .fetchJoin() + .where(mentoring.mentoringId.eq(mentoringId)) + .fetchOne()); + } + + public Optional findByPaymentId(Long paymentId) { + return ofNullable(queryFactory.selectFrom(mentoring) + .where(mentoring.payment.paymentId.eq(paymentId)) + .join(mentoring.payment, payment) + .fetchJoin() + .fetchOne()); + } +} diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java new file mode 100644 index 00000000..5d8887a1 --- /dev/null +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java @@ -0,0 +1,43 @@ +package com.postgraduate.admin.domain.service; + +import com.postgraduate.admin.domain.repository.AdminMentoringRepository; +import com.postgraduate.domain.mentoring.domain.entity.Mentoring; +import com.postgraduate.domain.mentoring.exception.MentoringNotFoundException; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static com.postgraduate.domain.mentoring.domain.entity.constant.Status.CANCEL; + +@RequiredArgsConstructor +@Service +public class AdminMentoringService { + private final AdminMentoringRepository adminMentoringRepository; + + public List allBySeniorId(Long seniorId) { + return adminMentoringRepository.findAllBySeniorId(seniorId); + } + + public List allByUserId(Long userId) { + return adminMentoringRepository.findAllByUserId(userId); + } + + public Mentoring byPaymentId(Long paymentId) { + return adminMentoringRepository.findByPaymentId(paymentId) + .orElseThrow(MentoringNotFoundException::new); + } + + public Mentoring updateCancelWithPaymentId(Long paymentId) { + Mentoring mentoring = byPaymentId(paymentId); + mentoring.updateStatus(CANCEL); + return mentoring; + } + + public Mentoring updateCancelWithMentoringId(Long mentoringId) { + Mentoring mentoring = adminMentoringRepository.findByMentoringId(mentoringId) + .orElseThrow(MentoringNotFoundException::new); + mentoring.updateStatus(CANCEL); + return mentoring; + } +} From e1a257439269198eb0ae6248824270c379a971f0 Mon Sep 17 00:00:00 2001 From: yang Date: Wed, 7 Aug 2024 06:15:50 +0900 Subject: [PATCH 08/18] =?UTF-8?q?RAC-412=20refactor=20:=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EA=B4=80=EB=A0=A8=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/AdminAuthUseCase.java | 20 ---------- .../usecase/AdminSeniorUseCase.java | 7 +++- .../application/usecase/AdminUserUseCase.java | 9 ++++- .../repository/AdminUserRepository.java | 18 ++++++++- .../domain/service/AdminSeniorService.java | 7 +--- .../domain/service/AdminUserService.java | 18 +++++++-- .../admin/domain/service/AuthGetService.java | 18 --------- .../AdminWithThymeLeafController.java | 3 +- .../repository/MentoringDslRepository.java | 3 -- .../MentoringDslRepositoryImpl.java | 38 ------------------- .../domain/service/MentoringGetService.java | 13 ------- .../domain/service/SalaryUpdateService.java | 4 -- .../domain/repository/UserRepository.java | 1 - .../service/MentoringGetServiceTest.java | 16 -------- 14 files changed, 48 insertions(+), 127 deletions(-) delete mode 100644 src/main/java/com/postgraduate/admin/application/usecase/AdminAuthUseCase.java delete mode 100644 src/main/java/com/postgraduate/admin/domain/service/AuthGetService.java diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminAuthUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminAuthUseCase.java deleted file mode 100644 index b0e20698..00000000 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminAuthUseCase.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.postgraduate.admin.application.usecase; - -import com.postgraduate.admin.application.dto.req.Login; -import com.postgraduate.admin.domain.service.AuthGetService; -import com.postgraduate.domain.user.user.domain.entity.User; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -@Service -@Transactional -@RequiredArgsConstructor -public class AdminAuthUseCase { - private final AuthGetService authGetService; - - public User login(Login loginForm) { - return authGetService.login(loginForm.nickName(), loginForm.phoneNumber()); - } - -} diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java index c0829f4a..118febf8 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminSeniorUseCase.java @@ -6,6 +6,7 @@ import com.postgraduate.admin.application.mapper.AdminMapper; import com.postgraduate.admin.domain.service.AdminSeniorService; import com.postgraduate.domain.senior.domain.entity.Senior; +import com.postgraduate.domain.senior.exception.SeniorCertificationException; import com.postgraduate.global.bizppurio.application.usecase.BizppurioSeniorMessage; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -13,6 +14,8 @@ import java.util.List; +import static com.postgraduate.domain.senior.domain.entity.constant.Status.WAITING; + @Service @Transactional @RequiredArgsConstructor @@ -31,7 +34,9 @@ public List allSenior() { @Transactional(readOnly = true) public CertificationDetailsResponse getCertification(Long seniorId) { - Senior senior = adminSeniorService.seniorInfo(seniorId); + Senior senior = adminSeniorService.bySeniorId(seniorId); + if (!senior.getStatus().equals(WAITING)) + throw new SeniorCertificationException(); return adminMapper.mapToCertificationInfo(senior); } diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java index 7eab7083..9eeef578 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminUserUseCase.java @@ -1,10 +1,12 @@ package com.postgraduate.admin.application.usecase; +import com.postgraduate.admin.application.dto.req.Login; import com.postgraduate.admin.application.dto.req.SendMessageRequest; import com.postgraduate.admin.application.dto.res.UserInfo; import com.postgraduate.admin.application.dto.res.WishResponse; import com.postgraduate.admin.application.mapper.AdminMapper; import com.postgraduate.admin.domain.service.AdminUserService; +import com.postgraduate.domain.user.user.domain.entity.User; import com.postgraduate.domain.wish.domain.entity.Wish; import com.postgraduate.global.bizppurio.application.dto.req.JuniorMatchingSuccessRequest; import com.postgraduate.global.bizppurio.application.usecase.BizppurioJuniorMessage; @@ -22,6 +24,11 @@ public class AdminUserUseCase { private final AdminUserService adminUserService; private final AdminMapper adminMapper; + @Transactional(readOnly = true) + public User login(Login loginForm) { + return adminUserService.login(loginForm.nickName(), loginForm.phoneNumber()); + } + @Transactional(readOnly = true) public List userInfos() { List all = adminUserService.allJunior(); @@ -32,7 +39,7 @@ public List userInfos() { @Transactional(readOnly = true) public WishResponse wishInfo(Long userId) { - Wish wish = adminUserService.byUserId(userId); + Wish wish = adminUserService.wishByUserId(userId); return adminMapper.mapToWishResponse(wish); } diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java index 55fa239f..597a6762 100644 --- a/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminUserRepository.java @@ -1,5 +1,6 @@ package com.postgraduate.admin.domain.repository; +import com.postgraduate.domain.user.user.domain.entity.User; import com.postgraduate.domain.wish.domain.entity.Wish; import com.querydsl.jpa.impl.JPAQueryFactory; import lombok.RequiredArgsConstructor; @@ -23,7 +24,7 @@ public List findAllJunior() { .fetch(); } - public Optional findByUserId(Long userId) { + public Optional findWishByUserId(Long userId) { return Optional.ofNullable(queryFactory.selectFrom(wish) .where( wish.matchingReceive.isTrue(), @@ -35,9 +36,22 @@ public Optional findByUserId(Long userId) { .fetchOne()); } - public Optional findByWishId(Long wishId) { + public Optional findWishByWishId(Long wishId) { return Optional.ofNullable(queryFactory.selectFrom(wish) .where(wish.wishId.eq(wishId)) .fetchOne()); } + + public Optional findUserByUserId(Long userId) { + return Optional.ofNullable(queryFactory.selectFrom(user) + .where(user.userId.eq(userId)) + .fetchOne()); + } + + public Optional login(String id, String pw) { + return Optional.ofNullable(queryFactory.selectFrom(user) + .where(user.nickName.eq(id), + user.phoneNumber.eq(pw)) + .fetchOne()); + } } diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java index 1df23740..8f58fa9f 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminSeniorService.java @@ -24,11 +24,8 @@ public List allSeniors() { return adminSeniorRepository.allSeniorInfo(salaryDate); } - public Senior seniorInfo(Long seniorId) { - Senior senior = getSenior(seniorId); - if (!senior.getStatus().equals(WAITING)) - throw new SeniorCertificationException(); - return senior; + public Senior bySeniorId(Long seniorId) { + return getSenior(seniorId); } public Senior certificationUpdateApprove(Long seniorId) { diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java index 64fe089c..194f868f 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminUserService.java @@ -1,6 +1,8 @@ package com.postgraduate.admin.domain.service; import com.postgraduate.admin.domain.repository.AdminUserRepository; +import com.postgraduate.domain.user.user.domain.entity.User; +import com.postgraduate.domain.user.user.exception.UserNotFoundException; import com.postgraduate.domain.wish.domain.entity.Wish; import com.postgraduate.domain.wish.exception.WishNotFoundException; import lombok.RequiredArgsConstructor; @@ -17,14 +19,24 @@ public List allJunior() { return adminUserRepository.findAllJunior(); } - public Wish byUserId(long userId) { - return adminUserRepository.findByUserId(userId) + public Wish wishByUserId(long userId) { + return adminUserRepository.findWishByUserId(userId) .orElseThrow(WishNotFoundException::new); } public void updateWishDone(Long wishId) { - Wish wish = adminUserRepository.findByWishId(wishId) + Wish wish = adminUserRepository.findWishByWishId(wishId) .orElseThrow(WishNotFoundException::new); wish.updateDone(); } + + public User userByUserId(Long userId) { + return adminUserRepository.findUserByUserId(userId) + .orElseThrow(UserNotFoundException::new); + } + + public User login(String id, String pw) { + return adminUserRepository.login(id, pw) + .orElseThrow(UserNotFoundException::new); + } } diff --git a/src/main/java/com/postgraduate/admin/domain/service/AuthGetService.java b/src/main/java/com/postgraduate/admin/domain/service/AuthGetService.java deleted file mode 100644 index 0822d305..00000000 --- a/src/main/java/com/postgraduate/admin/domain/service/AuthGetService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.postgraduate.admin.domain.service; - -import com.postgraduate.domain.user.user.domain.entity.User; -import com.postgraduate.domain.user.user.domain.repository.UserRepository; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@RequiredArgsConstructor -@Service -public class AuthGetService { - private final UserRepository userRepository; - - public User login(String nickName, String phoneNumber) { - return userRepository.findByNickNameAndPhoneNumber(nickName, phoneNumber) - .orElseThrow(); - } - -} diff --git a/src/main/java/com/postgraduate/admin/presentation/AdminWithThymeLeafController.java b/src/main/java/com/postgraduate/admin/presentation/AdminWithThymeLeafController.java index 4b67da52..eac3f0dc 100644 --- a/src/main/java/com/postgraduate/admin/presentation/AdminWithThymeLeafController.java +++ b/src/main/java/com/postgraduate/admin/presentation/AdminWithThymeLeafController.java @@ -19,7 +19,6 @@ @Controller @RequestMapping("/adminServer") public class AdminWithThymeLeafController { - private final AdminAuthUseCase adminAuthUseCase; private final AdminSeniorUseCase adminSeniorUseCase; private final AdminUserUseCase adminUserUseCase; private final AdminMentoringUseCase adminMentoringUseCase; @@ -36,7 +35,7 @@ public String loginForm(Model model, Login loginForm) { @PostMapping("/login") public String login(@ModelAttribute Login loginForm, Model model) { - User user = adminAuthUseCase.login(loginForm); + User user = adminUserUseCase.login(loginForm); JwtTokenResponse jwtTokenResponse = jwtUseCase.signIn(user); model.addAttribute("tokenResponse", jwtTokenResponse); return "adminMain"; diff --git a/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepository.java b/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepository.java index e676abdd..a1ccfc59 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepository.java +++ b/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepository.java @@ -9,11 +9,8 @@ import java.util.Optional; public interface MentoringDslRepository { - List findAllBySeniorId(Long seniorId); List findAllBySeniorAndStatus(Senior senior, Status status); - List findAllByUserId(Long userId); List findAllByUserAndStatus(User user, Status status); - Optional findByMentoringId(Long mentoringId); List findAllBySeniorAndSalaryStatus(Senior senior, Boolean status); Optional findByMentoringIdAndUserForDetails(Long mentoringId, User user); Optional findByMentoringIdAndSeniorForDetails(Long mentoringId, Senior senior); diff --git a/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepositoryImpl.java b/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepositoryImpl.java index 457b8777..3475d920 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepositoryImpl.java +++ b/src/main/java/com/postgraduate/domain/mentoring/domain/repository/MentoringDslRepositoryImpl.java @@ -25,19 +25,6 @@ public class MentoringDslRepositoryImpl implements MentoringDslRepository { private final JPAQueryFactory queryFactory; - @Override - public List findAllBySeniorId(Long seniorId) { - return queryFactory.selectFrom(mentoring) - .distinct() - .leftJoin(mentoring.senior, senior) - .fetchJoin() - .leftJoin(mentoring.user, user) - .fetchJoin() - .where(mentoring.senior.seniorId.eq(seniorId)) - .orderBy(mentoring.createdAt.desc()) - .fetch(); - } - @Override public List findAllBySeniorAndStatus(Senior inputSenior, Status status) { return queryFactory.selectFrom(mentoring) @@ -49,19 +36,6 @@ public List findAllBySeniorAndStatus(Senior inputSenior, Status statu .fetch(); } - @Override - public List findAllByUserId(Long userId) { - return queryFactory.selectFrom(mentoring) - .distinct() - .leftJoin(mentoring.senior, senior) - .fetchJoin() - .leftJoin(mentoring.senior.user, user) - .fetchJoin() - .where(mentoring.user.userId.eq(userId)) - .orderBy(mentoring.createdAt.desc()) - .fetch(); - } - @Override public List findAllByUserAndStatus(User inputUser, Status status) { return queryFactory.selectFrom(mentoring) @@ -75,18 +49,6 @@ public List findAllByUserAndStatus(User inputUser, Status status) { .fetch(); } - @Override - public Optional findByMentoringId(Long mentoringId) { - return Optional.ofNullable(queryFactory.selectFrom(mentoring) - .distinct() - .leftJoin(mentoring.senior, senior) - .fetchJoin() - .leftJoin(mentoring.user, user) - .fetchJoin() - .where(mentoring.mentoringId.eq(mentoringId)) - .fetchOne()); - } - @Override public List findAllBySeniorAndSalaryStatus(Senior senior, Boolean status) { return queryFactory.selectFrom(mentoring) diff --git a/src/main/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetService.java b/src/main/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetService.java index 83ea8eb9..0f432231 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetService.java +++ b/src/main/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetService.java @@ -63,11 +63,6 @@ public List bySeniorDone(Senior senior) { return mentoringRepository.findAllBySeniorAndStatus(senior, DONE); } - public Mentoring byMentoringId(Long mentoringId) { - return mentoringRepository.findByMentoringId(mentoringId) - .orElseThrow(MentoringNotFoundException::new); - } - public Mentoring byIdAndUserForDetails(Long mentoringId, User user) { return mentoringRepository.findByMentoringIdAndUserForDetails(mentoringId, user) .orElseThrow(MentoringNotFoundException::new); @@ -98,14 +93,6 @@ public Mentoring byIdAndSeniorAndExpected(Long mentoringId, Senior senior) { .orElseThrow(MentoringNotFoundException::new); } - public List byUserId(Long userId) { - return mentoringRepository.findAllByUserId(userId); - } - - public List bySeniorId(Long seniorId) { - return mentoringRepository.findAllBySeniorId(seniorId); - } - public List bySeniorAndSalaryTrue(Senior senior) { return mentoringRepository.findAllBySeniorAndSalaryStatus(senior, TRUE); } diff --git a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java index 2b25d9ec..d8086345 100644 --- a/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java +++ b/src/main/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateService.java @@ -16,10 +16,6 @@ public void plusTotalAmount(Salary salary, int amount) { salary.plusAmount(amount); } - public void minusTotalAmount(Salary salary, int amount) { - salary.minusAmount(amount); - } - public void updateAccount(Salary salary, SalaryAccount account) { salary.updateAccount(account); } diff --git a/src/main/java/com/postgraduate/domain/user/user/domain/repository/UserRepository.java b/src/main/java/com/postgraduate/domain/user/user/domain/repository/UserRepository.java index c24d987a..f7716d65 100644 --- a/src/main/java/com/postgraduate/domain/user/user/domain/repository/UserRepository.java +++ b/src/main/java/com/postgraduate/domain/user/user/domain/repository/UserRepository.java @@ -10,5 +10,4 @@ public interface UserRepository extends JpaRepository { List findAllByIsDelete(boolean isDelete); Optional findBySocialId(Long socialId); Optional findByNickName(String nickName); - Optional findByNickNameAndPhoneNumber(String nickName, String phoneNumber); } diff --git a/src/test/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetServiceTest.java b/src/test/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetServiceTest.java index 03641435..6562e2b9 100644 --- a/src/test/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetServiceTest.java +++ b/src/test/java/com/postgraduate/domain/mentoring/domain/service/MentoringGetServiceTest.java @@ -116,22 +116,6 @@ void bySeniorWithStatus() { assertThat(mentoringGetService.bySeniorDone(senior)) .isEqualTo(List.of(mentoring)); } - @Test - @DisplayName("mentoringId를 통해 조회 테스트") - void byMentoringId() { - given(mentoringRepository.findByMentoringId(mentoringId)) - .willReturn(ofNullable(null)); - - assertThatThrownBy(() -> mentoringGetService.byMentoringId(mentoringId)) - .isInstanceOf(MentoringNotFoundException.class); - - given(mentoringRepository.findByMentoringId(mentoringId)) - .willReturn(of(mentoring)); - - assertThat(mentoringGetService.byMentoringId(mentoringId)) - .isEqualTo(mentoring); - } - @Test @DisplayName("User 멘토링 상세 조회 테스트") void byIdAndUserForDetails() { From f0ea6f58d5222413ec50d9b6a5546c9f2942c0a9 Mon Sep 17 00:00:00 2001 From: yang Date: Wed, 7 Aug 2024 06:50:34 +0900 Subject: [PATCH 09/18] =?UTF-8?q?RAC-412=20fix=20:=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=9E=90=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=ED=99=98=EB=B6=88=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/domain/repository/AdminMentoringRepository.java | 3 ++- .../admin/domain/repository/AdminPaymentRepository.java | 4 +++- .../admin/domain/service/AdminMentoringService.java | 2 ++ .../payment/application/usecase/PaymentManageUseCase.java | 1 + src/main/resources/templates/adminPayment.html | 2 +- src/main/resources/templates/paymentMentoring.html | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java index cfb1e04a..75444592 100644 --- a/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminMentoringRepository.java @@ -54,9 +54,10 @@ public Optional findByMentoringId(Long mentoringId) { public Optional findByPaymentId(Long paymentId) { return ofNullable(queryFactory.selectFrom(mentoring) - .where(mentoring.payment.paymentId.eq(paymentId)) + .distinct() .join(mentoring.payment, payment) .fetchJoin() + .where(mentoring.payment.paymentId.eq(paymentId)) .fetchOne()); } } diff --git a/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java index 4db22b7e..aa3020a7 100644 --- a/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java +++ b/src/main/java/com/postgraduate/admin/domain/repository/AdminPaymentRepository.java @@ -20,10 +20,12 @@ public class AdminPaymentRepository { public List findAllPayment() { List fetch = queryFactory.select(payment, mentoring) + .from(payment) .distinct() .leftJoin(payment.user, user) .fetchJoin() - .leftJoin(mentoring.payment, payment) + .leftJoin(mentoring) + .on(mentoring.payment.eq(payment)) .fetchJoin() .fetch(); diff --git a/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java b/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java index 5d8887a1..cb86b49a 100644 --- a/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java +++ b/src/main/java/com/postgraduate/admin/domain/service/AdminMentoringService.java @@ -4,6 +4,7 @@ import com.postgraduate.domain.mentoring.domain.entity.Mentoring; import com.postgraduate.domain.mentoring.exception.MentoringNotFoundException; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; @@ -12,6 +13,7 @@ @RequiredArgsConstructor @Service +@Slf4j public class AdminMentoringService { private final AdminMentoringRepository adminMentoringRepository; diff --git a/src/main/java/com/postgraduate/domain/payment/application/usecase/PaymentManageUseCase.java b/src/main/java/com/postgraduate/domain/payment/application/usecase/PaymentManageUseCase.java index bceb58ea..623a608c 100644 --- a/src/main/java/com/postgraduate/domain/payment/application/usecase/PaymentManageUseCase.java +++ b/src/main/java/com/postgraduate/domain/payment/application/usecase/PaymentManageUseCase.java @@ -104,6 +104,7 @@ public void refundPayByAdmin(User user, Long paymentId) { if (user.getRole() != ADMIN) throw new RefundFailException("NOT ADMIN"); Payment payment = paymentGetService.byId(paymentId); + log.info("환불 진행 paymentId : {}", paymentId); refundPay(payment); } diff --git a/src/main/resources/templates/adminPayment.html b/src/main/resources/templates/adminPayment.html index 2215c373..d31c65d1 100644 --- a/src/main/resources/templates/adminPayment.html +++ b/src/main/resources/templates/adminPayment.html @@ -40,7 +40,7 @@ th:onclick="goToGet('/adminServer/payment/mentoring/' + this.getAttribute('paymentId'))"> 멘토링정보보기 status diff --git a/src/main/resources/templates/paymentMentoring.html b/src/main/resources/templates/paymentMentoring.html index f16bf01f..ebe1c63d 100644 --- a/src/main/resources/templates/paymentMentoring.html +++ b/src/main/resources/templates/paymentMentoring.html @@ -71,7 +71,7 @@

선배 멘티 정보

+ th:mentoringId="${mentoringInfo.mentoringId()}" th:onclick="goToPost('정말 환불하겠습니까??', '/adminServer/mentoring/refund/' + this.getAttribute('mentoringId'))">환불 및 취소
From aaad1d6bc518170170a70af6ea7ac885afa96230 Mon Sep 17 00:00:00 2001 From: yang Date: Wed, 7 Aug 2024 07:07:08 +0900 Subject: [PATCH 10/18] =?UTF-8?q?RAC-412=20fix=20:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/service/PaymentGetServiceTest.java | 11 ----- .../domain/service/SalaryGetServiceTest.java | 12 ------ .../service/SalaryUpdateServiceTest.java | 40 ------------------- .../domain/service/WishGetServiceTest.java | 25 ------------ .../com/postgraduate/support/Resource.java | 2 +- 5 files changed, 1 insertion(+), 89 deletions(-) delete mode 100644 src/test/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateServiceTest.java diff --git a/src/test/java/com/postgraduate/domain/payment/domain/service/PaymentGetServiceTest.java b/src/test/java/com/postgraduate/domain/payment/domain/service/PaymentGetServiceTest.java index 66c009fe..098adf91 100644 --- a/src/test/java/com/postgraduate/domain/payment/domain/service/PaymentGetServiceTest.java +++ b/src/test/java/com/postgraduate/domain/payment/domain/service/PaymentGetServiceTest.java @@ -93,15 +93,4 @@ void bySeniorAndOrderIdFail() { assertThatThrownBy(() -> paymentGetService.bySeniorAndOrderId(senior, orderId)) .isInstanceOf(PaymentNotFoundException.class); } - - @Test - @DisplayName("전체 조회 테스트") - void all() { - List payments = List.of(mock(Payment.class), mock(Payment.class), mock(Payment.class)); - given(paymentRepository.findAllPayment()) - .willReturn(payments); - - assertThat(paymentGetService.all()) - .hasSameSizeAs(payments); - } } \ No newline at end of file diff --git a/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryGetServiceTest.java b/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryGetServiceTest.java index 64cfc1df..a8dc1323 100644 --- a/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryGetServiceTest.java +++ b/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryGetServiceTest.java @@ -32,18 +32,6 @@ class SalaryGetServiceTest { private Salary salary = mock(Salary.class); private Senior senior = mock(Senior.class); - @Test - @DisplayName("미정산건 조회 테스트") - void allByNotDone() { - LocalDate salaryDate = SalaryUtil.getSalaryDate(); - List salaries = List.of(mock(Salary.class),mock(Salary.class),mock(Salary.class)); - given(salaryRepository.findAllByNotDoneFromLast(salaryDate)) - .willReturn(salaries); - - assertThat(salaryGetService.allByNotDone()) - .hasSameSizeAs(salaries); - } - @Test @DisplayName("salaryId를 통한 Salary 조회 테스트") void bySalaryId() { diff --git a/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateServiceTest.java b/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateServiceTest.java deleted file mode 100644 index 1ce8d735..00000000 --- a/src/test/java/com/postgraduate/domain/salary/domain/service/SalaryUpdateServiceTest.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.postgraduate.domain.salary.domain.service; - -import com.postgraduate.domain.mentoring.domain.entity.Mentoring; -import com.postgraduate.domain.salary.domain.entity.Salary; -import com.postgraduate.domain.salary.domain.entity.SalaryAccount; -import com.postgraduate.domain.senior.domain.entity.Senior; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.junit.jupiter.MockitoExtension; - -import java.time.LocalDate; -import java.time.LocalDateTime; - -import static java.lang.Boolean.FALSE; -import static java.lang.Boolean.TRUE; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; - -@ExtendWith(MockitoExtension.class) -class SalaryUpdateServiceTest { - @InjectMocks - private SalaryUpdateService salaryUpdateService; - - @Test - @DisplayName("정산 완료 테스트") - void updateStatusTRUE() { - Senior senior = mock(Senior.class); - SalaryAccount salaryAccount = new SalaryAccount("bank", "1234", "holder"); - Salary salary = new Salary(1L, FALSE, senior, 100, LocalDate.now(), LocalDateTime.now(), salaryAccount); - - salaryUpdateService.updateDone(salary); - - assertThat(salary.status()) - .isTrue(); - } -} \ No newline at end of file diff --git a/src/test/java/com/postgraduate/domain/wish/domain/service/WishGetServiceTest.java b/src/test/java/com/postgraduate/domain/wish/domain/service/WishGetServiceTest.java index 1fc0e88f..c28769c3 100644 --- a/src/test/java/com/postgraduate/domain/wish/domain/service/WishGetServiceTest.java +++ b/src/test/java/com/postgraduate/domain/wish/domain/service/WishGetServiceTest.java @@ -47,29 +47,4 @@ void byWishId() { assertThat(wishGetService.byWishId(wishId)) .isEqualTo(wish); } - - @Test - @DisplayName("UserId기반 Wish 조회 테스트") - void byUserId() { - long userId = -1l; - Wish wish = mock(Wish.class); - - given(wishRepository.findByMatchingReceiveIsTrueAndUser_UserIdAndUser_IsDeleteIsFalse(userId)) - .willReturn(Optional.of(wish)); - - assertThat(wishGetService.byUserId(userId)) - .isEqualTo(wish); - } - - @Test - @DisplayName("UserId기반 Wish 조회 예외 테스트") - void byUserIdFail() { - long userId = -1l; - - given(wishRepository.findByMatchingReceiveIsTrueAndUser_UserIdAndUser_IsDeleteIsFalse(userId)) - .willReturn(Optional.ofNullable(null)); - - assertThatThrownBy(() -> wishGetService.byUserId(userId)) - .isInstanceOf(WishNotFoundException.class); - } } \ No newline at end of file diff --git a/src/test/java/com/postgraduate/support/Resource.java b/src/test/java/com/postgraduate/support/Resource.java index 504f2429..9b77e5cc 100644 --- a/src/test/java/com/postgraduate/support/Resource.java +++ b/src/test/java/com/postgraduate/support/Resource.java @@ -35,7 +35,7 @@ public class Resource { private Senior otherSenior = new Senior(-3L, otherUser, "certification", com.postgraduate.domain.senior.domain.entity.constant.Status.WAITING, 0, 0, info, null, now(), now()); private SalaryAccount salaryAccount = new SalaryAccount("bank", "1234", "holder"); private Salary salary = new Salary(-1L, false, senior, 20000, getSalaryDate(), LocalDateTime.now(), salaryAccount); - private Payment payment = new Payment(-1L, user, senior, 20000, "1", "123", "123", LocalDateTime.now(), LocalDateTime.now(), DONE); + private Payment payment = new Payment(-1L, user, senior, 20000, "-1", "123", "123", LocalDateTime.now(), LocalDateTime.now(), DONE); private Mentoring waitingMentoring = new Mentoring(-1L, user, senior, payment, salary, "topic", "question", "date1,date2,date3", 30, WAITING, now(), now()); private Mentoring expectedMentoring = new Mentoring(-2L, user, senior, payment, salary, "topic", "question", "date", 30, EXPECTED, now(), now()); private Mentoring doneMentoring = new Mentoring(-3L, user, senior, payment, salary, "topic", "question", "2024-02-03-18-12", 30, Status.DONE, now(), now()); From 48f5c78fe3682da02885b56f5af63b33ad8ca7b3 Mon Sep 17 00:00:00 2001 From: yang Date: Thu, 8 Aug 2024 03:19:50 +0900 Subject: [PATCH 11/18] =?UTF-8?q?RAC-420=20fix=20:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20h2=20=EC=82=AC=EC=9A=A9=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 ++ src/test/java/com/postgraduate/support/IntegrationTest.java | 2 ++ 2 files changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index 394340b4..dc25cd49 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,8 @@ dependencies { testImplementation 'org.springframework.security:spring-security-test' testCompileOnly 'org.springframework.security:spring-security-test' testAnnotationProcessor 'org.springframework.security:spring-security-test' + //test + testRuntimeOnly 'com.h2database:h2' // https://mvnrepository.com/artifact/com.slack.api/slack-api-client // 슬랙 api 추가 diff --git a/src/test/java/com/postgraduate/support/IntegrationTest.java b/src/test/java/com/postgraduate/support/IntegrationTest.java index c67e22a2..4a8e2036 100644 --- a/src/test/java/com/postgraduate/support/IntegrationTest.java +++ b/src/test/java/com/postgraduate/support/IntegrationTest.java @@ -23,6 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; +import org.springframework.test.context.ActiveProfiles; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +37,7 @@ @AutoConfigureMockMvc @Transactional @Disabled +@ActiveProfiles("test") public class IntegrationTest { @Autowired From 0ede1f1399087bd28a225765c8dfd5c90df7d408 Mon Sep 17 00:00:00 2001 From: yang Date: Thu, 8 Aug 2024 03:20:13 +0900 Subject: [PATCH 12/18] =?UTF-8?q?RAC-420=20deploy=20:=20githubActions=20?= =?UTF-8?q?=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/CI-develop.yml | 8 ++++++++ .github/workflows/CI-prod.yml | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/.github/workflows/CI-develop.yml b/.github/workflows/CI-develop.yml index 05b6cb6f..f44ee9db 100644 --- a/.github/workflows/CI-develop.yml +++ b/.github/workflows/CI-develop.yml @@ -35,6 +35,14 @@ jobs: - name: Create application.yml run: | echo "${{env.APPLICATION}}" > ./src/main/resources/application.yml + + - name: Create resources directory + run: mkdir -p ./src/main/resources ./src/test/resources + + - name: Create application-test.yml + run: | + echo "${{env.APPLICATION_TEST}}" > ./src/test/resources/application-test.yml + - name: Grant execute permission for gradlew run: chmod +x gradlew working-directory: ${{ env.working-directory }} diff --git a/.github/workflows/CI-prod.yml b/.github/workflows/CI-prod.yml index 43c71476..5cc2d7a8 100644 --- a/.github/workflows/CI-prod.yml +++ b/.github/workflows/CI-prod.yml @@ -59,6 +59,13 @@ jobs: run: | echo "${{env.APPLICATION}}" > ./src/main/resources/application.yml + - name: Create resources directory + run: mkdir -p ./src/main/resources ./src/test/resources + + - name: Create application-test.yml + run: | + echo "${{env.APPLICATION_TEST}}" > ./src/test/resources/application-test.yml + - name: Grant execute permission for gradlew run: chmod +x gradlew working-directory: ${{ env.working-directory }} From 83b0bce3dd6a50fcc11ff2b29b29f390d90ba894 Mon Sep 17 00:00:00 2001 From: yang Date: Thu, 8 Aug 2024 04:48:07 +0900 Subject: [PATCH 13/18] =?UTF-8?q?RAC-412=20fix=20:=20account=20null=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/application/usecase/AdminSalaryUseCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java index d00cef92..f5fa6da9 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminSalaryUseCase.java @@ -26,7 +26,7 @@ public List salaryInfos() { List all = adminSalaryService.findAllDoneSalary(); return all.stream() .map(salary -> { - if (salary.getSenior() == null) + if (salary.getAccount() == null) return adminMapper.mapToSalaryResponse(salary); SalaryAccount account = salary.getAccount(); String accountNumber = encryptorUtils.decryptData(account.getAccountNumber()); From b464edfdae0ef360dc010ca2d19a75d38e5c5b07 Mon Sep 17 00:00:00 2001 From: yang Date: Sat, 17 Aug 2024 23:41:26 +0900 Subject: [PATCH 14/18] =?UTF-8?q?RAC-422=20feat=20:=20=ED=86=A0=ED=81=B0?= =?UTF-8?q?=20=EA=B8=B0=EB=B0=98=20=EB=A1=9C=EA=B7=B8=EC=9D=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/application/dto/req/TokenRequest.java | 4 ++++ .../application/usecase/oauth/SignInUseCase.java | 3 +++ .../oauth/kakao/KakaoAccessTokenUseCase.java | 2 +- .../usecase/oauth/kakao/KakaoSignInUseCase.java | 13 ++++++++++++- .../domain/auth/presentation/AuthController.java | 11 +++++++++++ 5 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/postgraduate/domain/auth/application/dto/req/TokenRequest.java diff --git a/src/main/java/com/postgraduate/domain/auth/application/dto/req/TokenRequest.java b/src/main/java/com/postgraduate/domain/auth/application/dto/req/TokenRequest.java new file mode 100644 index 00000000..571a9019 --- /dev/null +++ b/src/main/java/com/postgraduate/domain/auth/application/dto/req/TokenRequest.java @@ -0,0 +1,4 @@ +package com.postgraduate.domain.auth.application.dto.req; + +public record TokenRequest(String accessToken) { +} diff --git a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/SignInUseCase.java b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/SignInUseCase.java index 5e31060e..08bd8552 100644 --- a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/SignInUseCase.java +++ b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/SignInUseCase.java @@ -1,10 +1,13 @@ package com.postgraduate.domain.auth.application.usecase.oauth; import com.postgraduate.domain.auth.application.dto.req.CodeRequest; +import com.postgraduate.domain.auth.application.dto.req.TokenRequest; import com.postgraduate.domain.auth.application.dto.res.AuthUserResponse; public interface SignInUseCase { AuthUserResponse getUser(CodeRequest request); AuthUserResponse getDevUser(CodeRequest codeRequest); + + AuthUserResponse getUserWithToken(TokenRequest request); } \ No newline at end of file diff --git a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoAccessTokenUseCase.java b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoAccessTokenUseCase.java index 2e4165b6..cfdb3096 100644 --- a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoAccessTokenUseCase.java +++ b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoAccessTokenUseCase.java @@ -78,7 +78,7 @@ private KakaoUserInfoResponse getKakaoUserInfoResponse(MultiValueMap> authLoginWithToken(@RequestBody @Valid TokenRequest request, @PathVariable Provider provider) { + SignInUseCase signInUseCase = selectOauth.selectSignIn(provider); + AuthUserResponse authUser = signInUseCase.getUserWithToken(request); + if (authUser.user() == null) + return ResponseEntity.ok(create(AUTH_NONE.getCode(), NOT_REGISTERED_USER.getMessage(), authUser)); + JwtTokenResponse jwtToken = jwtUseCase.signIn(authUser.user()); + return ResponseEntity.ok(create(AUTH_ALREADY.getCode(), SUCCESS_AUTH.getMessage(), jwtToken)); + } + @PostMapping("/login/{provider}") @Operation(summary = "소셜 로그인", description = "회원인 경우 JWT를, 회원이 아닌 경우 socialId를 반환합니다(회원가입은 진행하지 않습니다).") public ResponseEntity> authLogin(@RequestBody @Valid CodeRequest request, @PathVariable Provider provider) { From a8b62557452b0d36919d8b60519e444062c3455f Mon Sep 17 00:00:00 2001 From: yang Date: Sat, 17 Aug 2024 23:41:45 +0900 Subject: [PATCH 15/18] =?UTF-8?q?RAC-422=20fix=20:=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EC=8B=9C=20=EC=95=8C=EB=A6=BC=ED=86=A1=20=EC=A0=84?= =?UTF-8?q?=EC=86=A1=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/bizppurio/application/usecase/BizppurioSend.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/com/postgraduate/global/bizppurio/application/usecase/BizppurioSend.java b/src/main/java/com/postgraduate/global/bizppurio/application/usecase/BizppurioSend.java index 0fb1e695..b6a77634 100644 --- a/src/main/java/com/postgraduate/global/bizppurio/application/usecase/BizppurioSend.java +++ b/src/main/java/com/postgraduate/global/bizppurio/application/usecase/BizppurioSend.java @@ -22,11 +22,16 @@ public class BizppurioSend { private final ObjectMapper objectMapper; private final WebClient webClient; private final SlackErrorMessage slackErrorMessage; + private static final String DEV = "DEV"; @Value("${bizppurio.message}") private String messageUrl; + @Value("${bizppurio.status}") + private String status; protected void sendMessageWithExceptionHandling(Supplier messageSupplier) { + if (status.equals(DEV)) + return; try { CommonRequest commonRequest = messageSupplier.get(); String accessToken = bizppurioAuth.getAuth(); From d139fff83c936b872b55f36756b800db1245f436 Mon Sep 17 00:00:00 2001 From: yang Date: Sun, 18 Aug 2024 03:05:43 +0900 Subject: [PATCH 16/18] =?UTF-8?q?RAC-419=20fix=20:=20=EB=B0=B0=EC=B9=98=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../batch/scheduler/JobSchedulerConfig.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/postgraduate/batch/scheduler/JobSchedulerConfig.java b/src/main/java/com/postgraduate/batch/scheduler/JobSchedulerConfig.java index a2c675ac..8d1bb716 100644 --- a/src/main/java/com/postgraduate/batch/scheduler/JobSchedulerConfig.java +++ b/src/main/java/com/postgraduate/batch/scheduler/JobSchedulerConfig.java @@ -27,6 +27,8 @@ public class JobSchedulerConfig { private final Job doneJob; @Qualifier("salaryJob") private final Job salaryJob; + @Qualifier("salaryJobWithAdmin") + private final Job salaryJobWithAdmin; @Scheduled(cron = "0 59 23 * * *", zone = "Asia/Seoul") public void launchCancelJob() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException { @@ -36,7 +38,7 @@ public void launchCancelJob() throws JobInstanceAlreadyCompleteException, JobExe jobLauncher.run(cancelJob, jobParameters); } - @Scheduled(cron = "0 59 23 * * *", zone = "Asia/Seoul") + @Scheduled(cron = "0 58 23 * * *", zone = "Asia/Seoul") public void launchDoneJob() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException { JobParameters jobParameters = new JobParametersBuilder() .addLocalDateTime("date", LocalDateTime.now()) @@ -44,11 +46,18 @@ public void launchDoneJob() throws JobInstanceAlreadyCompleteException, JobExecu jobLauncher.run(doneJob, jobParameters); } - @Scheduled(cron = "0 0 0 * * 4", zone = "Asia/Seoul") + @Scheduled(cron = "0 10 0 * * 4", zone = "Asia/Seoul") public void launchSalaryJob() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException { JobParameters jobParameters = new JobParametersBuilder() .addLocalDateTime("date", LocalDateTime.now()) .toJobParameters(); jobLauncher.run(salaryJob, jobParameters); } + + public void launchSalaryJobWithAdmin() throws JobInstanceAlreadyCompleteException, JobExecutionAlreadyRunningException, JobParametersInvalidException, JobRestartException { + JobParameters jobParameters = new JobParametersBuilder() + .addLocalDateTime("date", LocalDateTime.now()) + .toJobParameters(); + jobLauncher.run(salaryJobWithAdmin, jobParameters); + } } From 3486aa7d06b25a6c7a9e6778686dd202936244d0 Mon Sep 17 00:00:00 2001 From: yang Date: Sun, 18 Aug 2024 03:06:06 +0900 Subject: [PATCH 17/18] =?UTF-8?q?RAC-419=20fix=20:=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=9E=90=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A0=95=EC=82=B0=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=8B=9C=20=EC=8A=AC=EB=9E=99=20=EC=95=8C?= =?UTF-8?q?=EB=A6=BC=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/application/usecase/AdminBatchUseCase.java | 2 +- .../postgraduate/batch/salary/CreateSalaryJobConfig.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/postgraduate/admin/application/usecase/AdminBatchUseCase.java b/src/main/java/com/postgraduate/admin/application/usecase/AdminBatchUseCase.java index 04aff989..ff3d6c1a 100644 --- a/src/main/java/com/postgraduate/admin/application/usecase/AdminBatchUseCase.java +++ b/src/main/java/com/postgraduate/admin/application/usecase/AdminBatchUseCase.java @@ -13,7 +13,7 @@ public class AdminBatchUseCase { public void startSalaryBatch() { try { - jobSchedulerConfig.launchSalaryJob(); + jobSchedulerConfig.launchSalaryJobWithAdmin(); } catch (Exception e) { log.error("Create Salary Batch Exception : {}", e.getStackTrace()); } diff --git a/src/main/java/com/postgraduate/batch/salary/CreateSalaryJobConfig.java b/src/main/java/com/postgraduate/batch/salary/CreateSalaryJobConfig.java index b129cf5e..10432bb7 100644 --- a/src/main/java/com/postgraduate/batch/salary/CreateSalaryJobConfig.java +++ b/src/main/java/com/postgraduate/batch/salary/CreateSalaryJobConfig.java @@ -50,6 +50,13 @@ public Job salaryJob() { .build(); } + @Bean(name = "salaryJobWithAdmin") + public Job salaryJobWithAdmin() { + return new JobBuilder("salaryJobWithAdmin", jobRepository) + .start(createSalaryStep()) + .build(); + } + @Bean(name = "sendSlackStep") public Step sendSlackStep() { return new StepBuilder("sendSlackStep", jobRepository) From e4be6f5da2a180c06daa7e108669e8bbbe388957 Mon Sep 17 00:00:00 2001 From: yang Date: Sun, 18 Aug 2024 03:11:37 +0900 Subject: [PATCH 18/18] =?UTF-8?q?RAC-419=20fix=20:=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EB=A1=9C=EA=B7=B8=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/usecase/oauth/kakao/KakaoSignInUseCase.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoSignInUseCase.java b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoSignInUseCase.java index b7188a12..e818c0d1 100644 --- a/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoSignInUseCase.java +++ b/src/main/java/com/postgraduate/domain/auth/application/usecase/oauth/kakao/KakaoSignInUseCase.java @@ -13,14 +13,12 @@ import com.postgraduate.domain.user.user.exception.UserNotFoundException; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @Transactional -@Slf4j public class KakaoSignInUseCase implements SignInUseCase { private final KakaoAccessTokenUseCase kakaoTokenUseCase; private final UserGetService userGetService; @@ -41,7 +39,6 @@ public AuthUserResponse getDevUser(CodeRequest codeRequest) { @Override public AuthUserResponse getUserWithToken(TokenRequest request) { KakaoUserInfoResponse userInfo = kakaoTokenUseCase.getUserInfo(request.accessToken()); - log.info("user : {}", userInfo.id()); return getAuthUserResponse(userInfo); } @@ -50,7 +47,6 @@ private AuthUserResponse getAuthUserResponse(KakaoUserInfoResponse userInfo) { Long socialId = userInfo.id(); try { User user = userGetService.bySocialId(socialId); - log.info("check user {} ", user.getUserId()); checkDelete(user); return AuthMapper.mapToAuthUser(user, socialId); } catch (UserNotFoundException e) {