/// <summary> /// 聊天计费倍率查询 /// </summary> /// <param name="messageString"></param> private void ProChatFeeRateQuery(string messageString) { var client = _connections.GetConnection(Context.ConnectionId); if (client == null || client.Nodeid == 0) { MessageInfo($"聊天计费倍率查询客户端为空,client={client}"); this.OnReconnected(); return; } var chatFeeRateQuery = new ChatFeeRateQuery(messageString); MessageInfo("调用聊天计费倍率查询逻辑之前"); var result = chatFeeRateFacade.ProChatFeeRateQuery(chatFeeRateQuery.ToBytes(), client.Nodeid); MessageInfo("调用聊天计费倍率查询逻辑之后"); if (result.Count != 1) { MessageInfo("调用聊天计费倍率查询逻辑失败"); } foreach (var item in result) { //var receiveClient = _connections.GetConnections().Values.FirstOrDefault(c => c.Nodeid == item.GetNodeid()); //if (receiveClient == null) //{ // MessageInfo("聊天计费倍率查询结果推送失败:" + item.ToJson()); //} Clients.Caller.receiveMessage(item.ToJson()); //SendChatMessage(receiveClient, item.ToJson()); } }
private void btnRateQuery_Click(object sender, EventArgs e) { ChatFeeRateQuery chatFeeRateQuery = new ChatFeeRateQuery(); chatFeeRateQuery.Body.Type = Convert.ToInt32(cbType.SelectedItem); chatFeeRateQuery.Body.Receiver = Convert.ToInt32(txtNodeId.Text); chatFeeRateQuery.Body.Sender = Convert.ToInt32(txtTargetId.Text); _client.SendMessageRateQuery(chatFeeRateQuery); }
private void btnRateQuery_Click(object sender, EventArgs e) { string ip = ConfigurationManager.AppSettings["IP"]; if (string.IsNullOrWhiteSpace(txtTargetId.Text)) { MessageBox.Show("Senderid必填"); return; } var typetxt = Convert.ToInt32(cbType.SelectedItem); var sendertxt = Convert.ToInt32(txtTargetId.Text); string[] arrLine = File.ReadAllLines("nodeids_" + ip + ".txt"); if (arrLine == null) { MessageBox.Show("根目录配置nodeids.txt"); return; } int counter = Convert.ToInt32(this.txtRateQueryCount.Text); System.Threading.Tasks.Task.Run(() => { System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); int i = 0; foreach (TcpClient client in lstClient.Values) { try { ChatFeeRateQuery chatFeeRateQuery = new ChatFeeRateQuery(); chatFeeRateQuery.Body.Type = typetxt; chatFeeRateQuery.Body.Receiver = typetxt == 1 ? int.Parse(arrLine[i]) : sendertxt; chatFeeRateQuery.Body.Sender = typetxt == 1 ? sendertxt : 0; RateQuery(client, chatFeeRateQuery); //Log.ExceptInfo(i.ToString()+"---"+arrLine[i]); i++; if (i > counter) { break; } } catch (Exception ex) { Log.ExceptInfo(ex.ToString()); i++; } } watch.Stop(); MessageBox.Show(watch.ElapsedMilliseconds.ToString()); }); MessageBox.Show("完成"); }
/// <summary> /// 聊天计费倍率查询 /// </summary> /// <param name="client"></param> /// <param name="buffer"></param> private void ProChatFeeRateQuery(CommuTcpClient client, byte[] buffer) { ChatFeeRateQuery chatFeeRateQuery = new ChatFeeRateQuery(buffer); OnRaiseMsgRecvEvent(client, chatFeeRateQuery.ToString()); var tchatReceiverRate = pXinDb.GetTchatRate(chatFeeRateQuery.Body.Sender, chatFeeRateQuery.Body.Receiver, chatFeeRateQuery.Body.Type); var tchatSenderRate = new TchatRate(); if (chatFeeRateQuery.Body.Type == 1) { if (tchatReceiverRate.Id == 0)//没有设置私聊倍率 { tchatReceiverRate = pXinDb.GetTchatRate(0, chatFeeRateQuery.Body.Receiver, 3); } tchatSenderRate = pXinDb.GetTchatRate(chatFeeRateQuery.Body.Receiver, chatFeeRateQuery.Body.Sender, chatFeeRateQuery.Body.Type); if (tchatSenderRate.Id == 0)//没有设置私聊倍率 { tchatSenderRate = pXinDb.GetTchatRate(0, chatFeeRateQuery.Body.Sender, 3); } var pxinUser = pXinDb.GetReginfoByNodeid(chatFeeRateQuery.Body.Receiver); tchatSenderRate.Rate = pxinUser.Isenterprise == 3 ? 1 : tchatSenderRate.Rate; //当用户是达人时 pxinUser = pXinDb.GetReginfoByNodeid(chatFeeRateQuery.Body.Sender); tchatReceiverRate.Rate = pxinUser.Isenterprise == 3 ? 1 : tchatReceiverRate.Rate; //当对方用户是达人时 } else { tchatSenderRate.Rate = tchatReceiverRate.Rate; tchatSenderRate.Id = tchatReceiverRate.Id; } ChatFeeRateQueryResp chatFeeRateQueryResp = new ChatFeeRateQueryResp(chatFeeRateQuery.Header.Sequence_Id); chatFeeRateQueryResp.Body.Type = chatFeeRateQuery.Body.Type; chatFeeRateQueryResp.Body.Sender = chatFeeRateQuery.Body.Type == 1 ? chatFeeRateQuery.Body.Sender : chatFeeRateQuery.Body.Receiver; chatFeeRateQueryResp.Body.ReceiverRate = tchatReceiverRate.Id == 0 ? 1 : tchatReceiverRate.Rate; chatFeeRateQueryResp.Body.SenderRate = tchatSenderRate.Id == 0 ? 1 : tchatSenderRate.Rate; var userInfo = pXinDb.GetUserInfoByNodeId(client.Nodeid); chatFeeRateQueryResp.Body.VDianBalance = userInfo.V; chatFeeRateQueryResp.Body.PDianBalance = userInfo.P; client.SendData(chatFeeRateQueryResp.ToBytes()); }
/// <summary> /// 向服务器发送"倍率查询"消息 /// </summary> /// <param name="chatFeeRateQuery"></param> /// <returns></returns> public bool SendMessageRateQuery(ChatFeeRateQuery chatFeeRateQuery) { SendData(chatFeeRateQuery.ToBytes()); OnRaiseMsgSendEvent(chatFeeRateQuery.Header.Command_Id, chatFeeRateQuery, "发送消息:" + chatFeeRateQuery.ToString()); return(true); }
private void OnRaiseMsgSendEvent(byte[] buffer) { if (MsgSendEventHandler != null) { string msg = string.Empty; MessageHeader header = new MessageHeader(buffer); switch (header.Command_Id) { case PXin_COMMAND_TYPE.Login: msg = new Login(buffer).ToString(); break; case PXin_COMMAND_TYPE.LoginResp: msg = new LoginResp(buffer).ToString(); break; case PXin_COMMAND_TYPE.Logout: msg = new Wt_Logout(buffer).ToString(); break; case PXin_COMMAND_TYPE.LogoutResp: msg = new LogoutResp(buffer).ToString(); break; case PXin_COMMAND_TYPE.Active: msg = new Active(buffer).ToString(); break; case PXin_COMMAND_TYPE.ActiveResp: msg = new ActiveResp(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFee: msg = new ChatFee(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeeResp: msg = new ChatFeeResp(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeePush: msg = new ChatFeePush(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeeRateSet: msg = new ChatFeeRateSet(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeeRateSetResp: msg = new ChatFeeRateSetResp(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeeRateQuery: msg = new ChatFeeRateQuery(buffer).ToString(); break; case PXin_COMMAND_TYPE.ChatFeeRateQueryResp: msg = new ChatFeeRateQueryResp(buffer).ToString(); break; default: break; } //发布"消息发送"事件 if (header.Command_Id != PXin_COMMAND_TYPE.Active && header.Command_Id != PXin_COMMAND_TYPE.ActiveResp) { MsgSendEventHandler?.Invoke(this, new MessageEventArgs(string.Empty, Identity, msg)); } } }
private void RateQuery(TcpClient client, ChatFeeRateQuery chatFee) { //TcpClient client = obj as TcpClient; client.SendMessageRateQuery(chatFee); //Interlocked.Decrement(ref clientCounter); }