account.dart 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import 'dart:convert';
  2. import 'package:fis_jsonrpc/rpc.dart';
  3. import 'package:vitalapp/architecture/utils/common_util.dart';
  4. import 'package:vitalapp/rpc.dart';
  5. import 'package:vitalapp/store/store.dart';
  6. import 'package:fis_common/helpers/encrypt.dart';
  7. import 'package:fis_common/logger/logger.dart';
  8. import 'interfaces/account.dart';
  9. class AccountManager implements IAccountManager {
  10. @override
  11. Future<int> login(String account, String password, bool isAutoLogin) async {
  12. int code = 0;
  13. try {
  14. final symmetryEncryptPassword =
  15. password.isEmpty ? '' : FEncryptHelper.symmetryEncrypt(password);
  16. final result = await rpc.login.commonLoginAsync(
  17. CommonLoginRequest(
  18. anyAccount: account,
  19. password: symmetryEncryptPassword,
  20. loginSource: LoginSource.Android,
  21. ),
  22. );
  23. await Store.user
  24. .handleLogin(account, result.token!, password, isAutoLogin);
  25. } catch (e) {
  26. // TODO 待提取封装公用函数
  27. code = -1;
  28. if (e is JsonRpcException) {
  29. if (e is JsonRpcNetworkException) {
  30. code = -1001; // 网络异常
  31. if (e.message?.toLowerCase().contains("timeout") == true) {
  32. code = -1002; // 超时
  33. }
  34. } else if (e.data?.code != null) {
  35. code = e.data.code!;
  36. } else if (e.code != null) {
  37. code = e.code!;
  38. }
  39. }
  40. }
  41. return code;
  42. }
  43. @override
  44. Future<bool> logout() async {
  45. await Store.user.handleLogOut();
  46. try {
  47. await rpc.login.loginOutAsync(
  48. TokenRequest(token: Store.user.token),
  49. );
  50. } catch (e) {
  51. logger.e("AccountManager call logout error", e);
  52. }
  53. CommonUtil.idCardRecognition.release();
  54. return true;
  55. }
  56. @override
  57. Future<UserDTO?> getUserDetailAsync() async {
  58. try {
  59. return await rpc.user.getUserDetailAsync(
  60. GetUserRequest(
  61. token: Store.user.token,
  62. code: Store.user.userCode,
  63. ),
  64. );
  65. } catch (e) {
  66. return null;
  67. }
  68. }
  69. @override
  70. Future<bool> updateUserAsync(UserDTO dto) async {
  71. try {
  72. var request = UpdateUserRequest(
  73. token: Store.user.token,
  74. code: dto.code,
  75. realName: dto.realName,
  76. phone: dto.phone,
  77. headImageToken: dto.headImageToken,
  78. );
  79. var result = await rpc.user.updateUserAsync(request);
  80. if (result) {
  81. await Store.user.updateUserInfo(dto);
  82. }
  83. return result;
  84. } catch (e) {}
  85. return false;
  86. }
  87. @override
  88. Future<String> getUserPasswordDetailAsync() async {
  89. try {
  90. var result = await rpc.userPassword.getUserPasswordDetailAsync(
  91. GetUserPasswordRequest(
  92. token: Store.user.token, code: Store.user.userCode));
  93. return result.secretPassword ?? '';
  94. } catch (e) {}
  95. return '';
  96. }
  97. @override
  98. Future<bool> updateUserPasswordAsync(String secretPassword) async {
  99. try {
  100. var result = await rpc.userPassword.updateUserPasswordAsync(
  101. UpdateUserPasswordRequest(
  102. token: Store.user.token,
  103. code: Store.user.userCode,
  104. secretPassword: secretPassword));
  105. return result;
  106. } catch (e) {}
  107. return false;
  108. }
  109. @override
  110. Future<List<UserFeatureDTO>?> getMenuPermission() async {
  111. try {
  112. var result = await rpc.user.getMenuPermissionAsync(
  113. GetMenuPermissionRequest(
  114. token: Store.user.token,
  115. appType: ApplicationTypeEnum.App,
  116. ),
  117. );
  118. for (var element in result) {
  119. print(element.toJson());
  120. }
  121. return result;
  122. } catch (e) {
  123. logger.e("AccountManager call getMenuPermission error", e);
  124. }
  125. return null;
  126. }
  127. @override
  128. Future<List<UserFeatureDTO>?> getOperationPermission() async {
  129. try {
  130. var request = GetOperationPermissionRequest(
  131. token: Store.user.token,
  132. appType: ApplicationTypeEnum.App,
  133. );
  134. var result = await rpc.user.getOperationPermissionAsync(request);
  135. // var json = jsonEncode(request);
  136. // print(jsonEncode(request.toJson()));
  137. for (var element in result) {
  138. print(element.toJson());
  139. logger.i('新增权限${element.toJson()}');
  140. }
  141. return result;
  142. } catch (e) {
  143. logger.e("AccountManager call getMenuPermission error", e);
  144. }
  145. return null;
  146. }
  147. }