Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
laki_icu_app
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张宏
laki_icu_app
Commits
76444de3
Commit
76444de3
authored
Jun 15, 2026
by
张宏
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
9352044e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
100 additions
and
13 deletions
+100
-13
auth_repository.dart
lib/repositories/auth_repository.dart
+54
-0
auth_mock_data.dart
lib/repositories/mock/auth_mock_data.dart
+39
-0
constants.dart
lib/utils/constants.dart
+7
-13
No files found.
lib/repositories/auth_repository.dart
View file @
76444de3
import
'../utils/constants.dart'
;
import
'../utils/http/response_model.dart'
;
import
'../utils/http/dio_request.dart'
;
import
'../models/bo/login_bo.dart'
;
import
'../models/bo/user_info_bo.dart'
;
import
'mock/auth_mock_data.dart'
;
class
AuthRepository
{
Future
<
ResponseModel
<
LoginBO
>>
login
(
Map
<
String
,
dynamic
>
params
)
{
if
(
Constants
.
useMockData
)
{
return
_mockLogin
();
}
return
DioRequest
.
instance
.
post
<
LoginBO
>(
'/app/auth/login/password'
,
data:
params
,
...
...
@@ -13,6 +18,9 @@ class AuthRepository {
}
Future
<
ResponseModel
<
UserInfoBO
>>
getUserInfo
()
{
if
(
Constants
.
useMockData
)
{
return
_mockGetUserInfo
();
}
return
DioRequest
.
instance
.
get
<
UserInfoBO
>(
'/app/auth/user-info'
,
fromJsonT:
(
data
)
=>
UserInfoBO
.
fromJson
(
data
as
Map
<
String
,
dynamic
>),
...
...
@@ -20,6 +28,52 @@ class AuthRepository {
}
Future
<
ResponseModel
>
logout
()
{
if
(
Constants
.
useMockData
)
{
return
_mockLogout
();
}
return
DioRequest
.
instance
.
post
(
'/app/auth/logout'
);
}
// ==================== Mock 实现 ====================
Future
<
ResponseModel
<
LoginBO
>>
_mockLogin
()
async
{
// 模拟网络延迟,便于测试 loading 状态
await
Future
.
delayed
(
const
Duration
(
milliseconds:
500
));
final
loginBO
=
AuthMockData
.
mockLogin
();
return
ResponseModel
<
LoginBO
>(
code:
200
,
msg:
'登录成功(mock)'
,
data:
loginBO
,
uuid:
'mock_uuid_
${DateTime.now().millisecondsSinceEpoch}
'
,
success:
true
,
timestamp:
DateTime
.
now
().
millisecondsSinceEpoch
,
);
}
Future
<
ResponseModel
<
UserInfoBO
>>
_mockGetUserInfo
()
async
{
await
Future
.
delayed
(
const
Duration
(
milliseconds:
300
));
final
userInfo
=
AuthMockData
.
mockUserInfo
();
return
ResponseModel
<
UserInfoBO
>(
code:
200
,
msg:
'获取用户信息成功(mock)'
,
data:
userInfo
,
uuid:
'mock_uuid_
${DateTime.now().millisecondsSinceEpoch}
'
,
success:
true
,
timestamp:
DateTime
.
now
().
millisecondsSinceEpoch
,
);
}
Future
<
ResponseModel
>
_mockLogout
()
async
{
await
Future
.
delayed
(
const
Duration
(
milliseconds:
200
));
return
ResponseModel
(
code:
200
,
msg:
'退出成功(mock)'
,
uuid:
'mock_uuid_
${DateTime.now().millisecondsSinceEpoch}
'
,
success:
true
,
timestamp:
DateTime
.
now
().
millisecondsSinceEpoch
,
);
}
}
lib/repositories/mock/auth_mock_data.dart
0 → 100644
View file @
76444de3
import
'../../models/bo/login_bo.dart'
;
import
'../../models/bo/user_info_bo.dart'
;
/// Auth 模块本地 mock 数据。
///
/// 所有 mock 数据直接使用 models 层的构造函数创建,
/// 确保数据结构与 models 定义完全一致。
/// 后续接入真实接口时,只需修改 Repository 层的开关即可。
class
AuthMockData
{
AuthMockData
.
_
();
/// Mock 登录响应 - 直接构造 LoginBO 实例
static
LoginBO
mockLogin
()
{
return
const
LoginBO
(
scope:
'server'
,
openid:
'mock_openid_abc123'
,
accessToken:
'mock_access_token_eyJhbGciOiJIUzI1NiJ9'
,
refreshToken:
'mock_refresh_token_xyz789'
,
expireIn:
86400
,
refreshExpireIn:
604800
,
clientId:
'mock_client_id_001'
,
);
}
/// Mock 用户信息响应 - 直接构造 UserInfoBO 实例
static
UserInfoBO
mockUserInfo
()
{
return
const
UserInfoBO
(
userId:
10001
,
userName:
'admin'
,
nickName:
'管理员'
,
phonenumber:
'13800138000'
,
email:
'admin@laki-icu.com'
,
sex:
'1'
,
avatarUrl:
'https://example.com/avatar/default.png'
,
deptName:
'技术部'
,
tenantId:
'tenant_001'
,
);
}
}
lib/utils/constants.dart
View file @
76444de3
...
...
@@ -3,19 +3,8 @@ class Constants {
/// 当前环境:dev / staging / prod,通过 --dart-define=APP_ENV=xxx 注入
static
const
String
env
=
String
.
fromEnvironment
(
'APP_ENV'
,
defaultValue:
'dev'
);
/// 根据环境返回对应的 API 地址
static
String
get
baseUrl
{
switch
(
env
)
{
case
'dev'
:
return
'http://121.41.57.178:9090'
;
case
'staging'
:
return
'http://121.41.57.178:9090'
;
case
'prod'
:
return
'http://121.41.57.178:9090'
;
default
:
return
'http://121.41.57.178:9090'
;
}
}
/// API 地址,由 env/*.json 中的 SERVICE_URL 注入
static
String
get
baseUrl
=>
const
String
.
fromEnvironment
(
'SERVICE_URL'
);
...
...
@@ -46,4 +35,9 @@ class Constants {
// ==================== 其他配置 ====================
static
const
String
defaultLang
=
'zh-CN'
;
// ==================== Mock 数据开关 ====================
/// 接口未提供时使用本地 mock 数据。
/// 设为 false 并调整 models 的 fromJson 即可切回真实接口。
static
const
bool
useMockData
=
true
;
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment