login_controller.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:cpt_auth/modules/main/main_page.dart';
  2. import 'package:cpt_auth/modules/reset_psd/reset_psd_page.dart';
  3. import 'package:cpt_auth/modules/select_country/select_country_page.dart';
  4. import 'package:domain/entity/response/hotel_info_entity.dart';
  5. import 'package:domain/repository/auth_repository.dart';
  6. import 'package:get/get.dart';
  7. import 'package:plugin_basic/constants/app_constant.dart';
  8. import 'package:plugin_basic/service/app_config_service.dart';
  9. import 'package:plugin_basic/service/user_service.dart';
  10. import 'package:plugin_platform/engine/sp/sp_util.dart';
  11. import 'package:plugin_platform/engine/toast/toast_engine.dart';
  12. import 'package:plugin_platform/http/dio/dio_cancelable_mixin.dart';
  13. import 'package:plugin_platform/http/http_provider.dart';
  14. import 'package:router/componentRouter/component_router_service.dart';
  15. import 'package:shared/utils/event_bus.dart';
  16. import 'package:shared/utils/log_utils.dart';
  17. import 'package:shared/utils/util.dart';
  18. import '../sign_up/sign_up_page.dart';
  19. import 'login_state.dart';
  20. class LoginController extends GetxController with DioCancelableMixin {
  21. final AuthRepository authRepository = Get.find();
  22. final LoginState state = LoginState();
  23. // 切换隐藏密码框
  24. void switchPwdVisibility() {
  25. state.pwdVisibility = !state.pwdVisibility;
  26. update();
  27. }
  28. // 重置电话的错误文本
  29. void resetCodeErrorText() {
  30. state.codeErrorText = null;
  31. update();
  32. }
  33. /// 执行账号密码的普通登录
  34. void doInputLogin() {
  35. state.codeErrorText = null;
  36. state.passwordErrorText = null;
  37. update();
  38. var codeController = state.formData['code']!['controller'];
  39. var passwordController = state.formData['password']!['controller'];
  40. state.code = codeController.text;
  41. state.password = passwordController.text;
  42. Log.d('当前待提交的 email:${state.code} password:${state.password}');
  43. if (Utils.isEmpty(state.code)) {
  44. state.codeErrorText = "The email cannot be empty!".tr;
  45. update();
  46. } else if (Utils.isEmpty(state.password)) {
  47. state.passwordErrorText = "The password cannot be empty!".tr;
  48. update();
  49. } else {
  50. //执行密码登录
  51. _request2LoginPassword();
  52. }
  53. }
  54. /// 请求接口执行登录
  55. void _request2LoginPassword() async {
  56. // var result = await authRepository.userLogin(state.code, state.password, cancelToken: cancelToken);
  57. //
  58. // //处理数据
  59. // if (result.isSuccess) {
  60. // //保存Token,去首页
  61. // _handleLoginSuccess(result.data!);
  62. // } else {
  63. // ToastEngine.show(result.errorMsg ?? "Network Load Error".tr);
  64. // }
  65. //todo 英国的假登录
  66. await Future.delayed(const Duration(seconds: 2));
  67. _handleLoginSuccess(HotelInfoEntity()..token = "123");
  68. }
  69. /// 登录成功的统一处理 - 去首页
  70. void _handleLoginSuccess(HotelInfoEntity result) {
  71. //保存Token
  72. final token = result.token;
  73. UserService.to.setToken(token);
  74. //保存是否是管理员登录
  75. if (ConfigService.to.selectCountry.value == 1 || ConfigService.to.selectCountry.value == 2) {
  76. //如果是新加坡、英国国户,强制是管理员登录
  77. SPUtil.putInt(AppConstant.storageIsAdmin, 1);
  78. } else {
  79. SPUtil.putInt(AppConstant.storageIsAdmin, state.loginOptionPosition);
  80. }
  81. if (ConfigService.to.selectCountry.value == 2) {
  82. //去英国首页
  83. ComponentRouterServices.ukService.startUKMainPage();
  84. } else {
  85. //去新加坡首页
  86. ComponentRouterServices.authService.startPopAllMainPage();
  87. }
  88. }
  89. @override
  90. void onReady() async {
  91. super.onReady();
  92. }
  93. /// 跳转登录页面
  94. void gotoSignUpPage() {
  95. SignUpPage.startInstance();
  96. }
  97. // 去切换国家的页面
  98. void gotoSelectCountryPage() {
  99. SelectCountryPage.startInstance();
  100. }
  101. }