Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
ManageUserScreen.cs
浏览该文件的文档.
1//abandoned
2/*using Engine;
3using Engine.Graphics;
4using Game;
5using System.Text.Json;
6using System.Xml.Linq;
7
8public class ManageUserScreen : Screen
9{
10 public class ComUserInfo
11 {
12 public int Id;
13 public string UserNo;
14 public string Name;
15 public string Token;
16 public string LastLoginTime;
17 public int ErrCount;
18 public int IsLock;
19 public string LockTime;
20 public string UnlockTime;
21 public int LockDuration;
22 public int Money;
23 public string Authority;
24 public string HeadImg;
25 public int IsAdmin;
26 public string RegTime;
27 public string LoginIP;
28 public string MGroup;
29 public string PawToken;
30 public string Email;
31 public int Status = 1;
32 public string LockReason;
33 public int EmailCount;
34 public string EmailTime;
35 public int Die;
36 public string Moblie;
37 public string AreaCode;
38 public Texture2D ImgTexture;
39 }
40
41 public enum Filter
42 {
43 All = 0,
44 Blacklisted = 1,
45 Admin = 2,
46 Inactive = 3,
47 Die = 4
48 }
49
50 public enum SearchType
51 {
52 ByUserId = 0,
53 ByUserNo = 1,
54 ByName = 2,
55 ByEmail = 3,
56 ByToken = 4,
57 ByLoginIP = 5,
58 ByLockReason = 6
59 }
60
61 public static string fName = "ManageUserScreen";
62
63 public ListPanelWidget m_contentList;
64
65 public ButtonWidget m_lockButton;
66
67 public ButtonWidget m_resetButton;
68
69 public ButtonWidget m_orderButton;
70
71 public ButtonWidget m_filterButton;
72
73 public ButtonWidget m_searchButton;
74
75 public ButtonWidget m_searchTypeButton;
76
77 public LabelWidget m_filterLabel;
78
79 public Filter m_filter;
80
81 public SearchType m_searchType;
82
83 public TextBoxWidget m_searchKeyTextBox;
84
85 public LinkWidget m_moreLink;
86
87 public bool m_order;
88
89 public ManageUserScreen()
90 {
91 XElement node = ContentManager.Get<XElement>("Screens/ManageUserScreen");
92 LoadContents(this, node);
93 m_contentList = Children.Find<ListPanelWidget>("ContentList");
94 m_lockButton = Children.Find<ButtonWidget>("Lock");
95 m_resetButton = Children.Find<ButtonWidget>("Reset");
96 m_orderButton = Children.Find<ButtonWidget>("Order");
97 m_filterLabel = Children.Find<LabelWidget>("Filter");
98 m_filterButton = Children.Find<ButtonWidget>("ChangeFilter");
99 m_searchButton = Children.Find<ButtonWidget>("Search");
100 m_searchTypeButton = Children.Find<ButtonWidget>("SearchType");
101 m_searchKeyTextBox = Children.Find<TextBoxWidget>("SearchKey");
102 m_contentList.ItemWidgetFactory = delegate (object obj)
103 {
104 ComUserInfo listItem = obj as ComUserInfo;
105 if (listItem != null)
106 {
107 XElement node2 = ContentManager.Get<XElement>("Widgets/BlocksTextureItem");
108 ContainerWidget containerWidget = (ContainerWidget)LoadWidget(this, node2, null);
109 RectangleWidget rectangleWidget = containerWidget.Children.Find<RectangleWidget>("BlocksTextureItem.Icon");
110 LabelWidget labelWidget = containerWidget.Children.Find<LabelWidget>("BlocksTextureItem.Text");
111 LabelWidget labelWidget2 = containerWidget.Children.Find<LabelWidget>("BlocksTextureItem.Details");
112 rectangleWidget.Subtexture = listItem.ImgTexture == null ? ContentManager.Get<Subtexture>("Textures/headimg") : new Subtexture(listItem.ImgTexture, Vector2.Zero, Vector2.One);
113 rectangleWidget.TextureLinearFilter = true;
114 labelWidget.Text = $"{listItem.Name} ID:{listItem.Id} 账号:{listItem.UserNo}";
115 if (listItem.IsLock == 1)
116 {
117 labelWidget2.Text = "锁定时长: " + ((int)(listItem.LockDuration / 8.64f) / 10000f) + "天";
118 labelWidget2.Text += " 解锁时间: " + GetMsg(listItem.UnlockTime);
119 labelWidget2.Text += " 锁定原因:" + GetMsg(listItem.LockReason);
120 }
121 else
122 {
123 labelWidget2.Text = $"经验:{GetMsg(listItem.Money)} 邮箱:{GetMsg(listItem.Email)} IP地址:{GetMsg(listItem.LoginIP)}";
124 }
125 labelWidget.Color = Color.White;
126 if (listItem.IsLock == 1)
127 {
128 labelWidget.Color = Color.LightBlue;
129 }
130 else if (listItem.IsAdmin == 1)
131 {
132 labelWidget.Color = Color.Green;
133 }
134 else if (listItem.Die == 1)
135 {
136 labelWidget.Color = Color.Red;
137 }
138 else if (listItem.Status == 0)
139 {
140 labelWidget.Color = Color.Gray;
141 }
142 return containerWidget;
143 }
144 else
145 {
146 XElement node2 = ContentManager.Get<XElement>("Widgets/CommunityContentItemMore");
147 ContainerWidget containerWidget = (ContainerWidget)LoadWidget(this, node2, null);
148 m_moreLink = containerWidget.Children.Find<LinkWidget>("CommunityContentItemMore.Link");
149 m_moreLink.Tag = obj as string;
150 return containerWidget;
151 }
152 };
153 m_contentList.ItemClicked += obj =>
154 {
155 ComUserInfo listItem = obj as ComUserInfo;
156 if (listItem != null && m_contentList.SelectedItem == listItem)
157 {
158 string msg = $"用户ID: {listItem.Id}\n用户名: {GetMsg(listItem.UserNo)}\n昵称: {GetMsg(listItem.Name)}\n邮箱{GetMsg(listItem.Email)}\nIP:{GetMsg(listItem.LoginIP)}";
159 msg += $"\n用户Token: {GetMsg(listItem.Token)}\n状态: " + (listItem.IsLock == 1 ? "锁定" : (listItem.Status == 0 ? "未激活" : (listItem.Die == 1 ? "死鱼" : "正常")));
160 msg += "\n是否为管理: " + (listItem.IsAdmin == 1 ? "是" : "否") + " " + "权限等级: " + listItem.Authority;
161 msg += $"\n找回密码Token: {GetMsg(listItem.PawToken)}\n称号组: {GetMsg(listItem.MGroup)}\n注册时间: {GetMsg(listItem.RegTime)}\n最后登录时间: {GetMsg(listItem.LastLoginTime)}";
162 msg += $"\n当天发送邮件次数: {GetMsg(listItem.EmailCount)}\n邮箱锁定时间: {GetMsg(listItem.EmailTime)}";
163 msg += $"\n手机号: {GetMsg(listItem.Moblie)}\n区号: {GetMsg(listItem.AreaCode)}";
164 msg += "\n上次锁定时间: " + GetMsg(listItem.LockTime) + "\n锁定原因: " + GetMsg(listItem.LockReason);
165 msg += "\n锁定时长: " + ((int)(listItem.LockDuration / 8.64f) / 10000f) + "天\n解锁时间: " + GetMsg(listItem.UnlockTime);
166 MessageDialog messageDialog = new("详细信息:" + listItem.Name, msg, LanguageControl.Ok, null, null);
167 DialogsManager.ShowDialog(null, messageDialog);
168 }
169 };
170 }
171
172 public override void Enter(object[] parameters)
173 {
174 m_filter = Filter.All;
175 m_searchType = SearchType.ByName;
176 m_order = false;
177 UpdateList(null);
178 }
179
180 public override void Update()
181 {
182 if (m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
183 {
184 ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
185 if (item.IsAdmin == 1)
186 {
187 m_lockButton.IsEnabled = false;
188 m_resetButton.IsEnabled = false;
189 }
190 else
191 {
192 m_lockButton.IsEnabled = true;
193 m_resetButton.IsEnabled = true;
194 }
195 m_lockButton.Text = (item.IsLock == 1) ? "解锁" : "锁定";
196 }
197 else
198 {
199 m_lockButton.IsEnabled = false;
200 m_resetButton.IsEnabled = false;
201 }
202 m_filterLabel.Text = GetFilterDisplayName(m_filter);
203 if (m_filterButton.IsClicked)
204 {
205 List<int> filters = [.. EnumUtils.GetEnumValues<Filter>()];
206 DialogsManager.ShowDialog(null, new ListSelectionDialog("请选择", filters, 60f, item => GetFilterDisplayName((Filter)item), delegate (object result)
207 {
208 m_filter = (Filter)result;
209 UpdateList(null);
210 }));
211 }
212 m_searchTypeButton.Text = GetSearchTypeName(m_searchType);
213 if (m_searchTypeButton.IsClicked)
214 {
215 List<int> searchTypes = [.. EnumUtils.GetEnumValues<SearchType>()];
216 DialogsManager.ShowDialog(null, new ListSelectionDialog("请选择", searchTypes, 60f, item => GetSearchTypeName((SearchType)item), delegate (object result)
217 {
218 m_searchType = (SearchType)result;
219 }));
220 }
221 if (m_searchButton.IsClicked)
222 {
223 UpdateList(null);
224 }
225 if (m_lockButton.IsClicked && m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
226 {
227 ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
228 if (item.IsLock == 0)
229 {
230 DialogsManager.ShowDialog(null, new TextBoxDialog("请输入锁定原因", item.LockReason, 1024, delegate (string reason)
231 {
232 DialogsManager.ShowDialog(null, new TextBoxDialog("请输入锁定时长,单位为天", "1", 1024, delegate (string duration)
233 {
234 if (!string.IsNullOrEmpty(reason) && !string.IsNullOrEmpty(duration))
235 {
236 CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
237 DialogsManager.ShowDialog(null, busyDialog);
238 int s_duration = (int)(double.Parse(duration) * 86400);
239 CommunityContentManager.UpdateLockState(item.Id, 1, reason, s_duration, busyDialog.Progress, delegate (byte[] data)
240 {
241 DialogsManager.HideDialog(busyDialog);
242 UpdateList(null);
243 JsonElement result = JsonDocument.Parse(data).RootElement;
244 string msg = result[0].GetInt32() == 200 ? "成功锁定:" + item.Name : result[1].GetString();
245 DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
246 }, delegate (Exception e)
247 {
248 DialogsManager.HideDialog(busyDialog);
249 DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
250 });
251 }
252 }));
253 }));
254 }
255 else
256 {
257 DialogsManager.ShowDialog(null, new MessageDialog("确认解锁?", item.Name, LanguageControl.Ok, LanguageControl.Cancel, delegate (MessageDialogButton button)
258 {
259 if (button == MessageDialogButton.Button1)
260 {
261 CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
262 DialogsManager.ShowDialog(null, busyDialog);
263 CommunityContentManager.UpdateLockState(item.Id, 0, "", 0, busyDialog.Progress, delegate (byte[] data)
264 {
265 DialogsManager.HideDialog(busyDialog);
266 UpdateList(null);
267 JsonElement result = JsonDocument.Parse(data).RootElement;
268 string msg = result[0].GetInt32() == 200 ? "成功解锁:" + item.Name : result[1].GetString();
269 DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
270 }, delegate (Exception e)
271 {
272 DialogsManager.HideDialog(busyDialog);
273 DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
274 });
275 }
276 }));
277 }
278 }
279 if (m_resetButton.IsClicked && m_contentList.SelectedItem != null && m_contentList.SelectedItem is ComUserInfo)
280 {
281 ComUserInfo item = (ComUserInfo)m_contentList.SelectedItem;
282 DialogsManager.ShowDialog(null, new MessageDialog("确认重置密码?", item.Name, LanguageControl.Ok, LanguageControl.Cancel, delegate (MessageDialogButton button)
283 {
284 if (button == MessageDialogButton.Button1)
285 {
286 CancellableBusyDialog busyDialog = new("操作等待中", autoHideOnCancel: false);
287 DialogsManager.ShowDialog(null, busyDialog);
288 CommunityContentManager.ResetPassword(item.Id, busyDialog.Progress, delegate (byte[] data)
289 {
290 DialogsManager.HideDialog(busyDialog);
291 JsonElement result = JsonDocument.Parse(data).RootElement;
292 string msg = result[0].GetInt32() == 200 ? "成功重置密码,密码为123456" : result[1].GetString();
293 DialogsManager.ShowDialog(null, new MessageDialog("操作成功", msg, LanguageControl.Ok, null, null));
294 }, delegate (Exception e)
295 {
296 DialogsManager.HideDialog(busyDialog);
297 DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, e.Message, LanguageControl.Ok, null, null));
298 });
299 }
300 }));
301 }
302 if (m_orderButton.IsClicked)
303 {
304 m_order = !m_order;
305 UpdateList(null);
306 }
307 if (m_moreLink != null && m_moreLink.IsClicked)
308 {
309 UpdateList((string)m_moreLink.Tag);
310 }
311 if (Input.Back || Input.Cancel || Children.Find<ButtonWidget>("TopBar.Back").IsClicked)
312 {
313 ScreensManager.SwitchScreen(ScreensManager.PreviousScreen);
314 }
315 }
316
317 public string GetMsg(object msg)
318 {
319 if (string.IsNullOrEmpty(msg.ToString()))
320 {
321 return "Null";
322 }
323 return msg.ToString();
324 }
325
326 public virtual void UpdateList(string cursor)
327 {
328 if (string.IsNullOrEmpty(cursor))
329 {
330 m_contentList.ClearItems();
331 m_contentList.ScrollPosition = 0f;
332 }
333 CancellableBusyDialog busyDialog = new(LanguageControl.Get("CommunityContentScreen", 2), autoHideOnCancel: false);
334 DialogsManager.ShowDialog(null, busyDialog);
335 int order = m_order ? 1 : 0;
336 //CommunityContentManager.UserList(cursor, m_searchKeyTextBox.Text, m_searchType.ToString(), m_filter.ToString(), order, busyDialog.Progress, delegate (List<ComUserInfo> list, string nextCursor)
337 //{
338 //DialogsManager.HideDialog(busyDialog);
339 //while (m_contentList.Items.Count > 0 && !(m_contentList.Items[^1] is ComUserInfo))
340 //{
341 //m_contentList.RemoveItemAt(m_contentList.Items.Count - 1);
342 //}
343 //foreach (ComUserInfo item in list)
344 //{
345 //m_contentList.AddItem(item);
346 //}
347 //if (list.Count > 0 && !string.IsNullOrEmpty(nextCursor))
348 //{
349 //m_contentList.AddItem(nextCursor);
350 //}
351 //}, delegate (Exception error)
352 //{
353 //DialogsManager.HideDialog(busyDialog);
354 //DialogsManager.ShowDialog(null, new MessageDialog(LanguageControl.Error, error.Message, LanguageControl.Ok, null, null));
355 //});
356 }
357
358 public string GetFilterDisplayName(Filter filter)
359 {
360 switch (filter)
361 {
362 case Filter.All: return "全部名单";
363 case Filter.Admin: return "管理员名单";
364 case Filter.Blacklisted: return "封禁名单";
365 case Filter.Inactive: return "未激活名单";
366 case Filter.Die: return "死鱼名单";
367 }
368 return "";
369 }
370
371 public string GetSearchTypeName(SearchType searchType)
372 {
373 switch (searchType)
374 {
375 case SearchType.ByName: return "昵称";
376 case SearchType.ByEmail: return "邮箱";
377 case SearchType.ByUserId: return "用户ID";
378 case SearchType.ByUserNo: return "用户名";
379 case SearchType.ByToken: return "Token";
380 case SearchType.ByLoginIP: return "登录IP";
381 case SearchType.ByLockReason: return "锁定原因";
382 }
383 return "";
384 }
385}
386*/
387