广告数据调整

This commit is contained in:
谢宇宁
2026-09-15 21:01:34 +07:00
parent a23ba685e9
commit d2a6c648e1
20 changed files with 40 additions and 312 deletions
+1 -1
View File
@@ -35,7 +35,7 @@ android {
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 1 versionCode = 1
versionName = "1.12.6" versionName = "1.0.0"
} }
signingConfigs { signingConfigs {
-18
View File
@@ -3,8 +3,6 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:carousel_slider/carousel_slider.dart'; 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:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hgdj/hj_utils/screen.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_product_manager.dart';
import '../../hj_page/mine/mine_vip/vip_support_model.dart'; import '../../hj_page/mine/mine_vip/vip_support_model.dart';
import '../../hj_page/mine/mine_vip/vip_ui_kit.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 '../../tools_base/loading/loading_center_widget.dart';
import 'buy_vip_alert_logic.dart'; import 'buy_vip_alert_logic.dart';
@@ -217,21 +214,6 @@ class _BuyVipAlertState extends State<BuyVipAlert> with UniqueTagMixin {
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
_selectionBuilder((l) => VipPayButton(l, classic: classic)), _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),
),
], ],
), ),
) )
+1 -2
View File
@@ -127,8 +127,7 @@ class AIModDetailPage extends StatelessWidget {
'''1. 选择一张人脸清晰,不得有任何遮挡的照片上传(注意:只含一个人物和脸部,图片不能过暗) '''1. 选择一张人脸清晰,不得有任何遮挡的照片上传(注意:只含一个人物和脸部,图片不能过暗)
2. 选择一个心仪的视频或图片模板,点击生成,生成时间需要3-5分钟,耐心等待。(图片模板可自行上传) 2. 选择一个心仪的视频或图片模板,点击生成,生成时间需要3-5分钟,耐心等待。(图片模板可自行上传)
3. 在右上角记录查看生成进度,生成成功后可以点击进行下载,也可以在线观看。 3. 在右上角记录查看生成进度,生成成功后可以点击进行下载,也可以在线观看。
4. 按照上方操作,有问题随时联系在线客服进行处理。 4. 不支持多人图片,禁止未成年人图片''',
5. 不支持多人图片,禁止未成年人图片''',
style: TextStyle( style: TextStyle(
color: Color(0xff656565), color: Color(0xff656565),
fontSize: 12, fontSize: 12,
-27
View File
@@ -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:flutter/material.dart';
import 'package:get/get.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/hj_utils/api_service/ai_service.dart';
import 'package:hgdj/routers/jump_router.dart'; import 'package:hgdj/routers/jump_router.dart';
import 'package:hgdj/tools_base/debug_log.dart'; import 'package:hgdj/tools_base/debug_log.dart';
@@ -26,21 +23,12 @@ class AIGirlSheet extends StatefulWidget {
class _AIGirlSheetState extends State<AIGirlSheet> { class _AIGirlSheetState extends State<AIGirlSheet> {
int selectIndex = 0; int selectIndex = 0;
//TapGestureRecognizer 必须自己释放,建一次复用,别在 build 里 new
final _serviceTap = TapGestureRecognizer()..onTap = pushToCustomService;
List<AIGirlFriendCurrency> get _items => widget.list ?? []; List<AIGirlFriendCurrency> get _items => widget.list ?? [];
//列表可能为空,取不到就没得选 //列表可能为空,取不到就没得选
AIGirlFriendCurrency? get _selected => AIGirlFriendCurrency? get _selected =>
selectIndex < _items.length ? _items[selectIndex] : null; selectIndex < _items.length ? _items[selectIndex] : null;
@override
void dispose() {
_serviceTap.dispose();
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Material( return Material(
@@ -118,21 +106,6 @@ class _AIGirlSheetState extends State<AIGirlSheet> {
), ),
), ),
), ),
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), const SizedBox(height: 30),
], ],
), ),
+5 -11
View File
@@ -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/alert/vip_guide/timed_popup_manager.dart';
import 'package:hgdj/tools_base/ad_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_image_dialog.dart';
import '../../alert/splash/notice_text_dialog.dart'; import '../../alert/splash/notice_text_dialog.dart';
import '../../alert/vip_guide/guide_bottom_sheet.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 '../../hj_model/home/plate_model.dart';
import '../../tools_base/debug_log.dart'; import '../../tools_base/debug_log.dart';
import '../../tools_base/module_sort_manager.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/mine_charge_vip_page.dart';
import '../mine/mine_vip/pay_order_source.dart'; import '../mine/mine_vip/pay_order_source.dart';
import '../mine/widgets/gradient_text.dart'; import '../mine/widgets/gradient_text.dart';
@@ -121,13 +121,14 @@ class HomeMainLogic extends GetxController {
update(); update();
} }
/// 首页开屏弹窗链:系统提示 → 图片公告 → 文字公告 → 预售 → 支付分层 → VIP 引导。 /// 首页开屏弹窗链:图片公告 → 文字公告 → 预售 → 支付分层 → VIP 引导。
/// 逐个 await 串行弹,每次启动只跑一次 /// 逐个 await 串行弹,每次启动只跑一次
/// 九宫格应用广告不在这里:它跟着启动落地页弹,见 MainPageLogic.onReady
Future<void> _showAdChain() async { Future<void> _showAdChain() async {
if (_adShown) return; if (_adShown) return;
_adShown = true; _adShown = true;
await MainPageLogic.appDialogFuture; //等落地页的九宫格弹窗关掉再接着弹,避免叠在一起
if (AdManager().showAbTestAd) { if (AdManager().showAbTestAd) {
await _showAppDialog(); //系统提示
await _showImageDialog(); //图片公告 await _showImageDialog(); //图片公告
await _showWordDialog(); //文字公告 await _showWordDialog(); //文字公告
} }
@@ -177,13 +178,6 @@ class HomeMainLogic extends GetxController {
); );
} }
///显示公告信息(9宫格应用广告)
Future<void> _showAppDialog() async {
final appList = AdManager().adsByType(3);
if (appList.isEmpty) return;
await Get.dialog(AppCenterDialog(appList: appList));
}
///显示图片公告(上下双排,每次弹两张) ///显示图片公告(上下双排,每次弹两张)
Future<void> _showImageDialog() async { Future<void> _showImageDialog() async {
final adsList = AdManager().adsByType(46); final adsList = AdManager().adsByType(46);
+19
View File
@@ -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_page/pre_sale/pre_sale_provider.dart';
import 'package:hgdj/hj_utils/const.dart'; import 'package:hgdj/hj_utils/const.dart';
import 'package:hgdj/hj_utils/free_play_manager.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 '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/event_bus_util.dart';
import '../../tools_base/event_bus/events.dart'; import '../../tools_base/event_bus/events.dart';
import '../../tools_base/toast.dart'; import '../../tools_base/toast.dart';
@@ -143,6 +145,23 @@ class MainPageLogic extends GetxController {
}); });
} }
/// 九宫格应用广告弹窗:每次启动只弹一次;首页弹窗链会 await 它,保证不叠弹
static Future<void>? appDialogFuture;
@override
void onReady() {
super.onReady();
//跟着启动落地页弹(不管默认落在哪个 tab),不再依赖首页被构建
appDialogFuture ??= _showAppDialog();
}
Future<void> _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) { void _onReLogin(ReLoginEvent event) {
_backToRoot(); _backToRoot();
jumpToPage(0); jumpToPage(0);
-3
View File
@@ -16,7 +16,6 @@ import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../config/config.dart'; import '../../config/config.dart';
import '../../hj_model/user/user_info_model.dart'; import '../../hj_model/user/user_info_model.dart';
import '../../routers/jump_router.dart';
import '../main_page/provider/msg_provider.dart'; import '../main_page/provider/msg_provider.dart';
import '../web_page/h5_page.dart'; import '../web_page/h5_page.dart';
import 'collec_history_buy/col_his_buy_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) { } else if (index == 10) {
menuTapEvent(3); menuTapEvent(3);
} else if (index == 11) {
pushToCustomService();
} }
} }
@@ -1,5 +1,4 @@
import 'package:easy_rich_text/easy_rich_text.dart'; import 'package:easy_rich_text/easy_rich_text.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
@@ -13,7 +12,6 @@ import 'package:provider/provider.dart';
import '../../../assets_tool/app_colors.dart'; import '../../../assets_tool/app_colors.dart';
import '../../../hj_utils/widget_util.dart'; import '../../../hj_utils/widget_util.dart';
import '../../../routers/jump_router.dart';
import 'in_come_entity.dart'; import 'in_come_entity.dart';
import 'mine_withdrawal_record_page.dart'; import 'mine_withdrawal_record_page.dart';
import 'withdrawal_logic.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, 34.sizeBoxH,
], ],
) )
@@ -3,7 +3,6 @@ import 'package:get/get.dart';
import 'package:hgdj/hj_utils/screen.dart'; import 'package:hgdj/hj_utils/screen.dart';
import '../../../hj_utils/permission_util.dart'; import '../../../hj_utils/permission_util.dart';
import '../../../routers/jump_router.dart';
import 'bing_phone_page.dart'; import 'bing_phone_page.dart';
import 'mine_scan_login_page.dart'; import 'mine_scan_login_page.dart';
@@ -22,10 +21,6 @@ class MineFindAccountPage extends StatelessWidget {
} }
} }
}, },
{
'title': '联系客服',
'ontap': () => pushToCustomService(),
}
]; ];
MineFindAccountPage({super.key}); MineFindAccountPage({super.key});
@@ -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/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.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 'package:provider/provider.dart';
import '../../../hj_utils/widget_util.dart'; import '../../../hj_utils/widget_util.dart';
import '../../../routers/jump_router.dart';
import '../make_money/mine_withdrawal_record_page.dart'; import '../make_money/mine_withdrawal_record_page.dart';
import 'charge_user_header.dart'; import 'charge_user_header.dart';
import 'mine_charge_coin_logic.dart'; import 'mine_charge_coin_logic.dart';
@@ -104,20 +101,10 @@ class MineChargeCoinPage extends StatelessWidget {
), ),
SliverToBoxAdapter(child: 18.sizeBoxH), SliverToBoxAdapter(child: 18.sizeBoxH),
SliverToBoxAdapter( SliverToBoxAdapter(
child: EasyRichText( child: Text(
'*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。如支付未到账,请反馈客服订单号', '*如提示【交易失败】【账户风险】等,可重新发起订单,或在15分钟后重试支付。',
defaultStyle: style:
TextStyle(color: Color(0xff666666), fontSize: 12), TextStyle(color: Color(0xff666666), fontSize: 12),
patternList: [
EasyRichTextPattern(
targetString: '反馈客服订单号',
style: TextStyle(
color: Color(0xffFFD460),
fontWeight: FontWeight.w500),
recognizer: TapGestureRecognizer()
..onTap = () => pushToCustomService(),
)
],
).paddingSymmetric(horizontal: 16), ).paddingSymmetric(horizontal: 16),
), ),
], ],
@@ -132,7 +119,7 @@ class MineChargeCoinPage extends StatelessWidget {
); );
} }
// 底部支付按钮 + 客服入口 // 底部支付按钮
Widget _buildBottomBar(MineChargeCoinLogic controller) { Widget _buildBottomBar(MineChargeCoinLogic controller) {
return Column( return Column(
mainAxisSize: MainAxisSize.min, 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 // 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge
(16 + screen.paddingBottom).sizeBoxH, (16 + screen.paddingBottom).sizeBoxH,
], ],
@@ -1,8 +1,6 @@
import 'dart:math' as math; import 'dart:math' as math;
import 'package:carousel_slider/carousel_slider.dart'; 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:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hgdj/assets_tool/images.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:hgdj/tools_base/widget/net_image_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import '../../../routers/jump_router.dart';
import '../../pre_sale/pre_sale_entry.dart'; import '../../pre_sale/pre_sale_entry.dart';
import '../make_money/mine_withdrawal_record_page.dart'; import '../make_money/mine_withdrawal_record_page.dart';
import 'charge_user_header.dart'; import 'charge_user_header.dart';
@@ -287,7 +284,7 @@ class _MineChargeVipPageState extends State<MineChargeVipPage>
); );
} }
//底部支付区域:只有按钮跟选中卡走,渐变底和客服文案是静态的 //底部支付区域:只有按钮跟选中卡走,渐变底是静态的
Widget _buildPay({required bool classic}) { Widget _buildPay({required bool classic}) {
return Container( return Container(
padding: EdgeInsets.symmetric(horizontal: 16), padding: EdgeInsets.symmetric(horizontal: 16),
@@ -307,19 +304,6 @@ class _MineChargeVipPageState extends State<MineChargeVipPage>
id: MineChargeVipLogic.kSelection, id: MineChargeVipLogic.kSelection,
builder: (logic) => VipPayButton(logic, classic: classic), 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 // 垫上虚拟导航栏高度,避免底部内容被遮挡(edge-to-edge
(12 + screen.paddingBottom).sizeBoxH, (12 + screen.paddingBottom).sizeBoxH,
], ],
@@ -1,7 +1,5 @@
import 'dart:convert'; 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/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -165,23 +163,6 @@ class _OnlinePayPageState extends State<OnlinePayPage> {
), ),
), ),
), ),
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(),
),
],
),
),
]); ]);
} }
@@ -4,7 +4,6 @@ import 'package:hgdj/assets_tool/app_colors.dart';
import 'package:hgdj/hj_utils/screen.dart'; import 'package:hgdj/hj_utils/screen.dart';
import 'package:hgdj/tools_base/widget/common_dialog.dart'; import 'package:hgdj/tools_base/widget/common_dialog.dart';
import '../../../routers/jump_router.dart';
import '../../../tools_base/global_store/store.dart'; import '../../../tools_base/global_store/store.dart';
class PaySuccessAlert extends StatelessWidget { class PaySuccessAlert extends StatelessWidget {
@@ -33,7 +32,7 @@ class PaySuccessAlert extends StatelessWidget {
0.5.line, 0.5.line,
12.sizeBoxH, 12.sizeBoxH,
Text( Text(
'''1.订单支付后,一般会在1-10分钟内到账,如超时未到账,请联系在线客服为您处理 '''1.订单支付后,一般会在1-10分钟内到账。
2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。 2.受特殊行业限制,如支付失败可尝试重新发起订单,系统将会随机切换备用的支付通道。
3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用,如遇报毒提示忽略即可。''', 3.本APP有稳定的广告收益,产品稳定安全,请放心充值使用,如遇报毒提示忽略即可。''',
style: TextStyle( style: TextStyle(
@@ -42,25 +41,6 @@ class PaySuccessAlert extends StatelessWidget {
height: 1.8, 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, 24.sizeBoxH,
InkWell( InkWell(
enableFeedback: false, enableFeedback: false,
@@ -3,8 +3,6 @@ import 'package:get/get.dart';
import 'package:hgdj/assets_tool/app_colors.dart'; import 'package:hgdj/assets_tool/app_colors.dart';
import 'package:hgdj/assets_tool/images.dart'; import 'package:hgdj/assets_tool/images.dart';
import 'package:hgdj/hj_utils/screen.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/global_store/store.dart';
import 'package:hgdj/tools_base/loading/loading_center_widget.dart'; import 'package:hgdj/tools_base/loading/loading_center_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@@ -220,7 +218,7 @@ class CoinPayBottomSheet extends StatelessWidget {
); );
} }
/// 立即支付 + 在线客服 /// 立即支付
Widget _buildBottomBar(MineChargeCoinLogic logic) { Widget _buildBottomBar(MineChargeCoinLogic logic) {
return Column( return Column(
mainAxisSize: MainAxisSize.min, 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, 16.sizeBoxH,
], ],
); );
@@ -28,13 +28,13 @@ class _MineQAPageState extends State<MineQAPage> {
{ {
"question": "怎么找回账号?", "question": "怎么找回账号?",
"answer": "answer":
"本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。『账号凭证』『手机绑定』都没有的情况下,如账号VIP信息丢失,可以提供VIP支付充值凭证截图联系在线客服为您查询核实恢复VIP。", "本平台登录会自动创建账号,需保存账号凭证或绑定手机号码,才能记录之前的账号信息。受行业限制,APP无法正常使用时需升级,未绑定手机号码会导致账号信息丢失。请及时绑定手机号码或保存账号凭证,以免VIP信息丢失,造成巨大财产损失!账号丢失的用户可在 『我的』页面-账号找回,原账号的VIP信息会转移至新账号上。",
'isOpen': false 'isOpen': false
}, },
{ {
"question": "怎么支付不成功?", "question": "怎么支付不成功?",
"answer": "answer":
"1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。\n6.若支付成功并重启APP后依然没有到账,请联系在线客服并提供付款成功凭证截图。", "1.因超时支付无法到账,请重新发起。\n2.每天发起支付不能超过5次,连续发起且未支付,账号可能被加入黑名单。\n3.支付通道在夜间比较忙碌,尝试多次发起,后台会为您自动切换不同支付通道。\n4.若充值成功,用户权益通常会在数分钟内到账,请刷新APP或重启。",
'isOpen': false 'isOpen': false
}, },
{ {
@@ -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/global_store/store.dart';
import 'package:hgdj/tools_base/loading/loading_center_widget.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/loading/loading_helper.dart';
import '../../../tools_base/widget/common_dialog.dart';
import '../../../tools_base/widget/net_image_widget.dart'; import '../../../tools_base/widget/net_image_widget.dart';
import 'integral_exchange_logic.dart'; import 'integral_exchange_logic.dart';
@@ -112,98 +110,8 @@ class IntegralExchangePage extends StatelessWidget {
final res = await MineService.integralExchange(model.id ?? ''); final res = await MineService.integralExchange(model.id ?? '');
LoadingHelper.dismissLoading(); LoadingHelper.dismissLoading();
if (res) { if (res) {
if (model.type == 5) { showToast('兑换成功~');
Get.dialog(InputAddressAlert(model: model));
} else {
showToast('兑换成功~');
}
globalStore.refreshWallet(); globalStore.refreshWallet();
} }
} }
} }
class InputAddressAlert extends StatefulWidget {
// final Function()? confirmCallback;
final IntegralExchangeModel model;
const InputAddressAlert({super.key, required this.model});
@override
State<InputAddressAlert> createState() => _InputAddressAlertState();
}
class _InputAddressAlertState extends State<InputAddressAlert> {
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),
),
),
),
)
],
),
);
}
}
@@ -188,13 +188,6 @@ class MineService {
return result.isSuccess ? result.data : null; return result.isSuccess ? result.data : null;
} }
/// 获取客服对接地址
static Future<String?> fetchCustomService() async {
final result =
await httpManager.fetchResponseByGET('/im/whiteSign', param: {});
return result.isSuccess ? result.data : null;
}
/// 积分兑换商品 /// 积分兑换商品
static Future<bool> integralExchange(String id, static Future<bool> integralExchange(String id,
{String? name, String? tel, String? address}) async { {String? name, String? tel, String? address}) async {
+1 -1
View File
@@ -41,7 +41,7 @@ class DetectLineManager {
Future<String> _detectLineOnce() async { Future<String> _detectLineOnce() async {
final saved = await lightKV.getStringList(StoreKeys.DETECT_LINE); final saved = await lightKV.getStringList(StoreKeys.DETECT_LINE);
final lines = saved?.isNotEmpty == true ? saved! : Config.lineList; final lines = saved?.isNotEmpty == true ? saved! : Config.lineList;
var successLine = 'https://d1s84171319hi1.cloudfront.net'; var successLine = await _pingCheckBatch(lines);
// 本地线路全部失败,回退 DNS 解析 // 本地线路全部失败,回退 DNS 解析
if (TextUtil.isEmpty(successLine)) { if (TextUtil.isEmpty(successLine)) {
successLine = await _dnsSolve(); successLine = await _dnsSolve();
-17
View File
@@ -11,7 +11,6 @@ import 'package:hgdj/tools_base/loading/loading_helper.dart';
import 'package:hgdj/tools_base/toast.dart'; import 'package:hgdj/tools_base/toast.dart';
import 'package:url_launcher/url_launcher.dart'; import 'package:url_launcher/url_launcher.dart';
import '../config/address.dart';
import '../config/config.dart'; import '../config/config.dart';
import '../hj_model/cartoon_media_info.dart'; import '../hj_model/cartoon_media_info.dart';
import '../hj_page/cartoon/cartoon_detail_page.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/mine/welfare/welfare_home_page.dart';
import '../hj_page/short_video/short_video_page.dart'; import '../hj_page/short_video/short_video_page.dart';
import '../hj_page/web_page/h5_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 '../hj_utils/api_service/vid_service.dart';
import '../tools_base/event_bus/event_bus_util.dart'; import '../tools_base/event_bus/event_bus_util.dart';
import '../tools_base/loading/loading_alert_widget.dart';
/// 跳转视频/动漫/短视频详情页 /// 跳转视频/动漫/短视频详情页
/// - [isCartoon] 优先级最高 → 长视频页(标记动漫) /// - [isCartoon] 优先级最高 → 长视频页(标记动漫)
@@ -198,9 +195,6 @@ Future? _handleYinseInnerLink(String host, Map<String, dynamic> arguments,
debugLog(e); debugLog(e);
return null; return null;
} }
case "kefu": // 在线客服
pushToCustomService();
return null;
case "userhomepage": // 跳转博主 case "userhomepage": // 跳转博主
final uid = arguments["uid"] ?? 0; final uid = arguments["uid"] ?? 0;
if (uid == 0) return null; if (uid == 0) return null;
@@ -273,14 +267,3 @@ Future pushToWalletPage(
preventDuplicates: false, 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);
}
}
+3 -3
View File
@@ -43,7 +43,7 @@ DMP编码: #无则留空
告警群: tg://blibli-alert-group 告警群: tg://blibli-alert-group
备注: Flutter 客户端(Android + iOS 双端),当前版本 1.12.1Android 包名 com.noporn.newchatone_twelve_one(版本号变更需同步替换) 备注: Flutter 客户端(Android + iOS 双端),当前版本 1.0.0Android 包名 com.noporn.newchatone_twelve_one(版本号变更需同步替换)
--- ---
@@ -142,7 +142,7 @@ hgdj/
常用:`sh build_apk.sh a`Android releasearm64 单 ABI)、`sh build_apk.sh i release ad-hoc`iOS 内测包)、`sh build_apk.sh all` 常用:`sh build_apk.sh a`Android releasearm64 单 ABI)、`sh build_apk.sh i release ad-hoc`iOS 内测包)、`sh build_apk.sh all`
4. 产物命名(`APP_NAME` 取自 `pubspec.yaml` 的 `name`,即 `hgdj`): 4. 产物命名(`APP_NAME` 取自 `pubspec.yaml` 的 `name`,即 `hgdj`):
- Android`hgdj_<mode>_<version>_<MMdd-HHmm>.apk` - Android`hgdj_<mode>_<version>_<MMdd-HHmm>.apk`
- iOS`hgdj_<mode>_<exportMethod>_<version>_<MMdd-HHmm>.ipa`,如 `hgdj_release_adhoc_1.12.1_0806-0925.ipa` - iOS`hgdj_<mode>_<exportMethod>_<version>_<MMdd-HHmm>.ipa`,如 `hgdj_release_adhoc_1.0.0_0806-0925.ipa`
5. Android 发版前跑 VirusTotal 包毒检测 5. Android 发版前跑 VirusTotal 包毒检测
6. 上传到分发平台(落地页 / 蒲公英 / 自有 CDN),Telegram 告警群通知 6. 上传到分发平台(落地页 / 蒲公英 / 自有 CDN),Telegram 告警群通知
@@ -201,7 +201,7 @@ debug 与 release 在**混淆、符号 strip、manifest 合并**三处行为不
- **Flutter 版本**:必须使用 `fvm flutter`,版本锁定 3.38.3(见 `.fvmrc`),`build_apk.sh` 已内置 FVM PATH 检测 - **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 节 - **打包**`build_apk.sh a` 打 Android`build_apk.sh i` 打 iOS`build_apk.sh all` 双端;完整参数见第 3 节
- **applicationId 规则**`com.noporn.newchat` + `<major>_<minor>_<patch>`(数字转英文),如 1.12.1 → `com.noporn.newchatone_twelve_one` - **applicationId 规则**`com.noporn.newchat` + `<major>_<minor>_<patch>`(数字转英文),如 1.0.0 → `com.noporn.newchatone_twelve_one`
- **版本号同步点**`pubspec.yaml` / `Config.innerVersion` / `android/local.properties` / `android/app/build.gradle` 四处必须一致 - **版本号同步点**`pubspec.yaml` / `Config.innerVersion` / `android/local.properties` / `android/app/build.gradle` 四处必须一致
- **加密密钥**RSA 公私钥位于 Android 端 native 层 + Dart 层,调整时需双端同步 - **加密密钥**RSA 公私钥位于 Android 端 native 层 + Dart 层,调整时需双端同步
- **AB 配置**`Config` 类中集中维护(`aiSwitchConf` / `showAbTestAd` 等),新增 AB 需走运维下发 - **AB 配置**`Config` 类中集中维护(`aiSwitchConf` / `showAbTestAd` 等),新增 AB 需走运维下发