Exemplo n.º 1
0
        /// <summary>
        /// 插入系统信息
        /// </summary>
        /// <param name="title"></param>
        /// <param name="content"></param>
        /// <param name="recieveId"></param>
        /// <param name="sourceId"></param>
        /// <param name="sourceType"></param>
        /// <param name="moduleKey"></param>
        /// <param name="category"></param>
        /// <returns></returns>
        private bool InsertSystemMessage(string title, string content, string recieveId, Guid?sourceId, string sourceType, string moduleKey, MessageCategory category = MessageCategory.System)
        {
            using (var dbContext = new SystemMessageDbContext())
            {
                var systemMessage = new Models.SystemMessage
                {
                    Id          = KeyGenerator.GetGuidKey(),
                    Title       = title,
                    Content     = content,
                    SourceId    = sourceId,
                    MessageType = recieveId == null ? MessageType.Public : MessageType.Personal,
                    CreateTime  = DateTime.Now,
                    SourceType  = sourceType,
                    ModuleKey   = moduleKey,
                    Category    = category
                };
                dbContext.SystemMessages.Add(systemMessage);
                if (recieveId != null)
                {
                    var systemMessageReciever = new SystemMessageReciever
                    {
                        Id         = KeyGenerator.GetGuidKey(),
                        MessageId  = systemMessage.Id,
                        RecieveId  = recieveId,
                        CreateTime = DateTime.Now,
                        Status     = Status.UnRead
                    };
                    dbContext.SystemMessageRecievers.Add(systemMessageReciever);
                }

                var result = dbContext.SaveChanges();
                return(result > 0);
            }
        }
Exemplo n.º 2
0
        private bool SetMessageRead(Models.SystemMessage message, string memberId)
        {
            if (message.MessageType == MessageType.Personal)
            {
                using (var dbContext = new SystemMessageDbContext())
                {
                    var query = (from mr in dbContext.SystemMessageRecievers
                                 where mr.MessageId == message.Id && mr.RecieveId == memberId && mr.Status == Status.UnRead
                                 select mr).ToList();
                    foreach (var item in query)
                    {
                        item.Status = Status.HasRead;
                        dbContext.Set <SystemMessageReciever>().Attach(item);
                        dbContext.Entry(item).State = System.Data.Entity.EntityState.Modified;
                    }
                    dbContext.SaveChanges();
                    return(true);
                }
            }
            if (message.MessageType == MessageType.Public)
            {
                using (var dbContext = new SystemMessageDbContext())
                {
                    var query = (from mr in dbContext.SystemMessageRecievers
                                 where mr.MessageId == message.Id && mr.RecieveId == memberId
                                 select mr).ToList();
                    if (query.Count > 0)
                    {
                        foreach (var item in query)
                        {
                            if (item.Status == Status.UnRead)
                            {
                                item.Status = Status.HasRead;
                                dbContext.Set <SystemMessageReciever>().Attach(item);
                                dbContext.Entry(item).State = System.Data.Entity.EntityState.Modified;
                            }
                        }
                    }
                    else
                    {
                        var messageReciever = new SystemMessageReciever();
                        messageReciever.Id         = KeyGenerator.GetGuidKey();
                        messageReciever.MessageId  = message.Id;
                        messageReciever.RecieveId  = memberId;
                        messageReciever.Status     = Status.HasRead;
                        messageReciever.CreateTime = DateTime.Now;
                        messageReciever.ReadTime   = DateTime.Now;
                        dbContext.SystemMessageRecievers.Add(messageReciever);
                    }
                    dbContext.SaveChanges();
                    return(true);
                }
            }

            return(true);
        }
Exemplo n.º 3
0
        public bool Delete(string memberId, Guid messageId)
        {
            var message = _currencyService.GetSingleById <Models.SystemMessage>(messageId);

            if (message == null)
            {
                return(true);
            }
            bool result;

            if (message.MessageType == MessageType.Personal)
            {
                //删除消息和接收人关联数据
                _currencyService.DeleteByConditon <Models.SystemMessage>(s => s.Id.Equals(messageId));
                _currencyService.DeleteByConditon <SystemMessageReciever>(s => s.MessageId.Equals(messageId));

                result = true;
            }
            else
            {
                var systemMessageReciever = _currencyService.GetSingleByConditon <SystemMessageReciever>(me => me.RecieveId == memberId && me.MessageId == messageId);
                if (systemMessageReciever != null && systemMessageReciever.Status != Status.Deleted)
                {
                    systemMessageReciever.Status = Status.Deleted;
                    result = _currencyService.Update(systemMessageReciever);
                }
                else
                {
                    var messageReciever = new SystemMessageReciever();
                    messageReciever.Id         = KeyGenerator.GetGuidKey();
                    messageReciever.MessageId  = message.Id;
                    messageReciever.RecieveId  = memberId;
                    messageReciever.Status     = Status.Deleted;
                    messageReciever.CreateTime = DateTime.Now;
                    result = _currencyService.Create(messageReciever);
                }
            }

            if (result)
            {
                Logger.Operation($"会员-{memberId}删除消息-{message.Id}", SystemMessageModule.Instance);
            }

            return(result);
        }