|
|
@ -6,8 +6,11 @@ import '../../network/user_api.dart'; |
|
|
class AuthController extends GetxController { |
|
|
class AuthController extends GetxController { |
|
|
final isLoading = false.obs; |
|
|
final isLoading = false.obs; |
|
|
final List<AuthCard> dataList = []; |
|
|
final List<AuthCard> dataList = []; |
|
|
// 是否正在登录中 |
|
|
|
|
|
|
|
|
// 是否正在登录中 |
|
|
final isLoggingIn = false.obs; |
|
|
final isLoggingIn = false.obs; |
|
|
|
|
|
final name = ''.obs; |
|
|
|
|
|
final idcard = ''.obs; |
|
|
|
|
|
final agree = false.obs; |
|
|
// 从GetX依赖注入中获取UserApi实例 |
|
|
// 从GetX依赖注入中获取UserApi实例 |
|
|
late UserApi _userApi; |
|
|
late UserApi _userApi; |
|
|
|
|
|
|
|
|
@ -18,33 +21,90 @@ class AuthController extends GetxController { |
|
|
_userApi = Get.find<UserApi>(); |
|
|
_userApi = Get.find<UserApi>(); |
|
|
_loadInitialData(); |
|
|
_loadInitialData(); |
|
|
} |
|
|
} |
|
|
void _loadInitialData() { |
|
|
|
|
|
isLoading.value = true; |
|
|
|
|
|
dataList.assignAll([ |
|
|
|
|
|
AuthCard( title: '手机绑定', desc: '防止账号丢失', index: 1, authed: true), |
|
|
|
|
|
AuthCard( title: '真实头像', desc: '提高交友成功率', index: 2, authed: false), |
|
|
|
|
|
AuthCard( title: '实名认证', desc: '提高交友成功率', index: 3, authed: false), |
|
|
|
|
|
]); |
|
|
|
|
|
isLoading.value = false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 登录方法 |
|
|
// 登录方法 |
|
|
Future<void> login() async { |
|
|
|
|
|
|
|
|
Future<void> _loadInitialData() async { |
|
|
|
|
|
try { |
|
|
|
|
|
isLoading.value = true; |
|
|
|
|
|
final one = AuthCard( title: '手机绑定', desc: '防止账号丢失', index: 1, authed: true); |
|
|
|
|
|
dataList.assignAll([ |
|
|
|
|
|
one, |
|
|
|
|
|
AuthCard( title: '真实头像', desc: '提高交友成功率', index: 2, authed: false), |
|
|
|
|
|
AuthCard( title: '实名认证', desc: '提高交友成功率', index: 3, authed: false), |
|
|
|
|
|
]); |
|
|
|
|
|
// 调用登录接口 |
|
|
|
|
|
// final response = await _userApi.login({}); |
|
|
|
|
|
// 处理响应 |
|
|
|
|
|
// if (response.data.isSuccess) { |
|
|
|
|
|
// |
|
|
|
|
|
// } |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
SmartDialog.showToast('网络请求失败,请检查网络连接'); |
|
|
|
|
|
} finally { |
|
|
|
|
|
isLoading.value = false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool validateChineseID(String id) { |
|
|
|
|
|
if (id.length != 18) return false; |
|
|
|
|
|
|
|
|
|
|
|
// 系数表 |
|
|
|
|
|
final coefficients = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; |
|
|
|
|
|
|
|
|
|
|
|
// 校验码对应表 |
|
|
|
|
|
final checkCodeMap = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2']; |
|
|
|
|
|
|
|
|
|
|
|
int sum = 0; |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
for (int i = 0; i < 17; i++) { |
|
|
|
|
|
int digit = int.parse(id[i]); |
|
|
|
|
|
sum += digit * coefficients[i]; |
|
|
|
|
|
} |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
return false; // 包含非数字字符 |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
int remainder = sum % 11; |
|
|
|
|
|
String checkCode = checkCodeMap[remainder]; |
|
|
|
|
|
|
|
|
|
|
|
return id[17].toUpperCase() == checkCode; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
Future<void> startAuthing() async { |
|
|
|
|
|
if (name.value.isEmpty) { |
|
|
|
|
|
SmartDialog.showToast('请输入姓名'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (idcard.value.isEmpty) { |
|
|
|
|
|
SmartDialog.showToast('请输入身份证号'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (!validateChineseID(idcard.value)) { |
|
|
|
|
|
SmartDialog.showToast('请输入正确的身份证号'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
if (!agree.value) { |
|
|
|
|
|
SmartDialog.showToast('请同意用户认证协议'); |
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
try { |
|
|
try { |
|
|
// 调用登录接口 |
|
|
// 调用登录接口 |
|
|
final response = await _userApi.login({}); |
|
|
final response = await _userApi.login({}); |
|
|
// 处理响应 |
|
|
// 处理响应 |
|
|
if (response.data.isSuccess) { |
|
|
if (response.data.isSuccess) { |
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
SmartDialog.showToast(response.data.message); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
SmartDialog.showToast('认证成功'); |
|
|
|
|
|
Get.back(); |
|
|
|
|
|
} else { |
|
|
|
|
|
SmartDialog.showToast(response.data.message); |
|
|
|
|
|
} |
|
|
} catch (e) { |
|
|
} catch (e) { |
|
|
SmartDialog.showToast('网络请求失败,请检查网络连接'); |
|
|
SmartDialog.showToast('网络请求失败,请检查网络连接'); |
|
|
} finally { |
|
|
} finally { |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
class AuthCard { |
|
|
class AuthCard { |
|
|
|