@@ -5,11 +5,12 @@ | |||
}, | |||
"client":{ | |||
"cp_id":"890086000300385560", | |||
"product_id":"9105385871708389411", | |||
"client_id":"270664671340528640", | |||
"client_secret":"00CC308FC014C334D58CF79471B490FD6274BC39FEAAD89B63E762871DB4EBCC", | |||
"app_id":"101598177", | |||
"package_name":"com.cyhd.henhoandroid" | |||
"product_id":"9105385871708615262", | |||
"client_id":"330243365088003136", | |||
"client_secret":"7A8C08A4377B06C3FE950D55511A0F7CBA4164C9319E06E8401A33BBCBDCFA7C", | |||
"app_id":"101961905", | |||
"package_name":"com.cyhd.henhoandroid", | |||
"api_key":"CV6qgj5CPtQonVHTR8gGJxvdRrkeBaZ+KqTsHcRmUyTtSgpYuBknlD5Z8mb3ob8TH7Kq2FJknGNbmserIjlUfmiuUZ2D" | |||
}, | |||
"service":{ | |||
"analytics":{ | |||
@@ -18,9 +19,9 @@ | |||
"channel_id":"" | |||
}, | |||
"ml":{ | |||
"mlservice_url":"ml-api-dra.ai.hicloud.com,ml-api-dra.ai.dbankcloud.cn" | |||
"mlservice_url":"ml-api-dra.ai.dbankcloud.com,ml-api-dra.ai.dbankcloud.cn" | |||
} | |||
}, | |||
"region":"SG", | |||
"configuration_version":"1.0" | |||
} | |||
} |
@@ -70,7 +70,7 @@ android { | |||
XIAOMI_APPKEY:"MI-5221829498125",//小米平台注册的appkey | |||
XIAOMI_APPID:"MI-2882303761518294125",//小米平台注册的appid | |||
// | |||
HUAWEI_APPID:"101598177",//华为平台注册的appid | |||
HUAWEI_APPID:"101961905",//华为平台注册的appid | |||
OPPO_APPKEY : "OP-cd9ece5049514019842f54d537068018", // OPPO平台注册的appkey | |||
@@ -1226,5 +1226,19 @@ | |||
"forward":"Forward", | |||
"copy_download_url":"复制下载地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有图片违规" | |||
"hava_error_photo":"有图片违规", | |||
"translation_butler_evaluation_tips2": "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -1226,5 +1226,18 @@ | |||
"forward":"转发", | |||
"copy_download_url":"复制下载地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有图片违规" | |||
"hava_error_photo":"有图片违规", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -1226,5 +1226,19 @@ | |||
"forward":"转发", | |||
"copy_download_url":"复制下载地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有图片违规" | |||
"hava_error_photo":"有图片违规", | |||
"translation_butler_evaluation_tips2": "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -1226,5 +1226,18 @@ | |||
"forward": "转发", | |||
"copy_download_url": "复制下载地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有图片违规" | |||
"hava_error_photo":"有图片违规", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -1226,5 +1226,19 @@ | |||
"forward":"转发", | |||
"copy_download_url":"复制下载地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有图片违规" | |||
"hava_error_photo":"有图片违规", | |||
"translation_butler_evaluation_tips2": "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -1226,5 +1226,18 @@ | |||
"forward":"转发", | |||
"copy_download_url":"複製下載地址", | |||
"total_friends_nus":"共/s1位朋友", | |||
"hava_error_photo":"有圖片違規" | |||
"hava_error_photo":"有圖片違規", | |||
"translation_butler_push_order_time": "时间:今天/s1 时长:", | |||
"translation_butler_push_order_time2": "下单时间:今天/s1 等待时长:", | |||
"translation_butler_title3": "大神专属", | |||
"translation_butler_start_receive_order": "开启接单", | |||
"translation_butler_stop_receive_order": "未开启接单", | |||
"translation_butler_stop_tips": "翻译人员无法进入创建订单", | |||
"translation_butler_scenes2": "场景:", | |||
"translation_butler_last_item_start": "[翻译管家服务开始]", | |||
"translation_butler_last_item_end": "[翻译管家服务结束]", | |||
"travel_start": "起点", | |||
"travel_end": "终点", | |||
"translation_butler_order_time_out": "翻译订单超时已被取消" | |||
} |
@@ -30,6 +30,8 @@ PODS: | |||
- connectivity (0.0.1): | |||
- Flutter | |||
- Reachability | |||
- device_info (0.0.1): | |||
- Flutter | |||
- easy_contact_picker (0.0.1): | |||
- Flutter | |||
- FBSDKCoreKit (5.13.1): | |||
@@ -167,6 +169,7 @@ DEPENDENCIES: | |||
- auto_orientation (from `.symlinks/plugins/auto_orientation/ios`) | |||
- city_pickers (from `.symlinks/plugins/city_pickers/ios`) | |||
- connectivity (from `.symlinks/plugins/connectivity/ios`) | |||
- device_info (from `.symlinks/plugins/device_info/ios`) | |||
- easy_contact_picker (from `.symlinks/plugins/easy_contact_picker/ios`) | |||
- file_picker (from `.symlinks/plugins/file_picker/ios`) | |||
- Flutter (from `Flutter`) | |||
@@ -249,6 +252,8 @@ EXTERNAL SOURCES: | |||
:path: ".symlinks/plugins/city_pickers/ios" | |||
connectivity: | |||
:path: ".symlinks/plugins/connectivity/ios" | |||
device_info: | |||
:path: ".symlinks/plugins/device_info/ios" | |||
easy_contact_picker: | |||
:path: ".symlinks/plugins/easy_contact_picker/ios" | |||
file_picker: | |||
@@ -351,6 +356,7 @@ SPEC CHECKSUMS: | |||
Bugly: dbac48b55ad469a97cc4321045cd50df8f63d44f | |||
city_pickers: b0370f4c35c201723b5b7fcce10ec29b59d5bc35 | |||
connectivity: 6e94255659cc86dcbef1d452ad3e0491bb1b3e75 | |||
device_info: cbf09d2ec12aa7110e0b09fabe54b5bd6c8efe74 | |||
easy_contact_picker: 9ab9dc70e8ddde6e76a19ffc482d7bf899868730 | |||
FBSDKCoreKit: 8fb98209109fb684937f05d534305edb18c20207 | |||
FBSDKLoginKit: c7c6ffd9ca9ea45aee32361840af040ad8f6706a | |||
@@ -373,98 +373,110 @@ class _ChatPageState extends State<ChatPage> { | |||
]; | |||
}))); | |||
return Stack( | |||
children: <Widget>[ | |||
MultiProvider( | |||
providers: [ | |||
ChangeNotifierProvider(create: (_) => _keyboardIndexProvider), | |||
Provider<bool>.value(value: false), | |||
Provider<int>.value(value: widget.friendId), | |||
], | |||
child: GestureDetector( | |||
onTap: hideKeyBoard, | |||
child: ExtendedTextSelectionPointerHandler( | |||
///选择文字,消除弹窗 | |||
builder: (states) { | |||
return Listener( | |||
child: Scaffold( | |||
resizeToAvoidBottomInset: false, | |||
backgroundColor: const Color(0xFFE2E9F1), | |||
appBar: AppBar( | |||
title: Text( | |||
'${Provider.of<RefNameProvider>(context).getRefName(friendInfo.userId, friendInfo.nickName)}', | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: Constants.BlackTextColor, | |||
fontSize: 16.47), | |||
), | |||
leading: CustomUI.buildCustomLeading(context,onTap:(){ | |||
if(isTranslateButler && !isTranslateButlerFinish){ | |||
if(UserData().isTranslateUser){ | |||
showToast('翻译服务未结束不能主动结束'); | |||
}else{ | |||
CustomUI.buildTowConfirm( | |||
context, | |||
'是否提前结束翻译管家服务?', | |||
I18n.of(context).confirm, | |||
(){ | |||
setState(() { | |||
isTranslateButlerFinish=true; | |||
}); | |||
MsgHandler.sendEndTransHKOrderReq(); | |||
Navigator.of(context).pop(); | |||
}, | |||
'取消', | |||
(){ Navigator.of(context).pop();}); | |||
} | |||
}else{ | |||
Navigator.of(context).pop(); | |||
} | |||
}), //todo | |||
titleSpacing: -10, | |||
centerTitle: false, | |||
elevation: 1, | |||
actions: actions), | |||
body: SafeArea( | |||
child: Column( | |||
children: <Widget>[ | |||
NetStateWidget(), | |||
(isTranslateButler&!isTranslateButlerFinish) | |||
? _buildTranslationButler() | |||
: Container(), | |||
Expanded(child: _buildMessageList()), | |||
InputBar(sendMsg: sendMsg,isTranslateHK: isTranslateButler,), | |||
], | |||
))), | |||
behavior: HitTestBehavior.translucent, | |||
onPointerDown: (value) { | |||
for (var state in states) { | |||
if (!state.containsPosition(value.position)) { | |||
//clear other selection | |||
state.clearSelection(); | |||
} | |||
} | |||
}, | |||
onPointerMove: (value) { | |||
//clear other selection | |||
for (var state in states) { | |||
if (!state.containsPosition(value.position)) { | |||
return WillPopScope( | |||
child: Stack( | |||
children: <Widget>[ | |||
MultiProvider( | |||
providers: [ | |||
ChangeNotifierProvider(create: (_) => _keyboardIndexProvider), | |||
Provider<bool>.value(value: false), | |||
Provider<int>.value(value: widget.friendId), | |||
], | |||
child: GestureDetector( | |||
onTap: hideKeyBoard, | |||
child: ExtendedTextSelectionPointerHandler( | |||
///选择文字,消除弹窗 | |||
builder: (states) { | |||
return Listener( | |||
child: Scaffold( | |||
resizeToAvoidBottomInset: false, | |||
backgroundColor: const Color(0xFFE2E9F1), | |||
appBar: AppBar( | |||
title: Text( | |||
'${Provider.of<RefNameProvider>(context).getRefName(friendInfo.userId, friendInfo.nickName)}', | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: Constants.BlackTextColor, | |||
fontSize: 16.47), | |||
), | |||
leading: CustomUI.buildCustomLeading(context,onTap:(){ | |||
goBackCheck(); | |||
}), | |||
titleSpacing: -10, | |||
centerTitle: false, | |||
elevation: 1, | |||
actions: actions), | |||
body: SafeArea( | |||
child: Column( | |||
children: <Widget>[ | |||
NetStateWidget(), | |||
(isTranslateButler&!isTranslateButlerFinish) | |||
? _buildTranslationButler() | |||
: Container(), | |||
Expanded(child: _buildMessageList()), | |||
InputBar(sendMsg: sendMsg,isTranslateHK: isTranslateButler,), | |||
], | |||
))), | |||
behavior: HitTestBehavior.translucent, | |||
onPointerDown: (value) { | |||
for (var state in states) { | |||
if (!state.containsPosition(value.position)) { | |||
//clear other selection | |||
state.clearSelection(); | |||
} | |||
} | |||
}, | |||
onPointerMove: (value) { | |||
//clear other selection | |||
state.clearSelection(); | |||
} | |||
} | |||
for (var state in states) { | |||
if (!state.containsPosition(value.position)) { | |||
//clear other selection | |||
state.clearSelection(); | |||
} | |||
} | |||
}, | |||
); | |||
}, | |||
); | |||
}, | |||
))), | |||
isTranslateButler ? getAudioChatView() : Container(), | |||
isTranslateButler ? zoomAudioButton() : Container() | |||
], | |||
); | |||
))), | |||
isTranslateButler ? getAudioChatView() : Container(), | |||
isTranslateButler ? zoomAudioButton() : Container() | |||
], | |||
), | |||
onWillPop: () { | |||
goBackCheck(); | |||
return Future.value(true); | |||
}); | |||
} | |||
goBackCheck(){ | |||
if(isTranslateButler && !isTranslateButlerFinish){ | |||
if(UserData().isTranslateUser){ | |||
showToast('翻译服务未结束不能主动结束'); | |||
}else{ | |||
CustomUI.buildTowConfirm( | |||
context, | |||
'是否提前结束翻译管家服务?', | |||
I18n.of(context).confirm, | |||
(){ | |||
setState(() { | |||
isTranslateButlerFinish=true; | |||
}); | |||
MsgHandler.sendEndTransHKOrderReq(); | |||
Navigator.of(context).pop(); | |||
}, | |||
'取消', | |||
(){ Navigator.of(context).pop();}); | |||
} | |||
}else{ | |||
Navigator.of(context).pop(); | |||
} | |||
} | |||
Widget getAudioChatView() { | |||
@@ -510,7 +522,7 @@ class _ChatPageState extends State<ChatPage> { | |||
bool isShowZoomButton = true; | |||
GlobalKey mykey = GlobalKey(); | |||
double dx = Screen.width , dy = Screen.height/2; | |||
double dx = 0 , dy = 0; | |||
double zoomButtonSize = 60; | |||
void dragEvent(DragUpdateDetails details) { | |||
@@ -1543,6 +1543,9 @@ class _ChatPageItemState extends State<ChatPageItem> | |||
Widget _buildServiceCard(bool isStart, Function callBack) { | |||
String endStr = UserData().isTranslateUser?I18n.of(context).translation_butler_evaluation_tips2:I18n.of(context).translation_butler_evaluation_tips; | |||
return Container( | |||
alignment: Alignment.center, | |||
@@ -1558,28 +1561,28 @@ class _ChatPageItemState extends State<ChatPageItem> | |||
padding: EdgeInsets.only(left: 10, right: 10, top: 15, bottom: 15), | |||
child: Row( | |||
children: <Widget>[ | |||
Column( | |||
crossAxisAlignment: CrossAxisAlignment.start, | |||
children: <Widget>[ | |||
Text( | |||
isStart | |||
? I18n.of(context).translation_butler_start_service | |||
: I18n.of(context).translation_butler_service_end, | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: AppColors.NewAppbarTextColor, fontSize: 15), | |||
), | |||
Text( | |||
isStart | |||
? I18n.of(context).translation_butler_start_tips | |||
: I18n.of(context).translation_butler_evaluation_tips, | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: Color(0xFF797979), fontSize: 13), | |||
) | |||
], | |||
), | |||
isStart | |||
Expanded(child: Container( child: Column( | |||
crossAxisAlignment: CrossAxisAlignment.start, | |||
children: <Widget>[ | |||
Text( | |||
isStart | |||
? I18n.of(context).translation_butler_start_service | |||
: I18n.of(context).translation_butler_service_end, | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: AppColors.NewAppbarTextColor, fontSize: 15), | |||
), | |||
Text( | |||
isStart | |||
? I18n.of(context).translation_butler_start_tips | |||
: endStr, | |||
textScaleFactor: 1.0, | |||
style: TextStyle( | |||
color: Color(0xFF797979), fontSize: 13), | |||
), | |||
], | |||
),)), | |||
(isStart||UserData().isTranslateUser) | |||
? Container() | |||
: Expanded( | |||
child: Container( | |||
@@ -7,6 +7,7 @@ class TranslateOrder{ | |||
int tLanguage; | |||
int scenes; | |||
String desc; | |||
String userName; | |||
} | |||
class TranslateHKMgr { | |||
@@ -25,6 +26,7 @@ class TranslateHKMgr { | |||
String orderId; ///用户发起的订单Id | |||
int waitNum=0; | |||
int startWaitTime=0; | |||
bool isUser=false; ///是用户或者翻译官 | |||
@@ -2489,6 +2489,32 @@ class I18n implements WidgetsLocalizations { | |||
String get total_friends_nus => "共/s1位朋友"; | |||
/// "有图片违规" | |||
String get hava_error_photo => "有图片违规"; | |||
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知" | |||
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"; | |||
/// "时间:今天/s1 时长:" | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
} | |||
class _I18n_en_US extends I18n { | |||
@@ -6185,6 +6211,42 @@ class _I18n_vi_VN extends I18n { | |||
/// "有图片违规" | |||
@override | |||
String get hava_error_photo => "有图片违规"; | |||
/// "时间:今天/s1 时长:" | |||
@override | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
@override | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
@override | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
@override | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
@override | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
@override | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
@override | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
@override | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
@override | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
@override | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
@override | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
@override | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
@override | |||
TextDirection get textDirection => TextDirection.ltr; | |||
@@ -9877,6 +9939,42 @@ class _I18n_zh_HK extends I18n { | |||
/// "有圖片違規" | |||
@override | |||
String get hava_error_photo => "有圖片違規"; | |||
/// "时间:今天/s1 时长:" | |||
@override | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
@override | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
@override | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
@override | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
@override | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
@override | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
@override | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
@override | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
@override | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
@override | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
@override | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
@override | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
@override | |||
TextDirection get textDirection => TextDirection.ltr; | |||
@@ -13569,6 +13667,45 @@ class _I18n_zh_CN extends _I18n_zh_HK { | |||
/// "有图片违规" | |||
@override | |||
String get hava_error_photo => "有图片违规"; | |||
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知" | |||
@override | |||
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"; | |||
/// "时间:今天/s1 时长:" | |||
@override | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
@override | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
@override | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
@override | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
@override | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
@override | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
@override | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
@override | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
@override | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
@override | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
@override | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
@override | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
@override | |||
TextDirection get textDirection => TextDirection.ltr; | |||
@@ -14795,9 +14932,9 @@ class _I18n_ko_KR extends I18n { | |||
/// "그의 사교 아이디" | |||
@override | |||
String get his_account => "그의 사교 아이디"; | |||
/// "복제" | |||
/// "복사" | |||
@override | |||
String get copy => "복제"; | |||
String get copy => "복사"; | |||
/// "내 사교 아이디를 보내기" | |||
@override | |||
String get send_account => "내 사교 아이디를 보내기"; | |||
@@ -15155,12 +15292,12 @@ class _I18n_ko_KR extends I18n { | |||
/// "앱을 친구에게 공유하다" | |||
@override | |||
String get share_app => "앱을 친구에게 공유하다"; | |||
/// "질문이 있으니까 도움이 필요하다" | |||
/// "질문&도움" | |||
@override | |||
String get need_help => "질문이 있으니까 도움이 필요하다"; | |||
/// "고객을 연락하다" | |||
String get need_help => "질문&도움"; | |||
/// "고객센터" | |||
@override | |||
String get need_help2 => "고객을 연락하다"; | |||
String get need_help2 => "고객센터"; | |||
/// "서비스 효율을 높이기 위해서 아래에 문제가 있으면 숫자를 바로 답장하십시오!" | |||
@override | |||
String get need_help3 => "서비스 효율을 높이기 위해서 아래에 문제가 있으면 숫자를 바로 답장하십시오!"; | |||
@@ -17261,6 +17398,45 @@ class _I18n_ko_KR extends I18n { | |||
/// "有图片违规" | |||
@override | |||
String get hava_error_photo => "有图片违规"; | |||
/// "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知" | |||
@override | |||
String get translation_butler_evaluation_tips2 => "翻译服务已结束,辛苦你了。请保持在线,留意新订单通知"; | |||
/// "时间:今天/s1 时长:" | |||
@override | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
@override | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
@override | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
@override | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
@override | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
@override | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
@override | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
@override | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
@override | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
@override | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
@override | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
@override | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
@override | |||
TextDirection get textDirection => TextDirection.ltr; | |||
@@ -20953,6 +21129,42 @@ class _I18n_ja_JP extends I18n { | |||
/// "有图片违规" | |||
@override | |||
String get hava_error_photo => "有图片违规"; | |||
/// "时间:今天/s1 时长:" | |||
@override | |||
String get translation_butler_push_order_time => "时间:今天/s1 时长:"; | |||
/// "下单时间:今天/s1 等待时长:" | |||
@override | |||
String get translation_butler_push_order_time2 => "下单时间:今天/s1 等待时长:"; | |||
/// "大神专属" | |||
@override | |||
String get translation_butler_title3 => "大神专属"; | |||
/// "开启接单" | |||
@override | |||
String get translation_butler_start_receive_order => "开启接单"; | |||
/// "未开启接单" | |||
@override | |||
String get translation_butler_stop_receive_order => "未开启接单"; | |||
/// "翻译人员无法进入创建订单" | |||
@override | |||
String get translation_butler_stop_tips => "翻译人员无法进入创建订单"; | |||
/// "场景:" | |||
@override | |||
String get translation_butler_scenes2 => "场景:"; | |||
/// "[翻译管家服务开始]" | |||
@override | |||
String get translation_butler_last_item_start => "[翻译管家服务开始]"; | |||
/// "[翻译管家服务结束]" | |||
@override | |||
String get translation_butler_last_item_end => "[翻译管家服务结束]"; | |||
/// "起点" | |||
@override | |||
String get travel_start => "起点"; | |||
/// "终点" | |||
@override | |||
String get travel_end => "终点"; | |||
/// "翻译订单超时已被取消" | |||
@override | |||
String get translation_butler_order_time_out => "翻译订单超时已被取消"; | |||
@override | |||
TextDirection get textDirection => TextDirection.ltr; | |||
@@ -279,7 +279,7 @@ class _HomeMainState extends State<HomeMain> { | |||
TranslateOrder order = data; | |||
CustomUI.buildTranslationHelperOrderDialog(context,false,orderId: order.orderId,scenes: order.scenes,desc: order.desc,createTime: order.createTime); | |||
CustomUI.buildTranslationHelperOrderDialog(context,false,orderId: order.orderId,scenes: order.scenes,desc: order.desc,createTime: order.createTime,userName: order.userName); | |||
} | |||
startTranslateHKChat(var friendID){ | |||
@@ -3,7 +3,10 @@ import 'package:chat/home/realtimehelper/translation_butler_page.dart'; | |||
import 'package:chat/home/realtimehelper/travel_butler_page.dart'; | |||
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/screen.dart'; | |||
import 'package:dio/dio.dart'; | |||
import 'package:flutter/cupertino.dart'; | |||
import 'package:flutter/material.dart'; | |||
import 'package:oktoast/oktoast.dart'; | |||
@@ -25,19 +28,64 @@ class RealTimeHelperPage extends StatefulWidget { | |||
class RealTimeHelperPageState extends State<RealTimeHelperPage> { | |||
bool isTranslateHKLogin = true; | |||
bool isTranslateHKLogin = false; | |||
bool isReady=false; | |||
@override | |||
void initState() { | |||
super.initState(); | |||
MessageMgr().on('update_system',refresh); | |||
WidgetsBinding.instance.addPostFrameCallback((_) { | |||
isTranslateAndStatus(); | |||
}); | |||
} | |||
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']}'); | |||
} | |||
} | |||
@override | |||
void dispose() { | |||
// MessageMgr().off('Update Group Info', updateGroupInfo); | |||
super.dispose(); | |||
MessageMgr().on('update_system',refresh); | |||
} | |||
@override | |||
Widget build(BuildContext context) { | |||
Widget appBar = AppBar( | |||
@@ -80,7 +128,7 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> { | |||
children: <Widget>[ | |||
Container( | |||
alignment: Alignment.center, | |||
child: fixedText('大神专属', color: Colors.white, fontSize: 21), | |||
child: fixedText(I18n.of(context).translation_butler_title3, color: Colors.white, fontSize: 21), | |||
), | |||
UnconstrainedBox(child: InkWell(onTap: (){ | |||
@@ -99,16 +147,16 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> { | |||
decoration: BoxDecoration( | |||
border: Border.all(color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, width: 1), | |||
borderRadius: BorderRadius.circular(11)), | |||
child: fixedText(isTranslateHKLogin?'开启接单':'未开启接单', color: isTranslateHKLogin?Color(0xFFFEE645):Colors.white, fontSize: 15), | |||
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), | |||
),),), | |||
Container( | |||
padding: EdgeInsets.only(left: 13,top: 20), | |||
child: fixedText('实时帮', color: Colors.white, fontSize: 22,fontWeight: FontWeight.w700), | |||
child: fixedText(I18n.of(context).real_time_helper, color: Colors.white, fontSize: 22,fontWeight: FontWeight.w700), | |||
), | |||
helperCard(I18n.of(context).translation_butler, | |||
R.assetsImagesImgTranslationButler, () { | |||
if (UserData().isTranslateUser) { | |||
showToast('翻译人员无法进入创建订单'); | |||
showToast(I18n.of(context).translation_butler_stop_tips); | |||
} else { | |||
Navigator.of(context).push( | |||
MaterialPageRoute( | |||
@@ -199,7 +247,7 @@ class RealTimeHelperPageState extends State<RealTimeHelperPage> { | |||
), | |||
), | |||
), | |||
onTap: callBack, | |||
onTap: isReady?callBack:null, | |||
); | |||
} | |||
} |
@@ -1,4 +1,5 @@ | |||
import 'dart:async'; | |||
import 'dart:ffi'; | |||
import 'package:chat/data/UserData.dart'; | |||
import 'package:chat/data/translate_hk_data_mgr.dart'; | |||
@@ -84,6 +85,12 @@ class TranslationButlerPageState extends State<TranslationButlerPage> { | |||
setState(() {}); | |||
} | |||
///订单没有人接,超时,服务器会发送取消订单通知 | |||
cancelOrder(args){ | |||
TranslateHKMgr().orderStatus = TranslateHKMgr.ORDER_STATUS_EMPTY; | |||
refreshOrder(null); | |||
} | |||
@override | |||
void initState() { | |||
super.initState(); | |||
@@ -94,7 +101,7 @@ class TranslationButlerPageState extends State<TranslationButlerPage> { | |||
initData(); | |||
MessageMgr().on(MessageMgr.TRANSLATE_HK_REFRESH_ORDER, refreshOrder); | |||
MessageMgr().on(MessageMgr.TRANSLATE_HK_CANCEL_ORDER, cancelOrder); | |||
WidgetsBinding.instance.addPostFrameCallback((_) { | |||
@@ -143,7 +150,7 @@ class TranslationButlerPageState extends State<TranslationButlerPage> { | |||
return; | |||
} | |||
isCreatingOrder=true; | |||
TranslateHKMgr().startWaitTime=DateTime.now().millisecondsSinceEpoch; | |||
MsgHandler.sendCreateTranslateOrder(langList[curSourceLang].key,langList[curToLang].key,scenesList[curScenes].key,extraMsg); | |||
extraMsg=''; | |||
@@ -176,6 +183,7 @@ class TranslationButlerPageState extends State<TranslationButlerPage> { | |||
void dispose() { | |||
waitTimer?.cancel(); | |||
MessageMgr().off(MessageMgr.TRANSLATE_HK_REFRESH_ORDER, refreshOrder); | |||
MessageMgr().off(MessageMgr.TRANSLATE_HK_CANCEL_ORDER, cancelOrder); | |||
if (orderStatus==TranslateHKMgr.ORDER_STATUS_WAITING && timeStamp != null) { | |||
print('保存时间戳$timeStamp'); | |||
SPUtils.save(Constants.TranslationHelper, timeStamp.toString()); | |||
@@ -1,3 +1,4 @@ | |||
import 'package:chat/data/UserData.dart'; | |||
import 'package:chat/data/constants.dart'; | |||
import 'package:chat/data/translate_hk_data_mgr.dart'; | |||
import 'package:chat/generated/i18n.dart'; | |||
@@ -18,13 +19,15 @@ class TranslateOrderPushPage extends StatefulWidget { | |||
String desc; | |||
Function userStartChat; | |||
int createTime; | |||
String userName; | |||
TranslateOrderPushPage(this.isUser, | |||
{this.orderId, | |||
this.scenes, | |||
this.desc, | |||
this.userStartChat, | |||
this.createTime}); | |||
this.createTime, | |||
this.userName}); | |||
@override | |||
State<StatefulWidget> createState() { | |||
@@ -59,6 +62,10 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> { | |||
super.didChangeDependencies(); | |||
} | |||
String withZero(int num){ | |||
return num<10?'0$num':'$num'; | |||
} | |||
@override | |||
Widget build(BuildContext context) { | |||
// TODO: implement build | |||
@@ -69,8 +76,19 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> { | |||
I18n.of(context).translation_scenes_4, | |||
]; | |||
String translateStr= '时间:今天11:45 时长:5${I18n.of(context).minute}'; | |||
String userStr= '下单时间:今天11:45 等待时长:10分钟'; | |||
DateTime date = UserData().isTranslateUser?DateTime.now():DateTime.fromMillisecondsSinceEpoch(TranslateHKMgr().startWaitTime); | |||
String time = '${withZero(date.hour)}:${withZero(date.minute)}'; | |||
int second = (DateTime.now().millisecondsSinceEpoch-TranslateHKMgr().startWaitTime)~/1000; | |||
String userWaitStr ; | |||
if( second>60){ | |||
userWaitStr = (second~/60).toString()+I18n.of(context).minute; | |||
}else{ | |||
userWaitStr = second.toString()+I18n.of(context).second; | |||
} | |||
String translateStr= I18n.of(context).translation_butler_push_order_time.replaceAll('/s1', time)+'5${I18n.of(context).minute}'; | |||
String userStr= I18n.of(context).translation_butler_push_order_time2.replaceAll('/s1', time)+userWaitStr; | |||
return UnconstrainedBox( | |||
alignment: Alignment.topCenter, | |||
@@ -109,7 +127,7 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> { | |||
), | |||
Text( | |||
I18n.of(context).translation_butler_dialog_order.replaceAll( | |||
'/s1', widget.isUser ? I18n.of(context).you : 'xxx'), | |||
'/s1', widget.isUser ? I18n.of(context).you : widget.userName), | |||
textScaleFactor: 1.0, | |||
textAlign: TextAlign.left, | |||
style: TextStyle( | |||
@@ -128,7 +146,7 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> { | |||
widget.isUser | |||
? Container() | |||
: Text( | |||
'场景:${scenesList[widget.scenes]}', | |||
'${I18n.of(context).translation_butler_scenes2}:${scenesList[widget.scenes]}', | |||
textScaleFactor: 1.0, | |||
textAlign: TextAlign.left, | |||
style: | |||
@@ -138,7 +156,7 @@ class TranslateOrderPushPageState extends State<TranslateOrderPushPage> { | |||
widget.isUser | |||
? Container() | |||
: Text( | |||
'更多描述:${widget.desc}', | |||
'${I18n.of(context).translation_more_desc}:${widget.desc}', | |||
textScaleFactor: 1.0, | |||
textAlign: TextAlign.left, | |||
style: | |||
@@ -247,7 +247,7 @@ class TravelButlerPageState extends State<TravelButlerPage> { | |||
Widget positionLayout(bool isStart){ | |||
String str = isStart?'我的位置':'你要去哪儿'; | |||
String str = isStart?I18n.of(context).travel_my_location:I18n.of(context).travel_go_where; | |||
if(isStart && startResult!=null && startResult.address!=null){ | |||
str = startResult.address; | |||
}else if (!isStart && endResult!=null &&endResult.address!=null){ | |||
@@ -255,7 +255,7 @@ class TravelButlerPageState extends State<TravelButlerPage> { | |||
} | |||
return Container(height:50,child: Row(mainAxisSize: MainAxisSize.max, children: <Widget>[ | |||
Expanded(child: Container( child: fixedText(str,color: Colors.black,fontSize: 16),)), | |||
fixedText(isStart?'起点':'终点',color: Color(0xff797979),fontSize: 14) | |||
fixedText(isStart?I18n.of(context).travel_start:I18n.of(context).travel_end,color: Color(0xff797979),fontSize: 14) | |||
],),); | |||
@@ -140,15 +140,14 @@ class _LastMsgDescriptionState extends State<LastMsgDescription> { | |||
if(widget.lastMessageModel.channelType==ChatChannelType.Session.value){ | |||
///翻译管家的 通知消息 | |||
desc = '翻译管家---'; | |||
print('翻译管家的 通知消息-'); | |||
TransHKChatNotice res = TransHKChatNotice.fromBuffer(widget.lastMessageModel.msgContent); | |||
if(res.noticeType==TransHKChatNoticeType.StartChat){ | |||
return '[翻译管家服务开始]'; | |||
desc = I18n.of(Constants.getCurrentContext()).translation_butler_last_item_start; | |||
}else if(res.noticeType==TransHKChatNoticeType.EndChat){ | |||
return '[翻译管家服务结束]'; | |||
desc = I18n.of(Constants.getCurrentContext()).translation_butler_last_item_end; | |||
}else{ | |||
return ''; | |||
desc = ''; | |||
} | |||
@@ -263,10 +263,11 @@ class EndTransHKOrderRes extends $pb.GeneratedMessage { | |||
class DeliveryTransHKOrderPush extends $pb.GeneratedMessage { | |||
static final $pb.BuilderInfo _i = $pb.BuilderInfo('DeliveryTransHKOrderPush', package: const $pb.PackageName('yl_pb')) | |||
..aOS(1, 'orderId') | |||
..aInt64(2, 'createTime') | |||
..a<$core.int>(3, 'tLanguage', $pb.PbFieldType.OU3) | |||
..a<$core.int>(4, 'scenes', $pb.PbFieldType.O3) | |||
..aOS(5, 'desc') | |||
..a<$0.BaseUserInfo>(2, 'employer', $pb.PbFieldType.OM, $0.BaseUserInfo.getDefault, $0.BaseUserInfo.create) | |||
..aInt64(3, 'createTime') | |||
..a<$core.int>(4, 'tLanguage', $pb.PbFieldType.OU3) | |||
..a<$core.int>(5, 'scenes', $pb.PbFieldType.O3) | |||
..aOS(6, 'desc') | |||
..hasRequiredFields = false | |||
; | |||
@@ -289,25 +290,30 @@ class DeliveryTransHKOrderPush extends $pb.GeneratedMessage { | |||
$core.bool hasOrderId() => $_has(0); | |||
void clearOrderId() => clearField(1); | |||
Int64 get createTime => $_getI64(1); | |||
set createTime(Int64 v) { $_setInt64(1, v); } | |||
$core.bool hasCreateTime() => $_has(1); | |||
void clearCreateTime() => clearField(2); | |||
$core.int get tLanguage => $_get(2, 0); | |||
set tLanguage($core.int v) { $_setUnsignedInt32(2, v); } | |||
$core.bool hasTLanguage() => $_has(2); | |||
void clearTLanguage() => clearField(3); | |||
$core.int get scenes => $_get(3, 0); | |||
set scenes($core.int v) { $_setSignedInt32(3, v); } | |||
$core.bool hasScenes() => $_has(3); | |||
void clearScenes() => clearField(4); | |||
$core.String get desc => $_getS(4, ''); | |||
set desc($core.String v) { $_setString(4, v); } | |||
$core.bool hasDesc() => $_has(4); | |||
void clearDesc() => clearField(5); | |||
$0.BaseUserInfo get employer => $_getN(1); | |||
set employer($0.BaseUserInfo v) { setField(2, v); } | |||
$core.bool hasEmployer() => $_has(1); | |||
void clearEmployer() => clearField(2); | |||
Int64 get createTime => $_getI64(2); | |||
set createTime(Int64 v) { $_setInt64(2, v); } | |||
$core.bool hasCreateTime() => $_has(2); | |||
void clearCreateTime() => clearField(3); | |||
$core.int get tLanguage => $_get(3, 0); | |||
set tLanguage($core.int v) { $_setUnsignedInt32(3, v); } | |||
$core.bool hasTLanguage() => $_has(3); | |||
void clearTLanguage() => clearField(4); | |||
$core.int get scenes => $_get(4, 0); | |||
set scenes($core.int v) { $_setSignedInt32(4, v); } | |||
$core.bool hasScenes() => $_has(4); | |||
void clearScenes() => clearField(5); | |||
$core.String get desc => $_getS(5, ''); | |||
set desc($core.String v) { $_setString(5, v); } | |||
$core.bool hasDesc() => $_has(5); | |||
void clearDesc() => clearField(6); | |||
} | |||
class CancellationTransHKOrderPush extends $pb.GeneratedMessage { | |||
@@ -90,10 +90,11 @@ const DeliveryTransHKOrderPush$json = const { | |||
'1': 'DeliveryTransHKOrderPush', | |||
'2': const [ | |||
const {'1': 'OrderId', '3': 1, '4': 1, '5': 9, '10': 'OrderId'}, | |||
const {'1': 'CreateTime', '3': 2, '4': 1, '5': 3, '10': 'CreateTime'}, | |||
const {'1': 'TLanguage', '3': 3, '4': 1, '5': 13, '10': 'TLanguage'}, | |||
const {'1': 'Scenes', '3': 4, '4': 1, '5': 5, '10': 'Scenes'}, | |||
const {'1': 'Desc', '3': 5, '4': 1, '5': 9, '10': 'Desc'}, | |||
const {'1': 'Employer', '3': 2, '4': 1, '5': 11, '6': '.yl_pb.BaseUserInfo', '10': 'Employer'}, | |||
const {'1': 'CreateTime', '3': 3, '4': 1, '5': 3, '10': 'CreateTime'}, | |||
const {'1': 'TLanguage', '3': 4, '4': 1, '5': 13, '10': 'TLanguage'}, | |||
const {'1': 'Scenes', '3': 5, '4': 1, '5': 5, '10': 'Scenes'}, | |||
const {'1': 'Desc', '3': 6, '4': 1, '5': 9, '10': 'Desc'}, | |||
], | |||
}; | |||
@@ -68,10 +68,11 @@ message EndTransHKOrderRes{ | |||
//Msg= 20 派送订单推送 | |||
message DeliveryTransHKOrderPush { | |||
optional string OrderId =1; //订单号 | |||
optional int64 CreateTime = 2; //创建时间 | |||
optional uint32 TLanguage =3; //翻译语言 | |||
optional int32 Scenes =4; //场景 | |||
optional string Desc =5; //描述 | |||
optional BaseUserInfo Employer = 2; //雇主 | |||
optional int64 CreateTime = 3; //创建时间 | |||
optional uint32 TLanguage =4; //翻译语言 | |||
optional int32 Scenes =5; //场景 | |||
optional string Desc =6; //描述 | |||
} | |||
//Msg= 21 订单取消推送 | |||
@@ -1267,11 +1267,11 @@ class CustomUI { | |||
///** isUser 是否是用户,或为 翻译 | |||
static void buildTranslationHelperOrderDialog( | |||
BuildContext context, bool isUser, | |||
{String orderId, int scenes = 0, String desc,Function userStartChat,int createTime}) { | |||
{String orderId, int scenes = 0, String desc,Function userStartChat,int createTime,String userName}) { | |||
Navigator.of(context).push(TutorialOverlay( | |||
child: TranslateOrderPushPage(isUser,orderId: orderId,scenes: scenes,desc: desc,userStartChat: userStartChat,createTime: createTime,), | |||
child: TranslateOrderPushPage(isUser,orderId: orderId,scenes: scenes,desc: desc,userStartChat: userStartChat,createTime: createTime,userName: userName,), | |||
)); | |||
} | |||
@@ -1502,6 +1502,7 @@ String mobileType = ''; | |||
"type": isLogin?1:2, | |||
}; | |||
data['sign'] = TokenMgr().getSign(data); | |||
print('请求data : $data'); | |||
Response res = await HttpUtil().post('steward/loginRecord', data: data); | |||
if (res == null) { | |||
@@ -1516,4 +1517,8 @@ String mobileType = ''; | |||
print('翻译人员上线、下线 失败 ${resData['msg']}'); | |||
} | |||
} | |||
} |
@@ -1342,6 +1342,7 @@ class MsgHandler { | |||
order.createTime=res.createTime.toInt(); | |||
order.tLanguage=res.tLanguage.toInt(); | |||
order.scenes=res.scenes.toInt(); | |||
order.userName = res.employer.niceName; | |||
TranslateHKMgr().order = order; | |||
MessageMgr().emit(MessageMgr.TRANSLATE_HK_RECEIVE_ORDER, order); | |||
@@ -1356,7 +1357,7 @@ class MsgHandler { | |||
TranslateHKMgr().order = null; | |||
MessageMgr().emit(MessageMgr.TRANSLATE_HK_CANCEL_ORDER); | |||
showToast('派送订单已被取消'); | |||
showToast(I18n.of(context).translation_butler_order_time_out); | |||
} | |||