facility_repository.dart 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. import 'dart:typed_data';
  2. import 'package:domain/entity/feedback_detail_entity.dart';
  3. import 'package:domain/entity/form_option_entity.dart';
  4. import 'package:plugin_basic/constants/app_constant.dart';
  5. import 'package:plugin_platform/platform_export.dart';
  6. import 'package:plugin_platform/http/dio_engine.dart';
  7. import 'package:plugin_platform/http/http_result.dart';
  8. import 'package:riverpod_annotation/riverpod_annotation.dart';
  9. import 'package:shared/utils/date_time_utils.dart';
  10. import 'package:shared/utils/log_utils.dart';
  11. import 'package:shared/utils/util.dart';
  12. import '../constants/api_constants.dart';
  13. import 'package:flutter_riverpod/flutter_riverpod.dart';
  14. import 'package:plugin_basic/provider/http_provider/http_provider.dart';
  15. import '../entity/facility_book_entity.dart';
  16. import '../entity/facility_page_entity.dart';
  17. import '../entity/form_content_entity.dart';
  18. import '../entity/form_detail_entity.dart';
  19. import '../entity/form_list_entity.dart';
  20. import '../entity/form_submitted_page_entity.dart';
  21. import '../entity/id_name_entity.dart';
  22. part 'facility_repository.g.dart';
  23. @Riverpod(keepAlive: true)
  24. FacilityRepository facilityRepository(Ref ref) {
  25. final dioEngine = ref.watch(dioEngineProvider);
  26. return FacilityRepository(dioEngine: dioEngine);
  27. }
  28. /*
  29. * 设施的数据仓库
  30. */
  31. class FacilityRepository {
  32. DioEngine dioEngine;
  33. FacilityRepository({required this.dioEngine});
  34. /// 获取设施可申请的列表
  35. Future<HttpResult<IdNameEntity>> fetchFacilityList({
  36. CancelToken? cancelToken,
  37. }) async {
  38. final result = await dioEngine.requestNetResult(
  39. ApiConstants.apiFacilityList,
  40. method: HttpMethod.GET,
  41. cancelToken: cancelToken,
  42. );
  43. if (result.isSuccess) {
  44. final jsonList = result.getListJson();
  45. //获取List数据 需要转换一次
  46. var list = jsonList
  47. ?.map((value) {
  48. if (value is Map<String, dynamic>) {
  49. return IdNameEntity.fromJson(value);
  50. } else {
  51. return null;
  52. }
  53. })
  54. .where((item) => item != null)
  55. .cast<IdNameEntity>()
  56. .toList();
  57. return result.convert<IdNameEntity>(list: list);
  58. }
  59. return result.convert<IdNameEntity>();
  60. }
  61. /// 获取设施的指定日期的表
  62. Future<HttpResult<FacilityBookEntity>> fetchFacilityDateDetail({
  63. required String? id,
  64. required DateTime? date,
  65. CancelToken? cancelToken,
  66. }) async {
  67. Map<String, String> params = {};
  68. params['type_id'] = id ?? "";
  69. if (date != null) {
  70. params['date'] = DateTimeUtils.formatDate(date, format: 'yyyy-MM-dd');
  71. }
  72. final result = await dioEngine.requestNetResult(
  73. ApiConstants.apiFacilityDate,
  74. params: params,
  75. method: HttpMethod.GET,
  76. cancelToken: cancelToken,
  77. );
  78. if (result.isSuccess) {
  79. final json = result.getDataJson();
  80. var data = FacilityBookEntity.fromJson(json!);
  81. return result.convert<FacilityBookEntity>(data: data);
  82. }
  83. return result.convert();
  84. }
  85. /// 预约设施
  86. Future<HttpResult> submitBooking({
  87. required String? periodId,
  88. required DateTime date,
  89. CancelToken? cancelToken,
  90. }) async {
  91. Map<String, String> params = {};
  92. params["period_id"] = periodId ?? "";
  93. params["date"] = DateTimeUtils.formatDate(date, format: 'yyyy-MM-dd');
  94. final result = await dioEngine.requestNetResult(
  95. ApiConstants.apiFacilityBook,
  96. params: params,
  97. method: HttpMethod.POST,
  98. isShowLoadingDialog: true,
  99. networkDebounce: true,
  100. cancelToken: cancelToken,
  101. );
  102. if (result.isSuccess) {
  103. return result.convert();
  104. }
  105. return result.convert();
  106. }
  107. /// 获取已经申请的设施可用列表
  108. Future<HttpResult<FacilityPageEntity>> fetchFacilityActiveList({
  109. required int curPage,
  110. CancelToken? cancelToken,
  111. }) async {
  112. Map<String, String> params = {};
  113. params['page'] = curPage.toString();
  114. params['limit'] = "10";
  115. final result = await dioEngine.requestNetResult(
  116. ApiConstants.apiFacilityActiveList,
  117. params: params,
  118. method: HttpMethod.GET,
  119. cancelToken: cancelToken,
  120. );
  121. if (result.isSuccess) {
  122. final json = result.getDataJson();
  123. var data = FacilityPageEntity.fromJson(json!);
  124. return result.convert<FacilityPageEntity>(data: data);
  125. }
  126. return result.convert();
  127. }
  128. /// 获取已经申请的设施押金列表
  129. Future<HttpResult<FacilityPageEntity>> fetchFacilityDepositList({
  130. required int curPage,
  131. CancelToken? cancelToken,
  132. }) async {
  133. Map<String, String> params = {};
  134. params['page'] = curPage.toString();
  135. params['limit'] = "10";
  136. final result = await dioEngine.requestNetResult(
  137. ApiConstants.apiFacilityDepositList,
  138. params: params,
  139. method: HttpMethod.GET,
  140. cancelToken: cancelToken,
  141. );
  142. if (result.isSuccess) {
  143. final json = result.getDataJson();
  144. var data = FacilityPageEntity.fromJson(json!);
  145. return result.convert<FacilityPageEntity>(data: data);
  146. }
  147. return result.convert();
  148. }
  149. /// 获取已经申请的设施历史列表
  150. Future<HttpResult<FacilityPageEntity>> fetchFacilityHistoryList({
  151. required int curPage,
  152. CancelToken? cancelToken,
  153. }) async {
  154. Map<String, String> params = {};
  155. params['page'] = curPage.toString();
  156. params['limit'] = "10";
  157. final result = await dioEngine.requestNetResult(
  158. ApiConstants.apiFacilityHistoryList,
  159. params: params,
  160. method: HttpMethod.GET,
  161. cancelToken: cancelToken,
  162. );
  163. if (result.isSuccess) {
  164. final json = result.getDataJson();
  165. var data = FacilityPageEntity.fromJson(json!);
  166. return result.convert<FacilityPageEntity>(data: data);
  167. }
  168. return result.convert();
  169. }
  170. }