user_repository.dart 1.3 KB

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