Exemple #1
0
        /// <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());
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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("完成");
        }
Exemple #4
0
        /// <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());
        }
Exemple #5
0
 /// <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));
                }
            }
        }
Exemple #7
0
 private void RateQuery(TcpClient client, ChatFeeRateQuery chatFee)
 {
     //TcpClient client = obj as TcpClient;
     client.SendMessageRateQuery(chatFee);
     //Interlocked.Decrement(ref clientCounter);
 }