Files
monisuo/flutter_monisuo/lib/data/services/user_service.dart
2026-04-04 21:19:29 +08:00

75 lines
2.1 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'dart:typed_data';
import 'package:dio/dio.dart';
import '../../core/constants/api_endpoints.dart';
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},
);
}
/// 用户注册multipart含身份证图片和可选推广码
Future<ApiResponse<Map<String, dynamic>>> register(
String username,
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,
formData: formData,
);
}
/// 获取用户信息
Future<ApiResponse<User>> getUserInfo() async {
return _client.get<User>(
ApiEndpoints.userInfo,
fromJson: (data) => User.fromJson(data as Map<String, dynamic>),
);
}
/// 上传 KYC 资料(身份证正反面图片字节)
/// 使用 fromBytes 以兼容 Web 和移动端
Future<ApiResponse<void>> uploadKyc(
Uint8List frontBytes,
Uint8List backBytes,
) async {
final formData = FormData.fromMap({
'front': MultipartFile.fromBytes(frontBytes, filename: 'front.jpg'),
'back': MultipartFile.fromBytes(backBytes, filename: 'back.jpg'),
});
return _client.upload<void>(
ApiEndpoints.kyc,
formData: formData,
);
}
/// 退出登录
Future<ApiResponse<void>> logout() async {
return _client.post<void>(ApiEndpoints.logout);
}
}