message_dialog_model.dart
5.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import 'package:audioplayers/audioplayers.dart';
import 'package:common_utils/common_utils.dart';
import 'package:flutter/material.dart';
import 'package:one_key/constant/constant.dart';
import 'package:one_key/models/message.dart';
import 'package:one_key/models/new_unmessage_model.dart';
import 'package:one_key/net/base_resp.dart';
import 'package:one_key/net/dio_util.dart';
import 'package:one_key/net/http_url.dart';
import 'package:one_key/provider/user_model.dart';
import 'package:one_key/utils/dialog_util.dart';
// import 'package:audioplayers/audio_cache.dart';
import 'package:one_key/utils/utils.dart';
import 'package:provider/provider.dart';
class MessageDialogModel extends ChangeNotifier {
final AudioPlayer _player = AudioPlayer();
bool showMessageDialog = false;
List<NewUnmessage>? messages = []; //所有消息用于展示
// List<Message> unMessagesOnline = []; //未读在线预定
// List<Message> unMessagesOrder = []; //未读提前点餐
List<String?> messagesCancelOnlyOneShow = []; //取消预订只展示一次
// void init() {
// _player.load("tts_online.mp3");
// }
/// 播放
void play(String? message_type) {
_player.stop();
switch (message_type) {
case "10": //在线预订
_player.play(AssetSource("tts_online.mp3"));
break;
case "11": //取消在线预订
_player.play(AssetSource("tts_cancel.mp3"));
break;
case "12":
//在线买单消息 去处理 跳转在线买单处理页面
_player.play(AssetSource("tts_pre_pay.mp3"));
break;
case "13":
//在线买单消息 去查看 跳转在线买单详情页面
_player.play(AssetSource("tts_pay.mp3"));
break;
case "14":
//发票详情页面跳转
_player.play(AssetSource("tts_invoice.mp3"));
break;
case "1": //提前点餐
_player.play(AssetSource("tts_order.mp3"));
break;
case "15": //店内消息
break;
case "16": //其他经理取消在线预订
_player.play(AssetSource("tts_new.mp3"));
break;
case "17": //充值会员
_player.play(AssetSource("tts_recharge.mp3"));
break;
case "18": //存酒过期
_player.play(AssetSource("tts_wine_remind.mp3"));
break;
case "-1": //>3
_player.play(AssetSource("tts_all.mp3"));
break;
}
}
//添加一条信息
// addMessage(BuildContext context, NewUnmessage message) {
// LogUtil.v(message.toString());
// play(message.message_type);
// messages.add(message);
// if (!showMessageDialog) {
// DialogUtil.showMessageDialog(context);
// } else {
// notifyListeners();
// }
// }
//移除一条信息
removeMessage(String? mid) {
messages!.removeWhere((message) => message.id == mid);
notifyListeners();
}
//获取未处理在线预订消息
getUntreatedMsg(BuildContext context, Map<String, String?> params,
VoidCallback callback) async {
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.new_get_untreated_msg_list,
data: params, showLoading: false);
List<NewUnmessage>? messagesTemp = [];
if (baseResp != null && baseResp.code == Constant.status_success) {
messagesTemp = baseResp.data['list'].map<NewUnmessage>((value) {
return NewUnmessage.fromJson(value);
}).toList();
// String? uid =
// Provider.of<UserModel>(context, listen: false).user!.openid;
messagesTemp!.removeWhere((message) {
if (message.message_type.toString() == "10") {
if (message.status == "4") {
//取消预定
///此状态移除,不展示
return true;
}
} else if (message.message_type.toString() == "16") {
//移除经理取消的订单
return true;
}
// else if (message.message_type.toString() == "16" &&
// message.uid == uid) {
// //移除自己取消的订单
// return true;
// }
return false;
});
messages = messagesTemp;
// messages.addAll(messagesTemp);
callback();
// if (messages.isNotEmpty) {
// //播放声音
// if (messages.length > 1) {
// play("-1");
// } else {
// for (Message message in messages) {
// play(message.message_type);
// }
// }
// }
}
} catch (error) {
print(error.toString());
}
}
//设置消息状态
setMessageStatus(BuildContext context, Map<String, String?> params) async {
try {
BaseResp<dynamic> baseResp = await DioUtil().request<dynamic>(
context, Method.post, HttpUrl.set_message_status,
data: params, showLoading: false);
if (baseResp.code == Constant.status_success) {
} else {
Utils.showToast(baseResp.msg!);
}
} catch (error) {
print(error.toString());
}
}
}