Explorar el Código

[new]增加谈话记录接口

zk hace 1 año
padre
commit
2c05aaaa63

+ 1 - 0
assets/string/base/string.xml

@@ -49,4 +49,5 @@
     <string name="talk_un_analyzed">谈话未分析</string>
     <string name="talk_un_analyzed_tips">谈话提交分析后,可查看相关内容</string>
     <string name="talk_analyzed_btn_txt">小听分析</string>
+    <string name="talk_analyzing">小听正在分析谈话,请稍等~</string>
 </resources>

+ 16 - 0
lib/data/api/atmob_api.dart

@@ -7,13 +7,17 @@ import 'package:electronic_assistant/data/api/request/agenda_status_request.dart
 import 'package:electronic_assistant/data/api/request/chat_history_request.dart';
 import 'package:electronic_assistant/data/api/request/login_request.dart';
 import 'package:electronic_assistant/data/api/request/talk_delete_request.dart';
+import 'package:electronic_assistant/data/api/request/talk_request.dart';
 import 'package:electronic_assistant/data/api/request/talk_rename_request.dart';
 import 'package:electronic_assistant/data/api/request/user_info_update_request.dart';
 import 'package:electronic_assistant/data/api/request/verification_code_request.dart';
+import 'package:electronic_assistant/data/api/response/agenda_list_all_response.dart';
+import 'package:electronic_assistant/data/api/response/agenda_list_mine_response.dart';
 import 'package:electronic_assistant/data/api/response/agenda_response.dart';
 import 'package:electronic_assistant/data/api/response/chat_history_response.dart';
 import 'package:electronic_assistant/data/api/response/home_info_response.dart';
 import 'package:electronic_assistant/data/api/response/login_response.dart';
+import 'package:electronic_assistant/data/api/response/talk_detail_response.dart';
 import 'package:electronic_assistant/data/consts/constants.dart';
 import 'package:retrofit/http.dart';
 
@@ -53,6 +57,18 @@ abstract class AtmobApi {
   @POST("/project/secretary/v1/chat/page")
   Future<BaseResponse<ChatHistoryResponse>> chatHistory(
       @Body() ChatHistoryRequest request);
+
+  @POST("/project/secretary/v1/talk/info")
+  Future<BaseResponse<TalkDetailResponse>> talkInfo(
+      @Body() TalkRequest request);
+
+  @POST("/project/secretary/v1/agenda/list/all")
+  Future<BaseResponse<AgendaListAllResponse>> agendaListAll(
+      @Body() TalkRequest request);
+
+  @POST("/project/secretary/v1/agenda/list/mime")
+  Future<BaseResponse<AgendaListMineResponse>> agendaListMine(
+      @Body() TalkRequest request);
 }
 
 final atmobApi = AtmobApi(defaultDio, baseUrl: Constants.baseUrl);

+ 15 - 0
lib/data/api/request/talk_request.dart

@@ -0,0 +1,15 @@
+import 'package:electronic_assistant/base/app_base_request.dart';
+import 'package:json_annotation/json_annotation.dart';
+
+part 'talk_request.g.dart';
+
+@JsonSerializable()
+class TalkRequest extends AppBaseRequest {
+  @JsonKey(name: 'talkId')
+  String talkId;
+
+  TalkRequest(this.talkId);
+
+  @override
+  Map<String, dynamic> toJson() => _$TalkRequestToJson(this);
+}

+ 16 - 0
lib/data/api/response/agenda_list_all_response.dart

@@ -0,0 +1,16 @@
+import 'package:json_annotation/json_annotation.dart';
+
+import '../../bean/agenda_list_all_bean.dart';
+
+part 'agenda_list_all_response.g.dart';
+
+@JsonSerializable()
+class AgendaListAllResponse {
+  @JsonKey(name: 'list')
+  List<AgendaListAllBean>? list;
+
+  AgendaListAllResponse({required this.list});
+
+  factory AgendaListAllResponse.fromJson(Map<String, dynamic> json) =>
+      _$AgendaListAllResponseFromJson(json);
+}

