user_repository.dart 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import 'dart:io';
  2. import 'package:get/get_rx/src/rx_types/rx_types.dart';
  3. import '../../base/base_request.dart';
  4. import '../../utils/http_handler.dart';
  5. import '../api/atmob_api.dart';
  6. import '../api/response/user_info_response.dart';
  7. class UserRepository {
  8. UserRepository._();
  9. Rxn<UserInfoResponse> get userInfo => _userInfo;
  10. final Rxn<UserInfoResponse> _userInfo = Rxn<UserInfoResponse>();
  11. Future<UserInfoResponse> getUserInfo() {
  12. return atmobApi
  13. .userInfo(BaseRequest())
  14. .then(HttpHandler.handle(false))
  15. .then((response) {
  16. _userInfo.value = response;
  17. return response;
  18. });
  19. }
  20. // 检测是否为会员
  21. bool isVip() {
  22. if (Platform.isAndroid) {
  23. return true;
  24. }
  25. // 检查用户信息和会员信息是否存在
  26. if (userInfo.value?.memberInfo == null) {
  27. return false;
  28. }
  29. final memberInfo = userInfo.value!.memberInfo!;
  30. // 检查是否是会员
  31. if (!memberInfo.isMember) {
  32. return false;
  33. }
  34. // 检查会员是否过期
  35. if (memberInfo.endTimestamp == null) {
  36. return false;
  37. }
  38. // 将时间戳转换为DateTime并比较
  39. final endTime =
  40. DateTime.fromMillisecondsSinceEpoch(memberInfo.endTimestamp ?? 0);
  41. final now = DateTime.now();
  42. return now.isBefore(endTime);
  43. }
  44. }
  45. final userRepository = UserRepository._();