This commit is contained in:
ondal 2025-02-13 15:45:03 +09:00
parent 11a49c33a8
commit ba3405bff3
29 changed files with 35 additions and 10 deletions

Binary file not shown.

View File

@ -25,7 +25,7 @@ jwt:
access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000} access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000}
refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:86400000} refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:86400000}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
springdoc: springdoc:
swagger-ui: swagger-ui:

View File

@ -25,7 +25,7 @@ jwt:
access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000} access-token-validity: ${JWT_ACCESS_TOKEN_VALIDITY:3600000}
refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:86400000} refresh-token-validity: ${JWT_REFRESH_TOKEN_VALIDITY:86400000}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
springdoc: springdoc:
swagger-ui: swagger-ui:

View File

@ -6,6 +6,7 @@ import lombok.Getter;
@Getter @Getter
@Builder @Builder
public class MySubResponse { public class MySubResponse {
private final Long id;
private final String serviceName; private final String serviceName;
private final String logoUrl; private final String logoUrl;
} }

View File

@ -9,6 +9,7 @@ import com.unicorn.lifesub.mysub.biz.usecase.out.*;
import com.unicorn.lifesub.common.exception.BusinessException; import com.unicorn.lifesub.common.exception.BusinessException;
import com.unicorn.lifesub.common.exception.ErrorCode; import com.unicorn.lifesub.common.exception.ErrorCode;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -48,6 +49,7 @@ public class MySubscriptionService implements
public List<MySubResponse> getMySubscriptions(String userId) { public List<MySubResponse> getMySubscriptions(String userId) {
return mySubscriptionReader.findByUserId(userId).stream() return mySubscriptionReader.findByUserId(userId).stream()
.map(subscription -> MySubResponse.builder() .map(subscription -> MySubResponse.builder()
.id(subscription.getSubscription().getId())
.serviceName(subscription.getSubscription().getName()) .serviceName(subscription.getSubscription().getName())
.logoUrl(subscription.getSubscription().getLogoUrl()) .logoUrl(subscription.getSubscription().getLogoUrl())
.build()) .build())
@ -111,9 +113,13 @@ public class MySubscriptionService implements
.collect(Collectors.toList()); .collect(Collectors.toList());
} }
@Value("${fee.level.collector}")
private long collectorThreshold;
@Value("${fee.level.addict}")
private long addictThreshold;
private String calculateFeeLevel(long totalFee) { private String calculateFeeLevel(long totalFee) {
if (totalFee < 100000) return FeeLevel.LIKFER.getFeeLevel(); if (totalFee < collectorThreshold) return FeeLevel.LIKFER.getFeeLevel();
if (totalFee < 200000) return FeeLevel.COLLECTOR.getFeeLevel(); if (totalFee < addictThreshold) return FeeLevel.COLLECTOR.getFeeLevel();
return FeeLevel.ADDICT.getFeeLevel(); return FeeLevel.ADDICT.getFeeLevel();
} }
} }

View File

@ -22,7 +22,13 @@ spring:
jwt: jwt:
secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ} secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
# 총구독료에 따른 구독서비스 사용 레벨 기준 금액
fee:
level:
collector: ${FEE_LEVEL_COLLECTOR:50000}
addict: ${FEE_LEVEL_ADDICT:100000}
springdoc: springdoc:
swagger-ui: swagger-ui:

View File

@ -11,6 +11,7 @@ import com.unicorn.lifesub.mysub.infra.gateway.repository.MySubscriptionJpaRepos
import com.unicorn.lifesub.mysub.infra.gateway.repository.SubscriptionJpaRepository; import com.unicorn.lifesub.mysub.infra.gateway.repository.SubscriptionJpaRepository;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
@ -49,7 +50,10 @@ public class MySubscriptionGateway implements MySubscriptionReader, MySubscripti
} }
@Override @Override
public void delete(Long id) { @Transactional
mySubscriptionRepository.deleteById(id); public void delete(Long subscriptionId) {
MySubscriptionEntity entity = mySubscriptionRepository.findBySubscription_Id(subscriptionId)
.orElseThrow(() -> new BusinessException(ErrorCode.SUBSCRIPTION_NOT_FOUND));
mySubscriptionRepository.delete(entity);
} }
} }

View File

@ -3,7 +3,9 @@ package com.unicorn.lifesub.mysub.infra.gateway.repository;
import com.unicorn.lifesub.mysub.infra.gateway.entity.MySubscriptionEntity; import com.unicorn.lifesub.mysub.infra.gateway.entity.MySubscriptionEntity;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List; import java.util.List;
import java.util.Optional;
public interface MySubscriptionJpaRepository extends JpaRepository<MySubscriptionEntity, Long> { public interface MySubscriptionJpaRepository extends JpaRepository<MySubscriptionEntity, Long> {
List<MySubscriptionEntity> findByUserId(String userId); List<MySubscriptionEntity> findByUserId(String userId);
Optional<MySubscriptionEntity> findBySubscription_Id(Long subscriptionId);
} }

View File

@ -22,7 +22,13 @@ spring:
jwt: jwt:
secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ} secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
# 총구독료에 따른 구독서비스 사용 레벨 기준 금액
fee:
level:
collector: ${FEE_LEVEL_COLLECTOR:50000}
addict: ${FEE_LEVEL_ADDICT:100000}
springdoc: springdoc:
swagger-ui: swagger-ui:

View File

@ -22,7 +22,7 @@ spring:
jwt: jwt:
secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ} secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
springdoc: springdoc:
swagger-ui: swagger-ui:

View File

@ -22,7 +22,7 @@ spring:
jwt: jwt:
secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ} secret-key: ${JWT_SECRET_KEY:8O2HQ13etL2BWZvYOiWsJ5uWFoLi6NBUG8divYVoCgtHVvlk3dqRksMl16toztDUeBTSIuOOPvHIrYq11G2BwQ}
allowed-origins: ${ALLOWED_ORIGINS:*} allowed-origins: ${ALLOWED_ORIGINS:http://localhost:3000}
springdoc: springdoc:
swagger-ui: swagger-ui: