From 8d149ef4b375dfaa6b686791b1f58abf793ef7b9 Mon Sep 17 00:00:00 2001 From: anfe <448468458@qq.com> Date: Thu, 30 May 2024 17:43:09 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=B8=BA=E4=BA=86=E4=B8=8A=E6=9E=B6?= =?UTF-8?q?=EF=BC=8C=E6=96=B0=E5=A2=9E=E5=AE=A2=E6=9C=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/login/login/app_get_version.dart | 40 +++++++++++++++++++ lib/login/login/starLock_login_page.dart | 41 ++++++++++++-------- lib/login/login/starLock_login_xhj_page.dart | 29 ++++++++++---- lib/mine/mineSet/mineSet/mineSet_page.dart | 7 ++++ lib/network/api.dart | 1 + lib/network/api_provider.dart | 5 +++ lib/network/api_repository.dart | 8 ++++ lib/tools/appFirstEnterHandle.dart | 5 +++ lib/tools/customer_tool.dart | 18 +++++++++ 9 files changed, 131 insertions(+), 23 deletions(-) create mode 100644 lib/login/login/app_get_version.dart create mode 100644 lib/tools/customer_tool.dart diff --git a/lib/login/login/app_get_version.dart b/lib/login/login/app_get_version.dart new file mode 100644 index 00000000..f224088b --- /dev/null +++ b/lib/login/login/app_get_version.dart @@ -0,0 +1,40 @@ +class GetAppInfo { + GetAppInfo({this.errorCode, this.description, this.errorMsg, this.data}); + + GetAppInfo.fromJson(Map json) { + errorCode = json['errorCode']; + description = json['description']; + errorMsg = json['errorMsg']; + if (json['data'] is Map) { + data = Data.fromJson(json['data']); + } + } + + int? errorCode; + String? description; + String? errorMsg; + Data? data; + + Map toJson() { + final Map data = {}; + data['errorCode'] = errorCode; + data['description'] = description; + data['errorMsg'] = errorMsg; + data['data'] = this.data; + return data; + } +} + +class Data { + Data.fromJson(Map json) { + wechatServiceUrl = json['wechat_service_url']; + } + + String? wechatServiceUrl; + + Map toJson() { + final Map data = {}; + data['wechat_service_url'] = wechatServiceUrl; + return data; + } +} diff --git a/lib/login/login/starLock_login_page.dart b/lib/login/login/starLock_login_page.dart index 136a3a7c..a43eb935 100755 --- a/lib/login/login/starLock_login_page.dart +++ b/lib/login/login/starLock_login_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/flavors.dart'; +import 'package:star_lock/tools/customer_tool.dart'; import '../../appRouters.dart'; import '../../app_settings/app_colors.dart'; @@ -35,6 +36,12 @@ class _StarLockLoginPageState extends State { haveBack: false, backgroundColor: AppColors.mainColor, actionsList: [ + IconButton( + onPressed: CustomerTool.openCustomerService, + icon: Icon( + Icons.support_agent, + color: AppColors.mainColor, + )), TextButton( child: Text( TranslationLoader.lanKeys!.register!.tr, @@ -239,22 +246,24 @@ class _StarLockLoginPageState extends State { child: SizedBox( width: 10.sp, )), - if (F.isLite) Container() else GestureDetector( - child: SizedBox( - // width: 150.w, - height: 50.h, - // color: Colors.red, - child: Center( - child: Text('演示模式'.tr, - style: TextStyle( - fontSize: 22.sp, - color: AppColors.mainColor)), - ), - ), - onTap: () { - Get.toNamed(Routers.demoModeLockDetailPage); - }, - ) + if (F.isLite) + Container() + else + GestureDetector( + child: SizedBox( + // width: 150.w, + height: 50.h, + // color: Colors.red, + child: Center( + child: Text('演示模式'.tr, + style: TextStyle( + fontSize: 22.sp, color: AppColors.mainColor)), + ), + ), + onTap: () { + Get.toNamed(Routers.demoModeLockDetailPage); + }, + ) ], ), ], diff --git a/lib/login/login/starLock_login_xhj_page.dart b/lib/login/login/starLock_login_xhj_page.dart index 22c16a8d..17cc4f84 100755 --- a/lib/login/login/starLock_login_xhj_page.dart +++ b/lib/login/login/starLock_login_xhj_page.dart @@ -1,9 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:star_lock/flavors.dart'; import 'package:star_lock/login/login/starLock_login_state.dart'; +import 'package:star_lock/tools/customer_tool.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../appRouters.dart'; import '../../app_settings/app_colors.dart'; @@ -33,7 +36,7 @@ class _StarLockLoginPageState extends State { backgroundColor: const Color(0xFFFFFFFF), body: ListView( padding: EdgeInsets.only( - top: 120.h, + top: 110.h, ), children: [ Padding( @@ -41,12 +44,24 @@ class _StarLockLoginPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - '${"欢迎使用".tr}${F.title}', - style: TextStyle( - color: AppColors.darkGrayTextColor, - fontSize: 48.sp, - ), + Row( + children: [ + Expanded( + child: Text( + '${"欢迎使用".tr}${F.title}', + style: TextStyle( + color: AppColors.darkGrayTextColor, + fontSize: 48.sp, + ), + ), + ), + IconButton( + onPressed: CustomerTool.openCustomerService, + icon: Icon( + Icons.support_agent, + color: AppColors.mainColor, + )), + ], ), SizedBox(height: 30.h), GestureDetector( diff --git a/lib/mine/mineSet/mineSet/mineSet_page.dart b/lib/mine/mineSet/mineSet/mineSet_page.dart index 28440b3f..55718339 100755 --- a/lib/mine/mineSet/mineSet/mineSet_page.dart +++ b/lib/mine/mineSet/mineSet/mineSet_page.dart @@ -10,6 +10,7 @@ import 'package:star_lock/flavors.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_logic.dart'; import 'package:star_lock/mine/mineSet/mineSet/mineSet_state.dart'; import 'package:star_lock/tools/appFirstEnterHandle.dart'; +import 'package:star_lock/tools/customer_tool.dart'; import '../../../appRouters.dart'; import '../../../app_settings/app_colors.dart'; import '../../../tools/commonItem.dart'; @@ -352,6 +353,12 @@ class _MineSetPageState extends State with WidgetsBindingObserver { action: () { logic.showToast('功能暂未开放'.tr); }), + CommonItem( + leftTitel: TranslationLoader.lanKeys!.supportStaff!.tr, + isHaveLine: widget.showAbout, + isHaveDirection: true, + action: CustomerTool.openCustomerService, + ), if (widget.showAbout) CommonItem( leftTitel: TranslationLoader.lanKeys!.about!.tr, diff --git a/lib/network/api.dart b/lib/network/api.dart index 70fe404b..7901353e 100755 --- a/lib/network/api.dart +++ b/lib/network/api.dart @@ -239,4 +239,5 @@ abstract class Api { final String lockDataUploadUrl = '/lockRecords/lockDataUpload'; // 锁数据上传 final String getNoticeTemplateURL = '/key/getNoticeTemplate'; //获取短信或者邮箱模板 + final String appGetAppInfoURL = '/app/getAppInfo'; //获取APP基本信息 } diff --git a/lib/network/api_provider.dart b/lib/network/api_provider.dart index a162ddf7..21bd6b91 100755 --- a/lib/network/api_provider.dart +++ b/lib/network/api_provider.dart @@ -2122,6 +2122,11 @@ class ApiProvider extends BaseProvider { 'keyId': keyId, 'channelType': channelType, })); + + // 获取App基本信息 + Future> getAppInfo() => + post(appGetAppInfoURL.toUrl, jsonEncode({}), + isShowErrMsg: false); } extension ExtensionString on String { diff --git a/lib/network/api_repository.dart b/lib/network/api_repository.dart index dc880523..20f5f7ca 100755 --- a/lib/network/api_repository.dart +++ b/lib/network/api_repository.dart @@ -1,5 +1,6 @@ import 'package:get/get.dart'; import 'package:star_lock/blue/entity/lock_user_no_list_entity.dart'; +import 'package:star_lock/login/login/app_get_version.dart'; import 'package:star_lock/login/selectCountryRegion/common/countryRegionEntity.dart'; import 'package:star_lock/main/lockDetail/authorizedAdmin/authorizedAdmin/notice_template_entity.dart'; import 'package:star_lock/main/lockDetail/doorLockLog/doorLockLog_entity.dart'; @@ -2150,4 +2151,11 @@ class ApiRepository { await apiProvider.getNoticeTemplate(lockId, keyId, channelType); return NoticeTemplateEntity.fromJson(res.body); } + + // 电子钥匙获取短信模板 + Future getAppInfo() async { + final Response res = + await apiProvider.getAppInfo(); + return GetAppInfo.fromJson(res.body); + } } diff --git a/lib/tools/appFirstEnterHandle.dart b/lib/tools/appFirstEnterHandle.dart index 4e8d2ba8..3b51b295 100755 --- a/lib/tools/appFirstEnterHandle.dart +++ b/lib/tools/appFirstEnterHandle.dart @@ -8,6 +8,9 @@ import 'package:star_lock/appRouters.dart'; import 'package:star_lock/app_settings/app_colors.dart'; import 'package:star_lock/common/XSConstantMacro/XSConstantMacro.dart'; import 'package:star_lock/flavors.dart'; +import 'package:star_lock/login/login/app_get_version.dart'; +import 'package:star_lock/network/api_repository.dart'; +import 'package:star_lock/tools/customer_tool.dart'; import 'package:star_lock/tools/storage.dart'; import '../versionUndate/versionUndateTool.dart'; @@ -41,6 +44,8 @@ class AppFirstEnterHandle { default: break; } + final GetAppInfo entity = await ApiRepository.to.getAppInfo(); + CustomerTool.init(entity.data?.wechatServiceUrl?? ''); } //隐私协议弹窗 diff --git a/lib/tools/customer_tool.dart b/lib/tools/customer_tool.dart new file mode 100644 index 00000000..37caaecb --- /dev/null +++ b/lib/tools/customer_tool.dart @@ -0,0 +1,18 @@ +import 'package:url_launcher/url_launcher.dart'; + +//客服工具类 +class CustomerTool { + static String _customerServiceUrl = ''; + + //初始化 + static Future init(String customerServiceUrl) async { + _customerServiceUrl = customerServiceUrl; + } + + //打开客服 + static void openCustomerService() { + if (_customerServiceUrl.isNotEmpty) { + launchUrl(Uri.parse(_customerServiceUrl)); + } + } +}