starwork_flutter/lib/views/team/createTeam/create_team_controller.dart

85 lines
3.0 KiB
Dart

import 'package:flutter/widgets.dart';
import 'package:get/get.dart';
import 'package:starcloud/sdk/entity/cloud_user_info.dart';
import 'package:starcloud/sdk/starcloud.dart';
import 'package:starwork_flutter/api/model/team/request/bind_team_star_cloud_account_request.dart';
import 'package:starwork_flutter/api/model/team/request/create_team_request.dart';
import 'package:starwork_flutter/api/model/team/response/scene_info_response.dart';
import 'package:starwork_flutter/api/service/team_api_service.dart';
import 'package:starwork_flutter/base/app_logger.dart';
import 'package:starwork_flutter/base/base_controller.dart';
class CreateTeamController extends BaseController {
TextEditingController teamNameInputController = TextEditingController();
final teamApi = Get.find<TeamApiService>();
// 用于存储选中的使用场景
final selectedUseCase = Rx<SceneInfoResponse?>(null);
// 用于存储场景列表
final useCases = <SceneInfoResponse>[].obs;
@override
void onInit() {
super.onInit();
requestAllSceneInfoList();
}
/// 请求团队使用场景信息
void requestAllSceneInfoList() async {
showLoading();
var sceneList = await teamApi.requestAllSceneInfoList();
if (sceneList.isSuccess) {
// 使用场景列表
useCases.value = sceneList.data?.list ?? [];
useCases.refresh();
}
hideLoading();
}
void requestCreateTeam() async {
// 先注册星云用户
await StarCloudSDK.instance.createCloudUser(
onSuccess: (CloudUserInfo userInfo) async {
// 创建团队
var createTeamResponse = await teamApi.requestCreateTeam(
request: CreateTeamRequest(
teamName: teamNameInputController.text,
scene: selectedUseCase.value?.id ?? 0,
),
);
if (createTeamResponse.isSuccess) {
var teamNo = createTeamResponse.data?.teamNo;
var teamId = createTeamResponse.data?.teamId;
var username = userInfo.username;
var cloudUid = userInfo.uid;
var password = userInfo.password;
if (teamNo != null && teamId != null) {
var bindTeamStarCloudAccountResponse = await teamApi.requestBindTeamStarCloudAccount(
request: BindTeamStarCloudAccountRequest(
teamId: teamId,
teamNo: teamNo,
username: username,
cloudUid: cloudUid,
password: password,
),
);
AppLogger.highlight('bindTeamStarCloudAccountResponse:${bindTeamStarCloudAccountResponse.toString()}');
if (bindTeamStarCloudAccountResponse.isSuccess) {
// 创建成功,使用 Get.back(result: true) 返回并传递结果
showSuccess();
// 返回添加成功结果
Get.back(result: {'created': true});
}
}
} else {
// 创建失败
showError(message: createTeamResponse.errorMsg!);
}
},
onError: (err) {},
);
}
}