track_repository.dart 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import 'dart:ffi';
  2. import 'package:dio/dio.dart';
  3. import 'package:injectable/injectable.dart';
  4. import 'package:location/base/app_base_request.dart';
  5. import 'package:location/data/api/atmob_api.dart';
  6. import '../../di/get_it.dart';
  7. import '../../utils/http_handler.dart';
  8. import '../api/request/query_track_request.dart';
  9. import '../api/response/location_track_days_response.dart';
  10. import '../api/response/query_track_response.dart';
  11. import '../api/response/track_daily_response.dart';
  12. import '../bean/track_daily_bean.dart';
  13. import '../bean/track_days.dart';
  14. @lazySingleton
  15. class TrackRepository {
  16. final AtmobApi atmobApi;
  17. List<TrackDays>? days;
  18. TrackRepository(this.atmobApi);
  19. static TrackRepository getInstance() {
  20. return getIt.get<TrackRepository>();
  21. }
  22. Future<QueryTrackResponse> queryVirtualTrack() {
  23. return atmobApi
  24. .queryVirtualTrack(AppBaseRequest())
  25. .then(HttpHandler.handle(true));
  26. }
  27. Future<QueryTrackResponse> queryTrack(
  28. {required int? startTime,
  29. required int? endTime,
  30. required String? userId}) {
  31. return atmobApi
  32. .queryTrack(
  33. QueryTrackRequest(
  34. startTime: startTime, endTime: endTime, userId: userId),
  35. RequestOptions(
  36. receiveTimeout: Duration(seconds: 30),
  37. connectTimeout: Duration(minutes: 2)))
  38. .then(HttpHandler.handle(true));
  39. }
  40. ///试用期间上报查看轨迹次数
  41. Future<void> refreshMemberTrailTrack() {
  42. return atmobApi
  43. .memberTrailTrack(AppBaseRequest())
  44. .then(HttpHandler.handle(true));
  45. }
  46. Future<List<TrackDays>> getLocationTrackDays() async {
  47. if (days == null || days?.isEmpty == true) {
  48. final response = await _locationTrackDays();
  49. return response.days;
  50. } else {
  51. return days!;
  52. }
  53. }
  54. Future<LocationTrackDaysResponse> _locationTrackDays() {
  55. return atmobApi
  56. .locationTrackDays(AppBaseRequest())
  57. .then(HttpHandler.handle(false))
  58. .then((response) {
  59. days = response.days;
  60. return response;
  61. });
  62. }
  63. Future<List<TrackDailyBean>?> trackDailyQuery(
  64. {required int? startTime,
  65. required int? endTime,
  66. required String? userId}) {
  67. return atmobApi
  68. .trackDailyQuery(
  69. QueryTrackRequest(
  70. startTime: startTime, endTime: endTime, userId: userId),
  71. RequestOptions(
  72. receiveTimeout: Duration(seconds: 30),
  73. connectTimeout: Duration(minutes: 2)))
  74. .then(HttpHandler.handle(true))
  75. .then((response) {
  76. return response.trackDailyList;
  77. });
  78. }
  79. }