+ 15 - 0
lib/data/api/response/agenda_list_mine_response.dart

@@ -0,0 +1,15 @@
+import 'package:electronic_assistant/data/bean/agenda.dart';
+import 'package:json_annotation/json_annotation.dart';
+
+part 'agenda_list_mine_response.g.dart';
+
+@JsonSerializable()
+class AgendaListMineResponse {
+  @JsonKey(name: 'agendas')
+  List<Agenda>? list;
+
+  AgendaListMineResponse({required this.list});
+
+  factory AgendaListMineResponse.fromJson(Map<String, dynamic> json) =>
+      _$AgendaListMineResponseFromJson(json);
+}

+ 51 - 0
lib/data/api/response/talk_detail_response.dart

@@ -0,0 +1,51 @@
+import 'package:json_annotation/json_annotation.dart';
+
+part 'talk_detail_response.g.dart';
+
+@JsonSerializable()
+class TalkDetailResponse {
+  @JsonKey(name: 'id')
+  String? id;
+
+  @JsonKey(name: 'taskId')
+  String? taskId;
+
+  @JsonKey(name: 'ssid')
+  String? ssid;
+
+  @JsonKey(name: 'audioUrl')
+  String? audioUrl;
+
+  @JsonKey(name: 'duration')
+  double? duration;
+
+  @JsonKey(name: 'status')
+  int? status;
+
+  @JsonKey(name: 'title')
+  String? title;
+
+  @JsonKey(name: 'summary')
+  String? summary;
+
+  @JsonKey(name: 'createTime')
+  String? createTime;
+
+  @JsonKey(name: 'example')
+  bool? example;
+
+  TalkDetailResponse(
+      {this.id,
+      this.taskId,
+      this.ssid,
+      this.audioUrl,
+      this.duration,
+      this.status,
+      this.title,
+      this.summary,
+      this.createTime,
+      this.example});
+
+  factory TalkDetailResponse.fromJson(Map<String, dynamic> json) =>
+      _$TalkDetailResponseFromJson(json);
+}

+ 18 - 0
lib/data/bean/agenda_list_all_bean.dart

@@ -0,0 +1,18 @@
+import 'package:electronic_assistant/data/bean/agenda.dart';
+import 'package:json_annotation/json_annotation.dart';
+
+part 'agenda_list_all_bean.g.dart';
+
+@JsonSerializable()
+class AgendaListAllBean {
+  @JsonKey(name: 'name')
+  String? name;
+
+  @JsonKey(name: 'list')
+  List<Agenda>? list;
+
+  AgendaListAllBean({this.name, this.list});
+
+  factory AgendaListAllBean.fromJson(Map<String, dynamic> json) =>
+      _$AgendaListAllBeanFromJson(json);
+}

+ 11 - 2
lib/data/bean/talks.dart

