Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

tongfeng 2 éve
szülő
commit
5bd930dbdb

+ 58 - 0
lib/common/local/StoreHelper.dart

@@ -0,0 +1,58 @@
+import 'package:shared_preferences/shared_preferences.dart';
+import 'package:synchronized/synchronized.dart';
+
+class StoreHelper {
+  static StoreHelper? _instance;
+  static late SharedPreferences prefs;
+  static final Lock _lock = Lock();
+
+  static Future<StoreHelper?> init() async {
+    if (_instance == null) {
+      print("SpHelper初始化中");
+      await _lock.synchronized(() async {
+        // 保持本地实例直到完全初始化。
+        var singleton = StoreHelper();
+        await singleton._init();
+        _instance = singleton;
+      });
+    }
+    print("SpHelper初始化完成");
+    return _instance;
+  }
+
+  Future _init() async {
+    prefs = await SharedPreferences.getInstance();
+  }
+
+  static void putStorage(String key, value) async {
+    if (value is String) {
+      prefs.setString(key, value);
+    } else if (value is num) {
+      prefs.setInt(key, value as int);
+    } else if (value is double) {
+      prefs.setDouble(key, value);
+    } else if (value is bool) {
+      prefs.setBool(key, value);
+    } else if (value is List) {
+      prefs.setStringList(key, value.cast<String>());
+    }
+  }
+
+  // 获取
+  static getStorage(String key, [dynamic replace]) {
+    if (prefs == null) return;
+    return prefs.get(key) ?? replace;
+  }
+
+  // 移除
+  static removeStorage(String key) {
+    if (prefs == null) return;
+    prefs.remove(key);
+  }
+
+  static removeAllStorage() {
+    if (prefs == null) return;
+    prefs.clear();
+  }
+}
+

+ 3 - 1
lib/common/utils/ConstantString.dart

