From d2a6c648e1f0f56d00d623c9c98b11edd8542a51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B0=A2=E5=AE=87=E5=AE=81?= Date: Tue, 15 Sep 2026 21:01:34 +0700 Subject: [PATCH] =?UTF-8?q?=E5=B9=BF=E5=91=8A=E6=95=B0=E6=8D=AE=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/build.gradle | 2 +- lib/alert/video/buy_vip_alert.dart | 18 ---- lib/hj_page/ai/ai_mod_detail_page.dart | 3 +- lib/hj_page/ai/widgets/ai_girl_sheet.dart | 27 ------ lib/hj_page/home/home_main_logic.dart | 16 +--- lib/hj_page/main_page/main_logic.dart | 19 ++++ lib/hj_page/mine/home_mine_logic.dart | 3 - .../mine/make_money/withdrawal_page.dart | 16 ---- .../mine_setting/mine_find_account_page.dart | 5 - .../mine/mine_vip/mine_charge_coin_page.dart | 36 +------ .../mine/mine_vip/mine_charge_vip_page.dart | 18 +--- .../mine/mine_vip/online_pay_page.dart | 19 ---- .../mine/mine_vip/pay_success_alert.dart | 22 +---- .../widgets/coin_pay_bottom_sheet.dart | 18 +--- .../mine/more_question/mine_qa_page.dart | 4 +- .../mine/widgets/integral_exchange_page.dart | 94 +------------------ lib/hj_utils/api_service/mine_service.dart | 7 -- lib/hj_utils/detect_line_manager.dart | 2 +- lib/routers/jump_router.dart | 17 ---- project.md | 6 +- 20 files changed, 40 insertions(+), 312 deletions(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index ea599f0..5ea8f9e 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -35,7 +35,7 @@ android { minSdk = 24 targetSdk = 36 versionCode = 1 - versionName = "1.12.6" + versionName = "1.0.0" } signingConfigs { diff --git a/lib/alert/video/buy_vip_alert.dart b/lib/alert/video/buy_vip_alert.dart index a2726aa..3a5a8e4 100644 --- a/lib/alert/video/buy_vip_alert.dart +++ b/lib/alert/video/buy_vip_alert.dart @@ -3,8 +3,6 @@ import 'dart:math' as math; import 'package:carousel_slider/carousel_slider.dart'; -import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hgdj/hj_utils/screen.dart'; @@ -21,7 +19,6 @@ import '../../hj_page/mine/mine_vip/vip_pay_button.dart'; import '../../hj_page/mine/mine_vip/vip_product_manager.dart'; import '../../hj_page/mine/mine_vip/vip_support_model.dart'; import '../../hj_page/mine/mine_vip/vip_ui_kit.dart'; -import '../../routers/jump_router.dart'; import '../../tools_base/loading/loading_center_widget.dart'; import 'buy_vip_alert_logic.dart'; @@ -217,21 +214,6 @@ class _BuyVipAlertState extends State with UniqueTagMixin { mainAxisSize: MainAxisSize.min, children: [ _selectionBuilder((l) => VipPayButton(l, classic: classic)), - 12.sizeBoxH, - EasyRichText( - '支付问题反馈,点击联系 在线客服', - patternList: [ - EasyRichTextPattern( - targetString: '在线客服', - style: const TextStyle( - color: Color(0xFFFFD460), fontSize: 12), - recognizer: TapGestureRecognizer() - ..onTap = () => pushToCustomService(), - ) - ], - defaultStyle: - const TextStyle(color: Color(0xffDCDCDC), fontSize: 12), - ), ], ), ) diff --git a/lib/hj_page/ai/ai_mod_detail_page.dart b/lib/hj_page/ai/ai_mod_detail_page.dart index 771d9dd..d059f4b 100644 --- a/lib/hj_page/ai/ai_mod_detail_page.dart +++ b/lib/hj_page/ai/ai_mod_detail_page.dart @@ -127,8 +127,7 @@ class AIModDetailPage extends StatelessWidget { '''1. 选择一张人脸清晰,不得有任何遮挡的照片上传(注意:只含一个人物和脸部,图片不能过暗) 2. 选择一个心仪的视频或图片模板,点击生成,生成时间需要3-5分钟,耐心等待。(图片模板可自行上传) 3. 在右上角记录查看生成进度,生成成功后可以点击进行下载,也可以在线观看。 -4. 按照上方操作,有问题随时联系在线客服进行处理。 -5. 不支持多人图片,禁止未成年人图片''', +4. 不支持多人图片,禁止未成年人图片''', style: TextStyle( color: Color(0xff656565), fontSize: 12, diff --git a/lib/hj_page/ai/widgets/ai_girl_sheet.dart b/lib/hj_page/ai/widgets/ai_girl_sheet.dart index 2154879..f370354 100644 --- a/lib/hj_page/ai/widgets/ai_girl_sheet.dart +++ b/lib/hj_page/ai/widgets/ai_girl_sheet.dart @@ -1,8 +1,5 @@ -import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:hgdj/assets_tool/app_colors.dart'; import 'package:hgdj/hj_utils/api_service/ai_service.dart'; import 'package:hgdj/routers/jump_router.dart'; import 'package:hgdj/tools_base/debug_log.dart'; @@ -26,21 +23,12 @@ class AIGirlSheet extends StatefulWidget { class _AIGirlSheetState extends State { int selectIndex = 0; - //TapGestureRecognizer 必须自己释放,建一次复用,别在 build 里 new - final _serviceTap = TapGestureRecognizer()..onTap = pushToCustomService; - List get _items => widget.list ?? []; //列表可能为空,取不到就没得选 AIGirlFriendCurrency? get _selected => selectIndex < _items.length ? _items[selectIndex] : null; - @override - void dispose() { - _serviceTap.dispose(); - super.dispose(); - } - @override Widget build(BuildContext context) { return Material( @@ -118,21 +106,6 @@ class _AIGirlSheetState extends State { ), ), ), - const SizedBox(height: 18), - EasyRichText( - '支付中如有问题 请联系在线客服', - textAlign: TextAlign.center, - defaultStyle: textStyle( - 12, Colors.white.withValues(alpha: .6), FontWeight.w400), - patternList: [ - EasyRichTextPattern( - targetString: '在线客服', - matchOption: 'first', - style: const TextStyle(color: AppColors.primaryHighColor), - recognizer: _serviceTap, - ), - ], - ), const SizedBox(height: 30), ], ), diff --git a/lib/hj_page/home/home_main_logic.dart b/lib/hj_page/home/home_main_logic.dart index a7bd14c..3562b6f 100644 --- a/lib/hj_page/home/home_main_logic.dart +++ b/lib/hj_page/home/home_main_logic.dart @@ -7,7 +7,6 @@ import 'package:hgdj/alert/vip_guide/guide_manager.dart'; import 'package:hgdj/alert/vip_guide/timed_popup_manager.dart'; import 'package:hgdj/tools_base/ad_manager.dart'; -import '../../alert/splash/app_center_dialog.dart'; import '../../alert/splash/notice_image_dialog.dart'; import '../../alert/splash/notice_text_dialog.dart'; import '../../alert/vip_guide/guide_bottom_sheet.dart'; @@ -16,6 +15,7 @@ import '../../config/config.dart'; import '../../hj_model/home/plate_model.dart'; import '../../tools_base/debug_log.dart'; import '../../tools_base/module_sort_manager.dart'; +import '../main_page/main_logic.dart'; import '../mine/mine_vip/mine_charge_vip_page.dart'; import '../mine/mine_vip/pay_order_source.dart'; import '../mine/widgets/gradient_text.dart'; @@ -121,13 +121,14 @@ class HomeMainLogic extends GetxController { update(); } - /// 首页开屏弹窗链:系统提示 → 图片公告 → 文字公告 → 预售 → 支付分层 → VIP 引导。 - /// 逐个 await 串行弹,每次启动只跑一次 + /// 首页开屏弹窗链:图片公告 → 文字公告 → 预售 → 支付分层 → VIP 引导。 + /// 逐个 await 串行弹,每次启动只跑一次。 + /// 九宫格应用广告不在这里:它跟着启动落地页弹,见 MainPageLogic.onReady Future _showAdChain() async { if (_adShown) return; _adShown = true; + await MainPageLogic.appDialogFuture; //等落地页的九宫格弹窗关掉再接着弹,避免叠在一起 if (AdManager().showAbTestAd) { - await _showAppDialog(); //系统提示 await _showImageDialog(); //图片公告 await _showWordDialog(); //文字公告 } @@ -177,13 +178,6 @@ class HomeMainLogic extends GetxController { ); } - ///显示公告信息(9宫格应用广告) - Future _showAppDialog() async { - final appList = AdManager().adsByType(3); - if (appList.isEmpty) return; - await Get.dialog(AppCenterDialog(appList: appList)); - } - ///显示图片公告(上下双排,每次弹两张) Future _showImageDialog() async { final adsList = AdManager().adsByType(46); diff --git a/lib/hj_page/main_page/main_logic.dart b/lib/hj_page/main_page/main_logic.dart index a8c545d..172a9f5 100644 --- a/lib/hj_page/main_page/main_logic.dart +++ b/lib/hj_page/main_page/main_logic.dart @@ -7,8 +7,10 @@ import 'package:hgdj/hj_model/home/plate_model.dart'; import 'package:hgdj/hj_page/pre_sale/pre_sale_provider.dart'; import 'package:hgdj/hj_utils/const.dart'; import 'package:hgdj/hj_utils/free_play_manager.dart'; +import 'package:hgdj/tools_base/ad_manager.dart'; import 'package:hgdj/tools_base/global_store/store.dart'; +import '../../alert/splash/app_center_dialog.dart'; import '../../tools_base/event_bus/event_bus_util.dart'; import '../../tools_base/event_bus/events.dart'; import '../../tools_base/toast.dart'; @@ -143,6 +145,23 @@ class MainPageLogic extends GetxController { }); } + /// 九宫格应用广告弹窗:每次启动只弹一次;首页弹窗链会 await 它,保证不叠弹 + static Future? appDialogFuture; + + @override + void onReady() { + super.onReady(); + //跟着启动落地页弹(不管默认落在哪个 tab),不再依赖首页被构建 + appDialogFuture ??= _showAppDialog(); + } + + Future _showAppDialog() async { + if (!AdManager().showAbTestAd) return; + final appList = AdManager().adsByType(3); + if (appList.isEmpty) return; + await Get.dialog(AppCenterDialog(appList: appList)); + } + void _onReLogin(ReLoginEvent event) { _backToRoot(); jumpToPage(0); diff --git a/lib/hj_page/mine/home_mine_logic.dart b/lib/hj_page/mine/home_mine_logic.dart index 68fb614..4eb5194 100644 --- a/lib/hj_page/mine/home_mine_logic.dart +++ b/lib/hj_page/mine/home_mine_logic.dart @@ -16,7 +16,6 @@ import 'package:pull_to_refresh/pull_to_refresh.dart'; import '../../config/config.dart'; import '../../hj_model/user/user_info_model.dart'; -import '../../routers/jump_router.dart'; import '../main_page/provider/msg_provider.dart'; import '../web_page/h5_page.dart'; import 'collec_history_buy/col_his_buy_page.dart'; @@ -185,8 +184,6 @@ class MineMainLogic extends GetxController with GetTickerProviderStateMixin { } } else if (index == 10) { menuTapEvent(3); - } else if (index == 11) { - pushToCustomService(); } } diff --git a/lib/hj_page/mine/make_money/withdrawal_page.dart b/lib/hj_page/mine/make_money/withdrawal_page.dart index e8fbf41..9ebc659 100644 --- a/lib/hj_page/mine/make_money/withdrawal_page.dart +++ b/lib/hj_page/mine/make_money/withdrawal_page.dart @@ -1,5 +1,4 @@ import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -13,7 +12,6 @@ import 'package:provider/provider.dart'; import '../../../assets_tool/app_colors.dart'; import '../../../hj_utils/widget_util.dart'; -import '../../../routers/jump_router.dart'; import 'in_come_entity.dart'; import 'mine_withdrawal_record_page.dart'; import 'withdrawal_logic.dart'; @@ -417,20 +415,6 @@ class WithdrawalPage extends StatelessWidget { ), )), ), - 10.sizeBoxH, - EasyRichText( - '提现中如有问题,请联系 在线客服', - defaultStyle: - textStyle(12, Colors.white, FontWeight.w400), - patternList: [ - EasyRichTextPattern( - targetString: '在线客服', - style: TextStyle(color: Color(0xffFFD460)), - recognizer: TapGestureRecognizer() - ..onTap = pushToCustomService, - ), - ], - ), 34.sizeBoxH, ], ) diff --git a/lib/hj_page/mine/mine_setting/mine_find_account_page.dart b/lib/hj_page/mine/mine_setting/mine_find_account_page.dart index febd72e..39a3092 100644 --- a/lib/hj_page/mine/mine_setting/mine_find_account_page.dart +++ b/lib/hj_page/mine/mine_setting/mine_find_account_page.dart @@ -3,7 +3,6 @@ import 'package:get/get.dart'; import 'package:hgdj/hj_utils/screen.dart'; import '../../../hj_utils/permission_util.dart'; -import '../../../routers/jump_router.dart'; import 'bing_phone_page.dart'; import 'mine_scan_login_page.dart'; @@ -22,10 +21,6 @@ class MineFindAccountPage extends StatelessWidget { } } }, - { - 'title': '联系客服', - 'ontap': () => pushToCustomService(), - } ]; MineFindAccountPage({super.key}); diff --git a/lib/hj_page/mine/mine_vip/mine_charge_coin_page.dart b/lib/hj_page/mine/mine_vip/mine_charge_coin_page.dart index be3cee1..a804cd0 100644 --- a/lib/hj_page/mine/mine_vip/mine_charge_coin_page.dart +++ b/lib/hj_page/mine/mine_vip/mine_charge_coin_page.dart @@ -1,5 +1,3 @@ -import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -11,7 +9,6 @@ import 'package:hgdj/tools_base/loading/loading_center_widget.dart'; import 'package:provider/provider.dart'; import '../../../hj_utils/widget_util.dart'; -import '../../../routers/jump_router.dart'; import '../make_money/mine_withdrawal_record_page.dart'; import 'charge_user_header.dart'; import 'mine_charge_coin_logic.dart'; @@ -104,20 +101,10 @@ class MineChargeCoinPage extends StatelessWidget { ), SliverToBoxAdapter(child: 18.sizeBoxH), SliverToBoxAdapter( - child: EasyRichText( - '*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请反馈客服订单号', - defaultStyle: + child: Text( + '*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。', + style: TextStyle(color: Color(0xff666666), fontSize: 12), - patternList: [ - EasyRichTextPattern( - targetString: '反馈客服订单号', - style: TextStyle( - color: Color(0xffFFD460), - fontWeight: FontWeight.w500), - recognizer: TapGestureRecognizer() - ..onTap = () => pushToCustomService(), - ) - ], ).paddingSymmetric(horizontal: 16), ), ], @@ -132,7 +119,7 @@ class MineChargeCoinPage extends StatelessWidget { ); } - // 底部支付按钮 + 客服入口 + // 底部支付按钮 Widget _buildBottomBar(MineChargeCoinLogic controller) { return Column( mainAxisSize: MainAxisSize.min, @@ -155,21 +142,6 @@ class MineChargeCoinPage extends StatelessWidget { ), ), ), - 12.sizeBoxH, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text('支付问题反馈,点击联系 ', - style: textStyle(12, Color(0xffBFBFC1), FontWeight.w400)), - GestureDetector( - onTap: () { - pushToCustomService(); - }, - child: Text('在线客服', - style: textStyle(12, Color(0xffFFD460), FontWeight.w400)), - ) - ], - ), // 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge) (16 + screen.paddingBottom).sizeBoxH, ], diff --git a/lib/hj_page/mine/mine_vip/mine_charge_vip_page.dart b/lib/hj_page/mine/mine_vip/mine_charge_vip_page.dart index bf81f05..f674e01 100644 --- a/lib/hj_page/mine/mine_vip/mine_charge_vip_page.dart +++ b/lib/hj_page/mine/mine_vip/mine_charge_vip_page.dart @@ -1,8 +1,6 @@ import 'dart:math' as math; import 'package:carousel_slider/carousel_slider.dart'; -import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hgdj/assets_tool/images.dart'; @@ -12,7 +10,6 @@ import 'package:hgdj/tools_base/unique_tag_mixin.dart'; import 'package:hgdj/tools_base/widget/net_image_widget.dart'; import 'package:provider/provider.dart'; -import '../../../routers/jump_router.dart'; import '../../pre_sale/pre_sale_entry.dart'; import '../make_money/mine_withdrawal_record_page.dart'; import 'charge_user_header.dart'; @@ -287,7 +284,7 @@ class _MineChargeVipPageState extends State ); } - //底部支付区域:只有按钮跟选中卡走,渐变底和客服文案是静态的 + //底部支付区域:只有按钮跟选中卡走,渐变底是静态的 Widget _buildPay({required bool classic}) { return Container( padding: EdgeInsets.symmetric(horizontal: 16), @@ -307,19 +304,6 @@ class _MineChargeVipPageState extends State id: MineChargeVipLogic.kSelection, builder: (logic) => VipPayButton(logic, classic: classic), ), - 12.sizeBoxH, - EasyRichText( - '支付问题反馈,点击联系 在线客服', - patternList: [ - EasyRichTextPattern( - targetString: '在线客服', - style: TextStyle(color: Color(0xFFFFD460), fontSize: 12), - recognizer: TapGestureRecognizer() - ..onTap = () => pushToCustomService(), - ) - ], - defaultStyle: TextStyle(color: Color(0xffDCDCDC), fontSize: 12), - ), // 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge) (12 + screen.paddingBottom).sizeBoxH, ], diff --git a/lib/hj_page/mine/mine_vip/online_pay_page.dart b/lib/hj_page/mine/mine_vip/online_pay_page.dart index ca5e747..ed15b52 100644 --- a/lib/hj_page/mine/mine_vip/online_pay_page.dart +++ b/lib/hj_page/mine/mine_vip/online_pay_page.dart @@ -1,7 +1,5 @@ import 'dart:convert'; -import 'package:easy_rich_text/easy_rich_text.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -165,23 +163,6 @@ class _OnlinePayPageState extends State { ), ), ), - 18.sizeBoxH, - //客服入口 - Center( - child: EasyRichText( - '支付中如有问题,请咨询 在线客服', - defaultStyle: textStyle( - 12, Colors.white.withValues(alpha: .6), FontWeight.w500), - patternList: [ - EasyRichTextPattern( - targetString: '在线客服', - style: textStyle(12, Color(0xffFFD460), FontWeight.w500), - recognizer: TapGestureRecognizer() - ..onTap = () => pushToCustomService(), - ), - ], - ), - ), ]); } diff --git a/lib/hj_page/mine/mine_vip/pay_success_alert.dart b/lib/hj_page/mine/mine_vip/pay_success_alert.dart index 8d07aea..dbd5e79 100644 --- a/lib/hj_page/mine/mine_vip/pay_success_alert.dart +++ b/lib/hj_page/mine/mine_vip/pay_success_alert.dart @@ -4,7 +4,6 @@ import 'package:hgdj/assets_tool/app_colors.dart'; import 'package:hgdj/hj_utils/screen.dart'; import 'package:hgdj/tools_base/widget/common_dialog.dart'; -import '../../../routers/jump_router.dart'; import '../../../tools_base/global_store/store.dart'; class PaySuccessAlert extends StatelessWidget { @@ -33,7 +32,7 @@ class PaySuccessAlert extends StatelessWidget { 0.5.line, 12.sizeBoxH, Text( - '''1.订单支付后,一般会在1-10分钟内到账,如超时未到账,请联系在线客服为您处理。 + '''1.订单支付后,一般会在1-10分钟内到账。 2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。 3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用,如遇报毒提示忽略即可。''', style: TextStyle( @@ -42,25 +41,6 @@ class PaySuccessAlert extends StatelessWidget { height: 1.8, ), ), - 12.sizeBoxH, - InkWell( - enableFeedback: false, - onTap: () => pushToCustomService(), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - '支付遇到问题', - style: TextStyle(color: Color(0xff999999), fontSize: 14), - ), - 2.sizeBoxW, - Icon( - Icons.arrow_forward_ios_outlined, - size: 14, - color: Colors.white, - ) - ], - )), 24.sizeBoxH, InkWell( enableFeedback: false, diff --git a/lib/hj_page/mine/mine_vip/widgets/coin_pay_bottom_sheet.dart b/lib/hj_page/mine/mine_vip/widgets/coin_pay_bottom_sheet.dart index bbb3483..7025ab5 100644 --- a/lib/hj_page/mine/mine_vip/widgets/coin_pay_bottom_sheet.dart +++ b/lib/hj_page/mine/mine_vip/widgets/coin_pay_bottom_sheet.dart @@ -3,8 +3,6 @@ import 'package:get/get.dart'; import 'package:hgdj/assets_tool/app_colors.dart'; import 'package:hgdj/assets_tool/images.dart'; import 'package:hgdj/hj_utils/screen.dart'; -import 'package:hgdj/hj_utils/widget_util.dart'; -import 'package:hgdj/routers/jump_router.dart'; import 'package:hgdj/tools_base/global_store/store.dart'; import 'package:hgdj/tools_base/loading/loading_center_widget.dart'; import 'package:provider/provider.dart'; @@ -220,7 +218,7 @@ class CoinPayBottomSheet extends StatelessWidget { ); } - /// 立即支付 + 在线客服 + /// 立即支付 Widget _buildBottomBar(MineChargeCoinLogic logic) { return Column( mainAxisSize: MainAxisSize.min, @@ -245,20 +243,6 @@ class CoinPayBottomSheet extends StatelessWidget { ), ), ), - 12.sizeBoxH, - Row( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text('支付问题反馈,点击联系 ', - style: textStyle(12, const Color(0xffBFBFC1), FontWeight.w400)), - GestureDetector( - onTap: pushToCustomService, - child: Text('在线客服', - style: - textStyle(12, const Color(0xffFFD460), FontWeight.w400)), - ), - ], - ), 16.sizeBoxH, ], ); diff --git a/lib/hj_page/mine/more_question/mine_qa_page.dart b/lib/hj_page/mine/more_question/mine_qa_page.dart index f2b10a4..d1d30d6 100644 --- a/lib/hj_page/mine/more_question/mine_qa_page.dart +++ b/lib/hj_page/mine/more_question/mine_qa_page.dart @@ -28,13 +28,13 @@ class _MineQAPageState extends State { { "question": "怎么找回账号?", "answer": - "本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。『账号凭证』『手机绑定』都没有的情况下,如账号VIP信息丢失,可以提供VIP支付充值凭证截图联系在线客服为您查询核实恢复VIP。", + "本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。", 'isOpen': false }, { "question": "怎么支付不成功?", "answer": - "1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。\n6.若支付成功并重启APP后依然没有到账,请联系在线客服并提供付款成功凭证截图。", + "1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。", 'isOpen': false }, { diff --git a/lib/hj_page/mine/widgets/integral_exchange_page.dart b/lib/hj_page/mine/widgets/integral_exchange_page.dart index a2880da..f36cf2b 100644 --- a/lib/hj_page/mine/widgets/integral_exchange_page.dart +++ b/lib/hj_page/mine/widgets/integral_exchange_page.dart @@ -8,9 +8,7 @@ import 'package:hgdj/hj_utils/screen.dart'; import 'package:hgdj/tools_base/global_store/store.dart'; import 'package:hgdj/tools_base/loading/loading_center_widget.dart'; -import '../../../routers/jump_router.dart'; import '../../../tools_base/loading/loading_helper.dart'; -import '../../../tools_base/widget/common_dialog.dart'; import '../../../tools_base/widget/net_image_widget.dart'; import 'integral_exchange_logic.dart'; @@ -112,98 +110,8 @@ class IntegralExchangePage extends StatelessWidget { final res = await MineService.integralExchange(model.id ?? ''); LoadingHelper.dismissLoading(); if (res) { - if (model.type == 5) { - Get.dialog(InputAddressAlert(model: model)); - } else { - showToast('兑换成功~'); - } + showToast('兑换成功~'); globalStore.refreshWallet(); } } } - -class InputAddressAlert extends StatefulWidget { - // final Function()? confirmCallback; - final IntegralExchangeModel model; - const InputAddressAlert({super.key, required this.model}); - - @override - State createState() => _InputAddressAlertState(); -} - -class _InputAddressAlertState extends State { - final nameCtr = TextEditingController(); - final addressCtr = TextEditingController(); - final phoneCtr = TextEditingController(); - - @override - Widget build(BuildContext context) { - return CommonDialog( - child: Column( - mainAxisSize: MainAxisSize.min, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - '温馨提示', - style: TextStyle( - color: Color(0xffffffff), - fontSize: 18.sp, - fontWeight: FontWeight.w800), - ), - 20.h.sizeBoxH, - Divider( - height: 1, - color: Colors.white.withValues(alpha: .1), - ), - 20.h.sizeBoxH, - Container( - width: double.infinity, - height: 45.h, - alignment: Alignment.center, - padding: EdgeInsets.symmetric(horizontal: 13.w), - child: Text( - "兑换成功!", - style: TextStyle(color: Color(0x8CFFFFFF), fontSize: 18), - textAlign: TextAlign.center, - ), - ), - 5.h.sizeBoxH, - Container( - width: double.infinity, - height: 45.h, - alignment: Alignment.center, - padding: EdgeInsets.symmetric(horizontal: 13.w), - child: Text( - "请联系客服填写收货地址", - style: TextStyle(color: Color(0x8CFFFFFF), fontSize: 18), - textAlign: TextAlign.center, - ), - ), - 20.h.sizeBoxH, - Padding( - padding: EdgeInsets.symmetric(horizontal: 15.w), - child: GestureDetector( - onTap: () async { - pushToCustomService(); - }, - child: Container( - decoration: BoxDecoration( - color: Color(0xffF68804), - borderRadius: BorderRadius.circular(6)), - height: 48, - alignment: Alignment.center, - child: Text( - '联系客服', - style: TextStyle( - color: Colors.white, - fontSize: 18.sp, - fontWeight: FontWeight.w500), - ), - ), - ), - ) - ], - ), - ); - } -} diff --git a/lib/hj_utils/api_service/mine_service.dart b/lib/hj_utils/api_service/mine_service.dart index d5898f8..84bb948 100644 --- a/lib/hj_utils/api_service/mine_service.dart +++ b/lib/hj_utils/api_service/mine_service.dart @@ -188,13 +188,6 @@ class MineService { return result.isSuccess ? result.data : null; } - /// 获取客服对接地址 - static Future fetchCustomService() async { - final result = - await httpManager.fetchResponseByGET('/im/whiteSign', param: {}); - return result.isSuccess ? result.data : null; - } - /// 积分兑换商品 static Future integralExchange(String id, {String? name, String? tel, String? address}) async { diff --git a/lib/hj_utils/detect_line_manager.dart b/lib/hj_utils/detect_line_manager.dart index 56d7e42..05d8d2b 100644 --- a/lib/hj_utils/detect_line_manager.dart +++ b/lib/hj_utils/detect_line_manager.dart @@ -41,7 +41,7 @@ class DetectLineManager { Future _detectLineOnce() async { final saved = await lightKV.getStringList(StoreKeys.DETECT_LINE); final lines = saved?.isNotEmpty == true ? saved! : Config.lineList; - var successLine = 'https://d1s84171319hi1.cloudfront.net'; + var successLine = await _pingCheckBatch(lines); // 本地线路全部失败,回退 DNS 解析 if (TextUtil.isEmpty(successLine)) { successLine = await _dnsSolve(); diff --git a/lib/routers/jump_router.dart b/lib/routers/jump_router.dart index 2cfc868..c832d57 100644 --- a/lib/routers/jump_router.dart +++ b/lib/routers/jump_router.dart @@ -11,7 +11,6 @@ import 'package:hgdj/tools_base/loading/loading_helper.dart'; import 'package:hgdj/tools_base/toast.dart'; import 'package:url_launcher/url_launcher.dart'; -import '../config/address.dart'; import '../config/config.dart'; import '../hj_model/cartoon_media_info.dart'; import '../hj_page/cartoon/cartoon_detail_page.dart'; @@ -28,10 +27,8 @@ import '../hj_page/mine/mine_vip/pay_order_source.dart'; import '../hj_page/mine/welfare/welfare_home_page.dart'; import '../hj_page/short_video/short_video_page.dart'; import '../hj_page/web_page/h5_page.dart'; -import '../hj_utils/api_service/mine_service.dart'; import '../hj_utils/api_service/vid_service.dart'; import '../tools_base/event_bus/event_bus_util.dart'; -import '../tools_base/loading/loading_alert_widget.dart'; /// 跳转视频/动漫/短视频详情页 /// - [isCartoon] 优先级最高 → 长视频页(标记动漫) @@ -198,9 +195,6 @@ Future? _handleYinseInnerLink(String host, Map arguments, debugLog(e); return null; } - case "kefu": // 在线客服 - pushToCustomService(); - return null; case "userhomepage": // 跳转博主 final uid = arguments["uid"] ?? 0; if (uid == 0) return null; @@ -273,14 +267,3 @@ Future pushToWalletPage( preventDuplicates: false, ); } - -/// 跳转客服系统 -void pushToCustomService() async { - LoadingAlertWidget.show(); - final url = await MineService.fetchCustomService(); - LoadingAlertWidget.cancel(); - if (url?.isNotEmpty == true) { - final h5Url = '${Address.baseHost}/api$url'; - Get.to(H5Page(url: h5Url, title: '在线客服'), opaque: false); - } -} diff --git a/project.md b/project.md index e9b089b..d3234b2 100644 --- a/project.md +++ b/project.md @@ -43,7 +43,7 @@ DMP编码: #无则留空 告警群: tg://blibli-alert-group -备注: Flutter 客户端(Android + iOS 双端),当前版本 1.12.1,Android 包名 com.noporn.newchatone_twelve_one(版本号变更需同步替换) +备注: Flutter 客户端(Android + iOS 双端),当前版本 1.0.0,Android 包名 com.noporn.newchatone_twelve_one(版本号变更需同步替换) --- @@ -142,7 +142,7 @@ hgdj/ 常用:`sh build_apk.sh a`(Android release,arm64 单 ABI)、`sh build_apk.sh i release ad-hoc`(iOS 内测包)、`sh build_apk.sh all` 4. 产物命名(`APP_NAME` 取自 `pubspec.yaml` 的 `name`,即 `hgdj`): - Android:`hgdj___.apk` - - iOS:`hgdj____.ipa`,如 `hgdj_release_adhoc_1.12.1_0806-0925.ipa` + - iOS:`hgdj____.ipa`,如 `hgdj_release_adhoc_1.0.0_0806-0925.ipa` 5. Android 发版前跑 VirusTotal 包毒检测 6. 上传到分发平台(落地页 / 蒲公英 / 自有 CDN),Telegram 告警群通知 @@ -201,7 +201,7 @@ debug 与 release 在**混淆、符号 strip、manifest 合并**三处行为不 - **Flutter 版本**:必须使用 `fvm flutter`,版本锁定 3.38.3(见 `.fvmrc`),`build_apk.sh` 已内置 FVM PATH 检测 - **打包**:`build_apk.sh a` 打 Android,`build_apk.sh i` 打 iOS,`build_apk.sh all` 双端;完整参数见第 3 节 -- **applicationId 规则**:`com.noporn.newchat` + `__`(数字转英文),如 1.12.1 → `com.noporn.newchatone_twelve_one` +- **applicationId 规则**:`com.noporn.newchat` + `__`(数字转英文),如 1.0.0 → `com.noporn.newchatone_twelve_one` - **版本号同步点**:`pubspec.yaml` / `Config.innerVersion` / `android/local.properties` / `android/app/build.gradle` 四处必须一致 - **加密密钥**:RSA 公私钥位于 Android 端 native 层 + Dart 层,调整时需双端同步 - **AB 配置**:`Config` 类中集中维护(`aiSwitchConf` / `showAbTestAd` 等),新增 AB 需走运维下发