mirror of
https://gitee.com/dromara/MaxKey.git
synced 2025-12-07 09:28:49 +08:00
246 lines
5.3 KiB
Dart
246 lines
5.3 KiB
Dart
import 'dart:typed_data';
|
|
|
|
import 'package:dio/dio.dart';
|
|
import 'package:maxkey_flutter/utils.dart';
|
|
|
|
class MaxKeyUser {
|
|
final String displayName;
|
|
final Uint8List? picture;
|
|
|
|
MaxKeyUser(this.displayName, this.picture);
|
|
|
|
factory MaxKeyUser.fromMap(Map map) {
|
|
final String displayName = map["data"]["displayName"];
|
|
final String? pictureBase64 = map["data"]["pictureBase64"];
|
|
final picture = pictureBase64?.split(",")[1].base64ToBuf();
|
|
return MaxKeyUser(displayName, picture);
|
|
}
|
|
}
|
|
|
|
class MaxKeyUserInfo {
|
|
MaxKeyUserInfo({
|
|
/// 姓名
|
|
required this.displayName,
|
|
|
|
/// 登陆账号
|
|
required this.username,
|
|
|
|
/// 性别
|
|
required this.gender,
|
|
|
|
/// 员工编号
|
|
required this.employeeNumber,
|
|
|
|
/// 手机号码
|
|
required this.mobile,
|
|
|
|
/// 邮箱
|
|
required this.email,
|
|
|
|
/// 用户类型
|
|
required this.userType,
|
|
|
|
/// 用户状态
|
|
required this.userState,
|
|
|
|
/// 状态
|
|
required this.status,
|
|
|
|
/// 证件类型
|
|
required this.idType,
|
|
|
|
/// 证件号码
|
|
required this.idCardNo,
|
|
|
|
/// 婚姻状态
|
|
required this.married,
|
|
|
|
/// 出生日期
|
|
required this.birthDate,
|
|
|
|
/// 所属组织
|
|
required this.organization,
|
|
|
|
/// 分支机构
|
|
required this.division,
|
|
|
|
/// 部门编号
|
|
required this.departmentId,
|
|
|
|
/// 部门名称
|
|
required this.department,
|
|
|
|
/// 职位
|
|
required this.jobTitle,
|
|
|
|
/// 级别
|
|
required this.jobLevel,
|
|
|
|
/// 上级经理
|
|
required this.manager,
|
|
});
|
|
|
|
static MaxKeyUserInfo? fromMap(Map map) {
|
|
return MaxKeyUserInfo(
|
|
displayName: map["displayName"].toString(),
|
|
username: map["username"].toString(),
|
|
gender: switch (map["gender"]) { 1 => "女", 2 => "男", _ => _unknwon },
|
|
employeeNumber: map["employeeNumber"]?.toString() ?? _unknwon,
|
|
mobile: map["mobile"]?.toString() ?? _unknwon,
|
|
email: map["email"]?.toString() ?? _unknwon,
|
|
userType: switch (map["userType"]) {
|
|
"EMPLOYEE" => "内部员工",
|
|
"CONTRACTOR" => "承包商",
|
|
"CUSTOMER" => "客户",
|
|
"SUPPLIER" => "供应商",
|
|
"PARTNER" => "合作伙伴",
|
|
"EXTERNAL" => "外部用户",
|
|
"INTERN" => "实习生",
|
|
"TEMP" => "临时用户",
|
|
"DEALER" => "经销商",
|
|
_ => _unknwon,
|
|
},
|
|
userState: switch (map["userState"]) {
|
|
"RESIDENT" => "在职",
|
|
"WITHDRAWN" => "离职",
|
|
"INACTIVE" => "停薪留职",
|
|
"RETIREE" => "退休",
|
|
_ => _unknwon,
|
|
},
|
|
status: switch (map["status"]) {
|
|
1 => "活动",
|
|
2 => "不活动",
|
|
4 => "禁用",
|
|
5 => "锁定",
|
|
9 => "已删除",
|
|
_ => _unknwon,
|
|
},
|
|
idType: switch (map["idType"]) {
|
|
0 => "未知",
|
|
1 => "身份证",
|
|
2 => "护照",
|
|
3 => "学生证",
|
|
4 => "军人证",
|
|
_ => _unknwon,
|
|
},
|
|
idCardNo: map["idCardNo"]?.toString() ?? _unknwon,
|
|
married: switch (map["married"]) {
|
|
0 => "未知",
|
|
1 => "单身",
|
|
2 => "已婚",
|
|
3 => "离异",
|
|
4 => "丧偶",
|
|
_ => _unknwon,
|
|
},
|
|
birthDate: map["birthDate"]?.toString() ?? _unknwon,
|
|
organization: map["organization"]?.toString() ?? _unknwon,
|
|
division: map["division"]?.toString() ?? _unknwon,
|
|
departmentId: map["departmentId"]?.toString() ?? _unknwon,
|
|
department: map["deparment"]?.toString() ?? _unknwon,
|
|
jobTitle: map["jobTitle"]?.toString() ?? _unknwon,
|
|
jobLevel: map["jobLevel"]?.toString() ?? _unknwon,
|
|
manager: map["manager"]?.toString() ?? _unknwon,
|
|
);
|
|
}
|
|
|
|
/// 姓名
|
|
final String displayName;
|
|
|
|
/// 登陆账号
|
|
final String username;
|
|
|
|
/// 性别
|
|
final String gender;
|
|
|
|
/// 员工编号
|
|
final String employeeNumber;
|
|
|
|
/// 手机号码
|
|
final String mobile;
|
|
|
|
/// 邮箱
|
|
final String email;
|
|
|
|
/// 用户类型
|
|
final String userType;
|
|
|
|
/// 用户状态
|
|
final String userState;
|
|
|
|
/// 状态
|
|
final String status;
|
|
|
|
/// 证件类型
|
|
final String idType;
|
|
|
|
/// 证件号码
|
|
final String idCardNo;
|
|
|
|
/// 婚姻状态
|
|
final String married;
|
|
|
|
/// 出生日期
|
|
final String birthDate;
|
|
|
|
/// 所属组织
|
|
final String organization;
|
|
|
|
/// 分支机构
|
|
final String division;
|
|
|
|
/// 部门编号
|
|
final String departmentId;
|
|
|
|
/// 部门名称
|
|
final String department;
|
|
|
|
/// 职位
|
|
final String jobTitle;
|
|
|
|
/// 级别
|
|
final String jobLevel;
|
|
|
|
/// 上级经理
|
|
final String manager;
|
|
|
|
static const String _unknwon = "未知";
|
|
}
|
|
|
|
class UsersService {
|
|
final Dio _dio;
|
|
UsersService(this._dio);
|
|
|
|
Future<MaxKeyUser?> getBasicUserInfo() async {
|
|
try {
|
|
LOGGER.i("GET: /users/profile/get");
|
|
|
|
final res = await _dio.get("/users/profile/get");
|
|
if (res.data["code"] != 0) {
|
|
LOGGER.w(res.data["message"]);
|
|
return null;
|
|
}
|
|
return MaxKeyUser.fromMap(res.data);
|
|
} catch (err) {
|
|
LOGGER.e(err);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
Future<MaxKeyUserInfo?> getFullUserInfo() async {
|
|
try {
|
|
LOGGER.i("GET: /users/profile/get");
|
|
|
|
final res = await _dio.get("/users/profile/get");
|
|
if (res.data["code"] != 0) {
|
|
LOGGER.w(res.data["message"]);
|
|
return null;
|
|
}
|
|
|
|
return MaxKeyUserInfo.fromMap(res.data["data"]);
|
|
} catch (err) {
|
|
LOGGER.e(err);
|
|
}
|
|
return null;
|
|
}
|
|
}
|