123 lines
3.4 KiB
Dart
123 lines
3.4 KiB
Dart
import 'package:common_utils/common_utils.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:flutter_easyloading/flutter_easyloading.dart';
|
|
|
|
import 'package:get/get.dart';
|
|
|
|
import 'package:pj_supermarket_cloud/common/index.dart';
|
|
|
|
class LoginController extends GetxController {
|
|
static const String _tag = "登录页面 Controller";
|
|
|
|
// 用户名
|
|
final usernameC = TextEditingController();
|
|
// 密码
|
|
final passwordC = TextEditingController();
|
|
|
|
_initData() {
|
|
update(["login"]);
|
|
}
|
|
|
|
@override
|
|
void onInit() async {
|
|
super.onInit();
|
|
await autoLogin();
|
|
}
|
|
|
|
@override
|
|
void onReady() {
|
|
super.onReady();
|
|
_initData();
|
|
}
|
|
|
|
Future<void> doLogin(bool visibleMsg) async {
|
|
if (!_validateForm()) return;
|
|
SysSetting sysSetting = await AppSettingTool.getSysSetting();
|
|
final pa = <String, dynamic>{
|
|
'username': usernameC.value.text,
|
|
'password': passwordC.value.text,
|
|
'sysType': sysSetting.sysType.name,
|
|
"grant_type": 'password',
|
|
"scope": 'server',
|
|
};
|
|
if (visibleMsg) {
|
|
EasyLoading.show(
|
|
status: '登录中...',
|
|
maskType: EasyLoadingMaskType.black,
|
|
);
|
|
}
|
|
try {
|
|
await AppSettingTool.setUserSetting(UserSetting());
|
|
final data = await UserApi.login(pa);
|
|
if (data == null) {
|
|
if (visibleMsg) EasyLoading.dismiss();
|
|
return;
|
|
}
|
|
final userSetting = await AppSettingTool.getUserSetting();
|
|
userSetting.userId = data['user_id'];
|
|
userSetting.accessToken = data['access_token'];
|
|
userSetting.refreshToken = data['refresh_token'];
|
|
userSetting.expiresTime = int.tryParse("${data['exp']}");
|
|
userSetting.sysType = sysSetting.sysType;
|
|
userSetting.username = usernameC.value.text;
|
|
userSetting.password = passwordC.value.text;
|
|
await AppSettingTool.setUserSetting(userSetting);
|
|
if (visibleMsg) {
|
|
Toast.success(msg: "登录成功");
|
|
EasyLoading.dismiss();
|
|
}
|
|
Get.offAndToNamed(RouteNames.panel);
|
|
_clearForm();
|
|
} catch (e) {
|
|
logger.e("|$_tag|登录错误error:|$e|");
|
|
EasyLoading.dismiss();
|
|
}
|
|
}
|
|
|
|
Future<void> autoLogin() async {
|
|
final userSetting = await AppSettingTool.getUserSetting();
|
|
if (ObjectUtil.isEmpty(userSetting.username) ||
|
|
ObjectUtil.isEmpty(userSetting.password) ||
|
|
ObjectUtil.isEmpty(userSetting.sysType?.name)) {
|
|
return;
|
|
}
|
|
final sysSetting = await AppSettingTool.getSysSetting();
|
|
usernameC.text = userSetting.username!;
|
|
passwordC.text = userSetting.password!;
|
|
// 无网络并且绑定过直接使用
|
|
final isNetwork = AppNetworkTool.isAutoNetwork();
|
|
final serviceId = sysSetting.serviceId;
|
|
if (!isNetwork && serviceId != null) {
|
|
Toast.success(msg: "登录成功");
|
|
EasyLoading.dismiss();
|
|
Get.offAndToNamed(RouteNames.panel);
|
|
_clearForm();
|
|
return;
|
|
}
|
|
if (!isNetwork && serviceId == null) {
|
|
Toast.error(msg: "未绑定机器,不能开启离线模式");
|
|
return;
|
|
}
|
|
await doLogin(true);
|
|
}
|
|
|
|
bool _validateForm() {
|
|
final username = usernameC.value.text;
|
|
final password = passwordC.value.text;
|
|
if (ObjectUtil.isEmpty(username)) {
|
|
Toast.error(msg: "请输入账号");
|
|
return false;
|
|
}
|
|
if (ObjectUtil.isEmpty(password)) {
|
|
Toast.error(msg: "请输入密码");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
void _clearForm() {
|
|
usernameC.clear();
|
|
passwordC.clear();
|
|
}
|
|
}
|