diff --git a/lib/controller/mine/auth_controller.dart b/lib/controller/mine/auth_controller.dart index 9c7dfa8..33e5a4d 100644 --- a/lib/controller/mine/auth_controller.dart +++ b/lib/controller/mine/auth_controller.dart @@ -74,6 +74,11 @@ class AuthController extends GetxController { return id[17].toUpperCase() == checkCode; } + void changeAuth(int index){ + AuthCard card = dataList.firstWhere((item) => item.index == index); + card.authed = true; + } + Future startAuthing() async { if (name.value.isEmpty) { SmartDialog.showToast('请输入姓名'); @@ -103,7 +108,7 @@ class AuthController extends GetxController { if (response.data.isSuccess) { GlobalData().userData?.realAuth = true; SmartDialog.showToast('认证成功'); - Get.back(result: {'index': 3}); + Get.back(result: 3); } else { SmartDialog.showToast(response.data.message); } @@ -120,7 +125,7 @@ class AuthCard { final String title; final String desc; final int index; - final bool authed; + bool authed; AuthCard({ required this.desc, diff --git a/lib/controller/mine/user_controller.dart b/lib/controller/mine/user_controller.dart index 045fe50..b9d8d4c 100644 --- a/lib/controller/mine/user_controller.dart +++ b/lib/controller/mine/user_controller.dart @@ -75,6 +75,16 @@ class UserController extends GetxController { final response = await _userApi.getMarriageInformationDetail(); if (response.data.isSuccess) { // 检查data是否为null或者是空对象 + print(78111); + if(response.data.data == null){ + if(isMain){ + SmartDialog.showToast('转到完善信息'); + Get.to(() => UserInfoPage()); + } else { + Get.offAll(() => UserInfoPage()); + } + return; + } final information = response.data.data!; if (information.id.isNotEmpty) { final result = await _userApi.getCertificationList(information.id); @@ -83,16 +93,21 @@ class UserController extends GetxController { information.realAuth = record.status == 1; } GlobalData().userData = information; + print(95111); + print(GlobalData().userData); if (information.id.isEmpty || information.genderCode.isNaN || information.birthYear == null) { //跳转到完善信息 SmartDialog.showToast('转到完善信息'); // 导航到完善信息页面 - Get.offAll(() => UserInfoPage()); + if(isMain){ + SmartDialog.showToast('转到完善信息'); + Get.to(() => UserInfoPage()); + } else { + Get.offAll(() => UserInfoPage()); + } } else if(!isMain){ Get.offAll(MainPage()); } - } else { - // 获取婚姻信息失败不影响登录流程 } } catch (e) { // 获取婚姻信息失败不影响登录流程 diff --git a/lib/extension/router_service.dart b/lib/extension/router_service.dart new file mode 100644 index 0000000..d16e7f8 --- /dev/null +++ b/lib/extension/router_service.dart @@ -0,0 +1,62 @@ +// 路由拦截服务 +import 'package:dating_touchme_app/controller/global.dart'; +import 'package:get/get.dart'; + +import '../pages/mine/user_info_page.dart'; + +class RouteGuardService extends GetxService { + + static RouteGuardService get to => Get.find(); + + // 带认证检查的跳转 + Future toWithAuth(dynamic page, dynamic arguments) async { + bool checked = false; + if (GlobalData().userData != null) { + final information = GlobalData().userData!; + if(information.id.isNotEmpty && information.birthYear != null){ + checked = true; + } + } + if(!checked){ + final result = await Get.to(() => UserInfoPage()); + if (result != true) { + // return null; + } + return null; + } + return Get.to(() => page, arguments: arguments); + } + + // 带权限检查的跳转 + // Future toWithRole(dynamic page, String requiredRole) async { + // // 先检查登录 + // if (!await _checkAuth()) return null; + // + // // 再检查权限 + // if (!AuthService.to.hasRole(requiredRole)) { + // Get.snackbar('权限不足', '需要$requiredRole权限'); + // return null; + // } + // + // return Get.to(() => page); + // } + + // VIP 功能跳转 + // Future toWithVIP(dynamic page) async { + // if (!await _checkAuth()) return null; + // + // if (!AuthService.to.isVIP.value) { + // final result = await Get.to(() => VIPPurchasePage()); + // if (result != true) return null; + // } + // return Get.to(() => page); + // } + + // Future _checkAuth() async { + // if (!AuthService.to.isLoggedIn.value) { + // final result = await Get.to(() => LoginPage()); + // return result == true; + // } + // return true; + // } +} \ No newline at end of file diff --git a/lib/model/mine/user_data.dart b/lib/model/mine/user_data.dart index 0b9696b..9278ca8 100644 --- a/lib/model/mine/user_data.dart +++ b/lib/model/mine/user_data.dart @@ -9,55 +9,55 @@ class UserData { final String genderValue; final String? homeCountryCode; final String? homeCountry; - final String? provinceCode; + final int? provinceCode; final String? provinceName; - final String? cityCode; + final int? cityCode; final String? cityName; - final String? districtCode; + final int? districtCode; final String? districtName; final String? birthYear; final String? birthDate; - final String? constellationCode; + final int? constellationCode; final String? constellation; - final String? chineseZodiacCode; + final int? chineseZodiacCode; final String? chineseZodiac; - final String? height; - final String? weight; + final int? height; + final int? weight; final int? educationCode; final String? education; - final String? maritalStatusCode; + final int? maritalStatusCode; final String? maritalStatusName; - final String? minimumIncome; - final String? maximumIncome; - final String? incomeCode; + final int? minimumIncome; + final int? maximumIncome; + final int? incomeCode; final String? income; final String? describeInfo; - final String? domicilePlaceProvinceCode; + final int? domicilePlaceProvinceCode; final String? domicilePlaceProvinceName; - final String? domicilePlaceCityCode; + final int? domicilePlaceCityCode; final String? domicilePlaceCityName; - final String? nationCode; + final int? nationCode; final String? nation; - final String? bodilyFormCode; + final int? bodilyFormCode; final String? bodilyForm; - final String? accountTypeCode; + final int? accountTypeCode; final String? accountTypeName; - final String? nationalityCode; + final int? nationalityCode; final String? nationality; - final String? nativePlaceCode; + final int? nativePlaceCode; final String? nativePlaceName; - final String? industryCode; + final int? industryCode; final String? industry; - final String? occupationCode; + final int? occupationCode; final String? occupation; - final String? onlyChild; - final String? carPurchaseSituationCode; + final int? onlyChild; + final int? carPurchaseSituationCode; final String? carPurchaseSituation; - final String? propertyPermitsCode; + final int? propertyPermitsCode; final String? propertyPermits; - final String? hometownProvinceCode; + final int? hometownProvinceCode; final String? hometownProvinceName; - final String? hometownCityCode; + final int? hometownCityCode; final String? hometownCityName; bool? realAuth; diff --git a/lib/pages/main/main_page.dart b/lib/pages/main/main_page.dart index 41b25d8..92331c2 100644 --- a/lib/pages/main/main_page.dart +++ b/lib/pages/main/main_page.dart @@ -7,6 +7,7 @@ import 'package:get_storage/get_storage.dart'; import 'package:dating_touchme_app/controller/mine/user_controller.dart'; +import '../../extension/router_service.dart'; import '../../widget/double_tap_to_exit_widget.dart'; import '../discover/discover_page.dart'; import '../home/home_page.dart'; @@ -43,7 +44,7 @@ class _MainPageState extends State { // 初始化UserController并调用获取环信用户token的方法 final userController = Get.put(UserController()); userController.getHxUserToken(); - + Get.put(RouteGuardService()); // 检查token并调用获取婚姻信息详情的方法 checkTokenAndFetchMarriageInfo(); } diff --git a/lib/pages/mine/auth_center_page.dart b/lib/pages/mine/auth_center_page.dart index e3033bb..2239851 100644 --- a/lib/pages/mine/auth_center_page.dart +++ b/lib/pages/mine/auth_center_page.dart @@ -5,6 +5,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../controller/mine/auth_controller.dart'; +import '../../extension/router_service.dart'; import 'edit_info_page.dart'; class AuthCenterPage extends StatelessWidget { @@ -115,9 +116,12 @@ class AuthCenterPage extends StatelessWidget { if(!item.authed){ if(item.index == 2){ Get.to(() => EditInfoPage()); + // Get.to(widget.path); } else if(item.index == 3){ final result = await Get.to(() => RealNamePage()); - print(result); + if(result > 0){ + controller.changeAuth(result); + } } } }); diff --git a/lib/pages/mine/mine_page.dart b/lib/pages/mine/mine_page.dart index a46ad45..a26b9e1 100644 --- a/lib/pages/mine/mine_page.dart +++ b/lib/pages/mine/mine_page.dart @@ -6,6 +6,8 @@ import 'package:dating_touchme_app/generated/assets.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; +import '../../extension/router_service.dart'; + class MinePage extends StatefulWidget { const MinePage({super.key}); @@ -239,6 +241,7 @@ class _BlockItemState extends State { onTap: (){ // context.pushNamed(widget.path); Get.to(widget.path); + // RouteGuardService.to.toWithAuth(widget.path, null); }, child: Container( width: 170.w,