14 changed files with 233 additions and 117 deletions
Split View
Diff Options
-
9lib/config/env_config.dart
-
75lib/controller/mine/login_controller.dart
-
89lib/controller/mine/user_controller.dart
-
43lib/controller/mine/user_info_controller.dart
-
1lib/network/api_urls.dart
-
15lib/network/network_config.dart
-
15lib/network/network_service.dart
-
3lib/network/user_api.dart
-
31lib/network/user_api.g.dart
-
46lib/oss/oss_manager.dart
-
18lib/pages/main/main_page.dart
-
2lib/pages/mine/login_page.dart
-
1lib/pages/mine/mine_page.dart
-
2lib/pages/mine/user_info_page.dart
@ -0,0 +1,89 @@ |
|||
import 'package:get/get.dart'; |
|||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|||
import '../../network/user_api.dart'; |
|||
import '../../pages/mine/user_info_page.dart'; |
|||
import '../../pages/main/main_page.dart'; |
|||
|
|||
class UserController extends GetxController { |
|||
|
|||
// UserApi实例 |
|||
late UserApi _userApi; |
|||
|
|||
@override |
|||
void onInit() { |
|||
super.onInit(); |
|||
// 从全局依赖中获取UserApi |
|||
_userApi = Get.find<UserApi>(); |
|||
} |
|||
|
|||
/// 获取环信用户token |
|||
Future<String?> getHxUserToken() async { |
|||
|
|||
try { |
|||
// 调用获取环信用户token接口 |
|||
final response = await _userApi.getHxUserToken(); |
|||
|
|||
// 处理响应 |
|||
if (response.data.isSuccess) { |
|||
// 保存token到本地存储 |
|||
String? token = response.data.data; |
|||
if (token != null) { |
|||
// 打印获取的token |
|||
print('获取环信用户token成功: $token'); |
|||
|
|||
return token; |
|||
} else { |
|||
SmartDialog.showToast('获取的环信用户token为空'); |
|||
return null; |
|||
} |
|||
} else { |
|||
SmartDialog.showToast(response.data.message); |
|||
return null; |
|||
} |
|||
} catch (e) { |
|||
print('获取环信用户token失败: $e'); |
|||
SmartDialog.showToast('获取环信用户token失败,请重试'); |
|||
return null; |
|||
} |
|||
} |
|||
|
|||
/// 获取用户基础信息 |
|||
Future<void> getBaseUserInfo(String userId) async { |
|||
try { |
|||
final response = await _userApi.getBaseUserInfo(userId); |
|||
|
|||
if (response.data.isSuccess && response.data.data != null) { |
|||
// 成功获取基础信息后,调用获取婚姻信息详情接口 |
|||
await getMarriageInformationDetail(); |
|||
} else { |
|||
SmartDialog.showToast(response.data.message); |
|||
} |
|||
} catch (e) { |
|||
// 获取用户信息失败不影响登录流程 |
|||
SmartDialog.showToast('获取用户信息失败'); |
|||
} |
|||
} |
|||
|
|||
/// 获取用户婚姻信息详情 |
|||
Future<void> getMarriageInformationDetail() async { |
|||
try { |
|||
final response = await _userApi.getMarriageInformationDetail(); |
|||
if (response.data.isSuccess) { |
|||
// 检查data是否为null或者是空对象 |
|||
if (response.data.data == null) { |
|||
//跳转到完善信息 |
|||
SmartDialog.showToast('转到完善信息'); |
|||
// 导航到完善信息页面 |
|||
Get.offAll(() => UserInfoPage()); |
|||
} else { |
|||
Get.offAll(MainPage()); |
|||
} |
|||
} else { |
|||
// 获取婚姻信息失败不影响登录流程 |
|||
} |
|||
} catch (e) { |
|||
// 获取婚姻信息失败不影响登录流程 |
|||
print('获取婚姻信息异常: $e'); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,46 @@ |
|||
import 'dart:typed_data'; |
|||
|
|||
import 'package:flutter_oss_aliyun/flutter_oss_aliyun.dart'; |
|||
|
|||
class OSSManager { |
|||
// 静态单例实例 |
|||
static final OSSManager _instance = OSSManager._internal(); |
|||
bool isInit = false; |
|||
// 工厂构造函数,返回单例实例 |
|||
factory OSSManager() { |
|||
return _instance; |
|||
} |
|||
|
|||
// 私有构造函数,防止外部直接实例化 |
|||
OSSManager._internal(); |
|||
|
|||
void init(String stsUrl, String ossEndpoint, String bucketName) { |
|||
// 初始化 |
|||
Client.init( |
|||
stsUrl: stsUrl, |
|||
ossEndpoint: ossEndpoint, |
|||
bucketName: bucketName, |
|||
); |
|||
isInit = true; |
|||
} |
|||
|
|||
Future<String> uploadFile(Uint8List fileData, String objectName, {Function(int count, int total)? onSendProgress, |
|||
Function(int count, int total)? onReceiveProgress}) async { |
|||
if (!isInit) { |
|||
throw Exception("请先初始化"); |
|||
} |
|||
final result = await Client().putObject(fileData, objectName, option: PutRequestOption( |
|||
onSendProgress: onSendProgress != null ? (count, total) { |
|||
onSendProgress(count, total); |
|||
} : null, |
|||
onReceiveProgress: onReceiveProgress != null ? (count, total) { |
|||
onReceiveProgress(count, total); |
|||
} : null, |
|||
override: false, |
|||
aclModel: AclMode.publicRead, |
|||
storageType: StorageType.ia, |
|||
), |
|||
); |
|||
return result.statusCode == 200 ? result.realUri.path : throw Exception("上传失败"); |
|||
} |
|||
} |
|||
Write
Preview
Loading…
Cancel
Save