Compare commits
3 Commits
f9ef3ec776
...
5a18eb5f7a
| Author | SHA1 | Date |
|---|---|---|
|
|
5a18eb5f7a | |
|
|
b4b03cf1cb | |
|
|
6c38852db4 |
|
|
@ -16,7 +16,7 @@ abstract class RetrofitClient {
|
||||||
Future toLogin(@Field() String account, @Field() String password);
|
Future toLogin(@Field() String account, @Field() String password);
|
||||||
|
|
||||||
@GET("/api/rbac/User/GetUser")
|
@GET("/api/rbac/User/GetUser")
|
||||||
Future<UserInfoDetail> getUser(@Query('userId') String userId);
|
Future<UserInfoDetail?> getUser(@Query('userId') String userId);
|
||||||
|
|
||||||
@GET("/api/hms/Homework/GetList")
|
@GET("/api/hms/Homework/GetList")
|
||||||
Future<WorkStudent> getWorkList(@Queries() WorkStudentParams params);
|
Future<WorkStudent> getWorkList(@Queries() WorkStudentParams params);
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,6 @@ class AuthInterceptor extends Interceptor {
|
||||||
|
|
||||||
if (null != token && token.isNotEmpty) {
|
if (null != token && token.isNotEmpty) {
|
||||||
headers["Authorization"] = token; //添加自己项目中的请求头 进行保存
|
headers["Authorization"] = token; //添加自己项目中的请求头 进行保存
|
||||||
headers["x-Authorization"] = token; //添加自己项目中的请求头 进行保存
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((userInfo?.isExpired() ?? false) && (xToken?.isNotEmpty ?? false)) {
|
if ((userInfo?.isExpired() ?? false) && (xToken?.isNotEmpty ?? false)) {
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
/// 本地存储信息
|
/// 本地存储信息
|
||||||
|
|
||||||
enum AppStorageKey {
|
enum AppStorageKey {
|
||||||
token(value: '', label: "登录用户的token"),
|
token(value: 'TOKEN', label: "登录用户的token"),
|
||||||
xToken(value: '', label: "登录用户的Xtoken,刷新token信息"),
|
xToken(value: 'XTOKEN', label: "登录用户的Xtoken,刷新token信息"),
|
||||||
userMobile(value: '', label: "用户输入过的手机号码"),
|
userMobile(value: 'USERMOBILE', label: "用户输入过的手机号码"),
|
||||||
userInfo(value: '', label: "登录用户的基本信息 及 token过期时间"),
|
userInfo(value: 'USERINFO', label: "登录用户的基本信息 及 token过期时间"),
|
||||||
userDetailInfo(value: '', label: "用户的详细信息");
|
userDetailInfo(value: 'USERDETAILINFO', label: "用户的详细信息");
|
||||||
|
|
||||||
final String label;
|
final String label;
|
||||||
final String value;
|
final String value;
|
||||||
|
|
|
||||||
|
|
@ -8,19 +8,9 @@ import 'package:school_asignment_app/common/store/app_storage_key.dart';
|
||||||
import 'package:school_asignment_app/routes/app_pages.dart';
|
import 'package:school_asignment_app/routes/app_pages.dart';
|
||||||
|
|
||||||
class UserStore extends GetxController with RequestToolMixin{
|
class UserStore extends GetxController with RequestToolMixin{
|
||||||
UserStore._privateConstructor() {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
static final UserStore _instance = UserStore._privateConstructor();
|
|
||||||
factory UserStore() {
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
static UserStore get to => Get.find();
|
static UserStore get to => Get.find();
|
||||||
|
|
||||||
/// 是否登录
|
/// 是否登录
|
||||||
final isLogin = false.obs;
|
|
||||||
String? token;
|
String? token;
|
||||||
String? xToken;
|
String? xToken;
|
||||||
|
|
||||||
|
|
@ -32,8 +22,9 @@ class UserStore extends GetxController with RequestToolMixin{
|
||||||
|
|
||||||
RxList<EnumSubject> subjectList = RxList();
|
RxList<EnumSubject> subjectList = RxList();
|
||||||
|
|
||||||
void init() {
|
UserStore init() {
|
||||||
token = StorageService.to.read(AppStorageKey.token.value) ?? '';
|
token = StorageService.to.read(AppStorageKey.token.value);
|
||||||
|
xToken = StorageService.to.read(AppStorageKey.xToken.value);
|
||||||
try {
|
try {
|
||||||
userInfo.value = StorageService.to.read(AppStorageKey.userInfo.value);
|
userInfo.value = StorageService.to.read(AppStorageKey.userInfo.value);
|
||||||
userDetailInfo.value = StorageService.to.read(AppStorageKey.userDetailInfo.value);
|
userDetailInfo.value = StorageService.to.read(AppStorageKey.userDetailInfo.value);
|
||||||
|
|
@ -42,22 +33,21 @@ RxList<EnumSubject> subjectList = RxList();
|
||||||
StorageService.to.remove(AppStorageKey.userDetailInfo.value);
|
StorageService.to.remove(AppStorageKey.userDetailInfo.value);
|
||||||
}
|
}
|
||||||
if ((token?.isNotEmpty ?? false) && userInfo.value != null) {
|
if ((token?.isNotEmpty ?? false) && userInfo.value != null) {
|
||||||
isLogin.value = true;
|
|
||||||
} else {
|
} else {
|
||||||
isLogin.value = false;
|
|
||||||
Get.toNamed(Routes.login);
|
Get.toNamed(Routes.login);
|
||||||
}
|
}
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 保存 token
|
/// 保存 token
|
||||||
void setToken(String token) {
|
void setToken(String token) {
|
||||||
token = token;
|
this.token = token;
|
||||||
StorageService.to.write(AppStorageKey.token.value, token);
|
StorageService.to.write(AppStorageKey.token.value, token);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 更新Xtoken的匙
|
/// 更新Xtoken的匙
|
||||||
void setXToken(String xtoken) {
|
void setXToken(String xtoken) {
|
||||||
xtoken = xtoken;
|
xToken = xtoken;
|
||||||
StorageService.to.write(AppStorageKey.xToken.value, xtoken);
|
StorageService.to.write(AppStorageKey.xToken.value, xtoken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,6 +63,13 @@ RxList<EnumSubject> subjectList = RxList();
|
||||||
StorageService.to.write(AppStorageKey.userDetailInfo.value, info);
|
StorageService.to.write(AppStorageKey.userDetailInfo.value, info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void erase() {
|
||||||
|
userInfo.value = null;
|
||||||
|
userDetailInfo.value = null;
|
||||||
|
token = null;
|
||||||
|
xToken = null;
|
||||||
|
}
|
||||||
|
|
||||||
//获取科目
|
//获取科目
|
||||||
getSubjectList() async {
|
getSubjectList() async {
|
||||||
var res = await getClient().getEnumSubjectList('EnumSubject');
|
var res = await getClient().getEnumSubjectList('EnumSubject');
|
||||||
|
|
|
||||||
|
|
@ -2,23 +2,14 @@ import 'package:get/get.dart';
|
||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
|
|
||||||
class StorageService extends GetxService {
|
class StorageService extends GetxService {
|
||||||
StorageService._();
|
|
||||||
static final StorageService _instance = StorageService._();
|
|
||||||
factory StorageService({Future Function()? initCall}) {
|
|
||||||
// 具体初始化代码.
|
|
||||||
_instance._init().then((value) {
|
|
||||||
if (initCall != null) initCall();
|
|
||||||
});
|
|
||||||
return _instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
static StorageService get to => Get.find();
|
static StorageService get to => Get.find();
|
||||||
late final GetStorage _getStorage;
|
late final GetStorage _getStorage;
|
||||||
get storage => _getStorage;
|
get storage => _getStorage;
|
||||||
|
|
||||||
Future<void> _init() async {
|
Future<StorageService> init() async {
|
||||||
await GetStorage.init();
|
await GetStorage.init();
|
||||||
_getStorage = GetStorage();
|
_getStorage = GetStorage();
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
T? read<T>(String key) {
|
T? read<T>(String key) {
|
||||||
|
|
@ -36,4 +27,8 @@ class StorageService extends GetxService {
|
||||||
bool hasData(String key) {
|
bool hasData(String key) {
|
||||||
return _getStorage.hasData(key);
|
return _getStorage.hasData(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future erase() async {
|
||||||
|
await _getStorage.erase();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,15 +15,14 @@ void main() async {
|
||||||
Get.testMode = true;
|
Get.testMode = true;
|
||||||
|
|
||||||
/// 初始化本地存储
|
/// 初始化本地存储
|
||||||
StorageService storageService = StorageService(initCall: () async {
|
await Get.putAsync(() => StorageService().init());
|
||||||
/// 初始化UserStore
|
|
||||||
Get.put<UserStore>(UserStore());
|
/// 初始化UserStore
|
||||||
|
Get.put<UserStore>(UserStore().init());
|
||||||
|
|
||||||
runApp(const MyApp());
|
|
||||||
});
|
|
||||||
Get.put(storageService);
|
|
||||||
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); // 屏幕刘海
|
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: [SystemUiOverlay.top, SystemUiOverlay.bottom]); // 屏幕刘海
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); // 屏幕强制竖屏
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); // 屏幕强制竖屏
|
||||||
|
runApp(const MyApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import 'package:school_asignment_app/common/job/user_info.dart';
|
||||||
import 'package:school_asignment_app/common/job/user_login.dart';
|
import 'package:school_asignment_app/common/job/user_login.dart';
|
||||||
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
|
import 'package:school_asignment_app/common/mixins/request_tool_mixin.dart';
|
||||||
import 'package:school_asignment_app/common/store/user_store.dart';
|
import 'package:school_asignment_app/common/store/user_store.dart';
|
||||||
|
import 'package:school_asignment_app/common/utils/storage.dart';
|
||||||
import 'package:school_asignment_app/common/utils/toast_utils.dart';
|
import 'package:school_asignment_app/common/utils/toast_utils.dart';
|
||||||
import 'package:school_asignment_app/common/utils/utils.dart';
|
import 'package:school_asignment_app/common/utils/utils.dart';
|
||||||
import 'package:school_asignment_app/routes/app_pages.dart';
|
import 'package:school_asignment_app/routes/app_pages.dart';
|
||||||
|
|
@ -68,13 +69,15 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
EasyLoading.show(status: 'loading...');
|
EasyLoading.show(status: 'loading...');
|
||||||
try {
|
try {
|
||||||
await getClient().toLogin(userName, userPwd);
|
await getClient().toLogin(userName, userPwd);
|
||||||
String? nameidentifier = UserStore().userInfo.value?.nameidentifier;
|
String? nameidentifier = UserStore.to.userInfo.value?.nameidentifier;
|
||||||
if (nameidentifier == null) {
|
if (nameidentifier == null) {
|
||||||
throw Exception('用户信息无效,请重试');
|
throw Exception('用户信息无效,请重试');
|
||||||
}
|
}
|
||||||
var data = await getClient().getUser(nameidentifier);
|
var data = await getClient().getUser(nameidentifier);
|
||||||
print(data);
|
if (data == null) {
|
||||||
//获取科目
|
throw Exception('用户信息获取失败');
|
||||||
|
}
|
||||||
|
UserStore.to.setUserDetailInfo(data);
|
||||||
UserStore.to.getSubjectList();
|
UserStore.to.getSubjectList();
|
||||||
EasyLoading.dismiss();
|
EasyLoading.dismiss();
|
||||||
Get.offAllNamed(Routes.home);
|
Get.offAllNamed(Routes.home);
|
||||||
|
|
@ -109,8 +112,18 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
// RouterManager.router.navigateTo(context, RouterManager.root, clearStack: true, transition: getTransition());
|
// RouterManager.router.navigateTo(context, RouterManager.root, clearStack: true, transition: getTransition());
|
||||||
});*/
|
});*/
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
// FastData.getInstance().cleanShared();
|
print('进来异常');
|
||||||
// return toMsg(msg ?? '登录失败,请重试');
|
EasyLoading.dismiss();
|
||||||
|
StorageService.to.erase();
|
||||||
|
UserStore.to.erase();
|
||||||
|
if (e is Exception) {
|
||||||
|
try {
|
||||||
|
toMsg(e.toString().split(":")[1]);
|
||||||
|
return;
|
||||||
|
// ignore: empty_catches
|
||||||
|
} catch (e) {}
|
||||||
|
}
|
||||||
|
toMsg('登录失败,请重试');
|
||||||
} finally {
|
} finally {
|
||||||
state.canLogin.value = true;
|
state.canLogin.value = true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue