Esempio n. 1
0
        /// <summary>
        /// 添加用户系统消息
        /// </summary>
        /// <param name="userIDs">用户ID集合</param>
        /// <param name="option">消息类型,<see cref="MessageTemplateOption"/></param>
        /// <param name="relateDataID">消息关联的数据ID,如:某某订单ID</param>
        /// <param name="title">消息标题</param>
        /// <param name="content">消息内容</param>
        /// <param name="sign">消息发送方签名(如:XXX公司)</param>
        /// <returns></returns>
        public bool AddUserMessage(long[] userIDs, MessageTemplateOption option, string relateDataID, string title, string content, string sign)
        {
            using (var db = new DataContext())
            {
                if (userIDs == null || userIDs.Length < 1)
                {
                    return(false);
                }

                foreach (var userId in userIDs)
                {
                    var item = new User_Message
                    {
                        MessageID   = IDProvider.NewId(),
                        Content     = content ?? string.Empty,
                        CreateTime  = DateTime.Now,
                        IsDelete    = false,
                        IsRead      = false,
                        MessageType = (int)option,
                        RefDataID   = relateDataID,
                        Sign        = sign ?? string.Empty,
                        Title       = title,
                        UserID      = userId
                    };

                    db.User_Message.Add(item);
                }

                return(db.SaveChanges() > 0);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 文本消息包接收后处理
        /// </summary>
        /// <param name="e"></param>
        void RecieveForTextMessage(PackageReceiveArgs e)
        {
            var msg = e.Message as TextMessage;

            if (null == msg)
            {
                return;
            }

            msg.MessageID = IDProvider.NewId();
            msg.SendTime  = DateTime.Now.ToDateTimeString();

            //加入写入历史消息队列
            QueueWriteToHistory.EnQueue(msg);

            IChannel channel = GetUserChannel(msg.ReceiverID);

            //如果消息接收者已连接
            if (null != channel)
            {
                //发送消息给接收者
                Server.Send(msg, channel);

                //放入发送队列
                //QueueWaitSend.EnQueue(msg);
            }
            else
            {
                //加入未发送消息队列
                QueueUnSendToDB.EnQueue(msg);

                //记录未发送消息标识
                AddUnrecived(msg.ReceiverID, 1);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 登录操作队列处理
        /// </summary>
        private void LoginQueueWork()
        {
            while (true)
            {
                //出队
                var item = QueueLogin.DeQueue();

                if (null != item)
                {
                    UserLoginRecords records = new UserLoginRecords
                    {
                        AreaID         = item.AreaID,
                        AreaName       = item.AreaName,
                        Latitude       = item.Latitude,
                        LoginTime      = item.LoginTime.ToDateTime(),
                        Longitude      = item.Longitude,
                        RecordID       = IDProvider.NewId(),
                        TerminalDevice = item.TerminalDevice,
                        UserID         = item.UserID
                    };

                    //更新用户信息
                    ServicesProvider.Items.UserService.UpdateLastInfo(item.UserID, item.UserName, item.UserType, item.AreaName, item.LoginTime.ToDateTime());

                    //记录登录操作信息
                    ServicesProvider.Items.UserLoginRecordService.AddRecord(records);
                }

                //避免无数据操作时CPU空转
                Thread.Sleep(100);
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 未发送出去消息队列处理
        /// </summary>
        private void UnsendQueueWork()
        {
            while (true)
            {
                //出队
                var item = QueueUnSendToDB.DeQueue();

                if (null != item)
                {
                    UnSendMessage message = new UnSendMessage
                    {
                        Content     = item.Content,
                        MessageID   = IDProvider.NewId(),
                        MessageType = item.MessageType,
                        ReceiverID  = item.ReceiverID,
                        SenderID    = item.SenderID,
                        SenderName  = item.SernderName,
                        SendTime    = item.SendTime.ToDateTime()
                    };

                    //写入数据库
                    ServicesProvider.Items.UnsendMessageService.AddMessage(message);
                }

                //避免无数据操作时CPU空转
                Thread.Sleep(100);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 待写入消息历史的队列处理
        /// </summary>
        private void WriteToHistoryQueueWork()
        {
            while (true)
            {
                //出队
                var item = QueueWriteToHistory.DeQueue();

                if (null != item)
                {
                    var userNameDic = ServicesProvider.Items.UserService.GetUserName(new[] { item.SenderID, item.ReceiverID });

                    MessageHistory message = new MessageHistory
                    {
                        Content      = item.Content,
                        MessageID    = IDProvider.NewId(),
                        MessageType  = item.MessageType,
                        ReadTime     = item.SendTime.ToDateTime(),
                        ReceiverID   = item.ReceiverID,
                        ReceiverName = userNameDic.ContainsKey(item.ReceiverID) ? userNameDic[item.ReceiverID] : item.ReceiverName,
                        SenderID     = item.SenderID,
                        SenderName   = userNameDic.ContainsKey(item.SenderID) ? userNameDic[item.SenderID] : string.Empty,
                        SendTime     = item.SendTime.ToDateTime()
                    };

                    //写入数据库
                    ServicesProvider.Items.MessageHistoryService.AddMessage(message);
                }

                //避免无数据操作时CPU空转
                Thread.Sleep(100);
            }
        }
Esempio n. 6
0
 static System_Level GetLevel(string name, int minScore)
 {
     return(new System_Level
     {
         CreateTime = DateTime.Now,
         Enable = true,
         Icon = string.Empty,
         LevelID = IDProvider.NewId(),
         Min = minScore,
         Name = name
     });
 }
Esempio n. 7
0
        /// <summary>
        /// 发送
        /// </summary>
        /// <param name="identityType"><seealso cref="IdentityType"/></param>
        /// <param name="senderId">发送者ID</param>
        /// <param name="mobiles">发送的目标手机号</param>
        /// <param name="uid">业务ID</param>
        /// <returns></returns>
        internal async Task <SmsSendResult> SendSms(IdentityType identityType, long senderId, IEnumerable <string> mobiles, object uid)
        {
            try
            {
                string strId = (uid ?? string.Empty).ToString();

                var result = await MiddlewareConfig.Options.SendProvider.SendSmsAsync(mobiles, Content, strId);

                //添加发送记录
                List <SmsSendRecords> records = new List <SmsSendRecords>();

                foreach (var m in realSendMobiles)
                {
                    SmsSendRecords record = new SmsSendRecords
                    {
                        IsSuccess  = result.IsSuccess,
                        Message    = Content,
                        Mobile     = m,
                        Remark     = result.Remark,
                        SenderId   = senderId,
                        SenderType = (int)identityType,
                        SmsType    = (int)Option,
                        SendID     = IDProvider.NewId(),
                        SendTime   = DateTime.Now
                    };

                    records.Add(record);
                }

                new SmsSendRecordsService().AddRecord(records);

                return(result);
            }
            catch
            {
                return(null);
            }
        }
Esempio n. 8
0
        /// <summary>
        /// 添加商户系统消息
        /// </summary>
        /// <param name="merchantID">商家ID</param>
        /// <param name="option">消息类型,<see cref="MessageTemplateOption"/></param>
        /// <param name="relateDataID">消息关联的数据ID,如:某某订单ID</param>
        /// <param name="title">消息标题</param>
        /// <param name="content">消息内容</param>
        /// <param name="sign">消息发送方签名(如:XXX公司)</param>
        /// <returns></returns>
        public bool AddMerchantMessage(long merchantID, MessageTemplateOption option, string relateDataID, string title, string content, string sign)
        {
            using (var db = new DataContext())
            {
                var item = new Merchant_Message
                {
                    MessageID   = IDProvider.NewId(),
                    Content     = content,
                    CreateTime  = DateTime.Now,
                    IsDelete    = false,
                    IsRead      = false,
                    MessageType = (int)option,
                    MerchantID  = merchantID,
                    RefDataID   = relateDataID,
                    Sign        = sign,
                    Title       = title
                };

                db.Merchant_Message.Add(item);

                return(db.SaveChanges() > 0);
            }
        }
        /// <summary>
        /// 初始化超级管理员
        /// </summary>
        /// <returns></returns>
        public static int InitSuperAdmin(string account, string pwd)
        {
            using (var db = new DataContext())
            {
                string password = Cryptography.MD5Encrypt(Cryptography.SHA1Encrypt(Cryptography.MD5Encrypt(pwd)));

                db.Admin_Account.Add(new Admin_Account
                {
                    AdminID    = IDProvider.NewId(),
                    CreateTime = DateTime.Now,
                    DataStatus = true,
                    LastIp     = "127.0.0.1",
                    LastTime   = DateTime.Now,
                    Logins     = 0,
                    Password   = password,
                    PowerLevel = (int)EnumPowerLevel.Super,
                    Realname   = "超级管理员",
                    Username   = account,
                    UserPic    = string.Empty
                });

                return(db.SaveChanges());
            }
        }