Beispiel #1
0
        private static void ProcessSceneTypeChanges(MessageItem msg)
        {
            if (null == msg)
            {
                return;
            }
            var usernoteItem = new UserMessageQueueItem();

            List <Services.SyncStateDto> syncInfo;

            if (OperationEnum.Deleted == msg.Operation)
            {
                syncInfo = msg.Data.Exists(o => o.Key == "EnterpriseID")
                        ? Service.GetExistSyncStateDtosByEnterpriseID(msg.Data.Find(o => o.Key == "EnterpriseID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "EnterpriseID");
                var del = new[] { new DeletedEntity() };
                if (msg.Data.Exists(o => o.Key == "SceneTypeID"))
                {
                    del[0] = new DeletedEntity {
                        EntityID = msg.Data.Find(o => o.Key == "SceneTypeID").Value, EntityName = msg.EntityName
                    }
                }
                ;
                GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
            }
            else
            {
                syncInfo = msg.Data.Exists(o => o.Key == "EnterpriseID")
                        ? Service.GetExistSyncStateDtosByEnterpriseID(msg.Data.Find(o => o.Key == "EnterpriseID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "EnterpriseID");
                GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncProjectAndScene, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
            }
            UserMsgItem2Mongo(Service, syncInfo, usernoteItem);
        }
Beispiel #2
0
        private static void ProcessProjectChanges(MessageItem msg)
        {
            try
            {
                if (null == msg)
                {
                    return;
                }
                var usernoteItem = new UserMessageQueueItem();

                List <Services.SyncStateDto> syncInfo;

                if (OperationEnum.Deleted == msg.Operation)
                {
                    //  删除操作
                    string departmentIDs = "-1";
                    var    data          = msg.Data.Find(o => o.Key == "DepartMentIDs");
                    if (null != data)
                    {
                        departmentIDs = msg.Data.Find(o => o.Key == "DepartMentIDs").Value;
                    }
                    var idList = departmentIDs.Split('|').ToList();
                    var ids    = idList.Select(id => Convert.ToInt32(id)).ToList();
                    syncInfo = Service.GetExistSyncStateDtoByDepartMentIDs(ids);
                    var del = new[] { new DeletedEntity() };
                    if (msg.Data.Exists(o => o.Key == "ProjectID"))
                    {
                        del[0] = new DeletedEntity {
                            EntityID = msg.Data.Find(o => o.Key == "ProjectID").Value, EntityName = msg.EntityName
                        }
                    }
                    ;
                    GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }
                else
                {
                    //  其他操作
                    syncInfo = msg.Data.Exists(o => o.Key == "ProjectID")
                        ? Service.GetExistSyncStateDtoByProjectID(msg.Data.Find(o => o.Key == "ProjectID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "ProjectID");
                    GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncProjectAndScene, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }

                UserMsgItem2Mongo(Service, syncInfo, usernoteItem);
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqProvider));
                logger.Error(ex.Message);
            }
        }
Beispiel #3
0
        private static OrganizationUserMsgItem2Mongo ProcessFrontUserChanges(MessageItem msg)
        {
            try
            {
                if (null == msg)
                {
                    return(null);
                }
                var usernoteItem = new UserMessageQueueItem();

                List <Services.SyncStateDto> syncInfo;

                if (OperationEnum.Deleted == msg.Operation)
                {
                    //  删除操作
                    syncInfo = msg.Data.Exists(o => o.Key == "EnterpriseID")
                        ? Service.GetExistSyncStateDtosByEnterpriseID(msg.Data.Find(o => o.Key == "EnterpriseID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "EnterpriseID");
                    var del = new[] { new DeletedEntity() };
                    if (msg.Data.Exists(o => o.Key == "UserID"))
                    {
                        del[0] = new DeletedEntity {
                            EntityID = msg.Data.Find(o => o.Key == "UserID").Value, EntityName = msg.EntityName
                        }
                    }
                    ;
                    GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }
                else
                {
                    //  其他操作
                    syncInfo = msg.Data.Exists(o => o.Key == "UserID")
                        ? Service.GetExistSyncStateDtosRelateFrontUserIDAtEnterprise(msg.Data.Find(o => o.Key == "UserID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "UserID");
                    GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncOrganization, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }

                return(new OrganizationUserMsgItem2Mongo
                {
                    SyncInfo = syncInfo,
                    UsernoteItem = usernoteItem
                });
                //UserMsgItem2Mongo(Service, syncInfo, usernoteItem);
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqProvider));
                logger.Error(ex.Message);
            }
            return(null);
        }
        private static void ProcessSceneDataChanges(List <ML.BC.Infrastructure.MsmqHelper.MessageItem> messageItems)
        {
            try
            {
                if (null == messageItems || messageItems.Count == 0)
                {
                    return;
                }
                foreach (var msg in messageItems)
                {
                    var usernoteItem = new UserMessageQueueItem();
                    List <Services.SyncStateDto> syncInfos;

                    if (OperationEnum.Deleted == msg.Operation)
                    {
                        //  删除操作
                        syncInfos = msg.Data.Exists(o => o.Key == "SceneID")
                        ? Service.GetExistSyncStateDtosBySceneID(msg.Data.Find(o => o.Key == "SceneID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "SceneID");
                        var del = new[] { new DeletedEntity() };
                        if (msg.Data.Exists(o => o.Key == "Id"))
                        {
                            del[0] = new DeletedEntity {
                                EntityID = msg.Data.Find(o => o.Key == "Id").Value, EntityName = msg.EntityName
                            }
                        }
                        ;
                        GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                    }
                    else
                    {
                        //  其他操作
                        syncInfos = msg.Data.Exists(o => o.Key == "Id")
                        ? Service.GetExistSyncStateDtosBySceneItemID(msg.Data.Find(o => o.Key == "Id").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "Id");
                        GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncSceneData, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                    }

                    UserMsgItem2Mongo(Service, syncInfos, usernoteItem);
                }
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqSync));
                logger.Error(ex.Message);
            }
        }
Beispiel #5
0
            public override int GetHashCode()
            {
                var temp = new UserMessageQueueItem();

                if (this.UsernoteItem != null)
                {
                    temp.Action          = this.UsernoteItem.Action;
                    temp.SyncDataType    = this.UsernoteItem.SyncDataType;
                    temp.UserID          = this.UsernoteItem.UserID;
                    temp.Device          = this.UsernoteItem.Device;
                    temp.Data            = this.UsernoteItem.Data;
                    temp.DeletedEntities = this.UsernoteItem.DeletedEntities;
                }
                var hashCode = Serializer.ToJson(temp).GetHashCode();

                return(hashCode);
            }
Beispiel #6
0
        private static void ProcessSceneChanges(MessageItem msg)
        {
            try
            {
                if (null == msg)
                {
                    return;
                }
                var usernoteItem = new UserMessageQueueItem();

                List <Services.SyncStateDto> syncInfo;

                if (OperationEnum.Deleted == msg.Operation)
                {
                    //  删除操作
                    syncInfo = msg.Data.Exists(o => o.Key == "ProjectID")
                        ? Service.GetExistSyncStateDtoByProjectID(msg.Data.Find(o => o.Key == "ProjectID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "ProjectID");
                    var del = new[] { new DeletedEntity() };
                    if (msg.Data.Exists(o => o.Key == "SceneID"))
                    {
                        del[0] = new DeletedEntity {
                            EntityID = msg.Data.Find(o => o.Key == "SceneID").Value, EntityName = msg.EntityName
                        }
                    }
                    ;
                    GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }
                else
                {
                    //  其他操作
                    syncInfo = msg.Data.Exists(o => o.Key == "ProjectID")
                        ? Service.GetExistSyncStateDtoByProjectID(msg.Data.Find(o => o.Key == "ProjectID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "ProjectID");
                    GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncProjectAndScene, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }

                UserMsgItem2Mongo(Service, syncInfo, usernoteItem);
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqProvider));
                logger.Error(ex.Message);
            }
        }
        private static void ProcessMessageChanges(List <ML.BC.Infrastructure.MsmqHelper.MessageItem> messageItems)
        {
            try
            {
                if (null == messageItems || messageItems.Count == 0)
                {
                    return;
                }
                foreach (var msg in messageItems)
                {
                    var usernoteItem = new UserMessageQueueItem();
                    if (OperationEnum.Added == msg.Operation)
                    {
                        FrontUserDto sendUserDto = new FrontUserDto();
                        var          data        = msg.Data.Find(o => o.Key == "SendUserID");
                        if (null != data)
                        {
                            sendUserDto = Service.GetFrontUserDtoByID(msg.Data.Find(o => o.Key == "SendUserID").Value);
                        }
                        var userIDs = "";
                        if (msg.Data.Any(o => o.Key == "Recipients"))
                        {
                            userIDs = msg.Data.Find(o => o.Key == "Recipients").Value;
                        }
                        var syncInfos = Service.GetExistSyncStateDtoByUserIDs(userIDs);

                        GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncMessage, AppSyncDataTypeEnum.Text, sendUserDto, msg);

                        UserMsgItem2Mongo(Service, syncInfos, usernoteItem);
                    }
                    else
                    {
                        var logger = log4net.LogManager.GetLogger(typeof(MsmqSync));
                        logger.Info("发送消息失败!" + msg.Type + (msg.Data.Exists(o => o.Key == "Recipients")
                            ? msg.Data.Find(o => o.Key == "Recipients").Value
                            : "获取相关信息失败"));
                    }
                }
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqSync));
                logger.Error(ex.Message);
            }
        }
Beispiel #8
0
        public bool AddUserMessageQueueItem(UserMessageQueueItem userMessaeQueueItem)
        {
            if (userMessaeQueueItem == null)
            {
                throw new ArgumentNullException("userMessaeQueueItem");
            }
            if (string.IsNullOrEmpty(userMessaeQueueItem.UserID) || string.IsNullOrEmpty(userMessaeQueueItem.Device))
            {
                throw new KnownException("用户ID及设备不能为空");
            }

            userMessaeQueueItem.Id         = string.Empty;
            userMessaeQueueItem.State      = AppSyncDataStateEnum.Normal;
            userMessaeQueueItem.UpdateTime = DBTimeHelper.DBNowTime();

            var db = new MongoDbProvider <UserMessageQueueItem>();

            db.Insert(userMessaeQueueItem);
            return(true);
        }
Beispiel #9
0
        private static void GeneralSetUserMessageQueueItem(UserMessageQueueItem item, AppSyncActionEnum action, AppSyncDataTypeEnum dataType, FrontUserDto sendUserInfo, MessageItem msg)
        {
            item.Action       = action;
            item.SyncDataType = dataType;
            item.Time         = msg.ChangeTime;

            var chatMsg = new ChatMessage();

            chatMsg.SendUserID      = sendUserInfo.UserID;
            chatMsg.SendUserName    = sendUserInfo.Name;
            chatMsg.SendUserPicture = sendUserInfo.Picture;
            chatMsg.EnterpriseID    = sendUserInfo.EnterpiseID;
            chatMsg.IsRead          = ReadStatus.NoRead;
            chatMsg.Recipients      = msg.Data.Exists(o => o.Key == "Recipients") ? msg.Data.Find(o => o.Key == "Recipients").Value : "noRecipients";
            chatMsg.Message         = msg.Data.Exists(o => o.Key == "Text") ? msg.Data.Find(o => o.Key == "Text").Value : "";
            chatMsg.SendTime        = DateTime.SpecifyKind(Convert.ToDateTime(msg.Data.Exists(o => o.Key == "SendTime")
                ? msg.Data.Find(o => o.Key == "SendTime").Value
                : DateTime.MaxValue.ToString()), DateTimeKind.Local);
            chatMsg.MessageID = new Guid(msg.Data.Exists(o => o.Key == "MessageID")
                ? msg.Data.Find(o => o.Key == "MessageID").Value
                : Guid.Empty.ToString());
            item.Data = chatMsg;
        }
Beispiel #10
0
 private static void UserMsgItem2Mongo(IAppSyncService service, List <Services.SyncStateDto> syncInfos, UserMessageQueueItem msgItem)
 {
     if (null == syncInfos)
     {
         var logger = log4net.LogManager.GetLogger(typeof(MsmqSync));
         logger.Info("没有相关人员需要发送消息!");
     }
     else
     {
         foreach (var info in syncInfos)
         {
             msgItem.UserID = info.UserID;
             msgItem.Device = info.DeviceID;
             service.AddUserMessageQueueItem(msgItem);
         }
     }
 }
Beispiel #11
0
 private static void GeneralSetUserMessageQueueItem(UserMessageQueueItem item, AppSyncActionEnum action, AppSyncDataTypeEnum dataType, DateTime changeTime)
 {
     item.Action       = action;
     item.SyncDataType = dataType;
     item.Time         = changeTime;
 }
Beispiel #12
0
 private static void GeneralSetUserMessageQueueItem(UserMessageQueueItem item, DeletedEntity[] del, AppSyncDataTypeEnum dataType, DateTime changeTime)
 {
     item.DeletedEntities = del;
     item.SyncDataType    = dataType;
     item.Time            = changeTime;
 }
Beispiel #13
0
        private static OrganizationUserMsgItem2Mongo ProcessUserRoleChanges(MessageItem msg)
        {
            try
            {
                if (null == msg)
                {
                    return(null);
                }
                var usernoteItem = new UserMessageQueueItem();
                List <Services.SyncStateDto> syncInfo;

                if (OperationEnum.Deleted == msg.Operation)
                {
                    //  删除操作
                    var delList = new List <DeletedEntity>();
                    if ("UserRole" == msg.EntityName)
                    {
                        syncInfo = msg.Data.Exists(o => o.Key == "UserID")
                        ? Service.GetExistSyncStateDtosRelateFrontUserIDAtEnterprise(msg.Data.Find(o => o.Key == "UserID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "UserID");

                        var delete = new DeletedEntity();
                        if (msg.Data.Exists(o => o.Key == "User_RoleID"))
                        {
                            delete = new DeletedEntity {
                                EntityID = msg.Data.Find(o => o.Key == "User_RoleID").Value, EntityName = msg.EntityName
                            }
                        }
                        ;
                        delList.Add(delete);
                    }
                    else
                    {
                        syncInfo = msg.Data.Exists(o => o.Key == "EnterpriseID")
                        ? Service.GetExistSyncStateDtosByEnterpriseID(msg.Data.Find(o => o.Key == "EnterpriseID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "EnterpriseID");
                        var delete = new DeletedEntity();
                        if (msg.Data.Exists(o => o.Key == "RoleID"))
                        {
                            delete = new DeletedEntity {
                                EntityID = msg.Data.Find(o => o.Key == "RoleID").Value, EntityName = msg.EntityName
                            }
                        }
                        ;
                        delList.Add(delete);
                    }
                    DeletedEntity[] del = delList.ToArray();
                    GeneralSetUserMessageQueueItem(usernoteItem, del, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }
                else
                {
                    //  其他操作
                    if ("UserRole" == msg.EntityName)
                    {
                        syncInfo = msg.Data.Exists(o => o.Key == "UserID")
                        ? Service.GetExistSyncStateDtosRelateFrontUserIDAtEnterprise(msg.Data.Find(o => o.Key == "UserID").Value)
                        : GetError2Log4Net(msg.EntityName, msg.Operation, "UserID");
                    }
                    else
                    {
                        var item   = msg.Data.Find(o => o.Key == "RoleID");
                        int roleId = 0;
                        if (item != null)
                        {
                            int.TryParse(msg.Data.Find(o => o.Key == "RoleID").Value, out roleId);
                        }

                        syncInfo = Service.GetExistSyncStateDtoByRoleID(roleId);
                    }
                    GeneralSetUserMessageQueueItem(usernoteItem, AppSyncActionEnum.SyncOrganization, AppSyncDataTypeEnum.Entity, msg.ChangeTime);
                }

                return(new OrganizationUserMsgItem2Mongo
                {
                    SyncInfo = syncInfo,
                    UsernoteItem = usernoteItem
                });
                //UserMsgItem2Mongo(Service, syncInfo, usernoteItem);
            }
            catch (Exception ex)
            {
                var logger = log4net.LogManager.GetLogger(typeof(MsmqProvider));
                logger.Error(ex.Message);
            }
            return(null);
        }