diff --git a/lib/chat/ChatPage.dart b/lib/chat/ChatPage.dart index 2cdf809..f96acd0 100644 --- a/lib/chat/ChatPage.dart +++ b/lib/chat/ChatPage.dart @@ -39,6 +39,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:oktoast/oktoast.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import '../r.dart'; @@ -89,6 +90,8 @@ class _ChatPageState extends State { int jumpTime; + bool hasChatPermission=false; + @override void dispose() { var endTime = DateTime.now().millisecondsSinceEpoch ~/ 1000; @@ -149,11 +152,46 @@ class _ChatPageState extends State { msgMgr.on('Delete Select Message', _deleteItem); msgMgr.on(MessageMgr.TRANSLATE_HK_END_CHAT, translateHKChatEnd); msgMgr.on('Jump to Msg', jumpToMsg); + + + WidgetsBinding.instance.addPostFrameCallback((_) { + checkPermission(); + }); + + + + + } + + checkPermission()async{ + + if(isTranslateButler){ + if (await CustomUI.showPermissionSetting(context, + PermissionGroup.microphone, I18n.of(context).video_permission)) { + setState(() { + hasChatPermission=true; + dx=Screen.width - zoomButtonSizeWidth; + dy = (Screen.height - zoomButtonSizeHeight)/2; + }); + } else { + hasChatPermission=false; + showToast(I18n.of(context).need_record); + } + + + + + + } + + } translateHKChatEnd(args){ setState(() { + isShowZoomButton=false; isTranslateButlerFinish=true; + TranslateHKMgr().order=null; }); } @@ -414,7 +452,7 @@ class _ChatPageState extends State { child: Column( children: [ NetStateWidget(), - (isTranslateButler&!isTranslateButlerFinish) + (isTranslateButler) ? _buildTranslationButler() : Container(), Expanded(child: _buildMessageList()), @@ -480,21 +518,21 @@ class _ChatPageState extends State { } Widget getAudioChatView() { - if (friendInfo == null || isTranslateButlerFinish) { + if (friendInfo == null || isTranslateButlerFinish || !hasChatPermission) { return Container(); } - return isActive == null - ? Container() - : Offstage( - offstage: !isShowAudio, - child: AudioChatPage( - userInfo: friendInfo, - isTranslateButler: true, - isReplay: !TranslateHKMgr().isUser, - translateButlerCloseCallBack: audioChatPageCallBack, - ), - ); + return isActive + ? Offstage( + offstage: !isShowAudio, + child: AudioChatPage( + userInfo: friendInfo, + isTranslateButler: true, + isReplay: !TranslateHKMgr().isUser, + translateButlerCloseCallBack: audioChatPageCallBack, + ), + ):Container() + ; } audioChatPageCallBack(int args) { @@ -507,7 +545,9 @@ class _ChatPageState extends State { break; case 2: setState(() { + print('连麦关闭GGGGGGGG'); isActive = false; + isShowZoomButton=false; }); break; } @@ -523,7 +563,8 @@ class _ChatPageState extends State { GlobalKey mykey = GlobalKey(); double dx = 0 , dy = 0; - double zoomButtonSize = 60; + double zoomButtonSizeWidth = 60; + double zoomButtonSizeHeight = 74; void dragEvent(DragUpdateDetails details) { final RenderObject box = context.findRenderObject(); @@ -533,14 +574,14 @@ class _ChatPageState extends State { // print('dx $dx dy $dy screen width:${Screen.width}'); - if (dx > Screen.width - zoomButtonSize) { - dx = Screen.width - zoomButtonSize; + if (dx > Screen.width - zoomButtonSizeWidth) { + dx = Screen.width - zoomButtonSizeWidth; } else if (dx < 0) { dx = 0; } - if (dy > Screen.height - zoomButtonSize) { - dy = Screen.height - zoomButtonSize; + if (dy > Screen.height - zoomButtonSizeHeight) { + dy = Screen.height - zoomButtonSizeHeight; } else if (dy < 0) { dy = 0; } @@ -550,14 +591,14 @@ class _ChatPageState extends State { Widget zoomAudioButton() { - if (friendInfo == null || !isShowZoomButton) { + if (friendInfo == null || !isShowZoomButton || !hasChatPermission) { return Container(); } Widget button = Container( key: mykey, - width: 57, - height: 74, + width: zoomButtonSizeWidth, + height: zoomButtonSizeHeight, child: Card(child: Align(child: Icon( IconData(0xe67d, fontFamily: Constants.IconFontFamily), color: Color(0xFF008AFF), @@ -648,7 +689,7 @@ class _ChatPageState extends State { constraints: BoxConstraints(maxWidth: 135), ), ), - TranslateHKMgr().isUser?Expanded( + (TranslateHKMgr().isUser&& !isTranslateButlerFinish)?Expanded( child: Container( constraints: BoxConstraints(maxWidth: 130), width: double.maxFinite, diff --git a/lib/home/audio_chat_view.dart b/lib/home/audio_chat_view.dart index cc49c7e..b1747d9 100644 --- a/lib/home/audio_chat_view.dart +++ b/lib/home/audio_chat_view.dart @@ -220,7 +220,7 @@ class _AudioChatPageState extends State { widget.isTranslateButler?InkWell(child: Container( width: 60,height: 60,child: Align(child: Icon( IconData(0xe67f, fontFamily: Constants.IconFontFamily), color: Colors.white, - size: 35.0, + size: 28.0, ),alignment: Alignment.center,),),onTap: (){ widget.translateButlerCloseCallBack(1); print('内页内页'); @@ -476,6 +476,9 @@ class _AudioChatPageState extends State { isChating = true; }); } else { +// if(!widget.isTranslateButler){ +// +// } MsgHandler.sendAudioChatReq(widget.userInfo.userId); callingTimer = Timer.periodic(Duration(milliseconds: 2200), (timer) { @@ -781,10 +784,13 @@ class _AudioChatPageState extends State { //退出频道 退出本页面 void _onExit(BuildContext context) { if (!isQuit) { + print('连麦关闭AAAA'); if (Navigator.canPop(context)) { isQuit = true; - + print('连麦关闭BBBB'); if(widget.translateButlerCloseCallBack!=null){ + print('连麦关闭CCCCCCCC'); + widget.translateButlerCloseCallBack(2); }else{ Navigator.of(context).pop(); diff --git a/lib/home/last_chat_item.dart b/lib/home/last_chat_item.dart index 7da529d..ec07732 100644 --- a/lib/home/last_chat_item.dart +++ b/lib/home/last_chat_item.dart @@ -68,7 +68,6 @@ class _LastChatItemState extends State { int unreadCount = ChatDataMgr() .unreadCountProvider .getUnreadCount(widget.lastMessageModel.sessionId); - print('build lastchatimte 未读消息数$unreadCount'); if (userInfo == null ) { print(('userinfo ==null')); diff --git a/lib/home/realtimehelper/real_time_helper_page.dart b/lib/home/realtimehelper/real_time_helper_page.dart index 11545d5..a3fb50b 100644 --- a/lib/home/realtimehelper/real_time_helper_page.dart +++ b/lib/home/realtimehelper/real_time_helper_page.dart @@ -5,6 +5,7 @@ import 'package:chat/models/group_info_model.dart'; import 'package:chat/utils/HttpUtil.dart'; import 'package:chat/utils/MessageMgr.dart'; import 'package:chat/utils/TokenMgr.dart'; +import 'package:chat/utils/msgHandler.dart'; import 'package:chat/utils/screen.dart'; import 'package:dio/dio.dart'; import 'package:flutter/cupertino.dart'; @@ -28,61 +29,34 @@ class RealTimeHelperPage extends StatefulWidget { class RealTimeHelperPageState extends State { - bool isTranslateHKLogin = false; + bool isReceiveOrder = false; - bool isReady=false; @override void initState() { super.initState(); - MessageMgr().on('update_system',refresh); - WidgetsBinding.instance.addPostFrameCallback((_) { - isTranslateAndStatus(); - }); +// MessageMgr().on('update_system',refresh); + MessageMgr().on(MessageMgr.TRANSLATE_HK_IS_RECEIVED_ORDER,isReceiveOrderMsg); - } - refresh(args){ - isTranslateAndStatus(); } - ///实时帮-翻译人员状态,是否是翻译人员 - isTranslateAndStatus() async { - Map data = { - "userId": UserData().basicInfo.userId, - }; - data['sign'] = TokenMgr().getSign(data); - Response res = await HttpUtil().post('steward/userStatus', data: data); - - if (res == null) { - print('请求异常'); - return; - } - var resData = res.data; - if (resData['code'] == 0) { - isReady=true; - print('xxxdksldsd $resData'); - UserData().isTranslateUser = resData['data']['isTranslateUser'] == 1; - int status = resData['data']['Status'] ; - - if(status==1){ - isTranslateHKLogin=true; - } - - setState(() { - }); - print('翻译人员状态 status $status isTranslateUser ${UserData().isTranslateUser} '); - }else{ - print('获取翻译人员翻译人员状态 失败 ${resData['msg']}'); - } + isReceiveOrderMsg(data){ + bool isReceive = data; + isReceiveOrder = isReceive; + setState(() {}); } + + @override void dispose() { super.dispose(); - MessageMgr().on('update_system',refresh); +// MessageMgr().off('update_system',refresh); + MessageMgr().off(MessageMgr.TRANSLATE_HK_IS_RECEIVED_ORDER,isReceiveOrderMsg); + } @@ -126,28 +100,23 @@ class RealTimeHelperPageState extends State { child: SafeArea( child: ListView( children: [ + SizedBox(height: 4,), Container( alignment: Alignment.center, child: fixedText(I18n.of(context).translation_butler_title3, color: Colors.white, fontSize: 21), ), UnconstrainedBox(child: InkWell(onTap: (){ - HttpUtil().translateHKloginRecord(!isTranslateHKLogin,(){ - - isTranslateHKLogin = !isTranslateHKLogin; - setState(() { - }); - }); - + MsgHandler.translateReceiptOrStopOrder(!isReceiveOrder); },child: Container( alignment: Alignment.center, padding: EdgeInsets.only(left: 11,right: 11,top: 3,bottom: 3), decoration: BoxDecoration( - border: Border.all(color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, width: 1), + border: Border.all(color: isReceiveOrder?Color(0xFFFEE645):Colors.white, width: 1), borderRadius: BorderRadius.circular(11)), - child: fixedText(isTranslateHKLogin?I18n.of(context).translation_butler_start_receive_order:I18n.of(context).translation_butler_stop_receive_order, color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, fontSize: 15), + child: fixedText(isReceiveOrder?I18n.of(context).translation_butler_start_receive_order:I18n.of(context).translation_butler_stop_receive_order, color: isReceiveOrder?Color(0xFFFEE645):Colors.white, fontSize: 15), ),),), Container( padding: EdgeInsets.only(left: 13,top: 20), @@ -247,7 +216,7 @@ class RealTimeHelperPageState extends State { ), ), ), - onTap: isReady?callBack:null, + onTap: callBack, ); } } diff --git a/lib/home/realtimehelper/translation_evaluation_dialog.dart b/lib/home/realtimehelper/translation_evaluation_dialog.dart index 582c8da..2b29a1d 100644 --- a/lib/home/realtimehelper/translation_evaluation_dialog.dart +++ b/lib/home/realtimehelper/translation_evaluation_dialog.dart @@ -62,7 +62,7 @@ class TravelEvaluationPageState extends State { for(int k=0;k { MsgHandler.sendReceiveOrder(); Navigator.of(context).pop(); }, + countDownTime: 60, ), ) ], diff --git a/lib/models/last_msg_description.dart b/lib/models/last_msg_description.dart index f015afb..3ac558f 100644 --- a/lib/models/last_msg_description.dart +++ b/lib/models/last_msg_description.dart @@ -140,7 +140,6 @@ class _LastMsgDescriptionState extends State { if(widget.lastMessageModel.channelType==ChatChannelType.Session.value){ ///翻译管家的 通知消息 - print('翻译管家的 通知消息-'); TransHKChatNotice res = TransHKChatNotice.fromBuffer(widget.lastMessageModel.msgContent); if(res.noticeType==TransHKChatNoticeType.StartChat){ desc = I18n.of(Constants.getCurrentContext()).translation_butler_last_item_start; diff --git a/lib/proto/login.pb.dart b/lib/proto/login.pb.dart index 0afbcd8..6279c8e 100644 --- a/lib/proto/login.pb.dart +++ b/lib/proto/login.pb.dart @@ -45,6 +45,8 @@ class LoginAccountRes extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo('LoginAccountRes', package: const $pb.PackageName('yl_pb')) ..a<$core.int>(1, 'errorCode', $pb.PbFieldType.O3) ..aOS(2, 'httpAddr') + ..aOB(3, 'isTransHKInter') + ..aOB(4, 'isReceipt') ..hasRequiredFields = false ; @@ -71,6 +73,16 @@ class LoginAccountRes extends $pb.GeneratedMessage { set httpAddr($core.String v) { $_setString(1, v); } $core.bool hasHttpAddr() => $_has(1); void clearHttpAddr() => clearField(2); + + $core.bool get isTransHKInter => $_get(2, false); + set isTransHKInter($core.bool v) { $_setBool(2, v); } + $core.bool hasIsTransHKInter() => $_has(2); + void clearIsTransHKInter() => clearField(3); + + $core.bool get isReceipt => $_get(3, false); + set isReceipt($core.bool v) { $_setBool(3, v); } + $core.bool hasIsReceipt() => $_has(3); + void clearIsReceipt() => clearField(4); } class PushUserOutLogin extends $pb.GeneratedMessage { diff --git a/lib/proto/login.pbjson.dart b/lib/proto/login.pbjson.dart index 711ef8e..614a795 100644 --- a/lib/proto/login.pbjson.dart +++ b/lib/proto/login.pbjson.dart @@ -18,6 +18,8 @@ const LoginAccountRes$json = const { '2': const [ const {'1': 'ErrorCode', '3': 1, '4': 1, '5': 5, '10': 'ErrorCode'}, const {'1': 'HttpAddr', '3': 2, '4': 1, '5': 9, '10': 'HttpAddr'}, + const {'1': 'IsTransHKInter', '3': 3, '4': 1, '5': 8, '10': 'IsTransHKInter'}, + const {'1': 'IsReceipt', '3': 4, '4': 1, '5': 8, '10': 'IsReceipt'}, ], }; diff --git a/lib/proto/login.proto b/lib/proto/login.proto old mode 100644 new mode 100755 index 7170cd6..c752a79 --- a/lib/proto/login.proto +++ b/lib/proto/login.proto @@ -10,6 +10,8 @@ message LoginAccountReq { message LoginAccountRes { optional int32 ErrorCode = 1; //0 成功 1参数错误 2签名错误 3用户不存在 4用户已登陆 optional string HttpAddr = 2; //服务器对应http服务地址 + optional bool IsTransHKInter = 3; //是否是翻译人员 + optional bool IsReceipt = 4; //是否接单 } //Msg = 3 推送用户推出登陆状态 diff --git a/lib/proto/transhousekeeper.pb.dart b/lib/proto/transhousekeeper.pb.dart index 927f703..af427b5 100644 --- a/lib/proto/transhousekeeper.pb.dart +++ b/lib/proto/transhousekeeper.pb.dart @@ -260,6 +260,64 @@ class EndTransHKOrderRes extends $pb.GeneratedMessage { void clearOrderId() => clearField(2); } +class TransHKInterSetIsReceiptReq extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo('TransHKInterSetIsReceiptReq', package: const $pb.PackageName('yl_pb')) + ..aOB(1, 'isReceipt') + ..hasRequiredFields = false + ; + + TransHKInterSetIsReceiptReq._() : super(); + factory TransHKInterSetIsReceiptReq() => create(); + factory TransHKInterSetIsReceiptReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory TransHKInterSetIsReceiptReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + TransHKInterSetIsReceiptReq clone() => TransHKInterSetIsReceiptReq()..mergeFromMessage(this); + TransHKInterSetIsReceiptReq copyWith(void Function(TransHKInterSetIsReceiptReq) updates) => super.copyWith((message) => updates(message as TransHKInterSetIsReceiptReq)); + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static TransHKInterSetIsReceiptReq create() => TransHKInterSetIsReceiptReq._(); + TransHKInterSetIsReceiptReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + static TransHKInterSetIsReceiptReq getDefault() => _defaultInstance ??= create()..freeze(); + static TransHKInterSetIsReceiptReq _defaultInstance; + + $core.bool get isReceipt => $_get(0, false); + set isReceipt($core.bool v) { $_setBool(0, v); } + $core.bool hasIsReceipt() => $_has(0); + void clearIsReceipt() => clearField(1); +} + +class TransHKInterSetIsReceiptRes extends $pb.GeneratedMessage { + static final $pb.BuilderInfo _i = $pb.BuilderInfo('TransHKInterSetIsReceiptRes', package: const $pb.PackageName('yl_pb')) + ..a<$core.int>(1, 'errorCode', $pb.PbFieldType.O3) + ..aOB(2, 'isReceipt') + ..hasRequiredFields = false + ; + + TransHKInterSetIsReceiptRes._() : super(); + factory TransHKInterSetIsReceiptRes() => create(); + factory TransHKInterSetIsReceiptRes.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory TransHKInterSetIsReceiptRes.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + TransHKInterSetIsReceiptRes clone() => TransHKInterSetIsReceiptRes()..mergeFromMessage(this); + TransHKInterSetIsReceiptRes copyWith(void Function(TransHKInterSetIsReceiptRes) updates) => super.copyWith((message) => updates(message as TransHKInterSetIsReceiptRes)); + $pb.BuilderInfo get info_ => _i; + @$core.pragma('dart2js:noInline') + static TransHKInterSetIsReceiptRes create() => TransHKInterSetIsReceiptRes._(); + TransHKInterSetIsReceiptRes createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + static TransHKInterSetIsReceiptRes getDefault() => _defaultInstance ??= create()..freeze(); + static TransHKInterSetIsReceiptRes _defaultInstance; + + $core.int get errorCode => $_get(0, 0); + set errorCode($core.int v) { $_setSignedInt32(0, v); } + $core.bool hasErrorCode() => $_has(0); + void clearErrorCode() => clearField(1); + + $core.bool get isReceipt => $_get(1, false); + set isReceipt($core.bool v) { $_setBool(1, v); } + $core.bool hasIsReceipt() => $_has(1); + void clearIsReceipt() => clearField(2); +} + class DeliveryTransHKOrderPush extends $pb.GeneratedMessage { static final $pb.BuilderInfo _i = $pb.BuilderInfo('DeliveryTransHKOrderPush', package: const $pb.PackageName('yl_pb')) ..aOS(1, 'orderId') diff --git a/lib/proto/transhousekeeper.pbjson.dart b/lib/proto/transhousekeeper.pbjson.dart index 39c5d9b..79b45dd 100644 --- a/lib/proto/transhousekeeper.pbjson.dart +++ b/lib/proto/transhousekeeper.pbjson.dart @@ -86,6 +86,21 @@ const EndTransHKOrderRes$json = const { ], }; +const TransHKInterSetIsReceiptReq$json = const { + '1': 'TransHKInterSetIsReceiptReq', + '2': const [ + const {'1': 'IsReceipt', '3': 1, '4': 1, '5': 8, '10': 'IsReceipt'}, + ], +}; + +const TransHKInterSetIsReceiptRes$json = const { + '1': 'TransHKInterSetIsReceiptRes', + '2': const [ + const {'1': 'ErrorCode', '3': 1, '4': 1, '5': 5, '10': 'ErrorCode'}, + const {'1': 'IsReceipt', '3': 2, '4': 1, '5': 8, '10': 'IsReceipt'}, + ], +}; + const DeliveryTransHKOrderPush$json = const { '1': 'DeliveryTransHKOrderPush', '2': const [ diff --git a/lib/proto/transhousekeeper.proto b/lib/proto/transhousekeeper.proto index 0fa63a7..e763215 100644 --- a/lib/proto/transhousekeeper.proto +++ b/lib/proto/transhousekeeper.proto @@ -65,6 +65,17 @@ message EndTransHKOrderRes{ optional string OrderId = 2; //订单号 } +//翻译官设置是否接单Msg= 9 +message TransHKInterSetIsReceiptReq { + optional bool IsReceipt = 1; //详见错误码文档 +} +//翻译官设置是否接单Msg= 10 +message TransHKInterSetIsReceiptRes { + optional int32 ErrorCode = 1; //详见错误码文档 + optional bool IsReceipt = 2; //详见错误码文档 +} + + //Msg= 20 派送订单推送 message DeliveryTransHKOrderPush { optional string OrderId =1; //订单号 diff --git a/lib/utils/MessageMgr.dart b/lib/utils/MessageMgr.dart index f8dacd0..df93e32 100644 --- a/lib/utils/MessageMgr.dart +++ b/lib/utils/MessageMgr.dart @@ -11,6 +11,7 @@ class MessageMgr { static const String TRANSLATE_HK_CANCEL_ORDER ='translate_hk_cancel_order'; static const String TRANSLATE_HK_START_CHAT ='translate_hk_start_chat'; static const String TRANSLATE_HK_END_CHAT ='translate_hk_end_chat'; + static const String TRANSLATE_HK_IS_RECEIVED_ORDER ='translate_hk_is_receive_order'; //私有构造函数 diff --git a/lib/utils/NetUtil.dart b/lib/utils/NetUtil.dart index 0240379..1af17c5 100644 --- a/lib/utils/NetUtil.dart +++ b/lib/utils/NetUtil.dart @@ -153,6 +153,11 @@ class NetWork { //登陆成功回应 var msgContent = LoginAccountRes.fromBuffer(content); if (msgContent.errorCode == 0) { + + UserData().isTranslateUser =msgContent.isTransHKInter; //是否是翻译人员 + MessageMgr().emit(MessageMgr.TRANSLATE_HK_IS_RECEIVED_ORDER,msgContent.isReceipt);//是否开启接单 + + print('登录成功'); isLogin = true; _stateBloc.addState(ChatState.logined); diff --git a/lib/utils/msgHandler.dart b/lib/utils/msgHandler.dart index 0359296..856421d 100644 --- a/lib/utils/msgHandler.dart +++ b/lib/utils/msgHandler.dart @@ -414,13 +414,10 @@ class MsgHandler { } else if(isTranslateHK){ var myId = UserData().basicInfo.userId; - print('chat.contentBuff:${chat.contentBuff.length}'); TransHKChatNotice notice = TransHKChatNotice.fromBuffer(chat.contentBuff); BaseUserInfo friendId ; - print('chat.contentBuff AAAA'); TranslateHKMgr().isUser = myId== notice.employer.id; ///判断自己是翻译官还是用户 - print('chat.contentBuff BBBB'); if(myId== notice.employer.id){ friendId =notice.inter; }else{ @@ -429,7 +426,7 @@ class MsgHandler { print('friend id: ${friendId.id} '); - + print('结束chat.sendTime ${chat.sendTime}'); int sessionId = chat.targetId; if (chat.cType == ChatType.GroupChatNoticeType) { @@ -917,7 +914,10 @@ class MsgHandler { LocalNotificationUtil.instance .show(I18n.of(context).notice, I18n.of(context).new_video_msg); playAudioRing(); - MessageMgr().emit('Receive AudioChat Request', friendId); + if(TranslateHKMgr().order==null){ + MessageMgr().emit('Receive AudioChat Request', friendId); + } + } } else if (msgId == 14) { var msgContent = PushRealtimeCallRespond.fromBuffer(content); @@ -987,6 +987,8 @@ class MsgHandler { handlerCancellationTransHKOrderPush(content); }else if(msgId==8){ handlerEndTransHKOrderRes(content); + }else if(msgId==10){ + handlerTransHKInterSetIsReceiptRes(content); } break; @@ -1307,6 +1309,33 @@ class MsgHandler { } } + + + + //翻译官开启/关闭接收订单 + static translateReceiptOrStopOrder(bool isReceipt) { + + debugPrint('翻译官开启/关闭接收订单 请求 $isReceipt' ); + var seq = TransHKInterSetIsReceiptReq.create(); + seq.isReceipt = isReceipt; + + NetWork().sendMsg(ComId.TranslateOrder, 9, seq); + } + + // + static handlerTransHKInterSetIsReceiptRes(List msgContent) { + debugPrint('翻译官开启/关闭接收订单 回应'); + var res = TransHKInterSetIsReceiptRes.fromBuffer(msgContent); + if (res.errorCode == 0) { + MessageMgr().emit(MessageMgr.TRANSLATE_HK_IS_RECEIVED_ORDER,res.isReceipt); + + debugPrint('翻译官开启/关闭接收订单 回应成功: ${res.isReceipt}'); + } else { + debugPrint('翻译官开启/关闭接收订单 失败${res.errorCode}'); + } + } + + //撤销订单消息 static sendCancelTranslateOrder( ) {