Files
ttstd_family_care/lib/features/auth/data/auth_api.dart
TongTongStudio 06cdc77172 feat(android): 支持沉浸式状态栏、地图定位与自定义签名
- 配置 edge-to-edge 沉浸式状态栏与刘海屏适配
- 新增百度地图权限、AK 配置及定位权限说明
- 接入 MethodChannel 实现返回键退后台热启动优化
- 配置自定义签名并更新构建逻辑
- 完善 token 刷新与鉴权失效统一处理
- 新增地图页与截图页路由
- 修复返回键拦截导致的 PopScope 失效问题
2026-08-19 03:43:12 +08:00

96 lines
2.6 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 'package:ttstd_family_care/core/network/dio_client.dart';
import 'package:ttstd_family_care/features/auth/domain/auth_models.dart';
/// 客户端(家属端)认证接口访问层。
///
/// 对接后端 C 端open 模块)认证接口。`AppConstants.kBaseUrl` 仅包含 `/api/`
/// 前缀,各端点在此显式追加 `v1/open/`(即 `/api/v1/open/**`。open 模块账号
/// 落地 `app_user`,与后台管理端(`sys_user`)物理分表。
///
/// [DioClient.get] / [DioClient.post] 已统一解析为后台返回体中的 `data` 字段;
/// 业务失败时抛出 [ApiException]由上层Repository按需处理。
class AuthApi {
const AuthApi();
/// 账号密码登录。
Future<LoginResult> loginByPassword({
required String username,
required String password,
}) async {
final data = await DioClient.post(
'v1/open/login',
data: {
'username': username,
'password': password,
},
);
return LoginResult.fromJson(data as Map<String, dynamic>);
}
/// 短信验证码登录。
Future<LoginResult> loginBySms({
required String phone,
required String code,
}) async {
final data = await DioClient.post(
'v1/open/auth/login/mobile',
data: {
'mobile': phone,
'code': code,
},
);
return LoginResult.fromJson(data as Map<String, dynamic>);
}
/// 短信注册。
Future<LoginResult> register({
required String phone,
required String code,
required String password,
}) async {
final data = await DioClient.post(
'v1/open/register/mobile',
data: {
'mobile': phone,
'code': code,
'password': password,
},
);
return LoginResult.fromJson(data as Map<String, dynamic>);
}
/// 发送短信验证码。
///
/// 后端按场景拆分验证码发送接口query 参数 mobile
Future<void> sendSmsCode({
required String phone,
required SmsScene scene,
}) async {
final path = switch (scene) {
SmsScene.login => 'v1/open/auth/login/sms/code',
SmsScene.register => 'v1/open/auth/register/sms/code',
SmsScene.resetPassword => 'v1/open/reset-password/sms/code',
};
await DioClient.post(
path,
queryParameters: {'mobile': phone},
);
}
/// 重置密码(忘记密码流程:校验验证码后设置新密码)。
Future<void> resetPassword({
required String phone,
required String code,
required String password,
}) async {
await DioClient.post(
'v1/open/auth/reset-password',
data: {
'mobile': phone,
'code': code,
'password': password,
},
);
}
}