public void TestAllBytesWritten()
        {
            MsgMessage msg = new MsgMessage();
            msg.Header.RequestId = 1;
            msg.Header.ResponseTo = 11;
            Assert.AreEqual(16,msg.Header.MessageLength);

            msg.Message = "A";
            MemoryStream buffer = new MemoryStream(18);
            msg.Write(buffer);

            Byte[] output = buffer.ToArray();
            String hexdump = BitConverter.ToString(output);
            //Console.WriteLine("Dump: " + hexdump);

            Assert.IsTrue(output.Length > 0);
            Assert.AreEqual(output.Length, msg.Header.MessageLength);
            Assert.AreEqual("12-00-00-00-01-00-00-00-0B-00-00-00-E8-03-00-00-41-00", hexdump);
        }
Beispiel #2
0
 protected bool IsMeCommand(MsgMessage message)
 {
     return(message.MessageText.Length > 5 && message.MessageText.Substring(0, 4).ToUpperInvariant() == "/ME ");
 }
Beispiel #3
0
        public void HandleChatMessage(ServerPlayer sender, MsgMessage message)
        {
            // check all the ways we can ingore this
            if (message == null)
            {
                return;
            }

            bool isAction = IsMeCommand(message);

            if (!isAction)
            {
                if (AcceptTextCommand != null && AcceptTextCommand(sender, message))
                {
                    return;
                }
            }
            else if (message.MessageText.Length < 5)
            {
                return;
            }

            if (!sender.Allowances.AllowChat)
            {
                return;
            }

            ChatMessageEventArgs inChat = new ChatMessageEventArgs();

            inChat.To       = null;
            inChat.Allow    = true;
            inChat.Filtered = false;
            inChat.From     = sender;
            inChat.Action   = isAction;
            if (isAction)
            {
                inChat.MessageText = message.MessageText.Substring(3);
            }
            else
            {
                inChat.MessageText = message.MessageText;
            }

            if (message.To <= PlayerConstants.MaxUseablePlayerID)
            {
                inChat.To = Players.GetPlayerByID(message.To);
                if (inChat.To == null)
                {
                    return;
                }
                inChat.ToTeam   = inChat.To.ActualTeam;
                inChat.ChatType = ChatMessageEventArgs.ChatMessageTypes.PrivateMessage;
            }
            else if (message.To == PlayerConstants.AllPlayersID)
            {
                inChat.ChatType = ChatMessageEventArgs.ChatMessageTypes.PublicMessage;
            }
            else if (message.To >= PlayerConstants.FirstTeamID && message.To <= PlayerConstants.LastTeamID)
            {
                TeamColors toTeam = PlayerConstants.GetTeamColorFromID(message.To);

                if (toTeam != sender.ActualTeam || Players.GetTeamPlayerCount(toTeam) == 0)
                {
                    return;
                }

                inChat.ToTeam   = toTeam;
                inChat.ChatType = ChatMessageEventArgs.ChatMessageTypes.TeamMessage;
            }
            else
            {
                foreach (var group in GetGroups())
                {
                    if (message.To == group.BroadcastID)
                    {
                        inChat.To       = null;
                        inChat.ToGroup  = group;
                        inChat.ChatType = ChatMessageEventArgs.ChatMessageTypes.GroupMessage;
                    }
                }
            }

            if (inChat.ChatType == ChatMessageEventArgs.ChatMessageTypes.Unknown)
            {
                return;
            }

            MessageReceived?.Invoke(this, inChat);
            if (!inChat.Allow)
            {
                return;
            }

            PushMessageToFilter(inChat);
        }
Beispiel #4
0
        /// <summary>
        /// 是否发放
        /// </summary>
        /// <param name="id">Drawid</param>
        /// <param name="type">发放类型 1发放 2驳回</param>
        /// <returns></returns>
        public JsonHelp Issue(int id, int type, string userId, string userName, string summary)
        {
            JsonHelp json = new JsonHelp()
            {
                Status = "n", Msg = "操作失败"
            };

            using (var tran = DB.Fin_Draw.BeginTransaction)
            {
                try
                {
                    var Draw = FindEntity(p => p.DrawId == id);
                    if (Draw.DrawState == "已发放" || Draw.DrawState == "已驳回")
                    {
                        json.Msg = "提现已审核,不能重复审核";
                        return(json);
                    }

                    Member_Info member = DB.Member_Info.FindEntity(Draw.MemberId);
                    if (type == 1)
                    {
                        Draw.DrawState      = "已发放";
                        Draw.ConfirmTime    = DateTime.Now;
                        Draw.ConfirmEmpId   = userId;
                        Draw.ConfirmEmpName = userName;
                        if (Update(Draw))
                        {
                            json.Status = "y";
                            json.Msg    = "发放成功";
                            DB.SysLogs.setAdminLog(Enums.EventType.Edit, string.Format("提现发放成功,提现人:[{0}],提现金额:[{1}]", Draw.MemberCode, Draw.DrawAmount));
                            tran.Complete();


                            //发送模板通知
                            if (member != null && string.IsNullOrEmpty(member.OpenID) == false)
                            {
                                MsgMessage _msg = new MsgMessage();
                                _msg.Send_DrawSuccess(Draw, member.OpenID, $"http://{HttpContext.Current.Request.Url.Host}/Member_Finance/Draw/Index");
                            }
                        }
                    }
                    else if (type == 2)
                    {
                        member.Coins = member.Coins + Draw.DrawAmount;
                        DB.Fin_LiuShui.AddLS(member.MemberId, Draw.DrawAmount.Value, "提现驳回", "奖金");
                        if (DB.Member_Info.Update(member))
                        {
                            Draw.DrawState      = "已驳回";
                            Draw.ConfirmTime    = DateTime.Now;
                            Draw.ConfirmEmpId   = userId;
                            Draw.ConfirmEmpName = userName;
                            Draw.Summary        = summary;

                            Update(Draw);
                            json.Status = "y";
                            json.Msg    = "驳回成功";
                            DB.SysLogs.setAdminLog(Enums.EventType.Edit, string.Format("提现已驳回,提现人:[{0}],提现金额:[{1}]", Draw.MemberCode, Draw.DrawAmount));
                            tran.Complete();

                            //发送模板通知
                            if (member != null && string.IsNullOrEmpty(member.OpenID) == false)
                            {
                                MsgMessage _msg = new MsgMessage();
                                _msg.Send_DrawError(Draw, member.OpenID, $"http://{HttpContext.Current.Request.Url.Host}/Member_Finance/Draw/Index");
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    DB.Rollback();
                    LogHelper.Error("发放资金出错:" + e.Message);
                }
            }
            return(json);
        }