import '../data/models/admin_model.dart'; import 'api_service.dart'; /// 管理员服务 class AdminService { AdminService._internal(); static final AdminService _instance = AdminService._internal(); static AdminService get instance => _instance; /// 获取用户组列表 Future getGroups({ int page = 1, int pageSize = 10, }) async { final response = await ApiService.instance.post>( '/admin/group', data: { 'page': page, 'page_size': pageSize, 'order_by': '', 'order_direction': 'desc', }, ); return AdminGroupListResponse.fromJson(response); } /// 获取用户列表 Future getUsers({ int page = 1, int pageSize = 10, Map? conditions, }) async { final data = { 'page': page, 'page_size': pageSize, 'order_by': '', 'order_direction': 'desc', }; if (conditions != null) data['conditions'] = conditions; final response = await ApiService.instance.post>( '/admin/user', data: data, ); return AdminUserListResponse.fromJson(response); } /// 创建用户组 Future createGroup(String name) async { final response = await ApiService.instance.put>( '/admin/group', data: { 'group': { 'name': name, 'permissions': 'hA==', 'max_storage': 1073741824, 'settings': { 'compress_size': 1073741824, 'decompress_size': 1073741824, 'max_walked_files': 100000, 'trash_retention': 604800, 'source_batch': 10, 'aria2_batch': 1, 'redirected_source': true, }, 'edges': { 'storage_policies': {'id': 1}, }, 'id': 0, }, }, ); return AdminGroupModel.fromJson(response); } /// 获取用户组详情(含用户数量) Future getGroupDetail(int groupId) async { final response = await ApiService.instance.get>( '/admin/group/$groupId', queryParameters: {'countUser': 'true'}, ); return AdminGroupModel.fromJson(response); } /// 删除用户组 Future deleteGroup(int groupId) async { await ApiService.instance.delete( '/admin/group/$groupId', ); } /// 创建用户 Future createUser({ required String email, required String nick, required String password, required int groupId, }) async { final response = await ApiService.instance.put>( '/admin/user', data: { 'user': { 'edges': {}, 'id': 0, 'email': email, 'nick': nick, 'password': password, 'status': 'active', 'group_users': groupId, }, 'password': password, }, ); return AdminUserModel.fromJson(response); } /// 批量删除用户 Future batchDeleteUsers(List ids) async { await ApiService.instance.post( '/admin/user/batch/delete', data: {'ids': ids}, ); } }