Compare commits

...

3 Commits

Author SHA1 Message Date
machuanyu 5a18eb5f7a Merge branch 'mcy'
# Conflicts:
#	lib/common/store/user_store.dart
#	lib/page/login_page/login_logic.dart
2024-04-08 15:24:43 +08:00
1147192855@qq.com b4b03cf1cb no message 2024-04-08 15:10:27 +08:00
1147192855@qq.com 6c38852db4 修补登录BUG 2024-04-08 14:12:55 +08:00
7 changed files with 50 additions and 47 deletions

View File

@ -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);

View File

@ -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)) {

View File

@ -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;

View File

@ -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');

View File

@ -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();
}
} }

View File

@ -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 {

View File

@ -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;
} }