diff --git a/lib/controller/global.dart b/lib/controller/global.dart new file mode 100644 index 0000000..84c3dbb --- /dev/null +++ b/lib/controller/global.dart @@ -0,0 +1,33 @@ +// ignore_for_file: constant_identifier_names, non_constant_identifier_names +import 'dart:io'; + +import '../model/mine/user_data.dart'; + +class GlobalData { + String? qnToken;//uec接口的Token + String? userId;//用户id + UserData? userData;// 用户的基础信息 + + bool isLogout = false;//是否已经退出登录 + + void logout() { + isLogout = true; + userId = null; + qnToken = null; + userData = null; + } + + static GlobalData getInstance() { + _instance ??= GlobalData._init(); + return _instance!; + } + + GlobalData._init() { + if(Platform.isIOS){ + // xAppId = "503258978847966412"; + } + } + factory GlobalData() => getInstance(); + static GlobalData get instance => getInstance(); + static GlobalData? _instance; +} \ No newline at end of file diff --git a/lib/controller/mine/auth_controller.dart b/lib/controller/mine/auth_controller.dart index deb28d1..9c7dfa8 100644 --- a/lib/controller/mine/auth_controller.dart +++ b/lib/controller/mine/auth_controller.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:get/get.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import '../../network/user_api.dart'; +import '../global.dart'; class AuthController extends GetxController { final isLoading = false.obs; @@ -13,7 +14,6 @@ class AuthController extends GetxController { final agree = false.obs; // 从GetX依赖注入中获取UserApi实例 late UserApi _userApi; - @override void onInit() { super.onInit(); @@ -26,9 +26,12 @@ class AuthController extends GetxController { Future _loadInitialData() async { try { isLoading.value = true; - final one = AuthCard( title: '手机绑定', desc: '防止账号丢失', index: 1, authed: true); + late bool realAuth = false; + if(GlobalData().userData?.realAuth != null){ + realAuth = GlobalData().userData!.realAuth!; + } dataList.assignAll([ - one, + AuthCard( title: '手机绑定', desc: '防止账号丢失', index: 1, authed: true), AuthCard( title: '真实头像', desc: '提高交友成功率', index: 2, authed: false), AuthCard( title: '实名认证', desc: '提高交友成功率', index: 3, authed: false), ]); @@ -90,11 +93,17 @@ class AuthController extends GetxController { } try { // 调用登录接口 - final response = await _userApi.login({}); + final param = { + 'miId': GlobalData().userData?.id, + 'authenticationCode': 0, + 'value': '${name.value},${idcard.value}', + }; + final response = await _userApi.saveCertificationAudit(param); // 处理响应 if (response.data.isSuccess) { + GlobalData().userData?.realAuth = true; SmartDialog.showToast('认证成功'); - Get.back(); + Get.back(result: {'index': 3}); } else { SmartDialog.showToast(response.data.message); } diff --git a/lib/controller/mine/user_controller.dart b/lib/controller/mine/user_controller.dart index 0b23f83..045fe50 100644 --- a/lib/controller/mine/user_controller.dart +++ b/lib/controller/mine/user_controller.dart @@ -2,9 +2,12 @@ import 'package:dating_touchme_app/im/im_manager.dart'; import 'package:dating_touchme_app/oss/oss_manager.dart'; import 'package:get/get.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import '../../model/mine/authentication_data.dart'; +import '../../model/mine/user_data.dart'; import '../../network/user_api.dart'; import '../../pages/mine/user_info_page.dart'; import '../../pages/main/main_page.dart'; +import '../global.dart'; class UserController extends GetxController { @@ -72,9 +75,15 @@ class UserController extends GetxController { final response = await _userApi.getMarriageInformationDetail(); if (response.data.isSuccess) { // 检查data是否为null或者是空对象 - final information = response.data.data; - - if (information == null || information.id.isEmpty || information.genderCode.isNaN || information.birthYear == null) { + final information = response.data.data!; + if (information.id.isNotEmpty) { + final result = await _userApi.getCertificationList(information.id); + List list = result.data.data!; + final record = list.firstWhere((item) => item.authenticationCode == 0); + information.realAuth = record.status == 1; + } + GlobalData().userData = information; + if (information.id.isEmpty || information.genderCode.isNaN || information.birthYear == null) { //跳转到完善信息 SmartDialog.showToast('转到完善信息'); // 导航到完善信息页面 diff --git a/lib/model/mine/authentication_data.dart b/lib/model/mine/authentication_data.dart new file mode 100644 index 0000000..952a35e --- /dev/null +++ b/lib/model/mine/authentication_data.dart @@ -0,0 +1,31 @@ +class AuthenticationData { + final int? authenticationCode; + final String? authenticationName; + final String? miId; + final int? status; + + AuthenticationData({ + this.authenticationCode, + this.authenticationName, + this.miId, + this.status, + }); + + factory AuthenticationData.fromJson(Map json) { + return AuthenticationData( + authenticationCode: json['authenticationCode'] as int?, + authenticationName: json['authenticationName'] as String?, + miId: json['miId'] as String?, + status: json['status'] as int?, + ); + } + + Map toJson() { + return { + 'authenticationCode': authenticationCode, + 'authenticationName': authenticationName, + 'miId': miId, + 'status': status, + }; + } +} \ No newline at end of file diff --git a/lib/model/mine/user_data.dart b/lib/model/mine/user_data.dart index fc2fa39..0b9696b 100644 --- a/lib/model/mine/user_data.dart +++ b/lib/model/mine/user_data.dart @@ -59,6 +59,7 @@ class UserData { final String? hometownProvinceName; final String? hometownCityCode; final String? hometownCityName; + bool? realAuth; UserData({ required this.id, @@ -120,6 +121,7 @@ class UserData { this.hometownProvinceName, this.hometownCityCode, this.hometownCityName, + this.realAuth, }); // 从JSON映射创建实例 @@ -184,6 +186,7 @@ class UserData { hometownProvinceName: json['hometownProvinceName'], hometownCityCode: json['hometownCityCode'], hometownCityName: json['hometownCityName'], + realAuth: json['realAuth'], ); } @@ -249,6 +252,7 @@ class UserData { 'hometownProvinceName': hometownProvinceName, 'hometownCityCode': hometownCityCode, 'hometownCityName': hometownCityName, + 'realAuth': realAuth, }; } diff --git a/lib/network/api_urls.dart b/lib/network/api_urls.dart index c939f15..39cb2f5 100644 --- a/lib/network/api_urls.dart +++ b/lib/network/api_urls.dart @@ -12,7 +12,7 @@ class ApiUrls { static const String getHxUserToken = 'dating-agency-chat-audio/user/get/hx/user/token'; static const String getApplyTempAuth = 'dating-agency-uec/get/apply-temp-auth'; static const String saveCertificationAudit = 'dating-agency-service/user/save/certification/audit'; - + static const String getCertificationList = '/dating-agency-service/user/get/certification/item/all/list'; //首页相关接口 static const String getMarriageList = 'dating-agency-service/user/page/dongwo/marriage-information'; diff --git a/lib/network/user_api.dart b/lib/network/user_api.dart index 5cd5f5d..299ba83 100644 --- a/lib/network/user_api.dart +++ b/lib/network/user_api.dart @@ -7,6 +7,8 @@ import 'package:dating_touchme_app/network/api_urls.dart'; import 'package:retrofit/retrofit.dart'; import 'package:dio/dio.dart'; +import '../model/mine/authentication_data.dart'; + part 'user_api.g.dart'; @RestApi(baseUrl: '') @@ -41,6 +43,11 @@ abstract class UserApi { @Body() Map data, ); + @GET(ApiUrls.getCertificationList) + Future>>> getCertificationList( + @Query('miId') String miId, + ); + @GET(ApiUrls.getHxUserToken) Future>> getHxUserToken(); diff --git a/lib/network/user_api.g.dart b/lib/network/user_api.g.dart index 18b97e6..5835815 100644 --- a/lib/network/user_api.g.dart +++ b/lib/network/user_api.g.dart @@ -220,6 +220,48 @@ class _UserApi implements UserApi { return httpResponse; } + @override + Future>>> + getCertificationList(String miId) async { + final _extra = {}; + final queryParameters = {r'miId': miId}; + final _headers = {}; + const Map? _data = null; + final _options = + _setStreamType>>>( + Options(method: 'GET', headers: _headers, extra: _extra) + .compose( + _dio.options, + '/dating-agency-service/user/get/certification/item/all/list', + queryParameters: queryParameters, + data: _data, + ) + .copyWith( + baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl), + ), + ); + final _result = await _dio.fetch>(_options); + late BaseResponse> _value; + try { + _value = BaseResponse>.fromJson( + _result.data!, + (json) => json is List + ? json + .map( + (i) => + AuthenticationData.fromJson(i as Map), + ) + .toList() + : List.empty(), + ); + } on Object catch (e, s) { + errorLogger?.logError(e, s, _options); + rethrow; + } + final httpResponse = HttpResponse(_value, _result); + return httpResponse; + } + @override Future>> getHxUserToken() async { final _extra = {}; diff --git a/lib/pages/mine/auth_center_page.dart b/lib/pages/mine/auth_center_page.dart index cf66016..e3033bb 100644 --- a/lib/pages/mine/auth_center_page.dart +++ b/lib/pages/mine/auth_center_page.dart @@ -111,12 +111,13 @@ class AuthCenterPage extends StatelessWidget { ) ], ), - ).onTap((){ + ).onTap(() async{ if(!item.authed){ if(item.index == 2){ Get.to(() => EditInfoPage()); } else if(item.index == 3){ - Get.to(() => RealNamePage()); + final result = await Get.to(() => RealNamePage()); + print(result); } } });