@@ -3,7 +3,9 @@ class ConstantString {
 
   static const String name = "name";
 
-  static const String userId = "userId";
+  static const String phone = "phone";
+
+  static const String orgName = "orgName";
 
   static const String loadingText = "努力加载中···";
 

+ 3 - 1
lib/common/utils/DioUtil.dart

@@ -1,3 +1,5 @@
+import 'package:deus_app/common/local/StoreHelper.dart';
+import 'package:deus_app/common/utils/ConstantString.dart';
 import 'package:deus_app/common/utils/ToastUtils.dart';
 import 'package:dio/dio.dart';
 
@@ -52,7 +54,7 @@ class DioUtil {
       options.queryParameters["userId"] = "xxx";
     }
     // 头部添加token
-    options.headers["Token"] = "xxx";
+    options.headers["Authorization"] = StoreHelper.getStorage(ConstantString.token);
     // 更多业务需求
     handler.next(options);
     // super.onRequest(options, handler);

+ 43 - 1
lib/generated/json/base/json_convert_content.dart

@@ -3,8 +3,10 @@
 // ignore_for_file: prefer_single_quotes
 
 import 'package:deus_app/generated/json/login_response_entity_helper.dart';
-// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
+import 'package:deus_app/generated/json/user_response_entity_helper.dart';
 import 'package:deus_app/model/login_response_entity.dart';
+// This file is automatically generated. DO NOT EDIT, all your changes would be lost.
+import 'package:deus_app/model/user_response_entity.dart';
 
 class JsonConvert<T> {
 	T fromJson(Map<String, dynamic> json) {
@@ -17,6 +19,14 @@ class JsonConvert<T> {
 
   static _getFromJson<T>(Type type, data, json) {
 		switch (type) {
+			case UserResponseEntity:
+				return userResponseEntityFromJson(data as UserResponseEntity, json) as T;
+			case UserResponseData:
+				return userResponseDataFromJson(data as UserResponseData, json) as T;
+			case UserResponseDataUserMenuList:
+				return userResponseDataUserMenuListFromJson(data as UserResponseDataUserMenuList, json) as T;
+			case UserResponseDataRoleList:
+				return userResponseDataRoleListFromJson(data as UserResponseDataRoleList, json) as T;
 			case LoginResponseEntity:
 				return loginResponseEntityFromJson(data as LoginResponseEntity, json) as T;
 			case LoginResponseData:
@@ -28,6 +38,14 @@ class JsonConvert<T> {
 
   static _getToJson<T>(Type type, data) {
 		switch (type) {
+			case UserResponseEntity:
+				return userResponseEntityToJson(data as UserResponseEntity);
+			case UserResponseData:
+				return userResponseDataToJson(data as UserResponseData);
+			case UserResponseDataUserMenuList:
+				return userResponseDataUserMenuListToJson(data as UserResponseDataUserMenuList);
+			case UserResponseDataRoleList:
+				return userResponseDataRoleListToJson(data as UserResponseDataRoleList);
 			case LoginResponseEntity:
 				return loginResponseEntityToJson(data as LoginResponseEntity);
 			case LoginResponseData:
@@ -40,6 +58,18 @@ class JsonConvert<T> {
   //Go back to a single instance by type
 	static _fromJsonSingle<M>( json) {
 		String type = M.toString();
+		if(type == (UserResponseEntity).toString()){
+			return UserResponseEntity().fromJson(json);
+		}
+		if(type == (UserResponseData).toString()){
+			return UserResponseData().fromJson(json);
+		}
+		if(type == (UserResponseDataUserMenuList).toString()){
+			return UserResponseDataUserMenuList().fromJson(json);
+		}
+		if(type == (UserResponseDataRoleList).toString()){
+			return UserResponseDataRoleList().fromJson(json);
+		}
 		if(type == (LoginResponseEntity).toString()){
 			return LoginResponseEntity().fromJson(json);
 		}
@@ -55,6 +85,18 @@ class JsonConvert<T> {
 
   //list is returned by type
 	static M _getListChildType<M>(List data) {
+		if(<UserResponseEntity>[] is M){
+			return data.map<UserResponseEntity>((e) => UserResponseEntity().fromJson(e)).toList() as M;
+		}
+		if(<UserResponseData>[] is M){
+			return data.map<UserResponseData>((e) => UserResponseData().fromJson(e)).toList() as M;
+		}
+		if(<UserResponseDataUserMenuList>[] is M){
+			return data.map<UserResponseDataUserMenuList>((e) => UserResponseDataUserMenuList().fromJson(e)).toList() as M;
+		}
+		if(<UserResponseDataRoleList>[] is M){
+			return data.map<UserResponseDataRoleList>((e) => UserResponseDataRoleList().fromJson(e)).toList() as M;
+		}
 		if(<LoginResponseEntity>[] is M){
 			return data.map<LoginResponseEntity>((e) => LoginResponseEntity().fromJson(e)).toList() as M;
 		}

+ 2 - 2
lib/generated/json/login_response_entity_helper.dart

@@ -18,7 +18,7 @@ loginResponseEntityFromJson(LoginResponseEntity data, Map<String, dynamic> json)
 Map<String, dynamic> loginResponseEntityToJson(LoginResponseEntity entity) {
 	final Map<String, dynamic> data = new Map<String, dynamic>();
 	data['code'] = entity.code;
-	data['data'] = entity.data?.toJson();
+	data['data'] = entity.data.toJson();
 	data['msg'] = entity.msg;
 	return data;
 }
@@ -35,7 +35,7 @@ loginResponseDataFromJson(LoginResponseData data, Map<String, dynamic> json) {
 
 Map<String, dynamic> loginResponseDataToJson(LoginResponseData entity) {
 	final Map<String, dynamic> data = new Map<String, dynamic>();
-	data['user'] = entity.user?.toJson();
+	data['user'] = entity.user.toJson();
 	data['token'] = entity.token;
 	return data;
 }

+ 251 - 0
lib/generated/json/user_response_entity_helper.dart

@@ -0,0 +1,251 @@
+import 'package:deus_app/model/user_response_entity.dart';
+
+userResponseEntityFromJson(UserResponseEntity data, Map<String, dynamic> json) {
+	if (json['code'] != null) {
+		data.code = json['code'] is String
+				? int.tryParse(json['code'])
+				: json['code'].toInt();
+	}
+	if (json['data'] != null) {
+		data.data = UserResponseData().fromJson(json['data']);
+	}
+	if (json['msg'] != null) {
+		data.msg = json['msg'].toString();
+	}
+	return data;
+}
+
+Map<String, dynamic> userResponseEntityToJson(UserResponseEntity entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['code'] = entity.code;
+	data['data'] = entity.data.toJson();
+	data['msg'] = entity.msg;
+	return data;
+}
+
+userResponseDataFromJson(UserResponseData data, Map<String, dynamic> json) {
+	if (json['id'] != null) {
+		data.id = json['id'] is String
+				? int.tryParse(json['id'])
+				: json['id'].toInt();
+	}
+	if (json['accId'] != null) {
+		data.accId = json['accId'] is String
+				? int.tryParse(json['accId'])
+				: json['accId'].toInt();
+	}
+	if (json['name'] != null) {
+		data.name = json['name'].toString();
+	}
+	if (json['phone'] != null) {
+		data.phone = json['phone'].toString();
+	}
+	if (json['password'] != null) {
+		data.password = json['password'];
+	}
+	if (json['enable'] != null) {
+		data.enable = json['enable'] is String
+				? int.tryParse(json['enable'])
+				: json['enable'].toInt();
+	}
+	if (json['isDelete'] != null) {
+		data.isDelete = json['isDelete'] is String
+				? int.tryParse(json['isDelete'])
+				: json['isDelete'].toInt();
+	}
+	if (json['orgType'] != null) {
+		data.orgType = json['orgType'] is String
+				? int.tryParse(json['orgType'])
+				: json['orgType'].toInt();
+	}
+	if (json['orgName'] != null) {
+		data.orgName = json['orgName'].toString();
+	}
+	if (json['orgId'] != null) {
+		data.orgId = json['orgId'] is String
+				? int.tryParse(json['orgId'])
+				: json['orgId'].toInt();
+	}
+	if (json['userMenuList'] != null) {
+		data.userMenuList = (json['userMenuList'] as List).map((v) => UserResponseDataUserMenuList().fromJson(v)).toList();
+	}
+	if (json['roleIdList'] != null) {
+		data.roleIdList = json['roleIdList'];
+	}
+	if (json['roleList'] != null) {
+		data.roleList = (json['roleList'] as List).map((v) => UserResponseDataRoleList().fromJson(v)).toList();
+	}
+	return data;
+}
+
+Map<String, dynamic> userResponseDataToJson(UserResponseData entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['id'] = entity.id;
+	data['accId'] = entity.accId;
+	data['name'] = entity.name;
+	data['phone'] = entity.phone;
+	data['password'] = entity.password;
+	data['enable'] = entity.enable;
+	data['isDelete'] = entity.isDelete;
+	data['orgType'] = entity.orgType;
+	data['orgName'] = entity.orgName;
+	data['orgId'] = entity.orgId;
+	data['userMenuList'] =  entity.userMenuList.map((v) => v.toJson()).toList();
+	data['roleIdList'] = entity.roleIdList;
+	data['roleList'] =  entity.roleList.map((v) => v.toJson()).toList();
+	return data;
+}
+
+userResponseDataUserMenuListFromJson(UserResponseDataUserMenuList data, Map<String, dynamic> json) {
+	if (json['id'] != null) {
+		data.id = json['id'] is String
+				? int.tryParse(json['id'])
+				: json['id'].toInt();
+	}
+	if (json['pid'] != null) {
+		data.pid = json['pid'] is String
+				? int.tryParse(json['pid'])
+				: json['pid'].toInt();
+	}
+	if (json['subCount'] != null) {
+		data.subCount = json['subCount'] is String
+				? int.tryParse(json['subCount'])
+				: json['subCount'].toInt();
+	}
+	if (json['type'] != null) {
+		data.type = json['type'] is String
+				? int.tryParse(json['type'])
+				: json['type'].toInt();
+	}
+	if (json['title'] != null) {
+		data.title = json['title'].toString();
+	}
+	if (json['name'] != null) {
+		data.name = json['name'].toString();
+	}
+	if (json['component'] != null) {
+		data.component = json['component'].toString();
+	}
+	if (json['sort'] != null) {
+		data.sort = json['sort'] is String
+				? int.tryParse(json['sort'])
+				: json['sort'].toInt();
+	}
+	if (json['icon'] != null) {
+		data.icon = json['icon'].toString();
+	}
+	if (json['iconActive'] != null) {
+		data.iconActive = json['iconActive'].toString();
+	}
+	if (json['path'] != null) {
+		data.path = json['path'].toString();
+	}
+	if (json['isEl'] != null) {
+		data.isEl = json['isEl'];
+	}
+	if (json['isCache'] != null) {
+		data.isCache = json['isCache'];
+	}
+	if (json['isHidden'] != null) {
+		data.isHidden = json['isHidden'];
+	}
+	if (json['isDelete'] != null) {
+		data.isDelete = json['isDelete'];
+	}
+	if (json['permission'] != null) {
+		data.permission = json['permission'].toString();
+	}
+	if (json['creator'] != null) {
+		data.creator = json['creator'].toString();
+	}
+	if (json['createTime'] != null) {
+		data.createTime = json['createTime'].toString();
+	}
+	if (json['subMenu'] != null) {
+		data.subMenu = json['subMenu'];
+	}
+	if (json['pname'] != null) {
+		data.pname = json['pname'];
+	}
+	return data;
+}
+
+Map<String, dynamic> userResponseDataUserMenuListToJson(UserResponseDataUserMenuList entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['id'] = entity.id;
+	data['pid'] = entity.pid;
+	data['subCount'] = entity.subCount;
+	data['type'] = entity.type;
+	data['title'] = entity.title;
+	data['name'] = entity.name;
+	data['component'] = entity.component;
+	data['sort'] = entity.sort;
+	data['icon'] = entity.icon;
+	data['iconActive'] = entity.iconActive;
+	data['path'] = entity.path;
+	data['isEl'] = entity.isEl;
+	data['isCache'] = entity.isCache;
+	data['isHidden'] = entity.isHidden;
+	data['isDelete'] = entity.isDelete;
+	data['permission'] = entity.permission;
+	data['creator'] = entity.creator;
+	data['createTime'] = entity.createTime;
+	data['subMenu'] = entity.subMenu;
+	data['pname'] = entity.pname;
+	return data;
+}
+
+userResponseDataRoleListFromJson(UserResponseDataRoleList data, Map<String, dynamic> json) {
+	if (json['id'] != null) {
+		data.id = json['id'] is String
+				? int.tryParse(json['id'])
+				: json['id'].toInt();
+	}
+	if (json['name'] != null) {
+		data.name = json['name'].toString();
+	}
+	if (json['type'] != null) {
+		data.type = json['type'];
+	}
+	if (json['level'] != null) {
+		data.level = json['level'] is String
+				? int.tryParse(json['level'])
+				: json['level'].toInt();
+	}
+	if (json['description'] != null) {
+		data.description = json['description'].toString();
+	}
+	if (json['dataScope'] != null) {
+		data.dataScope = json['dataScope'];
+	}
+	if (json['enable'] != null) {
+		data.enable = json['enable'] is String
+				? int.tryParse(json['enable'])
+				: json['enable'].toInt();
+	}
+	if (json['creator'] != null) {
+		data.creator = json['creator'].toString();
+	}
+	if (json['createTime'] != null) {
+		data.createTime = json['createTime'].toString();
+	}
+	if (json['menuList'] != null) {
+		data.menuList = json['menuList'];
+	}
+	return data;
+}
+
+Map<String, dynamic> userResponseDataRoleListToJson(UserResponseDataRoleList entity) {
+	final Map<String, dynamic> data = new Map<String, dynamic>();
+	data['id'] = entity.id;
+	data['name'] = entity.name;
+	data['type'] = entity.type;
+	data['level'] = entity.level;
+	data['description'] = entity.description;
+	data['dataScope'] = entity.dataScope;
+	data['enable'] = entity.enable;
+	data['creator'] = entity.creator;
+	data['createTime'] = entity.createTime;
+	data['menuList'] = entity.menuList;
+	return data;
+}

+ 2 - 2
lib/main.dart

@@ -1,4 +1,4 @@
-import 'package:deus_app/page/home/home_page.dart';
+import 'package:deus_app/page/login/login_page.dart';
 import 'package:flutter/material.dart';
 
 void main() {
@@ -27,7 +27,7 @@ class MyApp extends StatelessWidget {
         primarySwatch: Colors.blue,
       ),
       // home: const MyHomePage(title: 'Flutter Demo Home Page'),
-      home: HomePage(),
+      home: LoginPage(),
     );
   }
 }

+ 59 - 0
lib/model/user_response_entity.dart

@@ -0,0 +1,59 @@
+import 'package:deus_app/generated/json/base/json_convert_content.dart';
+
+class UserResponseEntity with JsonConvert<UserResponseEntity> {
+	late int code;
+	late UserResponseData data;
+	late String msg;
+}
+
+class UserResponseData with JsonConvert<UserResponseData> {
+	late int id;
+	late int accId;
+	late String name;
+	late String phone;
+	late dynamic password;
+	late int enable;
+	late int isDelete;
+	late int orgType;
+	late String orgName;
+	late int orgId;
+	late List<UserResponseDataUserMenuList> userMenuList;
+	late dynamic roleIdList;
+	late List<UserResponseDataRoleList> roleList;
+}
+
+class UserResponseDataUserMenuList with JsonConvert<UserResponseDataUserMenuList> {
+	late int id;
+	late int pid;
+	late int subCount;
+	late int type;
+	late String title;
+	late String name;
+	late String component;
+	late int sort;
+	late String icon;
+	late String iconActive;
+	late String path;
+	late bool isEl;
+	late bool isCache;
+	late bool isHidden;
+	late bool isDelete;
+	late String permission;
+	late String creator;
+	late String createTime;
+	late dynamic subMenu;
+	late dynamic pname;
+}
+
+class UserResponseDataRoleList with JsonConvert<UserResponseDataRoleList> {
+	late int id;
+	late String name;
+	late dynamic type;
+	late int level;
+	late String description;
+	late dynamic dataScope;
+	late int enable;
+	late String creator;
+	late String createTime;
+	late dynamic menuList;
+}

+ 7 - 5
lib/page/home/home_page.dart

@@ -1,3 +1,5 @@
+import 'package:deus_app/common/local/StoreHelper.dart';
+import 'package:deus_app/common/utils/ConstantString.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 
@@ -73,9 +75,9 @@ class _MineViewPageState extends State<HomePage> {
                       ),
                       SizedBox(width: 10),
                       Text(
-                        "SHAW",
+                        StoreHelper.getStorage(ConstantString.name),
                         style: TextStyle(
-                            color: Colors.white, fontWeight: FontWeight.bold),
+                            color: Colors.white, fontWeight: FontWeight.bold,fontSize: 15),
                       )
                     ],
                   ),
@@ -83,18 +85,18 @@ class _MineViewPageState extends State<HomePage> {
                   Row(
                     children: [
                       SizedBox(width: 50),
-                      Text("13239202394",
+                      Text(StoreHelper.getStorage(ConstantString.phone),
                           style: TextStyle(
                               color: Colors.white,
                               fontWeight: FontWeight.bold,
-                              fontSize: 20))
+                              fontSize: 18))
                     ],
                   ),
                   SizedBox(height: 10),
                   Row(
                     children: [
                       SizedBox(width: 50),
-                      Text("中国平安保险公司",
+                      Text(StoreHelper.getStorage(ConstantString.orgName),
                           style:
                           TextStyle(color: Color(0xffaaaaaa), fontSize: 15))
                     ],

+ 23 - 11
lib/page/login/login_page.dart

@@ -1,9 +1,11 @@
-import 'package:deus_app/common/local/local_storage.dart';
+import 'package:deus_app/common/local/StoreHelper.dart';
 import 'package:deus_app/common/style/gsy_style.dart';
 import 'package:deus_app/common/utils/CommonUtils.dart';
 import 'package:deus_app/common/utils/DioUtil.dart';
 import 'package:deus_app/common/utils/ToastUtils.dart';
+import 'package:deus_app/generated/json/user_response_entity_helper.dart';
 import 'package:deus_app/model/login_response_entity.dart';
+import 'package:deus_app/model/user_response_entity.dart';
 import 'package:deus_app/page/home/home_page.dart';
 import 'package:deus_app/widget/gsy_flex_button.dart';
 import 'package:flutter/material.dart';
@@ -38,11 +40,12 @@ class _LoginPageState extends State<LoginPage> {
 
   @override
   Widget build(BuildContext context) {
+    StoreHelper.init();
     return Scaffold(
       appBar: AppBar(
         centerTitle: true,
-
-        title: const Text(ConstantString.loginText,style: TextStyle(fontSize: 17)),
+        backgroundColor: Color(0xFF4875EC),
+        title: const Text(ConstantString.loginText,style: TextStyle(fontSize: 16)),
       ),
       body: Center(
         child: Column(
@@ -175,6 +178,7 @@ class _LoginPageState extends State<LoginPage> {
       ),
       child: GSYFlexButton(
         text: ConstantString.loginText,
+        color: Color(0xFF4875EC),
         textColor: GSYColors.textWhite,
         fontSize: 16,
         onPress: login,
@@ -192,17 +196,25 @@ class _LoginPageState extends State<LoginPage> {
       LoginResponseEntity loginResponseEntity =
           loginResponseEntityFromJson(LoginResponseEntity(), result);
       if (0 == loginResponseEntity.code) {
-        LocalStorage.save(ConstantString.token, loginResponseEntity.data.token);
-        LocalStorage.save(ConstantString.name, loginResponseEntity.data.user.username);
-        LocalStorage.save(ConstantString.userId, loginResponseEntity.data.user.userId);
-        await Navigator.push(context,
-            MaterialPageRoute(builder: (context)  =>
-               const HomePage()
-            ));
-        Navigator.pop(context);
+        StoreHelper.putStorage(ConstantString.token, loginResponseEntity.data.token);
+        debugPrint(loginResponseEntity.data.token);
+        getInfo();
       } else {
         showToast(loginResponseEntity.msg);
       }
     }
   }
+  getInfo() async{
+    var result = await DioUtil().request('user/current-user',
+        method: DioMethod.post);
+    UserResponseEntity entity=userResponseEntityFromJson(UserResponseEntity(), result);
+    StoreHelper.putStorage(ConstantString.name, entity.data.name);
+    StoreHelper.putStorage(ConstantString.orgName, entity.data.orgName);
+    StoreHelper.putStorage(ConstantString.phone, entity.data.phone);
+    await Navigator.push(context,
+        MaterialPageRoute(builder: (context)  =>
+           const HomePage()
+        ));
+    Navigator.pop(context);
+  }
 }

+ 1 - 1
pubspec.yaml

@@ -56,7 +56,7 @@ dev_dependencies:
   json_serializable: ^3.3.0
   build_runner: ^1.1.3
   dio: ^4.0.4
-
+  synchronized: ^3.0.1 #用于同步处理数据存储
 # For information on the generic Dart part of this file, see the
 # following page: https://dart.dev/tools/pub/pubspec