Files
monisuo/flutter_monisuo/lib/data/services/user_service.dart

75 lines
2.1 KiB
Dart
Raw Normal View History

2026-03-30 00:30:42 +08:00
import 'dart:typed_data';
import 'package:dio/dio.dart';
import '../../core/constants/api_endpoints.dart';
2026-03-23 00:43:19 +08:00
import '../../core/network/api_response.dart';
import '../../core/network/dio_client.dart';
import '../models/user.dart';
/// 用户服务
class UserService {
final DioClient _client;
UserService(this._client);
/// 用户登录
Future<ApiResponse<Map<String, dynamic>>> login(
String username,
String password,
) async {
return _client.post<Map<String, dynamic>>(
ApiEndpoints.login,
data: {'username': username, 'password': password},
);
}
2026-04-04 21:19:29 +08:00
/// 用户注册multipart含身份证图片和可选推广码
Future<ApiResponse<Map<String, dynamic>>> register(
String username,
2026-04-04 21:19:29 +08:00
String password, {
String? referralCode,
required Uint8List frontBytes,
required Uint8List backBytes,
}) async {
final formData = FormData.fromMap({
'username': username,
'password': password,
if (referralCode != null && referralCode.isNotEmpty) 'referralCode': referralCode,
'front': MultipartFile.fromBytes(frontBytes, filename: 'front.jpg'),
'back': MultipartFile.fromBytes(backBytes, filename: 'back.jpg'),
});
return _client.upload<Map<String, dynamic>>(
ApiEndpoints.register,
2026-04-04 21:19:29 +08:00
formData: formData,
);
}
/// 获取用户信息
Future<ApiResponse<User>> getUserInfo() async {
return _client.get<User>(
ApiEndpoints.userInfo,
fromJson: (data) => User.fromJson(data as Map<String, dynamic>),
);
}
2026-03-30 00:30:42 +08:00
/// 上传 KYC 资料(身份证正反面图片字节)
/// 使用 fromBytes 以兼容 Web 和移动端
Future<ApiResponse<void>> uploadKyc(
2026-03-30 00:30:42 +08:00
Uint8List frontBytes,
Uint8List backBytes,
) async {
2026-03-30 00:30:42 +08:00
final formData = FormData.fromMap({
'front': MultipartFile.fromBytes(frontBytes, filename: 'front.jpg'),
'back': MultipartFile.fromBytes(backBytes, filename: 'back.jpg'),
});
return _client.upload<void>(
ApiEndpoints.kyc,
2026-03-30 00:30:42 +08:00
formData: formData,
);
}
/// 退出登录
Future<ApiResponse<void>> logout() async {
return _client.post<void>(ApiEndpoints.logout);
}
}