From a96808afca58d14fa4b3894aef70d9982038d7f9 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Tue, 8 Jul 2025 21:15:57 +0900 Subject: [PATCH 01/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20entity=20file?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/entity/exchange_entity.dart | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 lib/domain/exchange/entity/exchange_entity.dart diff --git a/lib/domain/exchange/entity/exchange_entity.dart b/lib/domain/exchange/entity/exchange_entity.dart new file mode 100644 index 0000000..705911e --- /dev/null +++ b/lib/domain/exchange/entity/exchange_entity.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'exchange_entity.freezed.dart'; + +part 'exchange_entity.g.dart'; + +@freezed +abstract class ExchangeEntity with _$ExchangeEntity { + factory ExchangeEntity({required int amount}) = + _ExchangeEntity; + + factory ExchangeEntity.fromJson(Map json) => + _$ExchangeEntityFromJson(json); +} From 50c11a5f945ce3315aa82a23e66a27f79ab0287c Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 08:35:06 +0900 Subject: [PATCH 02/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20repository=20?= =?UTF-8?q?abstract=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/repositories/exchange_repository.dart | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lib/domain/exchange/repositories/exchange_repository.dart diff --git a/lib/domain/exchange/repositories/exchange_repository.dart b/lib/domain/exchange/repositories/exchange_repository.dart new file mode 100644 index 0000000..1520d8e --- /dev/null +++ b/lib/domain/exchange/repositories/exchange_repository.dart @@ -0,0 +1,7 @@ +import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; + +abstract class ExchangeRepository { + Future exchangeKRW(ExchangeEntity exchange); + + Future exchangeUSD(ExchangeEntity exchange); +} \ No newline at end of file From aeefcba22a4b0a9154368321ede7abbf002c2aec Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 08:35:32 +0900 Subject: [PATCH 03/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20usecase=20abs?= =?UTF-8?q?tract=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/usecase/exchange_usecase.dart | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lib/domain/exchange/usecase/exchange_usecase.dart diff --git a/lib/domain/exchange/usecase/exchange_usecase.dart b/lib/domain/exchange/usecase/exchange_usecase.dart new file mode 100644 index 0000000..7f2a857 --- /dev/null +++ b/lib/domain/exchange/usecase/exchange_usecase.dart @@ -0,0 +1,7 @@ +import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; + +abstract class ExchangeUsecase { + Future exchangeKRW(ExchangeEntity exchange); + + Future exchangeUSD(ExchangeEntity exchange); +} \ No newline at end of file From 8a619bd8263960e94c86266cce230818f1bdd6d4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 08:35:46 +0900 Subject: [PATCH 04/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20usecase=20cla?= =?UTF-8?q?ss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usecase/exchange_usercase_impl.dart | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/domain/exchange/usecase/exchange_usercase_impl.dart diff --git a/lib/domain/exchange/usecase/exchange_usercase_impl.dart b/lib/domain/exchange/usecase/exchange_usercase_impl.dart new file mode 100644 index 0000000..f5b6a89 --- /dev/null +++ b/lib/domain/exchange/usecase/exchange_usercase_impl.dart @@ -0,0 +1,20 @@ +import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/repositories/exchange_repository.dart'; +import 'package:jusicool_ios/domain/exchange/usecase/exchange_usecase.dart'; + +class ExchangeUsercaseImpl extends ExchangeUsecase { + + final ExchangeRepository _repository; + + ExchangeUsercaseImpl(this._repository); + + @override + Future exchangeKRW(ExchangeEntity entity) async { + await _repository.exchangeKRW(entity); + } + + @override + Future exchangeUSD(ExchangeEntity entity) async { + await _repository.exchangeUSD(entity); + } +} \ No newline at end of file From 5263d734a67a0ace6c6179005adc6e3b53c89d02 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 09:52:03 +0900 Subject: [PATCH 05/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20data=20source?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_sources/exchange_data_source.dart | 7 +++++++ .../exchange_data_source_impl.dart | 20 +++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 lib/data/exchange/data_sources/exchange_data_source.dart create mode 100644 lib/data/exchange/data_sources/exchange_data_source_impl.dart diff --git a/lib/data/exchange/data_sources/exchange_data_source.dart b/lib/data/exchange/data_sources/exchange_data_source.dart new file mode 100644 index 0000000..ef14e52 --- /dev/null +++ b/lib/data/exchange/data_sources/exchange_data_source.dart @@ -0,0 +1,7 @@ +import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; + +abstract class ExchangeDataSource { + Future exchangeKRW(ExchangeRequestDto body); + + Future exchangeUSD(ExchangeRequestDto body); +} \ No newline at end of file diff --git a/lib/data/exchange/data_sources/exchange_data_source_impl.dart b/lib/data/exchange/data_sources/exchange_data_source_impl.dart new file mode 100644 index 0000000..a66493b --- /dev/null +++ b/lib/data/exchange/data_sources/exchange_data_source_impl.dart @@ -0,0 +1,20 @@ +import 'package:jusicool_ios/data/exchange/data_sources/exchange_data_source.dart'; +import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; + +class ExchangeDataSourceImpl extends ExchangeDataSource { + + + + @override + Future exchangeKRW(ExchangeRequestDto body) { + // TODO: implement exchangeKRW + throw UnimplementedError(); + } + + @override + Future exchangeUSD(ExchangeRequestDto body) { + // TODO: implement exchangeUSD + throw UnimplementedError(); + } + +} \ No newline at end of file From 647f08fa3f313f159e0af9046df0c3eb139ed488 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 09:52:16 +0900 Subject: [PATCH 06/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20api=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/exchange/serivice/exchange_api.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/data/exchange/serivice/exchange_api.dart diff --git a/lib/data/exchange/serivice/exchange_api.dart b/lib/data/exchange/serivice/exchange_api.dart new file mode 100644 index 0000000..19314db --- /dev/null +++ b/lib/data/exchange/serivice/exchange_api.dart @@ -0,0 +1,17 @@ +import 'package:dio/dio.dart'; +import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; +import 'package:retrofit/http.dart'; + +part 'exchange_api.g.dart'; + +@RestApi() +abstract class ExchangeApi { + + factory ExchangeApi(Dio dio, {String baseUrl}) = _ExchangeApi; + + @POST('/exchange/KRW') + Future exchangeKRW(@Body() ExchangeRequestDto body); + + @POST('/exchange/USD') + Future exchangeUSD(@Body() ExchangeRequestDto body); +} \ No newline at end of file From e4c2b75a6bc7d1a0e9b3d84f3cf1ba7579416930 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 09:52:29 +0900 Subject: [PATCH 07/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20request=20dto?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/request/exchange_request_dto.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/exchange/dto/remote/request/exchange_request_dto.dart diff --git a/lib/data/exchange/dto/remote/request/exchange_request_dto.dart b/lib/data/exchange/dto/remote/request/exchange_request_dto.dart new file mode 100644 index 0000000..7f560ba --- /dev/null +++ b/lib/data/exchange/dto/remote/request/exchange_request_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'exchange_request_dto.g.dart'; + +part 'exchange_request_dto.freezed.dart'; + +@freezed +abstract class ExchangeRequestDto with _$ExchangeRequestDto { + factory ExchangeRequestDto({ + required int amount + }) = _ExchangeRequestDto; + + factory ExchangeRequestDto.fromJson(Map json) => + _$ExchangeRequestDtoFromJson(json); +} \ No newline at end of file From 883061afb1e95e9b2920d9bddc37a35bf2ed1460 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 09:56:59 +0900 Subject: [PATCH 08/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20request=20map?= =?UTF-8?q?per=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/remote/request/exchange_request_mapper.dart | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart diff --git a/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart b/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart new file mode 100644 index 0000000..58c0327 --- /dev/null +++ b/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; +import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; + +class ExchangeRequestMapper { + static ExchangeRequestDto toDto(ExchangeEntity entity) => + ExchangeRequestDto(amount: entity.amount); + static ExchangeEntity toEntity(ExchangeRequestDto dto) => + ExchangeEntity(amount: dto.amount); +} \ No newline at end of file From 358f88f955029786afe010f97f88343cf9c804b9 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 10:01:59 +0900 Subject: [PATCH 09/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20repository=20?= =?UTF-8?q?class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exchange_repository_impl.dart | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/data/exchange/repositories/exchange_repository_impl.dart diff --git a/lib/data/exchange/repositories/exchange_repository_impl.dart b/lib/data/exchange/repositories/exchange_repository_impl.dart new file mode 100644 index 0000000..b70d85d --- /dev/null +++ b/lib/data/exchange/repositories/exchange_repository_impl.dart @@ -0,0 +1,24 @@ +import 'package:jusicool_ios/data/exchange/data_sources/exchange_data_source.dart'; +import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; +import 'package:jusicool_ios/data/exchange/mappers/remote/request/exchange_request_mapper.dart'; +import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/repositories/exchange_repository.dart'; + +class ExchangeRepositoryImpl extends ExchangeRepository { + final ExchangeDataSource _exchangeDataSource; + + ExchangeRepositoryImpl(this._exchangeDataSource); + + @override + Future exchangeKRW(ExchangeEntity body) async { + final ExchangeRequestDto request = ExchangeRequestMapper.toDto(body); + return await _exchangeDataSource.exchangeKRW(request); + } + + @override + Future exchangeUSD(ExchangeEntity body) async { + final ExchangeRequestDto request = ExchangeRequestMapper.toDto(body); + return await _exchangeDataSource.exchangeUSD(request); + } + +} \ No newline at end of file From b77fb1968a0d98a9a0edf678c50cb232385e71a1 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 11:27:16 +0900 Subject: [PATCH 10/96] =?UTF-8?q?=F0=9F=94=A5=20::=20Entity=20json=20?= =?UTF-8?q?=ED=8C=8C=EC=8B=B1=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/entity/exchange_entity.dart | 5 ----- lib/domain/sign_in/entity/sign_in_entity.dart | 5 ----- lib/domain/sign_up/entity/sign_up_email_entity.dart | 5 ----- lib/domain/sign_up/entity/sign_up_entity.dart | 5 ----- .../sign_up/entity/sign_up_search_school_entity.dart | 12 ------------ 5 files changed, 32 deletions(-) diff --git a/lib/domain/exchange/entity/exchange_entity.dart b/lib/domain/exchange/entity/exchange_entity.dart index 705911e..2a95629 100644 --- a/lib/domain/exchange/entity/exchange_entity.dart +++ b/lib/domain/exchange/entity/exchange_entity.dart @@ -2,13 +2,8 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'exchange_entity.freezed.dart'; -part 'exchange_entity.g.dart'; - @freezed abstract class ExchangeEntity with _$ExchangeEntity { factory ExchangeEntity({required int amount}) = _ExchangeEntity; - - factory ExchangeEntity.fromJson(Map json) => - _$ExchangeEntityFromJson(json); } diff --git a/lib/domain/sign_in/entity/sign_in_entity.dart b/lib/domain/sign_in/entity/sign_in_entity.dart index e544e9f..e56713b 100644 --- a/lib/domain/sign_in/entity/sign_in_entity.dart +++ b/lib/domain/sign_in/entity/sign_in_entity.dart @@ -2,13 +2,8 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'sign_in_entity.freezed.dart'; -part 'sign_in_entity.g.dart'; - @freezed abstract class SignInEntity with _$SignInEntity { factory SignInEntity({required String email, required String password}) = _SignInEntity; - - factory SignInEntity.fromJson(Map json) => - _$SignInEntityFromJson(json); } diff --git a/lib/domain/sign_up/entity/sign_up_email_entity.dart b/lib/domain/sign_up/entity/sign_up_email_entity.dart index 38ebbd9..bcef4e1 100644 --- a/lib/domain/sign_up/entity/sign_up_email_entity.dart +++ b/lib/domain/sign_up/entity/sign_up_email_entity.dart @@ -2,15 +2,10 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'sign_up_email_entity.freezed.dart'; -part 'sign_up_email_entity.g.dart'; - @freezed abstract class SignUpEmailEntity with _$SignUpEmailEntity { const factory SignUpEmailEntity({ required String email, required String verifyCode, }) = _SignUpEmailEntity; - - factory SignUpEmailEntity.fromJson(Map json) => - _$SignUpEmailEntityFromJson(json); } diff --git a/lib/domain/sign_up/entity/sign_up_entity.dart b/lib/domain/sign_up/entity/sign_up_entity.dart index b65a9aa..f9d8038 100644 --- a/lib/domain/sign_up/entity/sign_up_entity.dart +++ b/lib/domain/sign_up/entity/sign_up_entity.dart @@ -2,8 +2,6 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'sign_up_entity.freezed.dart'; -part 'sign_up_entity.g.dart'; - @freezed abstract class SignUpEntity with _$SignUpEntity { const factory SignUpEntity({ @@ -12,7 +10,4 @@ abstract class SignUpEntity with _$SignUpEntity { required String name, required String school, }) = _SignUpEntity; - - factory SignUpEntity.fromJson(Map json) => - _$SignUpEntityFromJson(json); } diff --git a/lib/domain/sign_up/entity/sign_up_search_school_entity.dart b/lib/domain/sign_up/entity/sign_up_search_school_entity.dart index 45ed788..2c965ac 100644 --- a/lib/domain/sign_up/entity/sign_up_search_school_entity.dart +++ b/lib/domain/sign_up/entity/sign_up_search_school_entity.dart @@ -2,18 +2,12 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'sign_up_search_school_entity.freezed.dart'; -part 'sign_up_search_school_entity.g.dart'; - @freezed abstract class SignUpSearchSchoolResponseEntity with _$SignUpSearchSchoolResponseEntity { const factory SignUpSearchSchoolResponseEntity({ @JsonKey(name: 'schoolInfo') required List schoolInfo, }) = _SignUpSearchSchoolResponseEntity; - - factory SignUpSearchSchoolResponseEntity.fromJson( - Map json, - ) => _$SignUpSearchSchoolResponseEntityFromJson(json); } @freezed @@ -22,9 +16,6 @@ abstract class SchoolInfoEntity with _$SchoolInfoEntity { List? head, List? row, }) = _SchoolInfoEntity; - - factory SchoolInfoEntity.fromJson(Map json) => - _$SchoolInfoEntityFromJson(json); } @freezed @@ -33,7 +24,4 @@ abstract class SchoolRowEntity with _$SchoolRowEntity { @JsonKey(name: 'SCHUL_NM') required String schoolName, @JsonKey(name: 'ORG_RDNMA') required String schoolAddress, }) = _SchoolRowEntity; - - factory SchoolRowEntity.fromJson(Map json) => - _$SchoolRowEntityFromJson(json); } From 3f17dcfa82b82b84ebad249e843e061b2fa33e9c Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 14:25:12 +0900 Subject: [PATCH 11/96] =?UTF-8?q?=E2=9C=A8=20::=20=EB=A7=A4=EC=88=98,=20?= =?UTF-8?q?=EB=A7=A4=EB=8F=84=20=EA=B3=B5=ED=86=B5=20response=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/response/order_response_dto.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/order/dto/remote/response/order_response_dto.dart diff --git a/lib/data/order/dto/remote/response/order_response_dto.dart b/lib/data/order/dto/remote/response/order_response_dto.dart new file mode 100644 index 0000000..d3ec092 --- /dev/null +++ b/lib/data/order/dto/remote/response/order_response_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_response_dto.g.dart'; + +part 'order_response_dto.freezed.dart'; + +@freezed +abstract class OrderResponseDto with _$OrderResponseDto { + factory OrderResponseDto({ + @JsonKey(name: 'price') required int price, + }) = _OrderResponseDto; + + factory OrderResponseDto.fromJson(Map json) => + _$OrderResponseDtoFromJson(json); +} \ No newline at end of file From dadc347133b4bea1db5ae166f9303c3e14df8ab1 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 14:39:16 +0900 Subject: [PATCH 12/96] =?UTF-8?q?=E2=9C=A8=20::=20=EB=A7=A4=EC=88=98=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A7=A4=EB=8F=84=20request=20dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/request/order_request_dto.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lib/data/order/dto/remote/request/order_request_dto.dart diff --git a/lib/data/order/dto/remote/request/order_request_dto.dart b/lib/data/order/dto/remote/request/order_request_dto.dart new file mode 100644 index 0000000..65735fc --- /dev/null +++ b/lib/data/order/dto/remote/request/order_request_dto.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_request_dto.g.dart'; + +part 'order_request_dto.freezed.dart'; + + +@freezed +abstract class OrderRequestDto with _$OrderRequestDto { + factory OrderRequestDto({ + required double quantity, + }) = _SignInRequestDto; + + factory OrderRequestDto.fromJson(Map json) => + _$OrderRequestDtoFromJson(json); +} \ No newline at end of file From d89f52378ae37d9d902bd93fd5634f00e68747e5 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 14:44:15 +0900 Subject: [PATCH 13/96] =?UTF-8?q?=E2=9C=A8=20::=20Enum=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 --- lib/domain/enum/status_type.dart | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 lib/domain/enum/status_type.dart diff --git a/lib/domain/enum/status_type.dart b/lib/domain/enum/status_type.dart new file mode 100644 index 0000000..bf8be1c --- /dev/null +++ b/lib/domain/enum/status_type.dart @@ -0,0 +1,4 @@ +enum StatusType { + reserve, + completed, +} \ No newline at end of file From d75475bfd58a2d40ca4dae611d94d527eaa7722e Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 15:33:24 +0900 Subject: [PATCH 14/96] =?UTF-8?q?=E2=9C=A8=20::=20Enum=20type=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/enum/status_type.dart | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/lib/domain/enum/status_type.dart b/lib/domain/enum/status_type.dart index bf8be1c..b9a7c0c 100644 --- a/lib/domain/enum/status_type.dart +++ b/lib/domain/enum/status_type.dart @@ -1,4 +1,13 @@ -enum StatusType { - reserve, - completed, -} \ No newline at end of file +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'status_type.freezed.dart'; +part 'status_type.g.dart'; + +@freezed +abstract class StatusType with _$StatusType { + const factory StatusType.reserve() = _Reserve; + const factory StatusType.completed() = _Completed; + + factory StatusType.fromJson(Map json) => + _$StatusTypeFromJson(json); +} From b332d4f3e3a6958c3096cf7d103b529d8c950827 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 15:33:43 +0900 Subject: [PATCH 15/96] =?UTF-8?q?=E2=9C=A8=20::=20Enum=20=EC=BF=BC?= =?UTF-8?q?=EB=A6=AC=20=ED=83=80=EC=9E=85=20dto=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/my_order_query_type_request_dto.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart diff --git a/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart b/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart new file mode 100644 index 0000000..df913e2 --- /dev/null +++ b/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:jusicool_ios/domain/enum/status_type.dart'; + +part 'my_order_query_type_request_dto.g.dart'; + +part 'my_order_query_type_request_dto.freezed.dart'; + +@freezed +abstract class MyOrderQueryTypeRequestDto with _$MyOrderQueryTypeRequestDto { + const factory MyOrderQueryTypeRequestDto({ + required StatusType type, + }) = _MyOrderQueryTypeRequestDto; + + factory MyOrderQueryTypeRequestDto.fromJson(Map json) => + _$MyOrderQueryTypeRequestDtoFromJson(json); +} \ No newline at end of file From 970e79d18137db5de38c06b0720eee6dc16921bb Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 15:34:08 +0900 Subject: [PATCH 16/96] =?UTF-8?q?=E2=9C=A8=20::=20MyOrder=20request=20dto?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/request/my_order_request_dto.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lib/data/order/dto/remote/request/my_order_request_dto.dart diff --git a/lib/data/order/dto/remote/request/my_order_request_dto.dart b/lib/data/order/dto/remote/request/my_order_request_dto.dart new file mode 100644 index 0000000..6bcd7ae --- /dev/null +++ b/lib/data/order/dto/remote/request/my_order_request_dto.dart @@ -0,0 +1,16 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/my_order_query_type_request_dto.dart'; + +part 'my_order_request_dto.g.dart'; + +part 'my_order_request_dto.freezed.dart'; + +@freezed +abstract class MyOrderRequestDto with _$MyOrderRequestDto { + factory MyOrderRequestDto({ + required MyOrderQueryTypeRequestDto query, + }) = _MyOrderRequestDto; + + factory MyOrderRequestDto.fromJson(Map json) => + _$MyOrderRequestDtoFromJson(json); +} \ No newline at end of file From 879589af61f0cf1093b0ae6346611f209e1ce435 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:01:13 +0900 Subject: [PATCH 17/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20type=20enum=20cl?= =?UTF-8?q?ass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/enum/order/order_type.dart | 13 +++++++++++++ lib/domain/enum/status_type.dart | 13 ------------- 2 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 lib/domain/enum/order/order_type.dart delete mode 100644 lib/domain/enum/status_type.dart diff --git a/lib/domain/enum/order/order_type.dart b/lib/domain/enum/order/order_type.dart new file mode 100644 index 0000000..8839556 --- /dev/null +++ b/lib/domain/enum/order/order_type.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_type.g.dart'; +part 'order_type.freezed.dart'; + +@freezed +abstract class OrderType with _$OrderType { + const factory OrderType.sell() = _Sell; + const factory OrderType.buy() = _Buy; + + factory OrderType.fromJson(Map json) => + _$OrderTypeFromJson(json); +} \ No newline at end of file diff --git a/lib/domain/enum/status_type.dart b/lib/domain/enum/status_type.dart deleted file mode 100644 index b9a7c0c..0000000 --- a/lib/domain/enum/status_type.dart +++ /dev/null @@ -1,13 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'status_type.freezed.dart'; -part 'status_type.g.dart'; - -@freezed -abstract class StatusType with _$StatusType { - const factory StatusType.reserve() = _Reserve; - const factory StatusType.completed() = _Completed; - - factory StatusType.fromJson(Map json) => - _$StatusTypeFromJson(json); -} From f2e1519dbc5da42fc8e9d44dc317374862f23401 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:04:32 +0900 Subject: [PATCH 18/96] =?UTF-8?q?=E2=9C=A8=20::=20Reserve=20type=20enum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/enum/order/reserve_type.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/domain/enum/order/reserve_type.dart diff --git a/lib/domain/enum/order/reserve_type.dart b/lib/domain/enum/order/reserve_type.dart new file mode 100644 index 0000000..aa3fc6d --- /dev/null +++ b/lib/domain/enum/order/reserve_type.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'reserve_type.g.dart'; +part 'reserve_type.freezed.dart'; + +@freezed +abstract class ReserveType with _$ReserveType { + const factory ReserveType.immediate() = _Immediate; + const factory ReserveType.reserve() = _Reserve; + + factory ReserveType.fromJson(Map json) => + _$ReserveTypeFromJson(json); +} \ No newline at end of file From 3968fd84c522921e84b8f494a085a19f3b4d034d Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:07:10 +0900 Subject: [PATCH 19/96] =?UTF-8?q?=F0=9F=94=A7=20::=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/enum/{ => share}/order/order_type.dart | 0 lib/domain/enum/{ => share}/order/reserve_type.dart | 0 lib/domain/enum/share/order/status_type.dart | 13 +++++++++++++ 3 files changed, 13 insertions(+) rename lib/domain/enum/{ => share}/order/order_type.dart (100%) rename lib/domain/enum/{ => share}/order/reserve_type.dart (100%) create mode 100644 lib/domain/enum/share/order/status_type.dart diff --git a/lib/domain/enum/order/order_type.dart b/lib/domain/enum/share/order/order_type.dart similarity index 100% rename from lib/domain/enum/order/order_type.dart rename to lib/domain/enum/share/order/order_type.dart diff --git a/lib/domain/enum/order/reserve_type.dart b/lib/domain/enum/share/order/reserve_type.dart similarity index 100% rename from lib/domain/enum/order/reserve_type.dart rename to lib/domain/enum/share/order/reserve_type.dart diff --git a/lib/domain/enum/share/order/status_type.dart b/lib/domain/enum/share/order/status_type.dart new file mode 100644 index 0000000..8aff9f6 --- /dev/null +++ b/lib/domain/enum/share/order/status_type.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'status_type.freezed.dart'; +part 'status_type.g.dart'; + +@freezed +abstract class StatusType with _$StatusType { + const factory StatusType.reserve() = _Reserve; + const factory StatusType.completed() = _Completed; + + factory StatusType.fromJson(Map json) => + _$StatusTypeFromJson(json); +} From 73af5df3ab1675e64a3ce63829b232c78486dedd Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:13:56 +0900 Subject: [PATCH 20/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20order=20type=20stat?= =?UTF-8?q?us=20type=20enum=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../enum/share/order/my_order_status_type.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/domain/enum/share/order/my_order_status_type.dart diff --git a/lib/domain/enum/share/order/my_order_status_type.dart b/lib/domain/enum/share/order/my_order_status_type.dart new file mode 100644 index 0000000..f137b33 --- /dev/null +++ b/lib/domain/enum/share/order/my_order_status_type.dart @@ -0,0 +1,15 @@ + +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'my_order_status_type.g.dart'; +part 'my_order_status_type.freezed.dart'; + +@freezed +abstract class MyOrderStatusType with _$MyOrderStatusType { + const factory MyOrderStatusType.completed() = _Completed; + const factory MyOrderStatusType.pending() = _Pending; + const factory MyOrderStatusType.canceled() = _canceled; + + factory MyOrderStatusType.fromJson(Map json) => + _$MyOrderStatusTypeFromJson(json); +} \ No newline at end of file From 5ccb804940fa27a8c8ee7b3a32b5e278595ceef4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:15:37 +0900 Subject: [PATCH 21/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20order=20response=20?= =?UTF-8?q?dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/my_order_response_dto.dart | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/data/order/dto/remote/response/my_order_response_dto.dart diff --git a/lib/data/order/dto/remote/response/my_order_response_dto.dart b/lib/data/order/dto/remote/response/my_order_response_dto.dart new file mode 100644 index 0000000..112a563 --- /dev/null +++ b/lib/data/order/dto/remote/response/my_order_response_dto.dart @@ -0,0 +1,25 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:jusicool_ios/domain/enum/share/order/my_order_status_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/order_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; + +part 'my_order_response_dto.g.dart'; + +part 'my_order_response_dto.freezed.dart'; + +@freezed +abstract class MyOrderResponseDto with _$MyOrderResponseDto { + factory MyOrderResponseDto({ + required int id, + required String market, + required OrderType order_type, + required ReserveType reserve_type, + required int quantity, + required int? execute_price, + required int? reserve_price, + required MyOrderStatusType status + }) = _MyOrderResponseDto; + + factory MyOrderResponseDto.fromJson(Map json) => + _$MyOrderResponseDtoFromJson(json); +} \ No newline at end of file From 56dd8c069a42d37756d9357a98a956636d446d53 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 18:20:13 +0900 Subject: [PATCH 22/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20order=20response?= =?UTF-8?q?=20dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/response/month_order_response_dto.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/order/dto/remote/response/month_order_response_dto.dart diff --git a/lib/data/order/dto/remote/response/month_order_response_dto.dart b/lib/data/order/dto/remote/response/month_order_response_dto.dart new file mode 100644 index 0000000..41d2c31 --- /dev/null +++ b/lib/data/order/dto/remote/response/month_order_response_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'month_order_response_dto.g.dart'; +part 'month_order_response_dto.freezed.dart'; + +@freezed +abstract class MonthOrderResponseDto with _$MonthOrderResponseDto { + factory MonthOrderResponseDto({ + required double rate, + required int order_count + }) = _MonthOrderResponseDto; + + factory MonthOrderResponseDto.fromJson(Map json) => + _$MonthOrderResponseDtoFromJson(json); +} \ No newline at end of file From a057cb3813c74f9f630d03b0e7ac445156e1caaa Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 19:41:14 +0900 Subject: [PATCH 23/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20rate=20response?= =?UTF-8?q?=20dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/month_rate_response_dto.dart | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lib/data/order/dto/remote/response/month_rate_response_dto.dart diff --git a/lib/data/order/dto/remote/response/month_rate_response_dto.dart b/lib/data/order/dto/remote/response/month_rate_response_dto.dart new file mode 100644 index 0000000..f7fc3a2 --- /dev/null +++ b/lib/data/order/dto/remote/response/month_rate_response_dto.dart @@ -0,0 +1,29 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'month_rate_response_dto.g.dart'; +part 'month_rate_response_dto.freezed.dart'; + +@freezed +abstract class MonthRateResponseDto with _$MonthRateResponseDto { + factory MonthRateResponseDto({ + @JsonKey(name: 'monthly_rate') required double monthlyRate, + required List markets, + }) = _MonthRateResponseDto; + + factory MonthRateResponseDto.fromJson(Map json) => + _$MonthRateResponseDtoFromJson(json); +} + +@freezed +abstract class Market with _$Market { + factory Market({ + required String market, + @JsonKey(name: 'korean_name') required String koreanName, + required double rate, + required int proceed, + required DateTime day, + }) = _Market; + + factory Market.fromJson(Map json) => + _$MarketFromJson(json); +} \ No newline at end of file From bacefa0d00d708c0a57dadbfc3ebc82a967163c8 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 19:44:52 +0900 Subject: [PATCH 24/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/request/my_order_query_type_request_dto.dart | 2 +- .../dto/remote/response/month_order_response_dto.dart | 2 +- .../order/dto/remote/response/my_order_response_dto.dart | 8 ++++---- .../order/dto/remote/response/order_response_dto.dart | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart b/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart index df913e2..5a1dffb 100644 --- a/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart +++ b/lib/data/order/dto/remote/request/my_order_query_type_request_dto.dart @@ -1,5 +1,5 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -import 'package:jusicool_ios/domain/enum/status_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; part 'my_order_query_type_request_dto.g.dart'; diff --git a/lib/data/order/dto/remote/response/month_order_response_dto.dart b/lib/data/order/dto/remote/response/month_order_response_dto.dart index 41d2c31..a4357d0 100644 --- a/lib/data/order/dto/remote/response/month_order_response_dto.dart +++ b/lib/data/order/dto/remote/response/month_order_response_dto.dart @@ -7,7 +7,7 @@ part 'month_order_response_dto.freezed.dart'; abstract class MonthOrderResponseDto with _$MonthOrderResponseDto { factory MonthOrderResponseDto({ required double rate, - required int order_count + @JsonKey(name: 'order_count') required int orderCount }) = _MonthOrderResponseDto; factory MonthOrderResponseDto.fromJson(Map json) => diff --git a/lib/data/order/dto/remote/response/my_order_response_dto.dart b/lib/data/order/dto/remote/response/my_order_response_dto.dart index 112a563..7facffe 100644 --- a/lib/data/order/dto/remote/response/my_order_response_dto.dart +++ b/lib/data/order/dto/remote/response/my_order_response_dto.dart @@ -12,11 +12,11 @@ abstract class MyOrderResponseDto with _$MyOrderResponseDto { factory MyOrderResponseDto({ required int id, required String market, - required OrderType order_type, - required ReserveType reserve_type, + @JsonKey(name: 'order_type') required OrderType orderType, + @JsonKey(name: 'reserve_type') required ReserveType reserveType, required int quantity, - required int? execute_price, - required int? reserve_price, + @JsonKey(name: 'execute_price') required int? executePrice, + @JsonKey(name: 'reserve_price') required int? reservePrice, required MyOrderStatusType status }) = _MyOrderResponseDto; diff --git a/lib/data/order/dto/remote/response/order_response_dto.dart b/lib/data/order/dto/remote/response/order_response_dto.dart index d3ec092..c3bde0f 100644 --- a/lib/data/order/dto/remote/response/order_response_dto.dart +++ b/lib/data/order/dto/remote/response/order_response_dto.dart @@ -7,7 +7,7 @@ part 'order_response_dto.freezed.dart'; @freezed abstract class OrderResponseDto with _$OrderResponseDto { factory OrderResponseDto({ - @JsonKey(name: 'price') required int price, + required int price, }) = _OrderResponseDto; factory OrderResponseDto.fromJson(Map json) => From a6aa28c121ff6ba6f68206ddcf56a646c325c528 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 19:49:01 +0900 Subject: [PATCH 25/96] =?UTF-8?q?=E2=9C=A8=20::=20Reservation=20order=20re?= =?UTF-8?q?quest=20dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/reservation_order_request_dto.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/order/dto/remote/request/reservation_order_request_dto.dart diff --git a/lib/data/order/dto/remote/request/reservation_order_request_dto.dart b/lib/data/order/dto/remote/request/reservation_order_request_dto.dart new file mode 100644 index 0000000..e534e15 --- /dev/null +++ b/lib/data/order/dto/remote/request/reservation_order_request_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'reservation_order_request_dto.g.dart'; +part 'reservation_order_request_dto.freezed.dart'; + +@freezed +abstract class ReservationOrderRequestDto with _$ReservationOrderRequestDto { + factory ReservationOrderRequestDto({ + required int quantity, + required int price, + }) = _ReservationOrderRequestDto; + + factory ReservationOrderRequestDto.fromJson(Map json) => + _$ReservationOrderRequestDtoFromJson(json); +} \ No newline at end of file From 490789f4905d17d6626176f6addcbbc2bb38eaec Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 19:51:50 +0900 Subject: [PATCH 26/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Class=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/response/month_rate_response_dto.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/data/order/dto/remote/response/month_rate_response_dto.dart b/lib/data/order/dto/remote/response/month_rate_response_dto.dart index f7fc3a2..5da6b7a 100644 --- a/lib/data/order/dto/remote/response/month_rate_response_dto.dart +++ b/lib/data/order/dto/remote/response/month_rate_response_dto.dart @@ -7,7 +7,7 @@ part 'month_rate_response_dto.freezed.dart'; abstract class MonthRateResponseDto with _$MonthRateResponseDto { factory MonthRateResponseDto({ @JsonKey(name: 'monthly_rate') required double monthlyRate, - required List markets, + required List markets, }) = _MonthRateResponseDto; factory MonthRateResponseDto.fromJson(Map json) => @@ -15,8 +15,8 @@ abstract class MonthRateResponseDto with _$MonthRateResponseDto { } @freezed -abstract class Market with _$Market { - factory Market({ +abstract class MarketDto with _$MarketDto { + factory MarketDto({ required String market, @JsonKey(name: 'korean_name') required String koreanName, required double rate, @@ -24,6 +24,6 @@ abstract class Market with _$Market { required DateTime day, }) = _Market; - factory Market.fromJson(Map json) => + factory MarketDto.fromJson(Map json) => _$MarketFromJson(json); } \ No newline at end of file From 8a7ee34a057f97d6dbbbae4d7d7024403f6c43b5 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:09:05 +0900 Subject: [PATCH 27/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Nullsafety=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=20required=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/order/dto/remote/response/my_order_response_dto.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/data/order/dto/remote/response/my_order_response_dto.dart b/lib/data/order/dto/remote/response/my_order_response_dto.dart index 7facffe..cc50966 100644 --- a/lib/data/order/dto/remote/response/my_order_response_dto.dart +++ b/lib/data/order/dto/remote/response/my_order_response_dto.dart @@ -15,8 +15,8 @@ abstract class MyOrderResponseDto with _$MyOrderResponseDto { @JsonKey(name: 'order_type') required OrderType orderType, @JsonKey(name: 'reserve_type') required ReserveType reserveType, required int quantity, - @JsonKey(name: 'execute_price') required int? executePrice, - @JsonKey(name: 'reserve_price') required int? reservePrice, + @JsonKey(name: 'execute_price') int? executePrice, + @JsonKey(name: 'reserve_price') int? reservePrice, required MyOrderStatusType status }) = _MyOrderResponseDto; From 27b56ba91e2744f15f510af6296cea645a518ba1 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:43:27 +0900 Subject: [PATCH 28/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EC=9C=84=EC=B9=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/{entity => entities}/exchange_entity.dart | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/domain/exchange/{entity => entities}/exchange_entity.dart (100%) diff --git a/lib/domain/exchange/entity/exchange_entity.dart b/lib/domain/exchange/entities/exchange_entity.dart similarity index 100% rename from lib/domain/exchange/entity/exchange_entity.dart rename to lib/domain/exchange/entities/exchange_entity.dart From d5447de961fd1357ab46b69e0d4ee4132b4ac8df Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:43:42 +0900 Subject: [PATCH 29/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/exchange/repositories/exchange_repository.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/domain/exchange/repositories/exchange_repository.dart b/lib/domain/exchange/repositories/exchange_repository.dart index 1520d8e..05bc139 100644 --- a/lib/domain/exchange/repositories/exchange_repository.dart +++ b/lib/domain/exchange/repositories/exchange_repository.dart @@ -1,4 +1,4 @@ -import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/entities/exchange_entity.dart'; abstract class ExchangeRepository { Future exchangeKRW(ExchangeEntity exchange); From 65569db52b5da3e0ffd5d65e8243436cf84e3bf9 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:44:12 +0900 Subject: [PATCH 30/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20order=20entity?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/month_order_entity.dart | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 lib/domain/order/entities/month_order_entity.dart diff --git a/lib/domain/order/entities/month_order_entity.dart b/lib/domain/order/entities/month_order_entity.dart new file mode 100644 index 0000000..efb71b4 --- /dev/null +++ b/lib/domain/order/entities/month_order_entity.dart @@ -0,0 +1,11 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'month_order_entity.freezed.dart'; + +@freezed +abstract class MonthOrderEntity with _$MonthOrderEntity { + factory MonthOrderEntity({ + required double rate, + required int orderCount, + }) = _MonthOrderEntity; +} \ No newline at end of file From 59550ca0ad28a4455feaebcac6b04e160b987711 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:44:51 +0900 Subject: [PATCH 31/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20rate=20entity=20?= =?UTF-8?q?class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/entities/month_rate_entity.dart | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 lib/domain/order/entities/month_rate_entity.dart diff --git a/lib/domain/order/entities/month_rate_entity.dart b/lib/domain/order/entities/month_rate_entity.dart new file mode 100644 index 0000000..13e4469 --- /dev/null +++ b/lib/domain/order/entities/month_rate_entity.dart @@ -0,0 +1,22 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'month_rate_entity.freezed.dart'; + +@freezed +abstract class MonthRateEntity with _$MonthRateEntity { + factory MonthRateEntity({ + required double monthlyRate, + required List markets, + }) = _MonthRateEntity; +} + +@freezed +abstract class MarketEntity with _$MarketEntity { + factory MarketEntity({ + required String market, + required String koreanName, + required double rate, + required int proceed, + required DateTime day, + }) = _MarketEntity; +} \ No newline at end of file From 09c2b7f304918010727fb9fb1a2e03abf15eb367 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:45:01 +0900 Subject: [PATCH 32/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20order=20entity=20cl?= =?UTF-8?q?ass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/entities/my_order_entity.dart | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 lib/domain/order/entities/my_order_entity.dart diff --git a/lib/domain/order/entities/my_order_entity.dart b/lib/domain/order/entities/my_order_entity.dart new file mode 100644 index 0000000..25be0aa --- /dev/null +++ b/lib/domain/order/entities/my_order_entity.dart @@ -0,0 +1,20 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:jusicool_ios/domain/enum/share/order/my_order_status_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/order_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; + +part 'my_order_entity.freezed.dart'; + +@freezed +abstract class MyOrderEntity with _$MyOrderEntity { + factory MyOrderEntity({ + required int id, + required String market, + required OrderType orderType, + required ReserveType reserveType, + required int quantity, + int? executePrice, + int? reservePrice, + required MyOrderStatusType status, + }) = _MyOrderEntity; +} \ No newline at end of file From 571a761e76d6f15384a78ad9e49bbb941734131c Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:45:17 +0900 Subject: [PATCH 33/96] =?UTF-8?q?=E2=9C=A8=20::=20Reservation=20order=20en?= =?UTF-8?q?tity=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/entities/reservation_order_entity.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lib/domain/order/entities/reservation_order_entity.dart diff --git a/lib/domain/order/entities/reservation_order_entity.dart b/lib/domain/order/entities/reservation_order_entity.dart new file mode 100644 index 0000000..c29a995 --- /dev/null +++ b/lib/domain/order/entities/reservation_order_entity.dart @@ -0,0 +1,10 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'reservation_order_entity.freezed.dart'; + +@freezed +abstract class ReservationOrderEntity with _$ReservationOrderEntity { + factory ReservationOrderEntity({ + required int price, + }) = _ReservationOrderEntity; +} \ No newline at end of file From c23cc789d9e9b716cf5896e0f75c99fd4d2e7029 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:45:37 +0900 Subject: [PATCH 34/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20abstrac=20reposi?= =?UTF-8?q?tory=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/repositories/order_repository.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/domain/order/repositories/order_repository.dart diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart new file mode 100644 index 0000000..3c23564 --- /dev/null +++ b/lib/domain/order/repositories/order_repository.dart @@ -0,0 +1,17 @@ +import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; + +abstract class OrderRepository { + Future fetchMyorders(List type); + + Future fetchMonthOrder(); + + Future fetchMonthRate(); + + Future order(double quantity); + + Future fetchReservationOrder(); +} \ No newline at end of file From 99e875cd99b346fc5a99e6e81058e0c0484ab697 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:46:19 +0900 Subject: [PATCH 35/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mappers/remote/request/exchange_request_mapper.dart | 2 +- lib/data/exchange/repositories/exchange_repository_impl.dart | 2 +- lib/domain/exchange/usecase/exchange_usecase.dart | 2 +- lib/domain/exchange/usecase/exchange_usercase_impl.dart | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart b/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart index 58c0327..37dde00 100644 --- a/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart +++ b/lib/data/exchange/mappers/remote/request/exchange_request_mapper.dart @@ -1,5 +1,5 @@ import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; -import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/entities/exchange_entity.dart'; class ExchangeRequestMapper { static ExchangeRequestDto toDto(ExchangeEntity entity) => diff --git a/lib/data/exchange/repositories/exchange_repository_impl.dart b/lib/data/exchange/repositories/exchange_repository_impl.dart index b70d85d..010ec42 100644 --- a/lib/data/exchange/repositories/exchange_repository_impl.dart +++ b/lib/data/exchange/repositories/exchange_repository_impl.dart @@ -1,7 +1,7 @@ import 'package:jusicool_ios/data/exchange/data_sources/exchange_data_source.dart'; import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; import 'package:jusicool_ios/data/exchange/mappers/remote/request/exchange_request_mapper.dart'; -import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/entities/exchange_entity.dart'; import 'package:jusicool_ios/domain/exchange/repositories/exchange_repository.dart'; class ExchangeRepositoryImpl extends ExchangeRepository { diff --git a/lib/domain/exchange/usecase/exchange_usecase.dart b/lib/domain/exchange/usecase/exchange_usecase.dart index 7f2a857..b45713b 100644 --- a/lib/domain/exchange/usecase/exchange_usecase.dart +++ b/lib/domain/exchange/usecase/exchange_usecase.dart @@ -1,4 +1,4 @@ -import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/entities/exchange_entity.dart'; abstract class ExchangeUsecase { Future exchangeKRW(ExchangeEntity exchange); diff --git a/lib/domain/exchange/usecase/exchange_usercase_impl.dart b/lib/domain/exchange/usecase/exchange_usercase_impl.dart index f5b6a89..bcb7b00 100644 --- a/lib/domain/exchange/usecase/exchange_usercase_impl.dart +++ b/lib/domain/exchange/usecase/exchange_usercase_impl.dart @@ -1,4 +1,4 @@ -import 'package:jusicool_ios/domain/exchange/entity/exchange_entity.dart'; +import 'package:jusicool_ios/domain/exchange/entities/exchange_entity.dart'; import 'package:jusicool_ios/domain/exchange/repositories/exchange_repository.dart'; import 'package:jusicool_ios/domain/exchange/usecase/exchange_usecase.dart'; From dbc0f9e6c6ad5a72a62037d0a964151b9196e415 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:52:05 +0900 Subject: [PATCH 36/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20usecase=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/usecase/order_usecase.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/domain/order/usecase/order_usecase.dart diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart new file mode 100644 index 0000000..0a62a1e --- /dev/null +++ b/lib/domain/order/usecase/order_usecase.dart @@ -0,0 +1,17 @@ +import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; + +abstract class OrderUsecase { + Future fetchMyorders(List type); + + Future fetchMonthOrder(); + + Future fetchMonthRate(); + + Future order(double quantity); + + Future fetchReservationOrder(); +} \ No newline at end of file From df80826f91e4be22f40b8eb721c12f977f21637e Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:56:07 +0900 Subject: [PATCH 37/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20usecase=20impl?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/usecase/order_usecase_impl.dart | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 lib/domain/order/usecase/order_usecase_impl.dart diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart new file mode 100644 index 0000000..a1629ab --- /dev/null +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -0,0 +1,39 @@ +import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; +import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; +import 'package:jusicool_ios/domain/order/usecase/order_usecase.dart'; + +class OrderUsecaseImpl extends OrderUsecase { + + final OrderRepository _repository; + + OrderUsecaseImpl(this._repository); + + @override + Future fetchMonthOrder() async { + return await _repository.fetchMonthOrder(); + } + + @override + Future fetchMonthRate() async { + return await _repository.fetchMonthRate(); + } + + @override + Future fetchMyorders(List type) async { + return await _repository.fetchMyorders(type); + } + + @override + Future fetchReservationOrder() async { + return await _repository.fetchReservationOrder(); + } + + @override + Future order(double quantity) async { + return await _repository.order(quantity); + } +} \ No newline at end of file From c63cdfd2699dc94fad98022e7b6dc658cb149827 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 20:59:33 +0900 Subject: [PATCH 38/96] =?UTF-8?q?=E2=9C=A8=20::=20Exchange=20data=20source?= =?UTF-8?q?=20impl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_sources/exchange_data_source_impl.dart | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/lib/data/exchange/data_sources/exchange_data_source_impl.dart b/lib/data/exchange/data_sources/exchange_data_source_impl.dart index a66493b..800079b 100644 --- a/lib/data/exchange/data_sources/exchange_data_source_impl.dart +++ b/lib/data/exchange/data_sources/exchange_data_source_impl.dart @@ -1,20 +1,21 @@ import 'package:jusicool_ios/data/exchange/data_sources/exchange_data_source.dart'; import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; +import 'package:jusicool_ios/data/exchange/serivice/exchange_api.dart'; class ExchangeDataSourceImpl extends ExchangeDataSource { - + final ExchangeApi _exchangeApi; + + ExchangeDataSourceImpl(this._exchangeApi); @override - Future exchangeKRW(ExchangeRequestDto body) { - // TODO: implement exchangeKRW - throw UnimplementedError(); + Future exchangeKRW(ExchangeRequestDto body) async { + return await _exchangeApi.exchangeKRW(body); } @override - Future exchangeUSD(ExchangeRequestDto body) { - // TODO: implement exchangeUSD - throw UnimplementedError(); + Future exchangeUSD(ExchangeRequestDto body) async { + return await _exchangeApi.exchangeUSD(body); } } \ No newline at end of file From 7969aeceefb0168d673b1f82044f182804534377 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 21:00:05 +0900 Subject: [PATCH 39/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Local=20?= =?UTF-8?q?=ED=8F=B4=EB=8D=94=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/exchange/dto/local/request/.gitkeep | 0 lib/data/exchange/dto/local/response/.gitkeep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 lib/data/exchange/dto/local/request/.gitkeep create mode 100644 lib/data/exchange/dto/local/response/.gitkeep diff --git a/lib/data/exchange/dto/local/request/.gitkeep b/lib/data/exchange/dto/local/request/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/lib/data/exchange/dto/local/response/.gitkeep b/lib/data/exchange/dto/local/response/.gitkeep new file mode 100644 index 0000000..e69de29 From 6988eea537e21591a658d03228ebd6ea795505e7 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 23:32:55 +0900 Subject: [PATCH 40/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20Entity=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/order_entity.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lib/domain/order/entities/order_entity.dart diff --git a/lib/domain/order/entities/order_entity.dart b/lib/domain/order/entities/order_entity.dart new file mode 100644 index 0000000..3de3260 --- /dev/null +++ b/lib/domain/order/entities/order_entity.dart @@ -0,0 +1,10 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_entity.freezed.dart'; + +@freezed +abstract class OrderEntity with _$OrderEntity { + factory OrderEntity({ + required int price, + }) = _OrderEntity; +} \ No newline at end of file From d4cc4e178b6fc22177b363a4bdee08f0a331bd70 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 23:34:54 +0900 Subject: [PATCH 41/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20=20::=20Order=20Enti?= =?UTF-8?q?ty=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/repositories/order_repository.dart | 3 ++- lib/domain/order/usecase/order_usecase.dart | 3 ++- lib/domain/order/usecase/order_usecase_impl.dart | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart index 3c23564..1721df1 100644 --- a/lib/domain/order/repositories/order_repository.dart +++ b/lib/domain/order/repositories/order_repository.dart @@ -2,6 +2,7 @@ import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; abstract class OrderRepository { @@ -11,7 +12,7 @@ abstract class OrderRepository { Future fetchMonthRate(); - Future order(double quantity); + Future order(double quantity, String merketCode); Future fetchReservationOrder(); } \ No newline at end of file diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index 0a62a1e..f8ea6f3 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -2,6 +2,7 @@ import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; abstract class OrderUsecase { @@ -11,7 +12,7 @@ abstract class OrderUsecase { Future fetchMonthRate(); - Future order(double quantity); + Future order(double quantity, String merketCode); Future fetchReservationOrder(); } \ No newline at end of file diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index a1629ab..cb3995e 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -2,6 +2,7 @@ import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; import 'package:jusicool_ios/domain/order/usecase/order_usecase.dart'; @@ -33,7 +34,7 @@ class OrderUsecaseImpl extends OrderUsecase { } @override - Future order(double quantity) async { - return await _repository.order(quantity); + Future order(double quantity, String marketCode) async { + return await _repository.order(quantity,marketCode); } } \ No newline at end of file From f9a8a419e6ef787649000f8d00040867bfed8b08 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 23:39:49 +0900 Subject: [PATCH 42/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../request/reservation_order_request_dto.dart | 15 --------------- .../remote/request/reserve_order_request_dto.dart | 15 +++++++++++++++ .../order/entities/reservation_order_entity.dart | 10 ---------- .../order/entities/reserve_order_entity.dart | 10 ++++++++++ .../order/repositories/order_repository.dart | 4 ++-- lib/domain/order/usecase/order_usecase.dart | 4 ++-- lib/domain/order/usecase/order_usecase_impl.dart | 4 ++-- 7 files changed, 31 insertions(+), 31 deletions(-) delete mode 100644 lib/data/order/dto/remote/request/reservation_order_request_dto.dart create mode 100644 lib/data/order/dto/remote/request/reserve_order_request_dto.dart delete mode 100644 lib/domain/order/entities/reservation_order_entity.dart create mode 100644 lib/domain/order/entities/reserve_order_entity.dart diff --git a/lib/data/order/dto/remote/request/reservation_order_request_dto.dart b/lib/data/order/dto/remote/request/reservation_order_request_dto.dart deleted file mode 100644 index e534e15..0000000 --- a/lib/data/order/dto/remote/request/reservation_order_request_dto.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'reservation_order_request_dto.g.dart'; -part 'reservation_order_request_dto.freezed.dart'; - -@freezed -abstract class ReservationOrderRequestDto with _$ReservationOrderRequestDto { - factory ReservationOrderRequestDto({ - required int quantity, - required int price, - }) = _ReservationOrderRequestDto; - - factory ReservationOrderRequestDto.fromJson(Map json) => - _$ReservationOrderRequestDtoFromJson(json); -} \ No newline at end of file diff --git a/lib/data/order/dto/remote/request/reserve_order_request_dto.dart b/lib/data/order/dto/remote/request/reserve_order_request_dto.dart new file mode 100644 index 0000000..a328440 --- /dev/null +++ b/lib/data/order/dto/remote/request/reserve_order_request_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'reserve_order_request_dto.g.dart'; +part 'reserve_order_request_dto.freezed.dart'; + +@freezed +abstract class ReserveOrderRequestDto with _$ReserveOrderRequestDto { + factory ReserveOrderRequestDto({ + required int quantity, + required int price, + }) = _ReserveOrderRequestDto; + + factory ReserveOrderRequestDto.fromJson(Map json) => + _$ReserveOrderRequestDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/domain/order/entities/reservation_order_entity.dart b/lib/domain/order/entities/reservation_order_entity.dart deleted file mode 100644 index c29a995..0000000 --- a/lib/domain/order/entities/reservation_order_entity.dart +++ /dev/null @@ -1,10 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'reservation_order_entity.freezed.dart'; - -@freezed -abstract class ReservationOrderEntity with _$ReservationOrderEntity { - factory ReservationOrderEntity({ - required int price, - }) = _ReservationOrderEntity; -} \ No newline at end of file diff --git a/lib/domain/order/entities/reserve_order_entity.dart b/lib/domain/order/entities/reserve_order_entity.dart new file mode 100644 index 0000000..9d6495e --- /dev/null +++ b/lib/domain/order/entities/reserve_order_entity.dart @@ -0,0 +1,10 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'reserve_order_entity.freezed.dart'; + +@freezed +abstract class ReserveOrderEntity with _$ReserveOrderEntity { + factory ReserveOrderEntity({ + required int price, + }) = _ReserveOrderEntity; +} \ No newline at end of file diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart index 1721df1..dd03bc9 100644 --- a/lib/domain/order/repositories/order_repository.dart +++ b/lib/domain/order/repositories/order_repository.dart @@ -3,7 +3,7 @@ import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderRepository { Future fetchMyorders(List type); @@ -14,5 +14,5 @@ abstract class OrderRepository { Future order(double quantity, String merketCode); - Future fetchReservationOrder(); + Future fetchReservationOrder(); } \ No newline at end of file diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index f8ea6f3..e3137f9 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -3,7 +3,7 @@ import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderUsecase { Future fetchMyorders(List type); @@ -14,5 +14,5 @@ abstract class OrderUsecase { Future order(double quantity, String merketCode); - Future fetchReservationOrder(); + Future fetchReservationOrder(); } \ No newline at end of file diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index cb3995e..cf1bfba 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -3,7 +3,7 @@ import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/reservation_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; import 'package:jusicool_ios/domain/order/usecase/order_usecase.dart'; @@ -29,7 +29,7 @@ class OrderUsecaseImpl extends OrderUsecase { } @override - Future fetchReservationOrder() async { + Future fetchReservationOrder() async { return await _repository.fetchReservationOrder(); } From 0f39a396ce2fe5ff49497d878085bde413446cf2 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Wed, 9 Jul 2025 23:41:04 +0900 Subject: [PATCH 43/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20api=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/order/service/order_api.dart | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 lib/data/order/service/order_api.dart diff --git a/lib/data/order/service/order_api.dart b/lib/data/order/service/order_api.dart new file mode 100644 index 0000000..abb74e2 --- /dev/null +++ b/lib/data/order/service/order_api.dart @@ -0,0 +1,51 @@ +import 'package:dio/dio.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_rate_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; +import 'package:retrofit/http.dart'; + +part 'order_api.g.dart'; + +@RestApi() +abstract class OrderApi { + + factory OrderApi(Dio dio,{String baseUrl}) = _OrderApi; + + @GET('/order/my') + Future fetchMyOrder( + @Query('type') String type + ); + + @GET('/order/month') + Future fetchMonthOrder(); + + @GET('/order/month/rate') + Future fetchMonthRate(); + + @POST('order/buy/{marketCode}') + Future buyOrder( + @Path('marketCode') String marketCode, + @Body() OrderRequestDto body, + ); + + @POST('order/sell/{marketCode}') + Future sellOrder( + @Path('marketCode') String marketCode, + @Body() OrderRequestDto body, + ); + + @POST('order/buy/reserve/{marketCode}') + Future reserveBuyOrder( + @Path('marketCode') String marketCode, + @Body() ReserveOrderRequestDto body, + ); + + @POST('order/sell/reserve/{marketCode}') + Future reserveSellOrder( + @Path('marketCode') String marketCode, + @Body() ReserveOrderRequestDto body, + ); +} \ No newline at end of file From c355982aff5daa6f5d512aba9fac7290bb69c877 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 07:54:39 +0900 Subject: [PATCH 44/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20data=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/data_sources/order_data_source.dart | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/data/order/data_sources/order_data_source.dart diff --git a/lib/data/order/data_sources/order_data_source.dart b/lib/data/order/data_sources/order_data_source.dart new file mode 100644 index 0000000..76e5839 --- /dev/null +++ b/lib/data/order/data_sources/order_data_source.dart @@ -0,0 +1,23 @@ +import 'package:jusicool_ios/data/order/dto/remote/request/my_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_rate_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; + +abstract class OrderDataSource { + Future fetchMyOrder(MyOrderRequestDto body); + + Future fetchMonthOrder(); + + Future fetchMonthRate(); + + Future buyOrder(OrderRequestDto body); + + Future sellOrder(OrderRequestDto body); + + Future reserveBuyOrder(ReserveOrderRequestDto body); + + Future reserveSellOrder(ReserveOrderRequestDto body); +} \ No newline at end of file From b2b1dcab97416ce4dda017216f6de387b7e128f9 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 08:49:25 +0900 Subject: [PATCH 45/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20data=20source=20?= =?UTF-8?q?impl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_sources/order_data_source_impl.dart | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 lib/data/order/data_sources/order_data_source_impl.dart diff --git a/lib/data/order/data_sources/order_data_source_impl.dart b/lib/data/order/data_sources/order_data_source_impl.dart new file mode 100644 index 0000000..a8361b0 --- /dev/null +++ b/lib/data/order/data_sources/order_data_source_impl.dart @@ -0,0 +1,53 @@ +import 'package:jusicool_ios/data/order/data_sources/order_data_source.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/my_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/month_rate_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; +import 'package:jusicool_ios/data/order/service/order_api.dart'; + +class OrderDataSourceImpl extends OrderDataSource { + + final OrderApi _orderApi; + + OrderDataSourceImpl(this._orderApi); + + @override + Future fetchMyOrder(MyOrderRequestDto body) async { + return await _orderApi.fetchMyOrder(body.query.type.toString()); + } + + @override + Future fetchMonthOrder() async { + return await _orderApi.fetchMonthOrder(); + } + + @override + Future fetchMonthRate() async { + return await _orderApi.fetchMonthRate(); + } + + + @override + Future buyOrder(OrderRequestDto body, String marketCode) async { + return await _orderApi.buyOrder(marketCode, body); + } + + @override + Future sellOrder(OrderRequestDto body, String marketCode) async { + return await _orderApi.sellOrder(marketCode, body); + } + + @override + Future reserveBuyOrder(ReserveOrderRequestDto body, String marketCode) async { + return await _orderApi.reserveBuyOrder(marketCode, body); + } + + @override + Future reserveSellOrder(ReserveOrderRequestDto body, String marketCode) async { + return await _orderApi.reserveSellOrder(marketCode, body); + } + +} \ No newline at end of file From 83b78f78b53ef9055155e40de69063719802df4a Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 08:49:47 +0900 Subject: [PATCH 46/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Path=EC=97=90?= =?UTF-8?q?=20=EB=93=A4=EC=96=B4=EA=B0=88=20marketCode=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EC=9E=90=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/order/data_sources/order_data_source.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/data/order/data_sources/order_data_source.dart b/lib/data/order/data_sources/order_data_source.dart index 76e5839..52f4a8d 100644 --- a/lib/data/order/data_sources/order_data_source.dart +++ b/lib/data/order/data_sources/order_data_source.dart @@ -13,11 +13,11 @@ abstract class OrderDataSource { Future fetchMonthRate(); - Future buyOrder(OrderRequestDto body); + Future buyOrder(OrderRequestDto body, String marketCode); - Future sellOrder(OrderRequestDto body); + Future sellOrder(OrderRequestDto body, String marketCode); - Future reserveBuyOrder(ReserveOrderRequestDto body); + Future reserveBuyOrder(ReserveOrderRequestDto body, String marketCode); - Future reserveSellOrder(ReserveOrderRequestDto body); + Future reserveSellOrder(ReserveOrderRequestDto body, String marketCode); } \ No newline at end of file From 9b50d340dae3b9994b94c8bf0dd080a693500980 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 09:59:02 +0900 Subject: [PATCH 47/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20order=20response?= =?UTF-8?q?=20mapper=20clas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/response/month_order_response_mapper.dart | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/data/order/mapper/remote/response/month_order_response_mapper.dart diff --git a/lib/data/order/mapper/remote/response/month_order_response_mapper.dart b/lib/data/order/mapper/remote/response/month_order_response_mapper.dart new file mode 100644 index 0000000..565c974 --- /dev/null +++ b/lib/data/order/mapper/remote/response/month_order_response_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/order/dto/remote/response/month_order_response_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; + +class MonthOrderResponseMapper { + static MonthOrderResponseDto toDto(MonthOrderEntity entity) => + MonthOrderResponseDto(rate: entity.rate, orderCount: entity.orderCount); + static MonthOrderEntity toEntity(MonthOrderResponseDto dto) => + MonthOrderEntity(rate: dto.rate, orderCount: dto.orderCount); +} \ No newline at end of file From fb607c962ea3417c9e2cdc73b09cfff2d6c65f74 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 09:59:16 +0900 Subject: [PATCH 48/96] =?UTF-8?q?=E2=9C=A8=20::=20Month=20rate=20response?= =?UTF-8?q?=20mapper=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/moth_rate_response_mapper.dart | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart diff --git a/lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart b/lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart new file mode 100644 index 0000000..4c2211a --- /dev/null +++ b/lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart @@ -0,0 +1,26 @@ +import 'package:jusicool_ios/data/order/dto/remote/response/month_rate_response_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; +class MothRateResponseMapper { + static MonthRateResponseDto toDto(MonthRateEntity entity) => + MonthRateResponseDto( + monthlyRate: entity.monthlyRate, + markets: entity.markets.map((e) => MarketDto( + market: e.market, + koreanName: e.koreanName, + rate: e.rate, + proceed: e.proceed, + day: e.day, + )).toList(), + ); + static MonthRateEntity toEntity(MonthRateResponseDto dto) => + MonthRateEntity( + monthlyRate: dto.monthlyRate, + markets: dto.markets.map((e) => MarketEntity( + market: e.market, + koreanName: e.koreanName, + rate: e.rate, + proceed: e.proceed, + day: e.day, + )).toList(), + ); +} \ No newline at end of file From 3762a7e2c57a9dce5b3cdda46c661cc969a688ca Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 09:59:27 +0900 Subject: [PATCH 49/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20order=20response=20?= =?UTF-8?q?mapper=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/my_order_response_mapper.dart | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/data/order/mapper/remote/response/my_order_response_mapper.dart diff --git a/lib/data/order/mapper/remote/response/my_order_response_mapper.dart b/lib/data/order/mapper/remote/response/my_order_response_mapper.dart new file mode 100644 index 0000000..2065e1c --- /dev/null +++ b/lib/data/order/mapper/remote/response/my_order_response_mapper.dart @@ -0,0 +1,24 @@ +import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; + +class MyOrderResponseMapper { + static MyOrderResponseDto toDto(MyOrderEntity entity) => + MyOrderResponseDto( + id: entity.id, + market: entity.market, + orderType: entity.orderType, + reserveType: entity.reserveType, + quantity: entity.quantity, + status: entity.status, + ); + + static MyOrderEntity toEntity(MyOrderResponseDto dto) => + MyOrderEntity( + id: dto.id, + market: dto.market, + orderType: dto.orderType, + reserveType: dto.reserveType, + quantity: dto.quantity, + status: dto.status, + ); +} \ No newline at end of file From 9ee7a5cf13c131cff5adab588bbe3547335cc3b8 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:01:01 +0900 Subject: [PATCH 50/96] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20::=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20=EB=AA=85=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ate_response_mapper.dart => month_rate_response_mapper.dart} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename lib/data/order/mapper/remote/response/{moth_rate_response_mapper.dart => month_rate_response_mapper.dart} (96%) diff --git a/lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart b/lib/data/order/mapper/remote/response/month_rate_response_mapper.dart similarity index 96% rename from lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart rename to lib/data/order/mapper/remote/response/month_rate_response_mapper.dart index 4c2211a..5f1c6ad 100644 --- a/lib/data/order/mapper/remote/response/moth_rate_response_mapper.dart +++ b/lib/data/order/mapper/remote/response/month_rate_response_mapper.dart @@ -1,6 +1,6 @@ import 'package:jusicool_ios/data/order/dto/remote/response/month_rate_response_dto.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; -class MothRateResponseMapper { +class MonthRateResponseMapper { static MonthRateResponseDto toDto(MonthRateEntity entity) => MonthRateResponseDto( monthlyRate: entity.monthlyRate, From d04d5aaedcacc848dc63083cab25f1a1832349b7 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:03:53 +0900 Subject: [PATCH 51/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=20=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/usecase/order_usecase.dart | 4 ++-- lib/domain/order/usecase/order_usecase_impl.dart | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index e3137f9..0bac082 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -1,4 +1,4 @@ -import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; @@ -6,7 +6,7 @@ import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderUsecase { - Future fetchMyorders(List type); + Future fetchMyorders(StatusType type); Future fetchMonthOrder(); diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index cf1bfba..c5ac88b 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -1,4 +1,5 @@ import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; @@ -24,7 +25,7 @@ class OrderUsecaseImpl extends OrderUsecase { } @override - Future fetchMyorders(List type) async { + Future fetchMyorders(StatusType type) async { return await _repository.fetchMyorders(type); } From 48e127137398803f931ce54da39364ccfa591b69 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:14:28 +0900 Subject: [PATCH 52/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20entity=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=20=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/order_entity.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/domain/order/entities/order_entity.dart b/lib/domain/order/entities/order_entity.dart index 3de3260..4ca9b89 100644 --- a/lib/domain/order/entities/order_entity.dart +++ b/lib/domain/order/entities/order_entity.dart @@ -6,5 +6,6 @@ part 'order_entity.freezed.dart'; abstract class OrderEntity with _$OrderEntity { factory OrderEntity({ required int price, + required double quantity, }) = _OrderEntity; } \ No newline at end of file From 2c6a89acfa2c522a182e2e9a9b6cc8cbce8c13a4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:24:55 +0900 Subject: [PATCH 53/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20request=20mapper?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/remote/request/order_request_mapper.dart | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/data/order/mapper/remote/request/order_request_mapper.dart diff --git a/lib/data/order/mapper/remote/request/order_request_mapper.dart b/lib/data/order/mapper/remote/request/order_request_mapper.dart new file mode 100644 index 0000000..48ea14c --- /dev/null +++ b/lib/data/order/mapper/remote/request/order_request_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/order_request_entity.dart'; + +class OrderRequestMapper { + static OrderRequestDto toDto(OrderRequestEntity entity) => + OrderRequestDto(quantity: entity.quantity); + static OrderRequestEntity toEntity(OrderRequestDto dto) => + OrderRequestEntity(quantity: dto.quantity); +} \ No newline at end of file From 672cc901d09be5878d5574e5c550b6185448dc54 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:25:07 +0900 Subject: [PATCH 54/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20response=20mappe?= =?UTF-8?q?r=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/remote/response/order_response_mapper.dart | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/data/order/mapper/remote/response/order_response_mapper.dart diff --git a/lib/data/order/mapper/remote/response/order_response_mapper.dart b/lib/data/order/mapper/remote/response/order_response_mapper.dart new file mode 100644 index 0000000..93c8dd9 --- /dev/null +++ b/lib/data/order/mapper/remote/response/order_response_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; + +class OrderResponseMapper { + static OrderResponseDto toDto(OrderResponseEntity entity) => + OrderResponseDto(price: entity.price); + static OrderResponseEntity toEntity(OrderResponseDto dto) => + OrderResponseEntity(price: dto.price); +} \ No newline at end of file From e9d5542009b4d916995728c0cd063cbf7fea44f2 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:25:27 +0900 Subject: [PATCH 55/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20response=20entit?= =?UTF-8?q?y=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/order_entity.dart | 11 ----------- lib/domain/order/entities/order_request_entity.dart | 10 ++++++++++ 2 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 lib/domain/order/entities/order_entity.dart create mode 100644 lib/domain/order/entities/order_request_entity.dart diff --git a/lib/domain/order/entities/order_entity.dart b/lib/domain/order/entities/order_entity.dart deleted file mode 100644 index 4ca9b89..0000000 --- a/lib/domain/order/entities/order_entity.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:freezed_annotation/freezed_annotation.dart'; - -part 'order_entity.freezed.dart'; - -@freezed -abstract class OrderEntity with _$OrderEntity { - factory OrderEntity({ - required int price, - required double quantity, - }) = _OrderEntity; -} \ No newline at end of file diff --git a/lib/domain/order/entities/order_request_entity.dart b/lib/domain/order/entities/order_request_entity.dart new file mode 100644 index 0000000..146039f --- /dev/null +++ b/lib/domain/order/entities/order_request_entity.dart @@ -0,0 +1,10 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_request_entity.freezed.dart'; + +@freezed +abstract class OrderRequestEntity with _$OrderRequestEntity { + factory OrderRequestEntity({ + required double quantity, + }) = _OrderEntity; +} \ No newline at end of file From 76b21bf1b94e51ec7c6713b1ef704cb04813979b Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:25:45 +0900 Subject: [PATCH 56/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20response=20entit?= =?UTF-8?q?y=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/order_response_entity.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 lib/domain/order/entities/order_response_entity.dart diff --git a/lib/domain/order/entities/order_response_entity.dart b/lib/domain/order/entities/order_response_entity.dart new file mode 100644 index 0000000..9e77014 --- /dev/null +++ b/lib/domain/order/entities/order_response_entity.dart @@ -0,0 +1,10 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'order_response_entity.freezed.dart'; + +@freezed +abstract class OrderResponseEntity with _$OrderResponseEntity { + factory OrderResponseEntity({ + required int price, + }) = _OrderEntity; +} \ No newline at end of file From 057dcf08682efa80a5bd0b6a84389178fd35860a Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:26:17 +0900 Subject: [PATCH 57/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Entity=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=ED=95=A8=EC=88=98=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 --- .../repositories/order_repository_impl.dart | 71 +++++++++++++++++++ .../order/repositories/order_repository.dart | 15 ++-- lib/domain/order/usecase/order_usecase.dart | 2 +- .../order/usecase/order_usecase_impl.dart | 2 +- 4 files changed, 83 insertions(+), 7 deletions(-) create mode 100644 lib/data/order/repositories/order_repository_impl.dart diff --git a/lib/data/order/repositories/order_repository_impl.dart b/lib/data/order/repositories/order_repository_impl.dart new file mode 100644 index 0000000..3f4f716 --- /dev/null +++ b/lib/data/order/repositories/order_repository_impl.dart @@ -0,0 +1,71 @@ +import 'package:jusicool_ios/data/order/data_sources/order_data_source.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/request/order_request_mapper.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/response/month_order_response_mapper.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/response/month_rate_response_mapper.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/response/my_order_response_mapper.dart'; +import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; +import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_request_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; +import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/my_order_query_type_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/my_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/response/order_response_mapper.dart'; + +class OrderRepositoryImpl extends OrderRepository { + final OrderDataSource _orderDataSource; + + OrderRepositoryImpl(this._orderDataSource); + + @override + Future fetchMyorders(StatusType type) async { + final requestDto = MyOrderRequestDto( + query: MyOrderQueryTypeRequestDto(type: type), + ); + final response = await _orderDataSource.fetchMyOrder(requestDto); + return MyOrderResponseMapper.toEntity(response); + } + + @override + Future fetchMonthOrder() async { + final response = await _orderDataSource.fetchMonthOrder(); + return MonthOrderResponseMapper.toEntity(response); + } + + @override + Future fetchMonthRate() async { + final response = await _orderDataSource.fetchMonthRate(); + return MonthRateResponseMapper.toEntity(response); + } + + @override + Future buyOrder(OrderRequestEntity body, String marketCode) async { + final requestDto = OrderRequestMapper.toDto(body); + final response = await _orderDataSource.buyOrder(requestDto, marketCode); + return OrderResponseMapper.toEntity(response); + } + + @override + Future sellOrder(OrderRequestEntity body, String marketCode) async { + final requestDto = OrderRequestMapper.toDto(body); + final response = await _orderDataSource.buyOrder(requestDto, marketCode); + return OrderResponseMapper.toEntity(response); + } + + @override + Future reserveBuyOrder() { + // TODO: implement reserveBuyOrder + throw UnimplementedError(); + } + + @override + Future reserveSellOrder() { + // TODO: implement reserveSellOrder + throw UnimplementedError(); + } + +} \ No newline at end of file diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart index dd03bc9..302e6a7 100644 --- a/lib/domain/order/repositories/order_repository.dart +++ b/lib/domain/order/repositories/order_repository.dart @@ -1,18 +1,23 @@ -import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; +import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_request_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderRepository { - Future fetchMyorders(List type); + Future fetchMyorders(StatusType type); Future fetchMonthOrder(); Future fetchMonthRate(); - Future order(double quantity, String merketCode); + Future buyOrder(OrderRequestEntity quantity, String marketCode); - Future fetchReservationOrder(); + Future sellOrder(OrderRequestEntity quantity, String marketCode); + + Future reserveBuyOrder(); + + Future reserveSellOrder(); } \ No newline at end of file diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index 0bac082..fa29723 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -2,7 +2,7 @@ import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderUsecase { diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index c5ac88b..e064a62 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -3,7 +3,7 @@ import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; -import 'package:jusicool_ios/domain/order/entities/order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; import 'package:jusicool_ios/domain/order/usecase/order_usecase.dart'; From 45574bac1ad21d5fff9ead963af9eb709805deb5 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:34:14 +0900 Subject: [PATCH 58/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20MarketCode=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9E=90=EB=A1=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/repositories/order_repository.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart index 302e6a7..c239e36 100644 --- a/lib/domain/order/repositories/order_repository.dart +++ b/lib/domain/order/repositories/order_repository.dart @@ -17,7 +17,7 @@ abstract class OrderRepository { Future sellOrder(OrderRequestEntity quantity, String marketCode); - Future reserveBuyOrder(); + Future reserveBuyOrder(ReserveOrderEntity body, String marketCode); - Future reserveSellOrder(); + Future reserveSellOrder(ReserveOrderEntity body, String marketCode); } \ No newline at end of file From 69e55a74823ad69ce2b83de7f9edf999236e744d Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:34:26 +0900 Subject: [PATCH 59/96] =?UTF-8?q?=E2=9C=A8=20::=20Reserve=20order=20mapper?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/remote/request/reserve_order_mapper.dart | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/data/order/mapper/remote/request/reserve_order_mapper.dart diff --git a/lib/data/order/mapper/remote/request/reserve_order_mapper.dart b/lib/data/order/mapper/remote/request/reserve_order_mapper.dart new file mode 100644 index 0000000..7098540 --- /dev/null +++ b/lib/data/order/mapper/remote/request/reserve_order_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; + +class ReserveOrderMapper { + static ReserveOrderRequestDto toDto(ReserveOrderEntity entity) => + ReserveOrderRequestDto(quantity: entity.quantity, price: entity.price); + static ReserveOrderEntity toEntity(ReserveOrderRequestDto dto) => + ReserveOrderEntity(quantity: dto.quantity, price: dto.price); +} \ No newline at end of file From 5cc58dec486f9af9e3221c385895046e3d770596 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:34:44 +0900 Subject: [PATCH 60/96] =?UTF-8?q?=E2=9C=A8=20::=20Order=20repository=20imp?= =?UTF-8?q?l=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/order_repository_impl.dart | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/lib/data/order/repositories/order_repository_impl.dart b/lib/data/order/repositories/order_repository_impl.dart index 3f4f716..2957e9c 100644 --- a/lib/data/order/repositories/order_repository_impl.dart +++ b/lib/data/order/repositories/order_repository_impl.dart @@ -1,5 +1,9 @@ import 'package:jusicool_ios/data/order/data_sources/order_data_source.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; import 'package:jusicool_ios/data/order/mapper/remote/request/order_request_mapper.dart'; +import 'package:jusicool_ios/data/order/mapper/remote/request/reserve_order_mapper.dart'; import 'package:jusicool_ios/data/order/mapper/remote/response/month_order_response_mapper.dart'; import 'package:jusicool_ios/data/order/mapper/remote/response/month_rate_response_mapper.dart'; import 'package:jusicool_ios/data/order/mapper/remote/response/my_order_response_mapper.dart'; @@ -13,7 +17,6 @@ import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/my_order_query_type_request_dto.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/my_order_request_dto.dart'; -import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; import 'package:jusicool_ios/data/order/mapper/remote/response/order_response_mapper.dart'; class OrderRepositoryImpl extends OrderRepository { @@ -51,21 +54,21 @@ class OrderRepositoryImpl extends OrderRepository { @override Future sellOrder(OrderRequestEntity body, String marketCode) async { - final requestDto = OrderRequestMapper.toDto(body); - final response = await _orderDataSource.buyOrder(requestDto, marketCode); + final OrderRequestDto requestDto = OrderRequestMapper.toDto(body); + final OrderResponseDto response = await _orderDataSource.buyOrder(requestDto, marketCode); return OrderResponseMapper.toEntity(response); } @override - Future reserveBuyOrder() { - // TODO: implement reserveBuyOrder - throw UnimplementedError(); + Future reserveBuyOrder(ReserveOrderEntity body, String marketCode) async { + final ReserveOrderRequestDto request = ReserveOrderMapper.toDto(body); + return await _orderDataSource.reserveBuyOrder(request, marketCode); } @override - Future reserveSellOrder() { - // TODO: implement reserveSellOrder - throw UnimplementedError(); + Future reserveSellOrder(ReserveOrderEntity body, String marketCode) async { + final ReserveOrderRequestDto request = ReserveOrderMapper.toDto(body); + return await _orderDataSource.reserveBuyOrder(request, marketCode); } } \ No newline at end of file From d9c19048c66ac7c08ba6647cce1ff3718c464984 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:34:59 +0900 Subject: [PATCH 61/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20Quantity=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/order/entities/reserve_order_entity.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/domain/order/entities/reserve_order_entity.dart b/lib/domain/order/entities/reserve_order_entity.dart index 9d6495e..d98e79f 100644 --- a/lib/domain/order/entities/reserve_order_entity.dart +++ b/lib/domain/order/entities/reserve_order_entity.dart @@ -5,6 +5,7 @@ part 'reserve_order_entity.freezed.dart'; @freezed abstract class ReserveOrderEntity with _$ReserveOrderEntity { factory ReserveOrderEntity({ + required int quantity, required int price, }) = _ReserveOrderEntity; } \ No newline at end of file From e198d2c9a0f1aaf108a4a10018431b8f625b6ac0 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:40:52 +0900 Subject: [PATCH 62/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=EC=84=9C=EC=97=90=20=EB=A7=9E=EA=B2=8C=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 --- lib/domain/order/usecase/order_usecase.dart | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index fa29723..c4c8e25 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -2,6 +2,7 @@ import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_request_entity.dart'; import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; @@ -12,7 +13,11 @@ abstract class OrderUsecase { Future fetchMonthRate(); - Future order(double quantity, String merketCode); + Future buyOrder(OrderRequestEntity quantity, String marketCode); - Future fetchReservationOrder(); + Future sellOrder(OrderRequestEntity quantity, String marketCode); + + Future reserveBuyOrder(ReserveOrderEntity body, String marketCode); + + Future reserveSellOrder(ReserveOrderEntity body, String marketCode); } \ No newline at end of file From c9a68202f6206c922b4f167a3e2ff366c2f98574 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 10:41:03 +0900 Subject: [PATCH 63/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=EC=84=9C=EC=97=90=20=EB=A7=9E=EA=B2=8C=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 --- .../order/usecase/order_usecase_impl.dart | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index e064a62..8858133 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -1,8 +1,8 @@ -import 'package:jusicool_ios/domain/enum/share/order/reserve_type.dart'; import 'package:jusicool_ios/domain/enum/share/order/status_type.dart'; import 'package:jusicool_ios/domain/order/entities/month_order_entity.dart'; import 'package:jusicool_ios/domain/order/entities/month_rate_entity.dart'; import 'package:jusicool_ios/domain/order/entities/my_order_entity.dart'; +import 'package:jusicool_ios/domain/order/entities/order_request_entity.dart'; import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; import 'package:jusicool_ios/domain/order/repositories/order_repository.dart'; @@ -28,14 +28,24 @@ class OrderUsecaseImpl extends OrderUsecase { Future fetchMyorders(StatusType type) async { return await _repository.fetchMyorders(type); } - + @override - Future fetchReservationOrder() async { - return await _repository.fetchReservationOrder(); + Future buyOrder(OrderRequestEntity quantity, String marketCode) async { + return await _repository.buyOrder(quantity, marketCode); } - + @override - Future order(double quantity, String marketCode) async { - return await _repository.order(quantity,marketCode); + Future sellOrder(OrderRequestEntity quantity, String marketCode) async { + return await _repository.sellOrder(quantity, marketCode); } + + @override + Future reserveBuyOrder(ReserveOrderEntity body, String marketCode) async { + return await _repository.reserveBuyOrder(body, marketCode); + } + + @override + Future reserveSellOrder(ReserveOrderEntity body, String marketCode) async { + return await _repository.reserveSellOrder(body, marketCode); + } } \ No newline at end of file From 5b45d60cf5089a78d6dd580c0be30bca39f05e28 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:08:44 +0900 Subject: [PATCH 64/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20entity=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../holding/entities/holding_entity.dart | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/domain/holding/entities/holding_entity.dart diff --git a/lib/domain/holding/entities/holding_entity.dart b/lib/domain/holding/entities/holding_entity.dart new file mode 100644 index 0000000..61a494d --- /dev/null +++ b/lib/domain/holding/entities/holding_entity.dart @@ -0,0 +1,24 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'holding_entity.freezed.dart'; + +@freezed +abstract class HoldingEntity with _$HoldingEntity { + const factory HoldingEntity({ + required int id, + required MarketEntity market, + required int quantity, + required int price, + }) = _HoldingEntity; +} + +@freezed +abstract class MarketEntity with _$MarketEntity { + const factory MarketEntity({ + required int id, + @JsonKey(name: 'korean_name') required String koreanName, + @JsonKey(name: 'english_name') required String englishName, + required String market, + required String type, + }) = _MarketEntity; +} From d6c19558b04d64bbef7eb02d78b32b82eb73ea5e Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:11:16 +0900 Subject: [PATCH 65/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20repository=20c?= =?UTF-8?q?lass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/holding/repositories/holding_repository.dart | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lib/domain/holding/repositories/holding_repository.dart diff --git a/lib/domain/holding/repositories/holding_repository.dart b/lib/domain/holding/repositories/holding_repository.dart new file mode 100644 index 0000000..50b796f --- /dev/null +++ b/lib/domain/holding/repositories/holding_repository.dart @@ -0,0 +1,5 @@ +import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; + +abstract class HoldingRepository { + Future fetchMyholding(); +} \ No newline at end of file From f3a53851c2fa02b8ec0a508a85619d4a9ee6ea3f Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:11:25 +0900 Subject: [PATCH 66/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20usecase=20impl?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../holding/usecase/holding_usecase_impl.dart | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lib/domain/holding/usecase/holding_usecase_impl.dart diff --git a/lib/domain/holding/usecase/holding_usecase_impl.dart b/lib/domain/holding/usecase/holding_usecase_impl.dart new file mode 100644 index 0000000..7d76b8d --- /dev/null +++ b/lib/domain/holding/usecase/holding_usecase_impl.dart @@ -0,0 +1,16 @@ +import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; +import 'package:jusicool_ios/domain/holding/repositories/holding_repository.dart'; +import 'package:jusicool_ios/domain/holding/usecase/holding_usecase.dart'; + +class HoldingUsecaseImpl extends HoldingUsecase { + + final HoldingRepository _repository; + + HoldingUsecaseImpl(this._repository); + + @override + Future fetchMyholding() async { + return await _repository.fetchMyholding(); + } + +} \ No newline at end of file From c0528c2a0431a8f363f18fd09b8e4f13d796a1af Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:11:34 +0900 Subject: [PATCH 67/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20usecase=20clas?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/holding/usecase/holding_usecase.dart | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lib/domain/holding/usecase/holding_usecase.dart diff --git a/lib/domain/holding/usecase/holding_usecase.dart b/lib/domain/holding/usecase/holding_usecase.dart new file mode 100644 index 0000000..45b8ca7 --- /dev/null +++ b/lib/domain/holding/usecase/holding_usecase.dart @@ -0,0 +1,5 @@ +import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; + +abstract class HoldingUsecase { + Future fetchMyholding(); +} \ No newline at end of file From 7bf2f1ff62f41d1b1fb2c1a0b6a4c7bc96b77075 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:20:56 +0900 Subject: [PATCH 68/96] =?UTF-8?q?=F0=9F=94=A5=20::=20Jsonkey=20=EC=96=B4?= =?UTF-8?q?=EB=85=B8=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/holding/entities/holding_entity.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/domain/holding/entities/holding_entity.dart b/lib/domain/holding/entities/holding_entity.dart index 61a494d..e890690 100644 --- a/lib/domain/holding/entities/holding_entity.dart +++ b/lib/domain/holding/entities/holding_entity.dart @@ -16,8 +16,8 @@ abstract class HoldingEntity with _$HoldingEntity { abstract class MarketEntity with _$MarketEntity { const factory MarketEntity({ required int id, - @JsonKey(name: 'korean_name') required String koreanName, - @JsonKey(name: 'english_name') required String englishName, + required String koreanName, + required String englishName, required String market, required String type, }) = _MarketEntity; From 22221860b3147ecdc927445a94645318b699d2c6 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:22:48 +0900 Subject: [PATCH 69/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20holding=20response?= =?UTF-8?q?=20dto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/my_holding_response_dto.dart | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/data/holding/dto/remote/response/my_holding_response_dto.dart diff --git a/lib/data/holding/dto/remote/response/my_holding_response_dto.dart b/lib/data/holding/dto/remote/response/my_holding_response_dto.dart new file mode 100644 index 0000000..682ed9b --- /dev/null +++ b/lib/data/holding/dto/remote/response/my_holding_response_dto.dart @@ -0,0 +1,31 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'my_holding_response_dto.g.dart'; +part 'my_holding_response_dto.freezed.dart'; + +@freezed +abstract class MyHoldingResponseDto with _$MyHoldingResponseDto { + factory MyHoldingResponseDto({ + required int id, + required MyMarketDto market, + required int quantity, + required int price, + }) = _MyHoldingResponseDto; + + factory MyHoldingResponseDto.fromJson(Map json) => + _$MyHoldingResponseDtoFromJson(json); +} + +@freezed +abstract class MyMarketDto with _$MyMarketDto { + factory MyMarketDto({ + required int id, + @JsonKey(name: 'korean_name') required String koreanName, + @JsonKey(name: 'english_name') required String englishName, + required String market, + required String type, + }) = _MyMarketDto; + + factory MyMarketDto.fromJson(Map json) => + _$MyMarketDtoFromJson(json); +} \ No newline at end of file From e31fe5cddaf088f3469858a532719d2c31bc6d87 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:28:13 +0900 Subject: [PATCH 70/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20data=20source?= =?UTF-8?q?=20impl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_source/holding_data_source_impl.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/holding/data_source/holding_data_source_impl.dart diff --git a/lib/data/holding/data_source/holding_data_source_impl.dart b/lib/data/holding/data_source/holding_data_source_impl.dart new file mode 100644 index 0000000..6917dd7 --- /dev/null +++ b/lib/data/holding/data_source/holding_data_source_impl.dart @@ -0,0 +1,15 @@ +import 'package:jusicool_ios/data/holding/data_source/holding_data_source.dart'; +import 'package:jusicool_ios/data/holding/dto/remote/response/my_holding_response_dto.dart'; +import 'package:jusicool_ios/data/holding/service/holding_api.dart'; + +class HoldingDataSourceImpl extends HoldingDataSource { + + final HoldingApi _holdingApi; + + HoldingDataSourceImpl(this._holdingApi); + + @override + Future fetchMyHolding() async { + return await _holdingApi.fetchMyHolding(); + } +} \ No newline at end of file From 78cfedd41a259af491e9b7aeac3e750357cbb96c Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:28:24 +0900 Subject: [PATCH 71/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20data=20source?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/holding/data_source/holding_data_source.dart | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lib/data/holding/data_source/holding_data_source.dart diff --git a/lib/data/holding/data_source/holding_data_source.dart b/lib/data/holding/data_source/holding_data_source.dart new file mode 100644 index 0000000..af6a8d9 --- /dev/null +++ b/lib/data/holding/data_source/holding_data_source.dart @@ -0,0 +1,5 @@ +import 'package:jusicool_ios/data/holding/dto/remote/response/my_holding_response_dto.dart'; + +abstract class HoldingDataSource { + Future fetchMyHolding(); +} \ No newline at end of file From 657e352d4b18cdb7889c83a6a9e93221cc2c4c19 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:28:44 +0900 Subject: [PATCH 72/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/holding/service/holding_api.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/data/holding/service/holding_api.dart diff --git a/lib/data/holding/service/holding_api.dart b/lib/data/holding/service/holding_api.dart new file mode 100644 index 0000000..7bf5487 --- /dev/null +++ b/lib/data/holding/service/holding_api.dart @@ -0,0 +1,15 @@ +import 'package:dio/dio.dart'; +import 'package:jusicool_ios/data/holding/dto/remote/response/my_holding_response_dto.dart'; +import 'package:retrofit/http.dart'; + +part 'holding_api.g.dart'; + +@RestApi() +abstract class HoldingApi { + + factory HoldingApi(Dio dio,{String baseUrl}) = _HoldingApi; + + @GET('/holding/my') + Future fetchMyHolding(); + +} \ No newline at end of file From bd8b1416a711959c31e8c98910fbbe2872e3cc42 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:49:10 +0900 Subject: [PATCH 73/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{holding_entity.dart => my_holding_entity.dart} | 8 ++++---- lib/domain/holding/usecase/holding_usecase.dart | 4 ++-- lib/domain/holding/usecase/holding_usecase_impl.dart | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) rename lib/domain/holding/entities/{holding_entity.dart => my_holding_entity.dart} (73%) diff --git a/lib/domain/holding/entities/holding_entity.dart b/lib/domain/holding/entities/my_holding_entity.dart similarity index 73% rename from lib/domain/holding/entities/holding_entity.dart rename to lib/domain/holding/entities/my_holding_entity.dart index e890690..8a14bf4 100644 --- a/lib/domain/holding/entities/holding_entity.dart +++ b/lib/domain/holding/entities/my_holding_entity.dart @@ -1,15 +1,15 @@ import 'package:freezed_annotation/freezed_annotation.dart'; -part 'holding_entity.freezed.dart'; +part 'my_holding_entity.freezed.dart'; @freezed -abstract class HoldingEntity with _$HoldingEntity { - const factory HoldingEntity({ +abstract class MyHoldingEntity with _$MyHoldingEntity { + const factory MyHoldingEntity({ required int id, required MarketEntity market, required int quantity, required int price, - }) = _HoldingEntity; + }) = _MyHoldingEntity; } @freezed diff --git a/lib/domain/holding/usecase/holding_usecase.dart b/lib/domain/holding/usecase/holding_usecase.dart index 45b8ca7..9f5e83c 100644 --- a/lib/domain/holding/usecase/holding_usecase.dart +++ b/lib/domain/holding/usecase/holding_usecase.dart @@ -1,5 +1,5 @@ -import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; +import 'package:jusicool_ios/domain/holding/entities/my_holding_entity.dart'; abstract class HoldingUsecase { - Future fetchMyholding(); + Future fetchMyholding(); } \ No newline at end of file diff --git a/lib/domain/holding/usecase/holding_usecase_impl.dart b/lib/domain/holding/usecase/holding_usecase_impl.dart index 7d76b8d..bdfa95e 100644 --- a/lib/domain/holding/usecase/holding_usecase_impl.dart +++ b/lib/domain/holding/usecase/holding_usecase_impl.dart @@ -1,4 +1,4 @@ -import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; +import 'package:jusicool_ios/domain/holding/entities/my_holding_entity.dart'; import 'package:jusicool_ios/domain/holding/repositories/holding_repository.dart'; import 'package:jusicool_ios/domain/holding/usecase/holding_usecase.dart'; @@ -9,7 +9,7 @@ class HoldingUsecaseImpl extends HoldingUsecase { HoldingUsecaseImpl(this._repository); @override - Future fetchMyholding() async { + Future fetchMyholding() async { return await _repository.fetchMyholding(); } From 5bb7c8fc5cac68c17d8218d868312e3aa0a11d5d Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:55:29 +0900 Subject: [PATCH 74/96] =?UTF-8?q?=E2=9C=A8=20::=20Holding=20repository=20i?= =?UTF-8?q?mpl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/holding_repository_impl.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/data/holding/repositories/holding_repository_impl.dart diff --git a/lib/data/holding/repositories/holding_repository_impl.dart b/lib/data/holding/repositories/holding_repository_impl.dart new file mode 100644 index 0000000..d552769 --- /dev/null +++ b/lib/data/holding/repositories/holding_repository_impl.dart @@ -0,0 +1,17 @@ +import 'package:jusicool_ios/data/holding/data_source/holding_data_source.dart'; +import 'package:jusicool_ios/data/holding/mappers/remote/response/my_holding_response_mapper.dart'; +import 'package:jusicool_ios/domain/holding/entities/my_holding_entity.dart'; +import 'package:jusicool_ios/domain/holding/repositories/holding_repository.dart'; + +class HoldingRepositoryImpl extends HoldingRepository { + + final HoldingDataSource _holdingDataSource; + HoldingRepositoryImpl(this._holdingDataSource); + + @override + Future fetchMyholding() async { + final response = await _holdingDataSource.fetchMyHolding(); + return MyHoldingResponseMapper.toEntity(response); + } + +} \ No newline at end of file From 2af34d19e391a07ad0dcd4abf12ee918bd6e4a9b Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:55:41 +0900 Subject: [PATCH 75/96] =?UTF-8?q?=E2=9C=A8=20::=20My=20holding=20response?= =?UTF-8?q?=20mapper=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/my_holding_response_mapper.dart | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 lib/data/holding/mappers/remote/response/my_holding_response_mapper.dart diff --git a/lib/data/holding/mappers/remote/response/my_holding_response_mapper.dart b/lib/data/holding/mappers/remote/response/my_holding_response_mapper.dart new file mode 100644 index 0000000..84e9166 --- /dev/null +++ b/lib/data/holding/mappers/remote/response/my_holding_response_mapper.dart @@ -0,0 +1,31 @@ +import 'package:jusicool_ios/data/holding/dto/remote/response/my_holding_response_dto.dart'; +import 'package:jusicool_ios/domain/holding/entities/my_holding_entity.dart'; + +class MyHoldingResponseMapper { + static MyHoldingResponseDto toDto(MyHoldingEntity entity) => + MyHoldingResponseDto( + id: entity.id, + market: entity.market.map((e) => MyMarketDto( + id: e.id, + koreanName: e.koreanName, + englishName: e.englishName, + market: e.market, + type: e.type, + )), + quantity: entity.quantity, + price: entity.price, + ); + static MyHoldingEntity toEntity(MyHoldingResponseDto dto) => + MyHoldingEntity( + id: dto.id, + market: dto.market.map((e) => MarketEntity( + id: e.id, + koreanName: e.koreanName, + englishName: e.englishName, + market: e.market, + type: e.type, + )), + quantity: dto.quantity, + price: dto.price, + ); +} \ No newline at end of file From 0df037f86a0a42c13b44829e98f8664ba18306c2 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 11:57:35 +0900 Subject: [PATCH 76/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/holding/repositories/holding_repository.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/domain/holding/repositories/holding_repository.dart b/lib/domain/holding/repositories/holding_repository.dart index 50b796f..e07875d 100644 --- a/lib/domain/holding/repositories/holding_repository.dart +++ b/lib/domain/holding/repositories/holding_repository.dart @@ -1,5 +1,5 @@ -import 'package:jusicool_ios/domain/holding/entities/holding_entity.dart'; +import 'package:jusicool_ios/domain/holding/entities/my_holding_entity.dart'; abstract class HoldingRepository { - Future fetchMyholding(); + Future fetchMyholding(); } \ No newline at end of file From bf31cf0975df8bcf7c94467b57f43b334e6cc377 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:52:53 +0900 Subject: [PATCH 77/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20data=20source?= =?UTF-8?q?=20impl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_source/market_data_source_impl.dart | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lib/data/market/data_source/market_data_source_impl.dart diff --git a/lib/data/market/data_source/market_data_source_impl.dart b/lib/data/market/data_source/market_data_source_impl.dart new file mode 100644 index 0000000..c35bd00 --- /dev/null +++ b/lib/data/market/data_source/market_data_source_impl.dart @@ -0,0 +1,19 @@ +import 'package:jusicool_ios/data/market/data_source/market_data_source.dart'; +import 'package:jusicool_ios/data/market/dto/remote/response/market_response_dto.dart'; +import 'package:jusicool_ios/data/market/dto/remote/request/market_request_dto.dart'; +import 'package:jusicool_ios/data/market/service/market_api.dart'; + +class MarketDataSourceImpl extends MarketDataSource { + final MarketApi _api; + MarketDataSourceImpl(this._api); + + @override + Future> fetchMarkets(MarketRequestDto request) async { + return await _api.fetchMarkets(request); + } + + @override + Future> searchMarkets(String query) async { + return await _api.searchMarkets(query); + } +} \ No newline at end of file From 74de55ec065c7b90e6120ad84bf7a7e11af97305 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:53:03 +0900 Subject: [PATCH 78/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20data=20source?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/market/data_source/market_data_source.dart | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lib/data/market/data_source/market_data_source.dart diff --git a/lib/data/market/data_source/market_data_source.dart b/lib/data/market/data_source/market_data_source.dart new file mode 100644 index 0000000..c431099 --- /dev/null +++ b/lib/data/market/data_source/market_data_source.dart @@ -0,0 +1,7 @@ +import 'package:jusicool_ios/data/market/dto/remote/response/market_response_dto.dart'; +import 'package:jusicool_ios/data/market/dto/remote/request/market_request_dto.dart'; + +abstract class MarketDataSource { + Future> fetchMarkets(MarketRequestDto request); + Future> searchMarkets(String query); +} \ No newline at end of file From a8234326b93622dcdd2ad148c7ed295de1ef7df3 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:53:13 +0900 Subject: [PATCH 79/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20request=20dto?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/request/market_request_dto.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/data/market/dto/remote/request/market_request_dto.dart diff --git a/lib/data/market/dto/remote/request/market_request_dto.dart b/lib/data/market/dto/remote/request/market_request_dto.dart new file mode 100644 index 0000000..8fa69d9 --- /dev/null +++ b/lib/data/market/dto/remote/request/market_request_dto.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'market_request_dto.freezed.dart'; +part 'market_request_dto.g.dart'; + +@freezed +abstract class MarketRequestDto with _$MarketRequestDto { + const factory MarketRequestDto({ + required String type, + }) = _MarketRequestDto; + + factory MarketRequestDto.fromJson(Map json) => _$MarketRequestDtoFromJson(json); +} \ No newline at end of file From 5fdb528d07a1bee17dc0856a3c77d024717bd22f Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:53:29 +0900 Subject: [PATCH 80/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20search=20reques?= =?UTF-8?q?t=20dto=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/request/market_search_request_dto.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/data/market/dto/remote/request/market_search_request_dto.dart diff --git a/lib/data/market/dto/remote/request/market_search_request_dto.dart b/lib/data/market/dto/remote/request/market_search_request_dto.dart new file mode 100644 index 0000000..71670e3 --- /dev/null +++ b/lib/data/market/dto/remote/request/market_search_request_dto.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'market_search_request_dto.freezed.dart'; +part 'market_search_request_dto.g.dart'; + +@freezed +abstract class MarketSearchRequestDto with _$MarketSearchRequestDto { + const factory MarketSearchRequestDto({ + required String query, + }) = _MarketSearchRequestDto; + + factory MarketSearchRequestDto.fromJson(Map json) => _$MarketSearchRequestDtoFromJson(json); +} \ No newline at end of file From e18c6e2d5fc558db6f7c4faa71e994c8fdbfeaf5 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:53:38 +0900 Subject: [PATCH 81/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20response=20dto?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../remote/response/market_response_dto.dart | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 lib/data/market/dto/remote/response/market_response_dto.dart diff --git a/lib/data/market/dto/remote/response/market_response_dto.dart b/lib/data/market/dto/remote/response/market_response_dto.dart new file mode 100644 index 0000000..e0eb9ea --- /dev/null +++ b/lib/data/market/dto/remote/response/market_response_dto.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'market_response_dto.freezed.dart'; +part 'market_response_dto.g.dart'; + +@freezed +abstract class MarketResponseDto with _$MarketResponseDto { + const factory MarketResponseDto({ + required int id, + @JsonKey(name: 'korean_name') required String koreanName, + @JsonKey(name: 'english_name') required String englishName, + required String market, + @JsonKey(name: 'market_type') required String marketType, + }) = _MarketResponseDto; + + factory MarketResponseDto.fromJson(Map json) => _$MarketResponseDtoFromJson(json); +} \ No newline at end of file From 2b1a6edeaecbe98db87b716350114460015d7795 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:53:48 +0900 Subject: [PATCH 82/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20response=20mapp?= =?UTF-8?q?er=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/market_response_mapper.dart | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/data/market/mapper/remote/response/market_response_mapper.dart diff --git a/lib/data/market/mapper/remote/response/market_response_mapper.dart b/lib/data/market/mapper/remote/response/market_response_mapper.dart new file mode 100644 index 0000000..95908dd --- /dev/null +++ b/lib/data/market/mapper/remote/response/market_response_mapper.dart @@ -0,0 +1,24 @@ +import 'package:jusicool_ios/data/market/dto/remote/response/market_response_dto.dart'; +import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; +import 'package:jusicool_ios/domain/enum/share/market/market_type.dart'; + +class MarketResponseMapper { + static MarketEntity toEntity(MarketResponseDto dto) => MarketEntity( + id: dto.id, + koreanName: dto.koreanName, + englishName: dto.englishName, + market: dto.market, + marketType: _marketTypeFromString(dto.marketType), + ); +} + +MarketType _marketTypeFromString(String value) { + switch (value) { + case 'CRYPTO': + return MarketType.crypto(); + case 'STOCK': + return MarketType.stock(); + default: + throw Exception('Unknown MarketType: $value'); + } +} \ No newline at end of file From 32dcb66fd4d01474a455047239c07744df92cc10 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:54:00 +0900 Subject: [PATCH 83/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20repository=20im?= =?UTF-8?q?pl=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositories/market_repository_impl.dart | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/data/market/repositories/market_repository_impl.dart diff --git a/lib/data/market/repositories/market_repository_impl.dart b/lib/data/market/repositories/market_repository_impl.dart new file mode 100644 index 0000000..eef1368 --- /dev/null +++ b/lib/data/market/repositories/market_repository_impl.dart @@ -0,0 +1,23 @@ +import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; +import 'package:jusicool_ios/domain/market/repositories/market_repository.dart'; +import 'package:jusicool_ios/data/market/data_source/market_data_source.dart'; +import 'package:jusicool_ios/data/market/dto/remote/request/market_request_dto.dart'; +import 'package:jusicool_ios/data/market/mapper/remote/response/market_response_mapper.dart'; + +class MarketRepositoryImpl extends MarketRepository { + final MarketDataSource _dataSource; + MarketRepositoryImpl(this._dataSource); + + @override + Future> fetchMarkets(String type) async { + final request = MarketRequestDto(type: type); + final response = await _dataSource.fetchMarkets(request); + return response.map((e) => MarketResponseMapper.toEntity(e)).toList(); + } + + @override + Future> searchMarkets(String query) async { + final response = await _dataSource.searchMarkets(query); + return response.map((e) => MarketResponseMapper.toEntity(e)).toList(); + } +} \ No newline at end of file From 6a445524229871c7b5979ba78d1e543847da738b Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:54:09 +0900 Subject: [PATCH 84/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20api=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/market/service/market_api.dart | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lib/data/market/service/market_api.dart diff --git a/lib/data/market/service/market_api.dart b/lib/data/market/service/market_api.dart new file mode 100644 index 0000000..dd13224 --- /dev/null +++ b/lib/data/market/service/market_api.dart @@ -0,0 +1,18 @@ +import 'package:dio/dio.dart'; +import 'package:retrofit/http.dart'; +import 'package:jusicool_ios/data/market/dto/remote/response/market_response_dto.dart'; +import 'package:jusicool_ios/data/market/dto/remote/request/market_request_dto.dart'; +import 'package:jusicool_ios/data/market/dto/remote/request/market_search_request_dto.dart'; + +part 'market_api.g.dart'; + +@RestApi() +abstract class MarketApi { + factory MarketApi(Dio dio, {String baseUrl}) = _MarketApi; + + @GET('/market/list') + Future> fetchMarkets(@Body() MarketRequestDto request); + + @GET('/market/search') + Future> searchMarkets(@Query('query') String query); +} \ No newline at end of file From f40f39132ef4e1def6a75cb51467180c667f6120 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:54:24 +0900 Subject: [PATCH 85/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20type=20enum=20c?= =?UTF-8?q?lass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/enum/share/market/market_type.dart | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/domain/enum/share/market/market_type.dart diff --git a/lib/domain/enum/share/market/market_type.dart b/lib/domain/enum/share/market/market_type.dart new file mode 100644 index 0000000..197dd68 --- /dev/null +++ b/lib/domain/enum/share/market/market_type.dart @@ -0,0 +1,13 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'market_type.g.dart'; +part 'market_type.freezed.dart'; + +@freezed +abstract class MarketType with _$MarketType { + const factory MarketType.crypto() = _Crypto; + const factory MarketType.stock() = _Stock; + + factory MarketType.fromJson(Map json) => + _$MarketTypeFromJson(json); +} \ No newline at end of file From de8d069f15d24593fda233f29cc08892410322f4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:54:32 +0900 Subject: [PATCH 86/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20entity=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/market/entities/market_entity.dart | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 lib/domain/market/entities/market_entity.dart diff --git a/lib/domain/market/entities/market_entity.dart b/lib/domain/market/entities/market_entity.dart new file mode 100644 index 0000000..f93bcd7 --- /dev/null +++ b/lib/domain/market/entities/market_entity.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; +import 'package:jusicool_ios/domain/enum/share/market/market_type.dart'; + +part 'market_entity.freezed.dart'; + +@freezed +abstract class MarketEntity with _$MarketEntity { + const factory MarketEntity({ + required int id, + required String koreanName, + required String englishName, + required String market, + required MarketType marketType, + }) = _MarketEntity; +} \ No newline at end of file From caf4d450b05c12a5f2f6578a05c5e02d0a80aa97 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:54:41 +0900 Subject: [PATCH 87/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20repository=20cl?= =?UTF-8?q?ass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/market/repositories/market_repository.dart | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 lib/domain/market/repositories/market_repository.dart diff --git a/lib/domain/market/repositories/market_repository.dart b/lib/domain/market/repositories/market_repository.dart new file mode 100644 index 0000000..e6f6145 --- /dev/null +++ b/lib/domain/market/repositories/market_repository.dart @@ -0,0 +1,6 @@ +import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; + +abstract class MarketRepository { + Future> fetchMarkets(String type); + Future> searchMarkets(String query); +} \ No newline at end of file From ce971dd1aaad91133ef2e0786a05853b3ee9228f Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:55:29 +0900 Subject: [PATCH 88/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20usecase=20impl?= =?UTF-8?q?=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../market/usecase/market_usecase_impl.dart | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 lib/domain/market/usecase/market_usecase_impl.dart diff --git a/lib/domain/market/usecase/market_usecase_impl.dart b/lib/domain/market/usecase/market_usecase_impl.dart new file mode 100644 index 0000000..9763dff --- /dev/null +++ b/lib/domain/market/usecase/market_usecase_impl.dart @@ -0,0 +1,18 @@ +import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; +import 'package:jusicool_ios/domain/market/repositories/market_repository.dart'; +import 'package:jusicool_ios/domain/market/usecase/market_usecase.dart'; + +class MarketUsecaseImpl extends MarketUsecase { + final MarketRepository _repository; + MarketUsecaseImpl(this._repository); + + @override + Future> fetchMarkets(String type) async { + return await _repository.fetchMarkets(type); + } + + @override + Future> searchMarkets(String query) async { + return await _repository.searchMarkets(query); + } +} \ No newline at end of file From df4592078eca6165e7d0805701a3c50f2d606007 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Thu, 10 Jul 2025 15:55:40 +0900 Subject: [PATCH 89/96] =?UTF-8?q?=E2=9C=A8=20::=20Market=20usecase=20class?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/domain/market/usecase/market_usecase.dart | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 lib/domain/market/usecase/market_usecase.dart diff --git a/lib/domain/market/usecase/market_usecase.dart b/lib/domain/market/usecase/market_usecase.dart new file mode 100644 index 0000000..a6f15b3 --- /dev/null +++ b/lib/domain/market/usecase/market_usecase.dart @@ -0,0 +1,7 @@ +import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; + +abstract class MarketUsecase { + Future> fetchMarkets(String type); + + Future> searchMarkets(String query); +} \ No newline at end of file From 09c8a4b13f365e20f485b0ec4a6764abba1601e4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 08:31:38 +0900 Subject: [PATCH 90/96] =?UTF-8?q?=E2=9C=A8=20::=20=EB=A7=88=EC=BC=93=20?= =?UTF-8?q?=EC=83=81=ED=95=98=ED=96=A5=20=EC=98=88=EC=B8=A1=20api=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/market/data_source/market_data_source.dart | 1 + lib/data/market/data_source/market_data_source_impl.dart | 5 +++++ lib/data/market/repositories/market_repository_impl.dart | 5 +++++ lib/data/market/service/market_api.dart | 5 +++++ lib/domain/market/repositories/market_repository.dart | 1 + lib/domain/market/usecase/market_usecase.dart | 2 ++ lib/domain/market/usecase/market_usecase_impl.dart | 5 +++++ 7 files changed, 24 insertions(+) diff --git a/lib/data/market/data_source/market_data_source.dart b/lib/data/market/data_source/market_data_source.dart index c431099..72abc39 100644 --- a/lib/data/market/data_source/market_data_source.dart +++ b/lib/data/market/data_source/market_data_source.dart @@ -4,4 +4,5 @@ import 'package:jusicool_ios/data/market/dto/remote/request/market_request_dto.d abstract class MarketDataSource { Future> fetchMarkets(MarketRequestDto request); Future> searchMarkets(String query); + Future prediction(String marketCode); } \ No newline at end of file diff --git a/lib/data/market/data_source/market_data_source_impl.dart b/lib/data/market/data_source/market_data_source_impl.dart index c35bd00..f65da39 100644 --- a/lib/data/market/data_source/market_data_source_impl.dart +++ b/lib/data/market/data_source/market_data_source_impl.dart @@ -16,4 +16,9 @@ class MarketDataSourceImpl extends MarketDataSource { Future> searchMarkets(String query) async { return await _api.searchMarkets(query); } + + @override + Future prediction(String marketCode) async { + return await _api.prediction(marketCode); + } } \ No newline at end of file diff --git a/lib/data/market/repositories/market_repository_impl.dart b/lib/data/market/repositories/market_repository_impl.dart index eef1368..14657f6 100644 --- a/lib/data/market/repositories/market_repository_impl.dart +++ b/lib/data/market/repositories/market_repository_impl.dart @@ -20,4 +20,9 @@ class MarketRepositoryImpl extends MarketRepository { final response = await _dataSource.searchMarkets(query); return response.map((e) => MarketResponseMapper.toEntity(e)).toList(); } + + @override + Future prediction(String marketCode) async { + return await _dataSource.prediction(marketCode); + } } \ No newline at end of file diff --git a/lib/data/market/service/market_api.dart b/lib/data/market/service/market_api.dart index dd13224..4717968 100644 --- a/lib/data/market/service/market_api.dart +++ b/lib/data/market/service/market_api.dart @@ -15,4 +15,9 @@ abstract class MarketApi { @GET('/market/search') Future> searchMarkets(@Query('query') String query); + + @GET('/market/{marketCode}') + Future prediction( + @Path('marketCode') String marketCode, + ); } \ No newline at end of file diff --git a/lib/domain/market/repositories/market_repository.dart b/lib/domain/market/repositories/market_repository.dart index e6f6145..75b9846 100644 --- a/lib/domain/market/repositories/market_repository.dart +++ b/lib/domain/market/repositories/market_repository.dart @@ -3,4 +3,5 @@ import 'package:jusicool_ios/domain/market/entities/market_entity.dart'; abstract class MarketRepository { Future> fetchMarkets(String type); Future> searchMarkets(String query); + Future prediction(String marketCode); } \ No newline at end of file diff --git a/lib/domain/market/usecase/market_usecase.dart b/lib/domain/market/usecase/market_usecase.dart index a6f15b3..291783f 100644 --- a/lib/domain/market/usecase/market_usecase.dart +++ b/lib/domain/market/usecase/market_usecase.dart @@ -4,4 +4,6 @@ abstract class MarketUsecase { Future> fetchMarkets(String type); Future> searchMarkets(String query); + + Future prediction(String marketCode); } \ No newline at end of file diff --git a/lib/domain/market/usecase/market_usecase_impl.dart b/lib/domain/market/usecase/market_usecase_impl.dart index 9763dff..a5a8922 100644 --- a/lib/domain/market/usecase/market_usecase_impl.dart +++ b/lib/domain/market/usecase/market_usecase_impl.dart @@ -15,4 +15,9 @@ class MarketUsecaseImpl extends MarketUsecase { Future> searchMarkets(String query) async { return await _repository.searchMarkets(query); } + + @override + Future prediction(String marketCode) async { + return await _repository.prediction(marketCode); + } } \ No newline at end of file From b034f09ee47928f8e639b5111b7d988d476c6404 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 08:41:38 +0900 Subject: [PATCH 91/96] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20::=20=EB=AA=85?= =?UTF-8?q?=EC=84=B8=EC=84=9C=EC=97=90=20=EB=A7=9E=EA=B2=8C=20List?= =?UTF-8?q?=EB=A1=9C=20=EB=B0=9B=EC=95=84=EC=98=A4=EA=B2=8C=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 --- lib/data/order/data_sources/order_data_source.dart | 2 +- lib/data/order/data_sources/order_data_source_impl.dart | 2 +- lib/data/order/repositories/order_repository_impl.dart | 5 +++-- lib/data/order/service/order_api.dart | 2 +- lib/domain/order/repositories/order_repository.dart | 2 +- lib/domain/order/usecase/order_usecase.dart | 2 +- lib/domain/order/usecase/order_usecase_impl.dart | 2 +- 7 files changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/data/order/data_sources/order_data_source.dart b/lib/data/order/data_sources/order_data_source.dart index 52f4a8d..ff4639e 100644 --- a/lib/data/order/data_sources/order_data_source.dart +++ b/lib/data/order/data_sources/order_data_source.dart @@ -7,7 +7,7 @@ import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dt import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; abstract class OrderDataSource { - Future fetchMyOrder(MyOrderRequestDto body); + Future> fetchMyOrder(MyOrderRequestDto body); Future fetchMonthOrder(); diff --git a/lib/data/order/data_sources/order_data_source_impl.dart b/lib/data/order/data_sources/order_data_source_impl.dart index a8361b0..dd5b321 100644 --- a/lib/data/order/data_sources/order_data_source_impl.dart +++ b/lib/data/order/data_sources/order_data_source_impl.dart @@ -15,7 +15,7 @@ class OrderDataSourceImpl extends OrderDataSource { OrderDataSourceImpl(this._orderApi); @override - Future fetchMyOrder(MyOrderRequestDto body) async { + Future> fetchMyOrder(MyOrderRequestDto body) async { return await _orderApi.fetchMyOrder(body.query.type.toString()); } diff --git a/lib/data/order/repositories/order_repository_impl.dart b/lib/data/order/repositories/order_repository_impl.dart index 2957e9c..ee0f82b 100644 --- a/lib/data/order/repositories/order_repository_impl.dart +++ b/lib/data/order/repositories/order_repository_impl.dart @@ -1,6 +1,7 @@ import 'package:jusicool_ios/data/order/data_sources/order_data_source.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; +import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; import 'package:jusicool_ios/data/order/mapper/remote/request/order_request_mapper.dart'; import 'package:jusicool_ios/data/order/mapper/remote/request/reserve_order_mapper.dart'; @@ -25,12 +26,12 @@ class OrderRepositoryImpl extends OrderRepository { OrderRepositoryImpl(this._orderDataSource); @override - Future fetchMyorders(StatusType type) async { + Future> fetchMyorders(StatusType type) async { final requestDto = MyOrderRequestDto( query: MyOrderQueryTypeRequestDto(type: type), ); final response = await _orderDataSource.fetchMyOrder(requestDto); - return MyOrderResponseMapper.toEntity(response); + return response.map((e) => MyOrderResponseMapper.toEntity(e)).toList(); } @override diff --git a/lib/data/order/service/order_api.dart b/lib/data/order/service/order_api.dart index abb74e2..63d1d78 100644 --- a/lib/data/order/service/order_api.dart +++ b/lib/data/order/service/order_api.dart @@ -15,7 +15,7 @@ abstract class OrderApi { factory OrderApi(Dio dio,{String baseUrl}) = _OrderApi; @GET('/order/my') - Future fetchMyOrder( + Future> fetchMyOrder( @Query('type') String type ); diff --git a/lib/domain/order/repositories/order_repository.dart b/lib/domain/order/repositories/order_repository.dart index c239e36..ef03a2e 100644 --- a/lib/domain/order/repositories/order_repository.dart +++ b/lib/domain/order/repositories/order_repository.dart @@ -7,7 +7,7 @@ import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderRepository { - Future fetchMyorders(StatusType type); + Future> fetchMyorders(StatusType type); Future fetchMonthOrder(); diff --git a/lib/domain/order/usecase/order_usecase.dart b/lib/domain/order/usecase/order_usecase.dart index c4c8e25..1b13cdd 100644 --- a/lib/domain/order/usecase/order_usecase.dart +++ b/lib/domain/order/usecase/order_usecase.dart @@ -7,7 +7,7 @@ import 'package:jusicool_ios/domain/order/entities/order_response_entity.dart'; import 'package:jusicool_ios/domain/order/entities/reserve_order_entity.dart'; abstract class OrderUsecase { - Future fetchMyorders(StatusType type); + Future> fetchMyorders(StatusType type); Future fetchMonthOrder(); diff --git a/lib/domain/order/usecase/order_usecase_impl.dart b/lib/domain/order/usecase/order_usecase_impl.dart index 8858133..c6d7bc5 100644 --- a/lib/domain/order/usecase/order_usecase_impl.dart +++ b/lib/domain/order/usecase/order_usecase_impl.dart @@ -25,7 +25,7 @@ class OrderUsecaseImpl extends OrderUsecase { } @override - Future fetchMyorders(StatusType type) async { + Future> fetchMyorders(StatusType type) async { return await _repository.fetchMyorders(type); } From 7bac6324197d2831ecebebb85260c4833f62ece4 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 08:50:35 +0900 Subject: [PATCH 92/96] =?UTF-8?q?=F0=9F=94=A5=20::=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20import=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/order/repositories/order_repository_impl.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/data/order/repositories/order_repository_impl.dart b/lib/data/order/repositories/order_repository_impl.dart index ee0f82b..42d694c 100644 --- a/lib/data/order/repositories/order_repository_impl.dart +++ b/lib/data/order/repositories/order_repository_impl.dart @@ -1,7 +1,6 @@ import 'package:jusicool_ios/data/order/data_sources/order_data_source.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/order_request_dto.dart'; import 'package:jusicool_ios/data/order/dto/remote/request/reserve_order_request_dto.dart'; -import 'package:jusicool_ios/data/order/dto/remote/response/my_order_response_dto.dart'; import 'package:jusicool_ios/data/order/dto/remote/response/order_response_dto.dart'; import 'package:jusicool_ios/data/order/mapper/remote/request/order_request_mapper.dart'; import 'package:jusicool_ios/data/order/mapper/remote/request/reserve_order_mapper.dart'; From 2e2753e126fd8b1d989c01b8d34a853ffa67b8fe Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 12:08:26 +0900 Subject: [PATCH 93/96] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20::=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=EB=AA=85=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/exchange/{serivice => service}/exchange_api.dart | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename lib/data/exchange/{serivice => service}/exchange_api.dart (100%) diff --git a/lib/data/exchange/serivice/exchange_api.dart b/lib/data/exchange/service/exchange_api.dart similarity index 100% rename from lib/data/exchange/serivice/exchange_api.dart rename to lib/data/exchange/service/exchange_api.dart From 16cdf204a96266f46e589d5dc921e5cbaf103e33 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 12:27:35 +0900 Subject: [PATCH 94/96] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20::=20=ED=8F=B4?= =?UTF-8?q?=EB=8D=94=EB=AA=85=20=EC=98=A4=ED=83=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/data/exchange/data_sources/exchange_data_source_impl.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/data/exchange/data_sources/exchange_data_source_impl.dart b/lib/data/exchange/data_sources/exchange_data_source_impl.dart index 800079b..7cc2d8c 100644 --- a/lib/data/exchange/data_sources/exchange_data_source_impl.dart +++ b/lib/data/exchange/data_sources/exchange_data_source_impl.dart @@ -1,6 +1,6 @@ import 'package:jusicool_ios/data/exchange/data_sources/exchange_data_source.dart'; import 'package:jusicool_ios/data/exchange/dto/remote/request/exchange_request_dto.dart'; -import 'package:jusicool_ios/data/exchange/serivice/exchange_api.dart'; +import 'package:jusicool_ios/data/exchange/service/exchange_api.dart'; class ExchangeDataSourceImpl extends ExchangeDataSource { From 5978d4586ac90614011ac073e9943bc11e1406df Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 20:14:14 +0900 Subject: [PATCH 95/96] =?UTF-8?q?=E2=9C=A8=20::=20Community=20api=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data_source/community_data_source.dart | 21 +++++++ .../community_data_source_impl.dart | 50 ++++++++++++++++ .../edit_community_post_request_dto.dart | 15 +++++ .../write_community_comment_request_dto.dart | 14 +++++ .../write_community_post_request_dto.dart | 15 +++++ .../community_post_detail_response_dto.dart | 32 ++++++++++ .../response/community_post_response_dto.dart | 21 +++++++ .../response/comment_response_mapper.dart | 9 +++ ...community_post_detail_response_mapper.dart | 27 +++++++++ .../community_post_response_mapper.dart | 27 +++++++++ .../community_repository_impl.dart | 57 ++++++++++++++++++ lib/data/community/service/community_api.dart | 59 +++++++++++++++++++ .../community_post_detail_entity.dart | 25 ++++++++ .../enitites/community_post_entity.dart | 17 ++++++ .../repositories/community_repository.dart | 18 ++++++ .../community/usecase/community_usecase.dart | 18 ++++++ .../usecase/community_usecase_impl.dart | 47 +++++++++++++++ 17 files changed, 472 insertions(+) create mode 100644 lib/data/community/data_source/community_data_source.dart create mode 100644 lib/data/community/data_source/community_data_source_impl.dart create mode 100644 lib/data/community/dto/remote/request/edit_community_post_request_dto.dart create mode 100644 lib/data/community/dto/remote/request/write_community_comment_request_dto.dart create mode 100644 lib/data/community/dto/remote/request/write_community_post_request_dto.dart create mode 100644 lib/data/community/dto/remote/response/community_post_detail_response_dto.dart create mode 100644 lib/data/community/dto/remote/response/community_post_response_dto.dart create mode 100644 lib/data/community/mapper/remote/response/comment_response_mapper.dart create mode 100644 lib/data/community/mapper/remote/response/community_post_detail_response_mapper.dart create mode 100644 lib/data/community/mapper/remote/response/community_post_response_mapper.dart create mode 100644 lib/data/community/repositories/community_repository_impl.dart create mode 100644 lib/data/community/service/community_api.dart create mode 100644 lib/domain/community/enitites/community_post_detail_entity.dart create mode 100644 lib/domain/community/enitites/community_post_entity.dart create mode 100644 lib/domain/community/repositories/community_repository.dart create mode 100644 lib/domain/community/usecase/community_usecase.dart create mode 100644 lib/domain/community/usecase/community_usecase_impl.dart diff --git a/lib/data/community/data_source/community_data_source.dart b/lib/data/community/data_source/community_data_source.dart new file mode 100644 index 0000000..9bb383f --- /dev/null +++ b/lib/data/community/data_source/community_data_source.dart @@ -0,0 +1,21 @@ +import 'package:jusicool_ios/data/community/dto/remote/request/edit_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_comment_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_detail_response_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_response_dto.dart'; + +abstract class CommunityDataSource { + Future> fetchCommunity(String market); + + Future writeCommunityPost(String markte, WriteCommunityPostRequestDto body); + + Future fetchCommunityDetail(String market, int boardId); + + Future writeComment(String market, int boardId, WriteCommunityCommentRequestDto body); + + Future editPost(String market, int boardId, EditCommunityPostRequestDto body); + + Future likePost(String markte, int boardId); + + Future deletePost(String market, int boardId); +} \ No newline at end of file diff --git a/lib/data/community/data_source/community_data_source_impl.dart b/lib/data/community/data_source/community_data_source_impl.dart new file mode 100644 index 0000000..e736530 --- /dev/null +++ b/lib/data/community/data_source/community_data_source_impl.dart @@ -0,0 +1,50 @@ +import 'package:jusicool_ios/data/community/data_source/community_data_source.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/edit_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_comment_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_detail_response_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_response_dto.dart'; +import 'package:jusicool_ios/data/community/service/community_api.dart'; + +class CommunityDataSourceImpl extends CommunityDataSource { + + final CommunityApi _communityApi; + + CommunityDataSourceImpl(this._communityApi); + + + @override + Future> fetchCommunity(String market) async { + return await _communityApi.fetchCommunity(market); + } + + @override + Future writeCommunityPost(String markte, WriteCommunityPostRequestDto body) async { + return await _communityApi.writeCommunityPost(markte, body); + } + + @override + Future fetchCommunityDetail(String market, int boardId) async { + return await _communityApi.getCommunityPost(market, boardId); + } + + @override + Future writeComment(String market, int boardId, WriteCommunityCommentRequestDto body) async { + return await _communityApi.writeComment(market, boardId, body); + } + + @override + Future editPost(String market, int boardId, EditCommunityPostRequestDto body) async { + return await _communityApi.editPost(market, boardId, body); + } + + @override + Future likePost(String markte, int boardId) async { + return await _communityApi.likePost(markte, boardId); + } + + @override + Future deletePost(String market, int boardId) async { + return await _communityApi.deletePost(market, boardId); + } +} \ No newline at end of file diff --git a/lib/data/community/dto/remote/request/edit_community_post_request_dto.dart b/lib/data/community/dto/remote/request/edit_community_post_request_dto.dart new file mode 100644 index 0000000..5311f86 --- /dev/null +++ b/lib/data/community/dto/remote/request/edit_community_post_request_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'edit_community_post_request_dto.g.dart'; +part 'edit_community_post_request_dto.freezed.dart'; + +@freezed +abstract class EditCommunityPostRequestDto with _$EditCommunityPostRequestDto { + factory EditCommunityPostRequestDto({ + required String title, + required String content, + }) = _EditCommunityPostRequestDto; + + factory EditCommunityPostRequestDto.fromJson(Map json) => + _$EditCommunityPostRequestDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/data/community/dto/remote/request/write_community_comment_request_dto.dart b/lib/data/community/dto/remote/request/write_community_comment_request_dto.dart new file mode 100644 index 0000000..9dcc577 --- /dev/null +++ b/lib/data/community/dto/remote/request/write_community_comment_request_dto.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'write_community_comment_request_dto.g.dart'; +part 'write_community_comment_request_dto.freezed.dart'; + +@freezed +abstract class WriteCommunityCommentRequestDto with _$WriteCommunityCommentRequestDto { + factory WriteCommunityCommentRequestDto({ + required String comment, + }) = _WriteCommunityPostRequestDto; + + factory WriteCommunityCommentRequestDto.fromJson(Map json) => + _$WriteCommunityCommentRequestDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/data/community/dto/remote/request/write_community_post_request_dto.dart b/lib/data/community/dto/remote/request/write_community_post_request_dto.dart new file mode 100644 index 0000000..7fa5161 --- /dev/null +++ b/lib/data/community/dto/remote/request/write_community_post_request_dto.dart @@ -0,0 +1,15 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'write_community_post_request_dto.g.dart'; +part 'write_community_post_request_dto.freezed.dart'; + +@freezed +abstract class WriteCommunityPostRequestDto with _$WriteCommunityPostRequestDto { + factory WriteCommunityPostRequestDto({ + required String title, + required String content, + }) = _WriteCommunityPostRequestDto; + + factory WriteCommunityPostRequestDto.fromJson(Map json) => + _$WriteCommunityPostRequestDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/data/community/dto/remote/response/community_post_detail_response_dto.dart b/lib/data/community/dto/remote/response/community_post_detail_response_dto.dart new file mode 100644 index 0000000..f810f3c --- /dev/null +++ b/lib/data/community/dto/remote/response/community_post_detail_response_dto.dart @@ -0,0 +1,32 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'community_post_detail_response_dto.g.dart'; +part 'community_post_detail_response_dto.freezed.dart'; + +@freezed +abstract class CommunityPostDetailResponseDto with _$CommunityPostDetailResponseDto { + factory CommunityPostDetailResponseDto({ + required int id, + required String email, + required String market, + required String title, + required String content, + required List comment, + @JsonKey(name: 'like_count') required int likeCount, + }) = _CommunityPostDetailResponseDto; + + factory CommunityPostDetailResponseDto.fromJson(Map json) => + _$CommunityPostDetailResponseDtoFromJson(json); +} + +@freezed +abstract class CommentDto with _$CommentDto { + factory CommentDto({ + required int id, + required String email, + required String comment, + }) = _CommentDto; + + factory CommentDto.fromJson(Map json) => + _$CommentDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/data/community/dto/remote/response/community_post_response_dto.dart b/lib/data/community/dto/remote/response/community_post_response_dto.dart new file mode 100644 index 0000000..3ea7243 --- /dev/null +++ b/lib/data/community/dto/remote/response/community_post_response_dto.dart @@ -0,0 +1,21 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'community_post_response_dto.g.dart'; +part 'community_post_response_dto.freezed.dart'; + +@freezed +abstract class CommunityPostResponseDto with _$CommunityPostResponseDto { + factory CommunityPostResponseDto({ + required int id, + required String email, + required String market, + required String title, + required String content, + @JsonKey(name: 'comment_count') required int commentCount, + @JsonKey(name: 'like_count') required int likeCount, + @JsonKey(name: 'is_liked') required bool isLiked, + }) = _CommunityPostResponseDto; + + factory CommunityPostResponseDto.fromJson(json) => + _$CommunityPostResponseDtoFromJson(json); +} \ No newline at end of file diff --git a/lib/data/community/mapper/remote/response/comment_response_mapper.dart b/lib/data/community/mapper/remote/response/comment_response_mapper.dart new file mode 100644 index 0000000..335aec9 --- /dev/null +++ b/lib/data/community/mapper/remote/response/comment_response_mapper.dart @@ -0,0 +1,9 @@ +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_detail_response_dto.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; + +class CommentResponseMapper { + static CommentDto toDto(CommentEntity entity) => + CommentDto(id: entity.id, email: entity.email, comment: entity.comment); + static CommentEntity toEntity(CommentDto dto) => + CommentEntity(id: dto.id, email: dto.email, comment: dto.comment); +} \ No newline at end of file diff --git a/lib/data/community/mapper/remote/response/community_post_detail_response_mapper.dart b/lib/data/community/mapper/remote/response/community_post_detail_response_mapper.dart new file mode 100644 index 0000000..896373e --- /dev/null +++ b/lib/data/community/mapper/remote/response/community_post_detail_response_mapper.dart @@ -0,0 +1,27 @@ +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_detail_response_dto.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; +import 'package:jusicool_ios/data/community/mapper/remote/response/comment_response_mapper.dart'; + +class CommunityPostDetailResponseMapper { + static CommunityPostDetailResponseDto toDto(CommunityPostDetailEntity entity) => + CommunityPostDetailResponseDto( + id: entity.id, + email: entity.email, + market: entity.market, + title: entity.title, + content: entity.content, + comment: entity.comment.map((e) => CommentResponseMapper.toDto(e)).toList(), + likeCount: entity.likeCount, + ); + + static CommunityPostDetailEntity toEntity(CommunityPostDetailResponseDto dto) => + CommunityPostDetailEntity( + id: dto.id, + email: dto.email, + market: dto.market, + title: dto.title, + content: dto.content, + comment: dto.comment.map((e) => CommentResponseMapper.toEntity(e)).toList(), + likeCount: dto.likeCount, + ); +} \ No newline at end of file diff --git a/lib/data/community/mapper/remote/response/community_post_response_mapper.dart b/lib/data/community/mapper/remote/response/community_post_response_mapper.dart new file mode 100644 index 0000000..d5756a8 --- /dev/null +++ b/lib/data/community/mapper/remote/response/community_post_response_mapper.dart @@ -0,0 +1,27 @@ +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_response_dto.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_entity.dart'; + +class CommunityPostResponseMapper { + static CommunityPostResponseDto toDto(CommunityPostEntity entity) => + CommunityPostResponseDto( + id: entity.id, + email: entity.email, + market: entity.market, + title: entity.title, + content: entity.content, + commentCount: entity.commentCount, + likeCount: entity.likeCount, + isLiked: entity.isLiked, + ); + static CommunityPostEntity toEntity(CommunityPostResponseDto dto) => + CommunityPostEntity( + id: dto.id, + email: dto.email, + market: dto.market, + title: dto.title, + content: dto.content, + commentCount: dto.commentCount, + likeCount: dto.likeCount, + isLiked: dto.isLiked, + ); +} \ No newline at end of file diff --git a/lib/data/community/repositories/community_repository_impl.dart b/lib/data/community/repositories/community_repository_impl.dart new file mode 100644 index 0000000..56181c3 --- /dev/null +++ b/lib/data/community/repositories/community_repository_impl.dart @@ -0,0 +1,57 @@ +import 'package:jusicool_ios/data/community/data_source/community_data_source_impl.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/edit_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_comment_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/mapper/remote/response/community_post_detail_response_mapper.dart'; +import 'package:jusicool_ios/data/community/mapper/remote/response/community_post_response_mapper.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_entity.dart'; +import 'package:jusicool_ios/domain/community/repositories/community_repository.dart'; + +class CommunityRepositoryImpl extends CommunityRepository { + + final CommunityDataSourceImpl _communityDataSourceImpl; + + CommunityRepositoryImpl(this._communityDataSourceImpl); + + @override + Future> fetchCommunity(String market) async { + final response = await _communityDataSourceImpl.fetchCommunity(market); + return response.map((e) => CommunityPostResponseMapper.toEntity(e)).toList(); + } + + @override + Future writeCommunityPost(String market, String title, String content) async { + final body = WriteCommunityPostRequestDto(title: title, content: content); + await _communityDataSourceImpl.writeCommunityPost(market, body); + } + + @override + Future> fetchCommunityDetail(String market, int boardId) async { + final response = await _communityDataSourceImpl.fetchCommunityDetail(market, boardId); + return [CommunityPostDetailResponseMapper.toEntity(response)]; + } + + @override + Future writeComment(String market, int boardId, String comment) async { + final body = WriteCommunityCommentRequestDto(comment: comment); + await _communityDataSourceImpl.writeComment(market, boardId, body); + } + + @override + Future editPost(String market, int boardId, String title, String content) async { + final body = EditCommunityPostRequestDto(title: title, content: content); + await _communityDataSourceImpl.editPost(market, boardId, body); + } + + @override + Future likePost(String market, int boardId) async { + await _communityDataSourceImpl.likePost(market, boardId); + } + + @override + Future deletePost(String market, int boardId) async { + await _communityDataSourceImpl.deletePost(market, boardId); + } + +} \ No newline at end of file diff --git a/lib/data/community/service/community_api.dart b/lib/data/community/service/community_api.dart new file mode 100644 index 0000000..5e6abbc --- /dev/null +++ b/lib/data/community/service/community_api.dart @@ -0,0 +1,59 @@ +import 'package:dio/dio.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/edit_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_comment_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/request/write_community_post_request_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_detail_response_dto.dart'; +import 'package:jusicool_ios/data/community/dto/remote/response/community_post_response_dto.dart'; +import 'package:retrofit/http.dart'; + +part 'community_api.g.dart'; + +@RestApi() +abstract class CommunityApi { + + factory CommunityApi(Dio dio,{String baseUrl}) = _CommunityApi; + + @GET('/community/{market}') + Future> fetchCommunity( + @Path('market') String market + ); + + @POST('/community/{market}') + Future writeCommunityPost( + @Path('market') String market, + @Body() WriteCommunityPostRequestDto body + ); + + @GET('/community/{market}/{board_id}') + Future getCommunityPost( + @Path('market') String market, + @Path('board_id') int boardId, + ); + + @POST('/community/{market}/{board_id}') + Future writeComment( + @Path('market') String market, + @Path('board_id') int boardId, + @Body() WriteCommunityCommentRequestDto body, + ); + + @PUT('/community/{market}/{board_id}') + Future editPost( + @Path('market') String market, + @Path('board_id') int boardId, + @Body() EditCommunityPostRequestDto body + ); + + @PATCH('/community/{market}/{board_id}') + Future likePost( + @Path('market') String market, + @Path('board_id') int boardId, + ); + + @DELETE('/community/{market}/{board_id}') + Future deletePost( + @Path('market') String market, + @Path('board_id') int boardId, + ); + +} \ No newline at end of file diff --git a/lib/domain/community/enitites/community_post_detail_entity.dart b/lib/domain/community/enitites/community_post_detail_entity.dart new file mode 100644 index 0000000..a5e3056 --- /dev/null +++ b/lib/domain/community/enitites/community_post_detail_entity.dart @@ -0,0 +1,25 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'community_post_detail_entity.freezed.dart'; + +@freezed +abstract class CommunityPostDetailEntity with _$CommunityPostDetailEntity { + factory CommunityPostDetailEntity({ + required int id, + required String email, + required String market, + required String title, + required String content, + required List comment, + required int likeCount, + }) = _CommunityPostDetailEntity; +} + +@freezed +abstract class CommentEntity with _$CommentEntity { + factory CommentEntity({ + required int id, + required String email, + required String comment, + }) = _CommentEntity; +} \ No newline at end of file diff --git a/lib/domain/community/enitites/community_post_entity.dart b/lib/domain/community/enitites/community_post_entity.dart new file mode 100644 index 0000000..37db287 --- /dev/null +++ b/lib/domain/community/enitites/community_post_entity.dart @@ -0,0 +1,17 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'community_post_entity.freezed.dart'; + +@freezed +abstract class CommunityPostEntity with _$CommunityPostEntity { + factory CommunityPostEntity({ + required int id, + required String email, + required String market, + required String title, + required String content, + required int commentCount, + required int likeCount, + required bool isLiked, + }) = _CommunityPostEntity; +} \ No newline at end of file diff --git a/lib/domain/community/repositories/community_repository.dart b/lib/domain/community/repositories/community_repository.dart new file mode 100644 index 0000000..0a533ff --- /dev/null +++ b/lib/domain/community/repositories/community_repository.dart @@ -0,0 +1,18 @@ +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_entity.dart'; + +abstract class CommunityRepository { + Future> fetchCommunity(String market); + + Future writeCommunityPost(String market, String title, String content); + + Future> fetchCommunityDetail(String market, int boardId); + + Future writeComment(String market, int boardId, String comment); + + Future editPost(String market, int boardId, String title, String content); + + Future likePost(String market, int boardId); + + Future deletePost(String market, int boardId); +} \ No newline at end of file diff --git a/lib/domain/community/usecase/community_usecase.dart b/lib/domain/community/usecase/community_usecase.dart new file mode 100644 index 0000000..d6fe6b8 --- /dev/null +++ b/lib/domain/community/usecase/community_usecase.dart @@ -0,0 +1,18 @@ +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_entity.dart'; + +abstract class CommunityUsecase { + Future> fetchCommunity(String market); + + Future writeCommunityPost(String market,String title, String content); + + Future> fetchCommunityDetail(String market, int boardId); + + Future writeComment(String market, int boardId, String comment); + + Future editPost(String market, int boardId, String title, String content); + + Future likePost(String market, int boardId); + + Future deletePost(String market, int boardId); +} \ No newline at end of file diff --git a/lib/domain/community/usecase/community_usecase_impl.dart b/lib/domain/community/usecase/community_usecase_impl.dart new file mode 100644 index 0000000..b4f1254 --- /dev/null +++ b/lib/domain/community/usecase/community_usecase_impl.dart @@ -0,0 +1,47 @@ +import 'package:jusicool_ios/domain/community/enitites/community_post_detail_entity.dart'; +import 'package:jusicool_ios/domain/community/enitites/community_post_entity.dart'; +import 'package:jusicool_ios/domain/community/repositories/community_repository.dart'; +import 'package:jusicool_ios/domain/community/usecase/community_usecase.dart'; + +class CommunityUsecaseImpl extends CommunityUsecase { + + final CommunityRepository _repository; + + CommunityUsecaseImpl(this._repository); + + @override + Future> fetchCommunity(String market) async { + return await _repository.fetchCommunity(market); + } + + @override + Future writeCommunityPost(String market,String title,String content) async { + return await _repository.writeCommunityPost(market,title,content); + } + + @override + Future> fetchCommunityDetail(String market, int boardId) async { + return await _repository.fetchCommunityDetail(market, boardId); + } + + @override + Future editPost(String market, int boardId, String title, String content) async { + return await _repository.editPost(market, boardId, title, content); + } + + @override + Future likePost(String market, int boardId) async { + return await _repository.likePost(market, boardId); + } + + @override + Future writeComment(String market, int boardId, String comment) async { + return await _repository.writeComment(market, boardId, comment); + } + + @override + Future deletePost(String market, int boardId) async { + return await _repository.deletePost(market, boardId); + } + +} \ No newline at end of file From 1c88a47b2952e2ff5abf3351bafb14f000d1c534 Mon Sep 17 00:00:00 2001 From: aiden30015 Date: Fri, 11 Jul 2025 20:22:32 +0900 Subject: [PATCH 96/96] =?UTF-8?q?=F0=9F=90=9B=20::=20Ci=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/remote/response/community_post_response_dto.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/data/community/dto/remote/response/community_post_response_dto.dart b/lib/data/community/dto/remote/response/community_post_response_dto.dart index 3ea7243..afe052a 100644 --- a/lib/data/community/dto/remote/response/community_post_response_dto.dart +++ b/lib/data/community/dto/remote/response/community_post_response_dto.dart @@ -16,6 +16,6 @@ abstract class CommunityPostResponseDto with _$CommunityPostResponseDto { @JsonKey(name: 'is_liked') required bool isLiked, }) = _CommunityPostResponseDto; - factory CommunityPostResponseDto.fromJson(json) => + factory CommunityPostResponseDto.fromJson(Map json) => _$CommunityPostResponseDtoFromJson(json); } \ No newline at end of file