同步操作将从 ewin66/QueueSystem 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using System;using System.Collections.Generic;using System.Configuration;using System.Linq;using System.Text;using System.Web.Script.Serialization;using MessageLib;using QueueMessage;namespace QueueService{public class WebService : WebSocketServer, IServiceUI{JavaScriptSerializer convert = new JavaScriptSerializer();byte[] btDisConn = new byte[] { 0x3, 0xe9 };internal Extra<DeviceInfo> deviceList = new Extra<DeviceInfo>();internal bool deviceListChanged = false;public WebService(){this.OnPrepareListen += new TcpServerEvent.OnPrepareListenEventHandler(Service_OnPrepareListen);this.OnClose += new TcpServerEvent.OnCloseEventHandler(Service_OnClose);this.OnWSMessageBody += new WebSocketEvent.OnWSMessageBodyEventHandler(Service_OnWSMessageBody);loginOperation.AddRange("raterequest,rateoperate,ratesubmit".Split(','));}HandleResult Service_OnPrepareListen(TcpServer sender, IntPtr soListen){dynamic section = ConfigurationManager.GetSection("ServiceConfig");var port = section.Configs["排队消息服务"].Port;this.client.Connect("127.0.0.1", ushort.Parse(port));return HandleResult.Ignore;}void client_ReceiveMessage(IntPtr connId, Message message){switch (message.GetType().Name){case MessageName.ClientQueryMessage:#region clientQuery{var msg = message as ClientQueryMessage;var allClient = this.deviceList.Dictionary.Values.ToArray();Dictionary<string, string> dic = new Dictionary<string, string>();foreach (var client in allClient){dic[client.WindowNumber] = client.UserID;}msg.QueryType = ClientQueryType.Response;msg.ClientList = dic;this.client.SendMessage(msg);}#endregionbreak;case MessageName.RateMessage:#region rateRequest{var msg = message as RateMessage;var allClient = this.deviceList.Dictionary.Values.ToArray();var listRate = allClient.Where(p => p.WindowNumber == msg.WindowNo);foreach (var client in listRate){var rateData = new RequestData{method = "RateQuest",param = new{rateId = msg.RateId,transactor = msg.Transactor,item = msg.ItemName,date = msg.WorkDate,reserveSeq = msg.reserveSeq}};this.SendWSMessage(client.ID, rateData.ToResultData());}}#endregionbreak;case MessageName.OperateMessage:#region operate{var msg = message as OperateMessage;var allClient = this.deviceList.Dictionary.Values.ToArray();var listRate = allClient.Where(p => p.WindowNumber == msg.WindowNo);foreach (var client in listRate){var rateData = new RequestData{method = "RateOperate",param = new{operate = msg.Operate.ToString()}};this.SendWSMessage(client.ID, rateData.ToResultData());}}#endregionbreak;}}HandleResult Service_OnClose(TcpServer sender, IntPtr connId, SocketOperation enOperation, int errorCode){if (!this.deviceList.Dictionary.ContainsKey(connId))return HandleResult.Ignore;var deviceInfo = this.deviceList.Dictionary[connId];this.client.SendMessage(new ClientChangedMessage(){ChangedType = ClientChangedType.Remove,UserID = deviceInfo.UserID,WindowNumber = deviceInfo.WindowNumber});this.deviceList.Remove(connId);deviceListChanged = true;return HandleResult.Ignore;}HandleResult Service_OnWSMessageBody(IntPtr connId, byte[] data){try{if (BitConverter.ToString(data) == BitConverter.ToString(btDisConn))return HandleResult.Ignore;var strData = Encoding.UTF8.GetString(data);RequestData requestData = null;try{requestData = convert.Deserialize<RequestData>(strData);}catch{return HandleResult.Ignore;}var method = requestData.method.Trim().ToLower();var device = this.deviceList.Get(connId);if (loginOperation.Contains(method) && string.IsNullOrEmpty(device == null ? "" : device.UserCode)){var rData = new ResponseData { code = "1000", request = requestData.method, result = "当前用户尚未登录" };this.SendWSMessage(connId, rData.ToResultData());return HandleResult.Ignore;}switch (method){#region debugcase "raterequest":if (device.UserCode == "QueueService"){var param = requestData.param as Dictionary<string, object>;var targetList = this.deviceList.Dictionary.Values.Where(p => p.WindowNumber == param["winNum"].ToString()).ToList();foreach (var target in targetList){var rateData = new RequestData{method = "RateQuest",param = new{rateId = param["rateId"] == null ? "" : param["rateId"].ToString(),transactor = param["transactor"] == null ? "" : param["transactor"].ToString(),item = param["item"] == null ? "" : param["item"].ToString(),date = param["date"] == null ? "" : param["date"].ToString(),reserveSeq = param["reserveSeq"] == null ? "" : param["reserveSeq"].ToString()}};this.SendWSMessage(target.ID, rateData.ToResultData());}var rData = new ResponseData { code = "0", request = requestData.method, result = targetList.Count == 0 ? "无此用户信息" : "已发送评价请求" };this.SendWSMessage(connId, rData.ToResultData());}else{var rData = new ResponseData { code = "1001", request = requestData.method, result = "该用户无此操作权限" };this.SendWSMessage(connId, rData.ToResultData());}break;case "rateoperate":if (device.UserCode == "QueueService"){var param = requestData.param as Dictionary<string, object>;var targetList = this.deviceList.Dictionary.Values.Where(p => p.WindowNumber == param["winNum"].ToString()).ToList();foreach (var target in targetList){var rateData = new RequestData{method = "RateOperate",param = new{operate = param["operate"].ToString()}};this.SendWSMessage(target.ID, rateData.ToResultData());}var rData = new ResponseData { code = "0", request = requestData.method, result = targetList.Count == 0 ? "无此用户信息" : "已发送操作请求" };this.SendWSMessage(connId, rData.ToResultData());}else{var rData = new ResponseData { code = "1001", request = requestData.method, result = "该用户无此操作权限" };this.SendWSMessage(connId, rData.ToResultData());}break;#endregioncase "getwindowlist":{var param = requestData.param as Dictionary<string, object>;var rData = new ResponseData { code = "0", request = requestData.method, result = this.rateProcess.RS_GetWindowList() };this.SendWSMessage(connId, rData.ToResultData());}break;case "getuserlist":{var param = requestData.param as Dictionary<string, object>;var rData = new ResponseData { code = "0", request = requestData.method, result = this.rateProcess.RS_GetUserListByWindowNo(param["winNum"].ToString()) };this.SendWSMessage(connId, rData.ToResultData());}break;case "getupdateinfo":{var rData = new ResponseData{code = "0",request = requestData.method,result = new{version = ini.ReadString("Config", "Version"),url = ini.ReadString("Config", "Url")}};this.SendWSMessage(connId, rData.ToResultData());}break;case "getuserphoto":{var param = requestData.param as Dictionary<string, object>;var rData = new ResponseData { code = "0", request = requestData.method, result = this.rateProcess.GetUserPhoto(param["userCode"].ToString()) };this.SendWSMessage(connId, rData.ToResultData());}break;case "login":{ResponseData rData = null;var param = requestData.param as Dictionary<string, object>;string winNum = param["winNum"].ToString(), userCode = param["userCode"].ToString();string userId = rateProcess.GetUserIdByCode(userCode);if (rateProcess.Login(winNum, userCode)){string ip = "";ushort port = 0;this.GetRemoteAddress(connId, ref ip, ref port);this.deviceList.Set(connId, new DeviceInfo(){ID = connId,IP = ip + ":" + port,WindowNumber = winNum,UserID = userId,UserCode = userCode,ConnTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")});rData = new ResponseData { code = "0", request = requestData.method, result = "登录成功!" };deviceListChanged = true;}elserData = new ResponseData { code = "1002", request = requestData.method, result = "窗口或用户信息不正确!" };this.SendWSMessage(connId, rData.ToResultData());this.client.SendMessage(new ClientChangedMessage(){ChangedType = ClientChangedType.Add,UserID = userId,WindowNumber = winNum});}break;case "ratesubmit":{var param = requestData.param as Dictionary<string, object>;ResponseData rData = null;if (rateProcess.RateSubmit(device.UserID, device.WindowNumber, param["rateId"].ToString(), param["attitude"].ToString(), param["quality"].ToString(), param["efficiency"].ToString(), param["honest"].ToString()))rData = new ResponseData { code = "0", request = requestData.method, result = "评价成功!" };elserData = new ResponseData { code = "1003", request = requestData.method, result = "评价失败!" };this.SendWSMessage(connId, rData.ToResultData());}break;default:{var rData = new ResponseData{code = "999",request = requestData.method,result = "未知指令"};this.SendWSMessage(connId, rData.ToResultData());}break;}}catch (Exception ex){this.SDK_OnError(this, connId, ex);}return HandleResult.Ok;}#region IServiceUI 成员public Type UIType{get { return typeof(FrmService); }}#endregion}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。