WGShare.Mobile.Flutter/wgshare/lib/pages/loginPage/login_logic.dart

79 lines
2.8 KiB
Dart

import 'dart:convert';
import 'package:crypto/crypto.dart';
import 'package:get/get.dart';
import 'package:wgshare/common/mixins/request_tool_mixin.dart';
import 'package:wgshare/utils/device_info.dart';
import 'package:wgshare/utils/toast_utils.dart';
import '../../common/models/common/base_structure_result.dart';
import '../../common/models/user_info_entity.dart';
import '../../common/store/user_store.dart';
import '../../routes/app_routes.dart';
import 'login_state.dart';
class LoginLogic extends GetxController with RequestToolMixin {
final LoginState state = LoginState();
/// 改变页面状态
void changePageState(int pageState){
state.pageState.value = pageState;
}
/// 改变勾选协议状态
void changeAgreementState(bool checkAgreementBool) {
state.checkAgreementBool.value = checkAgreementBool;
}
/// 登录
void doHttpLogin() async {
if(state.userNameController.text.isEmpty){
ToastUtils.showError("请输入账号");
}else if(state.passwordController.text.isEmpty){
ToastUtils.showError("请输入密码");
}else if(state.checkAgreementBool != true){
ToastUtils.showError("请阅读并勾选相关协议");
}else{
ToastUtils.showLoading();
BaseStructureResult<UserInfoEntity> res = await getClient().login(state.userNameController.text, md5.convert(utf8.encode(state.passwordController.text)).toString());
ToastUtils.dismiss();
if (null != res.data) {
UserStore.to.setToken(res.data!.token);
UserStore.to.setUserDetailInfo(res.data!);
Get.toNamed(Routes.startPage);
}
}
}
/// 直接进入会议(匿名登录)
void doHttpAnonymousLogin() async {
if(state.meetingCodeController.text.isEmpty){
ToastUtils.showError("请输入会议号");
}else if(state.meetingCodeController.text.length != 8){
ToastUtils.showError("请输入正确的会议号");
}else if(state.nickNameCodeController.text.isEmpty){
ToastUtils.showError("请输入昵称");
}else if(state.checkAgreementBool != true){
ToastUtils.showError("请阅读并勾选相关协议");
}else{
ToastUtils.showLoading();
BaseStructureResult<UserInfoEntity> res = await getClient().anonLogin(await DeviceInfo.getDeviceId(),state.nickNameCodeController.text, state.meetingCodeController.text);
ToastUtils.dismiss();
if (null != res.data) {
UserStore.to.setToken(res.data!.token);
UserStore.to.setUserDetailInfo(res.data!);
Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingCodeController.text});
}
}
}
@override
void dispose() {
super.dispose();
state.passwordController.dispose();
state.userNameController.dispose();
state.meetingCodeController.dispose();
state.nickNameCodeController.dispose();
}
}