From abe49031acfa0d86bd5a5ed1a04e35c920b1f9fd Mon Sep 17 00:00:00 2001 From: liyi Date: Thu, 25 Sep 2025 11:53:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E9=82=80=E8=AF=B7?= =?UTF-8?q?=E4=BA=8C=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/api/api_path.dart | 1 + .../team/request/invite_info_request.dart | 24 ++++++++++ .../team/response/invite_info_response.dart | 44 +++++++++++++++++++ lib/api/service/team_api_service.dart | 17 ++++++- lib/flavors.dart | 6 +-- .../invite_team_member_controller.dart | 20 +++++++++ .../invite_team_member_view.dart | 24 +++++++--- .../team/teamNotice/team_notice_view.dart | 8 +++- 8 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 lib/api/model/team/request/invite_info_request.dart create mode 100644 lib/api/model/team/response/invite_info_response.dart diff --git a/lib/api/api_path.dart b/lib/api/api_path.dart index 12631cd..baf687f 100644 --- a/lib/api/api_path.dart +++ b/lib/api/api_path.dart @@ -8,4 +8,5 @@ class ApiPath { static const String changeTeam = "/v1/team/changeTeam"; static const String bindTeamStarCloudAccount = "/v1/team/bindStarCloudAccount"; static const String updateTeamInfo = "/v1/team/updateTeam"; + static const String getInviteInfo = "/v1/team/getInviteInfo"; } diff --git a/lib/api/model/team/request/invite_info_request.dart b/lib/api/model/team/request/invite_info_request.dart new file mode 100644 index 0000000..a79fcda --- /dev/null +++ b/lib/api/model/team/request/invite_info_request.dart @@ -0,0 +1,24 @@ +class InviteInfoRequest { + String departNo; + + InviteInfoRequest({ + required this.departNo, + }); + + factory InviteInfoRequest.fromJson(Map json) { + return InviteInfoRequest( + departNo: json['departNo'], + ); + } + + Map toJson() { + return { + 'departNo': departNo, + }; + } + + @override + String toString() { + return 'InviteInfoRequest{departNo: $departNo}'; + } +} diff --git a/lib/api/model/team/response/invite_info_response.dart b/lib/api/model/team/response/invite_info_response.dart new file mode 100644 index 0000000..85e80aa --- /dev/null +++ b/lib/api/model/team/response/invite_info_response.dart @@ -0,0 +1,44 @@ +class InviteInfoResponse { + String? teamName; + String? teamNo; + String? teamCode; + int? inviteId; + String? inviteInfo; + String? qrCode; + + InviteInfoResponse({ + this.teamName, + this.teamNo, + this.teamCode, + this.inviteId, + this.inviteInfo, + this.qrCode, + }); + + factory InviteInfoResponse.fromJson(Map json) { + return InviteInfoResponse( + teamName: json['teamName'] as String?, + teamNo: json['teamNo'] as String?, + teamCode: json['teamCode'] as String?, + inviteId: json['inviteId'] as int?, + inviteInfo: json['inviteInfo'] as String?, + qrCode: json['qrCode'] as String?, + ); + } + + Map toJson() { + return { + 'teamName': teamName, + 'teamNo': teamNo, + 'teamCode': teamCode, + 'inviteId': inviteId, + 'inviteInfo': inviteInfo, + 'qrCode': qrCode, + }; + } + + @override + String toString() { + return 'InviteInfoResponse{teamName: $teamName, teamNo: $teamNo, teamCode: $teamCode, inviteId: $inviteId, inviteInfo: $inviteInfo, qrCode: $qrCode}'; + } +} diff --git a/lib/api/service/team_api_service.dart b/lib/api/service/team_api_service.dart index 6ec3365..45841cb 100644 --- a/lib/api/service/team_api_service.dart +++ b/lib/api/service/team_api_service.dart @@ -5,9 +5,11 @@ import 'package:starwork_flutter/api/base_api_service.dart'; import 'package:starwork_flutter/api/model/team/request/bind_team_star_cloud_account_request.dart'; import 'package:starwork_flutter/api/model/team/request/change_current_team_request.dart'; import 'package:starwork_flutter/api/model/team/request/create_team_request.dart'; +import 'package:starwork_flutter/api/model/team/request/invite_info_request.dart'; import 'package:starwork_flutter/api/model/team/request/update_team_info_request.dart'; import 'package:starwork_flutter/api/model/team/response/all_team_list_response.dart'; import 'package:starwork_flutter/api/model/team/response/create_team_response.dart'; +import 'package:starwork_flutter/api/model/team/response/invite_info_response.dart'; import 'package:starwork_flutter/api/model/team/response/scene_info_response.dart'; import 'package:starwork_flutter/api/model/user/request/validation_code_login.dart'; import 'package:starwork_flutter/api/model/user/response/token_response.dart'; @@ -73,7 +75,7 @@ class TeamApiService { path: ApiPath.bindTeamStarCloudAccount, method: HttpConstant.post, data: request.toJson(), - fromJson: (data){}, + fromJson: (data) {}, ); } @@ -89,4 +91,17 @@ class TeamApiService { fromJson: (data) {}, ); } + + /// 获取邀请信息 + Future> requestInviteInfo({ + required InviteInfoRequest request, + }) { + return _api.makeRequest( + // 通过实例调用 + path: ApiPath.getInviteInfo, + method: HttpConstant.post, + data: request.toJson(), + fromJson: (data) => InviteInfoResponse.fromJson(data), + ); + } } diff --git a/lib/flavors.dart b/lib/flavors.dart index 668f240..64fc357 100644 --- a/lib/flavors.dart +++ b/lib/flavors.dart @@ -21,7 +21,7 @@ class F { // Release环境的API地址 switch (appFlavor) { case Flavor.sky: - return 'https://192.168.1.139:8112/api'; // 生产环境API + return 'https://192.168.1.138:8112/api'; // 生产环境API case Flavor.xhj: return 'https://api.xhjcn.ltd/api'; // 生产环境API } @@ -29,7 +29,7 @@ class F { // Debug/Profile环境的API地址(开发环境) switch (appFlavor) { case Flavor.sky: - return 'http://192.168.1.139:8112/api'; + return 'http://192.168.1.138:8112/api'; case Flavor.xhj: return 'https://loacl.work.star-lock.cn/api'; } @@ -67,7 +67,7 @@ class F { // Debug/Profile环境的StarCloud地址(开发环境) switch (appFlavor) { case Flavor.sky: - return 'http://192.168.1.139:8111/sdk'; + return 'http://192.168.1.138:8111/sdk'; case Flavor.xhj: return 'http://local.cloud.star-lock.cn'; } diff --git a/lib/views/team/inviteTeamMember/invite_team_member_controller.dart b/lib/views/team/inviteTeamMember/invite_team_member_controller.dart index 2012ab8..df1a5bd 100644 --- a/lib/views/team/inviteTeamMember/invite_team_member_controller.dart +++ b/lib/views/team/inviteTeamMember/invite_team_member_controller.dart @@ -1,11 +1,17 @@ import 'package:get/get.dart'; +import 'package:starwork_flutter/api/model/team/request/invite_info_request.dart'; +import 'package:starwork_flutter/api/model/team/response/invite_info_response.dart'; import 'package:starwork_flutter/api/model/team/response/team_info_response.dart'; +import 'package:starwork_flutter/api/service/team_api_service.dart'; import 'package:starwork_flutter/base/base_controller.dart'; import 'package:starwork_flutter/common/constant/app_view_parameter_keys.dart'; class InviteTeamMemberController extends BaseController { // 定义一个可观察的 Map var selectedTeam = TeamInfoResponse().obs; + final teamApi = Get.find(); + + var inviteInfo = InviteInfoResponse().obs; @override void onReady() { @@ -16,5 +22,19 @@ class InviteTeamMemberController extends BaseController { final json = args[AppViewParameterKeys.teamInfo]; selectedTeam.value = TeamInfoResponse.fromJson(json); } + + if (selectedTeam.value.teamCloudInfo != null) { + requestInviteInfo(); + } + } + + /// 请求邀请信息 + requestInviteInfo() async { + var response = await teamApi.requestInviteInfo( + request: InviteInfoRequest(departNo: selectedTeam.value.teamNo!), + ); + if (response.isSuccess) { + inviteInfo.value = response.data!; + } } } diff --git a/lib/views/team/inviteTeamMember/invite_team_member_view.dart b/lib/views/team/inviteTeamMember/invite_team_member_view.dart index c957825..9fd72d1 100644 --- a/lib/views/team/inviteTeamMember/invite_team_member_view.dart +++ b/lib/views/team/inviteTeamMember/invite_team_member_view.dart @@ -82,12 +82,24 @@ class InviteTeamMemberView extends GetView { ), ), SizedBox(height: 10.h), - ClipRRect( - borderRadius: BorderRadius.circular(8.r), - child: Image( - width: 220.w, - image: const AssetImage(AppImages.mockErCode), - fit: BoxFit.cover, // 保持图片比例并填满容器 + Container( + padding: EdgeInsets.all(10.r), // 添加边距 + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.r), // 为 Container 添加圆角 + color: Colors.white, // 添加背景色以突出圆角效果 + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(8.r), + child: Obx( + () => Image( + width: 200.w, // 调整为 200 以适应 padding + height: 200.w, + image: NetworkImage( + controller.inviteInfo.value.inviteInfo ?? '', + ), + fit: BoxFit.cover, + ), + ), ), ), SizedBox(height: 10.h), diff --git a/lib/views/team/teamNotice/team_notice_view.dart b/lib/views/team/teamNotice/team_notice_view.dart index a89c554..e80bda5 100644 --- a/lib/views/team/teamNotice/team_notice_view.dart +++ b/lib/views/team/teamNotice/team_notice_view.dart @@ -12,7 +12,12 @@ class TeamNoticeView extends GetView { @override Widget build(BuildContext context) { return Scaffold( - appBar: CustomAppBarWidget(title: '公告'.tr), + backgroundColor: AppColors.scaffoldBackgroundColor, + appBar: CustomAppBarWidget( + title: '公告'.tr, + showBackButton: false, + backgroundColor: AppColors.scaffoldBackgroundColor, + ), body: Column( children: [ TabBar( @@ -76,7 +81,6 @@ class TeamNoticeView extends GetView { onRefresh: () async { // 模拟下拉刷新 await Future.delayed(const Duration(seconds: 2)); - Get.snackbar('提示', '刷新成功'); }, color: Colors.blue, displacement: 60.0,