@@ -37,8 +37,6 @@ class TalkBean {
   @JsonKey(name: 'example')
   bool? isExample;
 
-  bool? isAnalyseDone;
-
   TalkBean(
       {this.id,
       this.taskId,
@@ -55,3 +53,14 @@ class TalkBean {
   factory TalkBean.fromJson(Map<String, dynamic> json) =>
       _$TalkBeanFromJson(json);
 }
+
+enum TalkStatus {
+  notAnalysis(0),
+  analysing(1),
+  analysisSuccess(2),
+  analysisFail(3);
+
+  final int value;
+
+  const TalkStatus(this.value);
+}

+ 28 - 0
lib/data/repositories/agenda_repository.dart

@@ -1,15 +1,43 @@
+import 'package:electronic_assistant/data/api/request/talk_request.dart';
+
 import '../../utils/http_handler.dart';
 import '../api/atmob_api.dart';
+import '../api/request/agenda_request.dart';
 import '../api/request/agenda_status_request.dart';
+import '../api/response/agenda_list_all_response.dart';
+import '../api/response/agenda_list_mine_response.dart';
+import '../api/response/agenda_response.dart';
 
 class AgendaRepository {
   AgendaRepository._();
 
+  Future<AgendaResponse> agendaPage(int page, int pageSize,
+      {int? startTime, int? endTime, TaskStatus? completeStatus}) {
+    return atmobApi
+        .agendaPage(AgendaRequest(page, pageSize,
+            startTime: startTime,
+            endTime: endTime,
+            completeStatus: completeStatus?.value))
+        .then(HttpHandler.handle(true));
+  }
+
   Future<void> agendaFinish(int? id, bool complete) {
     return atmobApi
         .agendaFinish(AgendaStatusRequest(id, complete))
         .then(HttpHandler.handle(true));
   }
+
+  Future<AgendaListAllResponse> agendaListAll(String talkId) {
+    return atmobApi
+        .agendaListAll(TalkRequest(talkId))
+        .then(HttpHandler.handle(true));
+  }
+
+  Future<AgendaListMineResponse> agendaListMine(String talkId) {
+    return atmobApi
+        .agendaListMine(TalkRequest(talkId))
+        .then(HttpHandler.handle(true));
+  }
 }
 
 final agendaRepository = AgendaRepository._();

+ 1 - 6
lib/data/repositories/home_repository.dart

@@ -9,12 +9,7 @@ class HomeRepository {
 
   Future<HomeInfoResponse> homeInfo() {
     return atmobApi
-        .homeInfo(AppBaseRequest())
-        .then(HttpHandler.handle(true))
-        .then((data) {
-      data.talks.map((bean) => bean.isAnalyseDone = true);
-      return data;
-    });
+        .homeInfo(AppBaseRequest()).then(HttpHandler.handle(true));
   }
 }
 

+ 7 - 13
lib/data/repositories/task_repository.dart

@@ -2,21 +2,15 @@ import 'package:electronic_assistant/data/api/atmob_api.dart';
 import 'package:electronic_assistant/data/api/request/talk_delete_request.dart';
 
 import '../../utils/http_handler.dart';
-import '../api/request/agenda_request.dart';
 import '../api/request/talk_rename_request.dart';
-import '../api/response/agenda_response.dart';
+import '../api/request/talk_request.dart';
+import '../api/response/talk_detail_response.dart';
 
-class TaskRepository {
-  TaskRepository._();
+class TalkRepository {
+  TalkRepository._();
 
-  Future<AgendaResponse> agendaPage(int page, int pageSize,
-      {int? startTime, int? endTime, TaskStatus? completeStatus}) {
-    return atmobApi
-        .agendaPage(AgendaRequest(page, pageSize,
-            startTime: startTime,
-            endTime: endTime,
-            completeStatus: completeStatus?.value))
-        .then(HttpHandler.handle(true));
+  Future<TalkDetailResponse> talkInfo(String id) {
+    return atmobApi.talkInfo(TalkRequest(id)).then(HttpHandler.handle(true));
   }
 
   Future<void> talkRename(String? id, String? title) {
@@ -32,4 +26,4 @@ class TaskRepository {
   }
 }
 
-final taskRepository = TaskRepository._();
+final talkRepository = TalkRepository._();

+ 3 - 3
lib/module/home/controller.dart

@@ -1,7 +1,7 @@
 import 'package:electronic_assistant/base/base_controller.dart';
 import 'package:electronic_assistant/data/bean/talks.dart';
 import 'package:electronic_assistant/data/repositories/agenda_repository.dart';
-import 'package:electronic_assistant/data/repositories/task_repository.dart';
+import 'package:electronic_assistant/data/repositories/talk_repository.dart';
 import 'package:electronic_assistant/module/home/view.dart';
 import 'package:electronic_assistant/module/main/controller.dart';
 import 'package:electronic_assistant/resource/string.gen.dart';
@@ -64,7 +64,7 @@ class HomePageController extends BaseController {
   }
 
   void requestName(String? newName, TalkBean bean) {
-    taskRepository.talkRename(bean.id, newName).then((data) {
+    talkRepository.talkRename(bean.id, newName).then((data) {
       bean.title = newName;
       int index = taskList.indexOf(bean);
       if (index != -1) {
@@ -85,7 +85,7 @@ class HomePageController extends BaseController {
   }
 
   void requestDelete(TalkBean item) {
-    taskRepository.talkDelete(item.id).then((data) {
+    talkRepository.talkDelete(item.id).then((data) {
       requestHomeData();
     }).catchError((error) {
       ErrorHandler.toastError(error, message: StringName.talkDeleteFail.tr);

+ 9 - 3
lib/module/talk/controller.dart

@@ -1,14 +1,16 @@
-import 'dart:ui';
 
 import 'package:electronic_assistant/base/base_controller.dart';
+import 'package:electronic_assistant/module/talk/summary/view.dart';
+import 'package:electronic_assistant/module/talk/todo/view.dart';
 import 'package:electronic_assistant/resource/string.gen.dart';
 import 'package:get/get.dart';
 import 'package:get/get_core/src/get_main.dart';
 
 import '../../data/bean/talks.dart';
+import 'original/view.dart';
 
 class TalkController extends BaseController {
-  late TalkBean? talkBean;
+  final talkBean = TalkBean().obs;
 
   final List<String> tabBeans = [
     StringName.talkTabSummary.tr,
@@ -16,6 +18,8 @@ class TalkController extends BaseController {
     StringName.talkTabOriginal.tr
   ];
 
+  final pages = [SummaryView(), TodoView(), OriginalView()];
+
   @override
   void onInit() {
     super.onInit();
@@ -23,6 +27,8 @@ class TalkController extends BaseController {
   }
 
   void getArguments() {
-    Get.arguments is TalkBean ? Get.arguments as TalkBean : null;
+    if (Get.arguments is TalkBean) {
+      talkBean.value = Get.arguments as TalkBean;
+    }
   }
 }

+ 21 - 3
lib/module/talk/summary/controller.dart

@@ -1,15 +1,33 @@
 import 'package:electronic_assistant/base/base_controller.dart';
+import 'package:electronic_assistant/data/repositories/talk_repository.dart';
+import 'package:electronic_assistant/utils/error_handler.dart';
 import 'package:get/get.dart';
 
+import '../../../data/api/response/talk_detail_response.dart';
+import '../../../data/repositories/agenda_repository.dart';
 import '../controller.dart';
 
 class SummaryController extends BaseController {
-  TalkController talkController = Get.find();
+  final TalkController talkController = Get.find();
+
+  final talkInfo = TalkDetailResponse().obs;
 
   @override
   void onReady() {
     super.onReady();
+    refreshSummaryData();
   }
-}
 
-// enum Summar
+  void refreshSummaryData() {
+    String? id = talkController.talkBean.value.id;
+    if (id == null) {
+      return;
+    }
+    talkRepository.talkInfo(id).then((info) {
+      talkInfo.value = info;
+    }).catchError((e) {
+      ErrorHandler.toastError(e);
+    });
+    agendaRepository.agendaListAll(id);
+  }
+}

+ 39 - 25
lib/module/talk/summary/view.dart

@@ -18,38 +18,52 @@ class SummaryView extends BasePage<SummaryController> {
   Widget buildBody(BuildContext context) {
     return Stack(
       children: [
+        //谈话未分析
+        // SizedBox(
+        //   width: double.infinity,
+        //   child: Column(
+        //     children: [
+        //       SizedBox(height: 119.h),
+        //       SizedBox(
+        //           width: 100.w,
+        //           height: 100.w,
+        //           child: Assets.images.iconTalkSummaryUnanalyzed.image()),
+        //       SizedBox(height: 4.h),
+        //       Text(StringName.talkUnAnalyzed.tr,
+        //           style: TextStyle(
+        //               fontSize: 15.sp, color: ColorName.primaryTextColor)),
+        //       SizedBox(height: 2.h),
+        //       Text(StringName.talkUnAnalyzedTips.tr,
+        //           style: TextStyle(
+        //               fontSize: 12.sp, color: ColorName.secondaryTextColor)),
+        //       SizedBox(height: 24.h),
+        //       Container(
+        //         decoration: getPrimaryBtnDecoration(8),
+        //         width: 240.w,
+        //         height: 48.w,
+        //         child: Center(
+        //           child: Text(
+        //             StringName.talkAnalyzedBtnTxt.tr,
+        //             style: TextStyle(fontSize: 16.sp, color: ColorName.white),
+        //           ),
+        //         ),
+        //       )
+        //     ],
+        //   ),
+        // ),
+
+        //谈话生成中
         SizedBox(
           width: double.infinity,
           child: Column(
             children: [
-              SizedBox(height: 119.h),
-              SizedBox(
-                  width: 100.w,
-                  height: 100.w,
-                  child: Assets.images.iconTalkSummaryUnanalyzed.image()),
-              SizedBox(height: 4.h),
-              Text(StringName.talkUnAnalyzed.tr,
-                  style: TextStyle(
-                      fontSize: 15.sp, color: ColorName.primaryTextColor)),
-              SizedBox(height: 2.h),
-              Text(StringName.talkUnAnalyzedTips.tr,
+              SizedBox(height: 12.h),
+              Text(StringName.talkAnalyzing.tr,
                   style: TextStyle(
-                      fontSize: 12.sp, color: ColorName.secondaryTextColor)),
-              SizedBox(height: 24.h),
-              Container(
-                decoration: getPrimaryBtnDecoration(8),
-                width: 240.w,
-                height: 48.w,
-                child: Center(
-                  child: Text(
-                    StringName.talkAnalyzedBtnTxt.tr,
-                    style: TextStyle(fontSize: 16.sp, color: ColorName.white),
-                  ),
-                ),
-              )
+                      fontSize: 14.sp, color: ColorName.secondaryTextColor))
             ],
           ),
-        ),
+        )
       ],
     );
   }

+ 3 - 5
lib/module/talk/view.dart

@@ -24,8 +24,6 @@ class TalkPage extends BasePage<TalkController> {
     Get.toNamed(RoutePath.talkDetail, arguments: item);
   }
 
-  final pages = [const SummaryView(), const TodoView(), const OriginalView()];
-
   @override
   Widget buildBody(BuildContext context) {
     return Stack(
@@ -54,13 +52,13 @@ class TalkPage extends BasePage<TalkController> {
                 crossAxisAlignment: CrossAxisAlignment.start,
                 children: [
                   SizedBox(height: 8.h),
-                  Text('8月16日10时53分录音',
+                  Text(controller.talkBean.value.title.orEmpty,
                       style: TextStyle(
                           fontSize: 22.sp,
                           fontWeight: FontWeight.bold,
                           color: ColorName.primaryTextColor)),
                   SizedBox(height: 4.h),
-                  Text('2024-07-25  16:31',
+                  Text(controller.talkBean.value.createTime.orEmpty,
                       style: TextStyle(
                           fontSize: 12.sp,
                           color: ColorName.secondaryTextColor)),
@@ -105,7 +103,7 @@ class TalkPage extends BasePage<TalkController> {
                             endIndent: 12.w),
                         Expanded(
                             child: TabBarView(
-                          children: pages,
+                          children: controller.pages,
                         ))
                       ],
                     )))

+ 1 - 1
lib/module/task/controller.dart

@@ -1,5 +1,5 @@
 import 'package:electronic_assistant/base/base_controller.dart';
-import 'package:electronic_assistant/data/repositories/task_repository.dart';
+import 'package:electronic_assistant/data/repositories/talk_repository.dart';
 
 class TaskController extends BaseController {
   String get filterTxt => '展示近两周待办';