diff --git a/.github/issu_template.md b/.github/ISSUE_TEMPLATE/issue_template.md similarity index 51% rename from .github/issu_template.md rename to .github/ISSUE_TEMPLATE/issue_template.md index 571cea6..9def24b 100644 --- a/.github/issu_template.md +++ b/.github/ISSUE_TEMPLATE/issue_template.md @@ -1,5 +1,5 @@ ## 변경사항 - 내용을 적어주세요. -## 상세내용 -- 내용을 적어주세요. \ No newline at end of file +## TODO +- [ ] Todo1 diff --git a/src/main/java/com/tradin/common/exception/GlobalExceptionHandler.java b/src/main/java/com/tradin/common/exception/GlobalExceptionHandler.java index 2fdbe43..b7f9063 100644 --- a/src/main/java/com/tradin/common/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/tradin/common/exception/GlobalExceptionHandler.java @@ -1,6 +1,6 @@ package com.tradin.common.exception; -import com.tradin.common.response.ApiResponse; +import com.tradin.common.response.TradinResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; @@ -11,15 +11,17 @@ public class GlobalExceptionHandler { @ExceptionHandler(TradinException.class) - protected ResponseEntity> handleTradinException(TradinException e) { + protected ResponseEntity> handleTradinException(TradinException e) { log.error("TradinException: {}", e.getMessage(), e); - return new ResponseEntity<>(ApiResponse.error(e.getErrorType(), e.getData()), e.getErrorType().getHttpStatus()); + return new ResponseEntity<>( + TradinResponse.error(e.getErrorType(), e.getData()), e.getErrorType().getHttpStatus()); } @ExceptionHandler(Exception.class) - protected ResponseEntity> handleAllExceptions(Exception e) { + protected ResponseEntity> handleAllExceptions(Exception e) { log.error("Exception: {}", e.getMessage(), e); - return new ResponseEntity<>(ApiResponse.error(ExceptionType.INTERNAL_SERVER_ERROR_EXCEPTION, e.getMessage()), ExceptionType.INTERNAL_SERVER_ERROR_EXCEPTION.getHttpStatus()); + return new ResponseEntity<>( + TradinResponse.error(ExceptionType.INTERNAL_SERVER_ERROR_EXCEPTION, e.getMessage()), ExceptionType.INTERNAL_SERVER_ERROR_EXCEPTION.getHttpStatus()); } } diff --git a/src/main/java/com/tradin/common/response/ApiResponse.java b/src/main/java/com/tradin/common/response/ApiResponse.java deleted file mode 100644 index 79a5c3a..0000000 --- a/src/main/java/com/tradin/common/response/ApiResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.tradin.common.response; - - -import com.tradin.common.exception.ExceptionMessage; -import com.tradin.common.exception.ExceptionType; -import lombok.Getter; - -@Getter -public class ApiResponse { - - private final ResultType result; - - private final S data; - - private final ExceptionMessage error; - - private ApiResponse(ResultType result, S data, ExceptionMessage error) { - this.result = result; - this.data = data; - this.error = error; - } - - public static ApiResponse success() { - return new ApiResponse<>(ResultType.SUCCESS, null, null); - } - - public static ApiResponse success(S data) { - return new ApiResponse<>(ResultType.SUCCESS, data, null); - } - - public static ApiResponse error(ExceptionType error) { - return new ApiResponse<>(ResultType.ERROR, null, new ExceptionMessage(error)); - } - - public static ApiResponse error(ExceptionType error, Object errorData) { - return new ApiResponse<>(ResultType.ERROR, null, new ExceptionMessage(error, errorData)); - } -} diff --git a/src/main/java/com/tradin/common/response/TradinResponse.java b/src/main/java/com/tradin/common/response/TradinResponse.java new file mode 100644 index 0000000..4013380 --- /dev/null +++ b/src/main/java/com/tradin/common/response/TradinResponse.java @@ -0,0 +1,38 @@ +package com.tradin.common.response; + + +import com.tradin.common.exception.ExceptionMessage; +import com.tradin.common.exception.ExceptionType; +import lombok.Getter; + +@Getter +public class TradinResponse { + + private final ResultType result; + + private final S data; + + private final ExceptionMessage error; + + private TradinResponse(ResultType result, S data, ExceptionMessage error) { + this.result = result; + this.data = data; + this.error = error; + } + + public static TradinResponse success() { + return new TradinResponse<>(ResultType.SUCCESS, null, null); + } + + public static TradinResponse success(S data) { + return new TradinResponse<>(ResultType.SUCCESS, data, null); + } + + public static TradinResponse error(ExceptionType error) { + return new TradinResponse<>(ResultType.ERROR, null, new ExceptionMessage(error)); + } + + public static TradinResponse error(ExceptionType error, Object errorData) { + return new TradinResponse<>(ResultType.ERROR, null, new ExceptionMessage(error, errorData)); + } +} diff --git a/src/main/java/com/tradin/module/strategy/controller/StrategyApi.java b/src/main/java/com/tradin/module/strategy/controller/StrategyApi.java new file mode 100644 index 0000000..c96e35a --- /dev/null +++ b/src/main/java/com/tradin/module/strategy/controller/StrategyApi.java @@ -0,0 +1,26 @@ +package com.tradin.module.strategy.controller; + +import com.tradin.common.response.TradinResponse; +import com.tradin.module.strategy.controller.dto.response.FindStrategiesInfoResponseDto; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; + + +@Tag(name = "전략", description = "전략 관련 API") +public interface StrategyApi { + + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "성공") + }) + @Operation(summary = "선물 전략 조회") + TradinResponse findFutureStrategiesInfos(); + + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "성공") + }) + @Operation(summary = "현물 전략 조회") + FindStrategiesInfoResponseDto findSpotStrategiesInfos(); + +} diff --git a/src/main/java/com/tradin/module/strategy/controller/StrategyController.java b/src/main/java/com/tradin/module/strategy/controller/StrategyController.java index 036f79c..beaf38d 100644 --- a/src/main/java/com/tradin/module/strategy/controller/StrategyController.java +++ b/src/main/java/com/tradin/module/strategy/controller/StrategyController.java @@ -1,91 +1,44 @@ package com.tradin.module.strategy.controller; -import com.tradin.common.annotation.DisableAuthInSwagger; -import com.tradin.module.strategy.controller.dto.request.SubscribeStrategyRequestDto; -import com.tradin.module.strategy.controller.dto.request.UnSubscribeStrategyRequestDto; -import com.tradin.module.strategy.controller.dto.request.WebHookRequestDto; +import com.tradin.common.response.TradinResponse; import com.tradin.module.strategy.controller.dto.response.FindStrategiesInfoResponseDto; -import com.tradin.module.strategy.controller.dto.response.FindSubscriptionStrategiesInfoResponseDto; import com.tradin.module.strategy.service.StrategyService; -import io.swagger.v3.oas.annotations.Operation; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.kafka.annotation.KafkaListener; -import org.springframework.web.bind.annotation.*; - -import jakarta.validation.Valid; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor @RequestMapping("/v1/strategies") -@Slf4j -public class StrategyController { +public class StrategyController implements StrategyApi { private final StrategyService strategyService; -// @KafkaListener(topics = "tradin", groupId = "trading-strategy-executors") -// public void test(@RequestBody WebHookRequestDto request) { -// strategyService.handleFutureWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "future-short-term-v1", groupId = "trading-strategy-executors") -// public void handleFutureShortTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleFutureWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "future-mid-term-v1", groupId = "trading-strategy-executors") -// public void handleFutureMidTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleFutureWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "future-long-term-v1", groupId = "trading-strategy-executors") -// public void handleFutureLongTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleFutureWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "spot-short-term-v1", groupId = "trading-strategy-executors") -// public void handleSpotShortTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleSpotWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "spot-mid-term-v1", groupId = "trading-strategy-executors") -// public void handleSpotMidTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleSpotWebHook(request.toServiceDto()); -// } -// -// @KafkaListener(topics = "spot-long-term-v1", groupId = "trading-strategy-executors") -// public void handleSpotLongTermV1WebHook(@RequestBody WebHookRequestDto request) { -// strategyService.handleSpotWebHook(request.toServiceDto()); -// } - - @Operation(summary = "선물 전략 전체 조회") - @DisableAuthInSwagger @GetMapping("/future") - public FindStrategiesInfoResponseDto findFutureStrategiesInfos() { - return strategyService.findFutureStrategiesInfo(); + public TradinResponse findFutureStrategiesInfos() { + return TradinResponse.success(strategyService.findFutureStrategiesInfo()); } - @Operation(summary = "현물 전략 전체 조회") - @DisableAuthInSwagger @GetMapping("/spot") public FindStrategiesInfoResponseDto findSpotStrategiesInfos() { return strategyService.findSpotStrategiesInfo(); } - @Operation(summary = "선물 전략 구독 리스트") - @GetMapping("/subscriptions") - public FindSubscriptionStrategiesInfoResponseDto findSubscriptionStrategiesInfos() { - return strategyService.findSubscriptionStrategiesInfo(); - } - - @Operation(summary = "선물 전략 구독") - @PostMapping("/{id}/subscriptions") - public void subscribe(@Valid @RequestBody SubscribeStrategyRequestDto request, @PathVariable Long id) { - strategyService.subscribeStrategy(request.toServiceDto(id)); - } - - @Operation(summary = "선물 전략 구독 취소") - @PatchMapping("/unsubscriptions") - public void unsubscribe(@Valid @RequestBody UnSubscribeStrategyRequestDto request) { - strategyService.unsubscribeStrategy(request.toServiceDto()); - } +// @Operation(summary = "선물 전략 구독 리스트") +// @GetMapping("/subscriptions") +// public FindSubscriptionStrategiesInfoResponseDto findSubscriptionStrategiesInfos() { +// return strategyService.findSubscriptionStrategiesInfo(); +// } +// +// @Operation(summary = "선물 전략 구독") +// @PostMapping("/{id}/subscriptions") +// public void subscribe(@Valid @RequestBody SubscribeStrategyRequestDto request, @PathVariable Long id) { +// strategyService.subscribeStrategy(request.toServiceDto(id)); +// } +// +// @Operation(summary = "선물 전략 구독 취소") +// @PatchMapping("/unsubscriptions") +// public void unsubscribe(@Valid @RequestBody UnSubscribeStrategyRequestDto request) { +// strategyService.unsubscribeStrategy(request.toServiceDto()); +// } } diff --git a/src/main/java/com/tradin/module/strategy/controller/dto/response/FindStrategiesInfoResponseDto.java b/src/main/java/com/tradin/module/strategy/controller/dto/response/FindStrategiesInfoResponseDto.java index d4b1e42..dc8e08a 100644 --- a/src/main/java/com/tradin/module/strategy/controller/dto/response/FindStrategiesInfoResponseDto.java +++ b/src/main/java/com/tradin/module/strategy/controller/dto/response/FindStrategiesInfoResponseDto.java @@ -1,13 +1,14 @@ package com.tradin.module.strategy.controller.dto.response; import com.tradin.module.strategy.domain.repository.dao.StrategyInfoDao; -import lombok.AllArgsConstructor; -import lombok.Getter; - +import io.swagger.v3.oas.annotations.media.Schema; import java.util.List; -@AllArgsConstructor -@Getter -public class FindStrategiesInfoResponseDto { - private final List strategiesInfo; -} + +public record FindStrategiesInfoResponseDto ( + @Schema(description = "전략 리스트") List strategiesInfos +) { + public static FindStrategiesInfoResponseDto of(List strategiesInfos) { + return new FindStrategiesInfoResponseDto(strategiesInfos); + } +} \ No newline at end of file diff --git a/src/main/java/com/tradin/module/strategy/domain/repository/dao/StrategyInfoDao.java b/src/main/java/com/tradin/module/strategy/domain/repository/dao/StrategyInfoDao.java index b37e0cf..cc64c1f 100644 --- a/src/main/java/com/tradin/module/strategy/domain/repository/dao/StrategyInfoDao.java +++ b/src/main/java/com/tradin/module/strategy/domain/repository/dao/StrategyInfoDao.java @@ -4,62 +4,34 @@ import com.tradin.module.strategy.domain.CoinType; import com.tradin.module.strategy.domain.TradingType; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Getter; - import java.time.LocalDateTime; -@Getter -public class StrategyInfoDao { - private final Long id; - private final String name; - - @Schema(description = "코인명", example = "BITCOIN") - private final CoinType coinType; - - @Schema(description = "수익팩터") - private final double profitFactor; - - @Schema(description = "승률") - private final double winningRate; - - @Schema(description = "단리 기준 수익률") - private final double simpleProfitRate; - - @Schema(description = "복리 기준 수익률 -> 누적 손익률") - private final double compoundProfitRate; - - @Schema(description = "총 수익률(수익율+손실율 아님)") - private final double totalProfitRate; - - @Schema(description = "총 손실률") - private final double totalLossRate; - - @Schema(description = "평균 수익률") - private final double averageProfitRate; - - @Schema(description = "총 거래 횟수") - private final int totalTradeCount; - - @Schema(description = "승리 횟수") - private final int winCount; - - @Schema(description = "패배 횟수") - private final int lossCount; - - @Schema(description = "거래 타입", example = "LONG") - private final TradingType tradingType; - - @Schema(description = "진입 시간") - private final LocalDateTime time; - - @Schema(description = "진입 가격") - private final int price; - - @Schema(description = "평균 봉 수") - private final int averageHoldingPeriod; +@Schema(description = "전략 정보") +public record StrategyInfoDao( + @Schema(description = "전략Id", example = "1") Long id, + @Schema(description = "전략명", example = "Strategy-1") String name, + @Schema(description = "코인명", example = "BITCOIN") CoinType coinType, + @Schema(description = "수익팩터") double profitFactor, + @Schema(description = "승률") double winningRate, + @Schema(description = "단리 기준 수익률") double simpleProfitRate, + @Schema(description = "복리 기준 수익률 -> 누적 손익률") double compoundProfitRate, + @Schema(description = "총 수익률(수익율+손실율 아님)") double totalProfitRate, + @Schema(description = "총 손실률") double totalLossRate, + @Schema(description = "평균 수익률") double averageProfitRate, + @Schema(description = "총 거래 횟수") int totalTradeCount, + @Schema(description = "승리 횟수") int winCount, + @Schema(description = "패배 횟수") int lossCount, + @Schema(description = "거래 타입", example = "LONG") TradingType tradingType, + @Schema(description = "진입 시간") LocalDateTime time, + @Schema(description = "진입 가격") int price, + @Schema(description = "평균 봉 수") int averageHoldingPeriod) { @QueryProjection - public StrategyInfoDao(Long id, String name, CoinType coinType, double profitFactor, double winningRate, double simpleProfitRate, double compoundProfitRate, double totalProfitRate, double totalLossRate, double averageProfitRate, int totalTradeCount, int winCount, int lossCount, TradingType tradingType, LocalDateTime time, int price, int averageHoldingPeriod) { + public StrategyInfoDao(Long id, String name, CoinType coinType, double profitFactor, + double winningRate, double simpleProfitRate, double compoundProfitRate, + double totalProfitRate, double totalLossRate, double averageProfitRate, int totalTradeCount, + int winCount, int lossCount, TradingType tradingType, LocalDateTime time, int price, + int averageHoldingPeriod) { this.id = id; this.name = name; this.coinType = coinType; diff --git a/src/main/java/com/tradin/module/strategy/implement/StrategyReader.java b/src/main/java/com/tradin/module/strategy/implement/StrategyReader.java new file mode 100644 index 0000000..9193254 --- /dev/null +++ b/src/main/java/com/tradin/module/strategy/implement/StrategyReader.java @@ -0,0 +1,42 @@ +package com.tradin.module.strategy.implement; + +import com.tradin.common.exception.ExceptionType; +import com.tradin.common.exception.TradinException; +import com.tradin.module.strategy.domain.Strategy; +import com.tradin.module.strategy.domain.repository.StrategyRepository; +import com.tradin.module.strategy.domain.repository.dao.StrategyInfoDao; +import com.tradin.module.strategy.domain.repository.dao.SubscriptionStrategyInfoDao; +import java.util.Collections; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class StrategyReader { + private final StrategyRepository strategyRepository; + + public List findFutureStrategyInfoDaos() { + return strategyRepository.findFutureStrategiesInfoDao(); + } + + public List findSpotStrategyInfoDaos() { + return strategyRepository.findSpotStrategiesInfoDao(); + } + + public List findSubscriptionStrategyInfoDaos() { + return strategyRepository.findSubscriptionStrategiesInfoDao() + .orElse(Collections.emptyList()); + } + + public Strategy findByName(String name) { + return strategyRepository.findByName(name) + .orElseThrow(() -> new TradinException(ExceptionType.NOT_FOUND_STRATEGY_EXCEPTION)); + } + + + public Strategy findById(Long id) { + return strategyRepository.findById(id) + .orElseThrow(() -> new TradinException(ExceptionType.NOT_FOUND_STRATEGY_EXCEPTION)); + } +} diff --git a/src/main/java/com/tradin/module/strategy/service/StrategyService.java b/src/main/java/com/tradin/module/strategy/service/StrategyService.java index b6dcaf4..65347fa 100644 --- a/src/main/java/com/tradin/module/strategy/service/StrategyService.java +++ b/src/main/java/com/tradin/module/strategy/service/StrategyService.java @@ -3,7 +3,6 @@ import static com.tradin.common.exception.ExceptionType.NOT_SUBSCRIBED_STRATEGY_EXCEPTION; import static com.tradin.module.strategy.domain.TradingType.LONG; -import com.tradin.common.exception.ExceptionType; import com.tradin.common.exception.TradinException; import com.tradin.common.utils.AESUtils; import com.tradin.module.feign.service.BinanceFeignService; @@ -13,16 +12,15 @@ import com.tradin.module.strategy.domain.Position; import com.tradin.module.strategy.domain.Strategy; import com.tradin.module.strategy.domain.TradingType; -import com.tradin.module.strategy.domain.repository.StrategyRepository; import com.tradin.module.strategy.domain.repository.dao.StrategyInfoDao; import com.tradin.module.strategy.domain.repository.dao.SubscriptionStrategyInfoDao; +import com.tradin.module.strategy.implement.StrategyReader; import com.tradin.module.strategy.service.dto.UnSubscribeStrategyDto; import com.tradin.module.strategy.service.dto.WebHookDto; import com.tradin.module.trade.service.TradeService; import com.tradin.module.users.domain.Users; import com.tradin.module.users.service.UsersService; import com.tradin.module.users.service.dto.SubscribeStrategyDto; -import java.util.Collections; import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -38,32 +36,17 @@ public class StrategyService { private final BinanceFeignService binanceFeignService; private final UsersService userService; private final TradeService tradeService; - private final StrategyRepository strategyRepository; private final AESUtils aesUtils; + private final StrategyReader strategyReader; - public void handleFutureWebHook(WebHookDto request) { - Strategy strategy = findByName(request.getName()); - String strategyName = strategy.getName(); - TradingType strategyCurrentPosition = strategy.getCurrentPosition().getTradingType(); - -// autoTrading(strategyName, strategyCurrentPosition); - closeOngoingHistory(strategy, request.getPosition()); - createNewHistory(strategy, request.getPosition()); - evictHistoryCache(strategy.getId()); - updateStrategyMetaData(strategy, request.getPosition()); + public FindStrategiesInfoResponseDto findFutureStrategiesInfo() { + List strategiesInfo = strategyReader.findFutureStrategyInfoDaos(); + return FindStrategiesInfoResponseDto.of(strategiesInfo); } - public void handleSpotWebHook(WebHookDto request) { - Strategy strategy = findByName(request.getName()); - - if (webHookTradingType(request) == LONG) { - createNewHistory(strategy, request.getPosition()); - return; - } - - closeOngoingHistory(strategy, request.getPosition()); - evictHistoryCache(strategy.getId()); - updateStrategyMetaData(strategy, request.getPosition()); + public FindStrategiesInfoResponseDto findSpotStrategiesInfo() { + List strategiesInfo = strategyReader.findSpotStrategyInfoDaos(); + return FindStrategiesInfoResponseDto.of(strategiesInfo); } private static TradingType webHookTradingType(WebHookDto request) { @@ -71,24 +54,14 @@ private static TradingType webHookTradingType(WebHookDto request) { } public FindSubscriptionStrategiesInfoResponseDto findSubscriptionStrategiesInfo() { - List subscriptionStrategyInfo = findSubscriptionStrategyInfoDaos(); + List subscriptionStrategyInfo = strategyReader.findSubscriptionStrategyInfoDaos(); return new FindSubscriptionStrategiesInfoResponseDto(subscriptionStrategyInfo); } - public FindStrategiesInfoResponseDto findFutureStrategiesInfo() { - List strategiesInfo = findFutureStrategyInfoDaos(); - return new FindStrategiesInfoResponseDto(strategiesInfo); - } - - public FindStrategiesInfoResponseDto findSpotStrategiesInfo() { - List strategiesInfo = findSpotStrategyInfoDaos(); - return new FindStrategiesInfoResponseDto(strategiesInfo); - } - public void subscribeStrategy(SubscribeStrategyDto request) { Users savedUser = getUserFromSecurityContext(); - Strategy strategy = findById(request.getId()); + Strategy strategy = strategyReader.findById(request.getId()); String encryptedApiKey = getEncryptedKey(request.getBinanceApiKey()); String encryptedSecretKey = getEncryptedKey(request.getBinanceSecretKey()); @@ -97,7 +70,7 @@ public void subscribeStrategy(SubscribeStrategyDto request) { public void unsubscribeStrategy(UnSubscribeStrategyDto request) { Users savedUser = getUserFromSecurityContext(); - Strategy strategy = findById(request.getId()); + Strategy strategy = strategyReader.findById(request.getId()); isUserSubscribedStrategy(savedUser, strategy); @@ -135,10 +108,6 @@ private Users getUserFromSecurityContext() { return userService.getUserFromSecurityContext(); } - private Strategy findById(Long id) { - return strategyRepository.findById(id) - .orElseThrow(() -> new TradinException(ExceptionType.NOT_FOUND_STRATEGY_EXCEPTION)); - } private void closeOngoingHistory(Strategy strategy, Position exitPosition) { historyService.closeOngoingHistory(strategy, exitPosition); @@ -156,31 +125,41 @@ private void updateStrategyMetaData(Strategy strategy, Position position) { strategy.updateMetaData(position); } - private Strategy findByName(String name) { - return strategyRepository.findByName(name) - .orElseThrow(() -> new TradinException(ExceptionType.NOT_FOUND_STRATEGY_EXCEPTION)); - } - private List findFutureStrategyInfoDaos() { - return strategyRepository.findFutureStrategiesInfoDao(); - } // private List findSubscriptionStrategyInfoDaos() { // return strategyRepository.findSubscriptionStrategiesInfoDao() // .orElse(Collections.emptyList()); // } - private List findSpotStrategyInfoDaos() { - return strategyRepository.findSpotStrategiesInfoDao(); - } - private List findSubscriptionStrategyInfoDaos() { - return strategyRepository.findSubscriptionStrategiesInfoDao() - .orElse(Collections.emptyList()); - } private boolean isUserPositionExist(TradingType tradingType) { return tradingType != TradingType.NONE; } +// public void handleFutureWebHook(WebHookDto request) { +// Strategy strategy = findByName(request.getName()); +// String strategyName = strategy.getName(); +// TradingType strategyCurrentPosition = strategy.getCurrentPosition().getTradingType(); +// +//// autoTrading(strategyName, strategyCurrentPosition); +// closeOngoingHistory(strategy, request.getPosition()); +// createNewHistory(strategy, request.getPosition()); +// evictHistoryCache(strategy.getId()); +// updateStrategyMetaData(strategy, request.getPosition()); +// } +// +// public void handleSpotWebHook(WebHookDto request) { +// Strategy strategy = findByName(request.getName()); +// +// if (webHookTradingType(request) == LONG) { +// createNewHistory(strategy, request.getPosition()); +// return; +// } +// +// closeOngoingHistory(strategy, request.getPosition()); +// evictHistoryCache(strategy.getId()); +// updateStrategyMetaData(strategy, request.getPosition()); +// } }