ops-console v1.0.2 (versionCode 8) 源码入库
This commit is contained in:
72
lib/services/theme_service.dart
Normal file
72
lib/services/theme_service.dart
Normal file
@@ -0,0 +1,72 @@
|
||||
import 'package:dio/dio.dart';
|
||||
|
||||
import '../models/theme_group.dart';
|
||||
import '../models/theme_template.dart';
|
||||
import 'api_client.dart';
|
||||
|
||||
/// 主题模板服务:对接 web 后台 /theme/themetemplate/* 与 /theme/page/* 接口。
|
||||
class ThemeService {
|
||||
ThemeService({Dio? dio}) : _dio = dio ?? ApiClient.instance.dio;
|
||||
|
||||
final Dio _dio;
|
||||
|
||||
/// 获取全部启用的主题模板。
|
||||
///
|
||||
/// GET /theme/themetemplate/all?status=ENABLED
|
||||
Future<List<ThemeTemplate>> getThemeTemplateAll() async {
|
||||
final response = await _dio.get<dynamic>(
|
||||
'/theme/themetemplate/all',
|
||||
queryParameters: const {'status': 'ENABLED'},
|
||||
);
|
||||
final list = _extractList(response.data);
|
||||
return list
|
||||
.whereType<Map<String, dynamic>>()
|
||||
.map(ThemeTemplate.fromJson)
|
||||
.where((t) => t.id.isNotEmpty && t.isEnabled)
|
||||
.toList();
|
||||
}
|
||||
|
||||
/// 查询门店下各设备分组的主题预览列表(界面配置)。
|
||||
///
|
||||
/// GET /theme/page/org/{orgId}/photos
|
||||
Future<List<ThemeGroup>> getStoreThemeGroups(String orgId) async {
|
||||
final response = await _dio.get<dynamic>(
|
||||
'/theme/page/org/$orgId/photos',
|
||||
);
|
||||
final data = response.data;
|
||||
if (data is List) {
|
||||
return data
|
||||
.whereType<Map<String, dynamic>>()
|
||||
.map(ThemeGroup.fromJson)
|
||||
.where((g) => g.groupId > 0)
|
||||
.toList();
|
||||
}
|
||||
if (data is Map<String, dynamic>) {
|
||||
final code = data['code'];
|
||||
final isSuccess = code == null || code == 200 || code == 0;
|
||||
if (!isSuccess) return [];
|
||||
final list = data['data'] ?? data['list'];
|
||||
if (list is List) {
|
||||
return list
|
||||
.whereType<Map<String, dynamic>>()
|
||||
.map(ThemeGroup.fromJson)
|
||||
.where((g) => g.groupId > 0)
|
||||
.toList();
|
||||
}
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
/// 兼容列表响应的三种形态:
|
||||
/// `{list: [...]}` / `{data: [...]}` / 直接数组。
|
||||
static List<dynamic> _extractList(dynamic data) {
|
||||
if (data is List) return data;
|
||||
if (data is Map<String, dynamic>) {
|
||||
final list = data['list'];
|
||||
if (list is List) return list;
|
||||
final innerData = data['data'];
|
||||
if (innerData is List) return innerData;
|
||||
}
|
||||
return const <dynamic>[];
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user