示例#1
0
        public SysDicItemSet(INTMinerRoot root, bool isUseJson)
        {
            _root      = root;
            _isUseJson = isUseJson;
            _root.ServerContextWindow <AddSysDicItemCommand>("添加系统字典项", LogEnum.DevConsole,
                                                             action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("dicitem code can't be null or empty");
                }
                if (_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                if (!_dicByDicId.ContainsKey(message.Input.DicId))
                {
                    _dicByDicId.Add(message.Input.DicId, new Dictionary <string, SysDicItemData>(StringComparer.OrdinalIgnoreCase));
                }
                if (_dicByDicId[message.Input.DicId].ContainsKey(message.Input.Code))
                {
                    throw new ValidationException("编码重复");
                }
                SysDicItemData entity = new SysDicItemData().Update(message.Input);
                _dicById.Add(entity.Id, entity);
                _dicByDicId[message.Input.DicId].Add(entity.Code, entity);
                var repository = NTMinerRoot.CreateCompositeRepository <SysDicItemData>(isUseJson);
                repository.Add(entity);

                VirtualRoot.Happened(new SysDicItemAddedEvent(entity));
            });
            _root.ServerContextWindow <UpdateSysDicItemCommand>("更新系统字典项", LogEnum.DevConsole,
                                                                action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("sysDicItem code can't be null or empty");
                }
                if (!_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                SysDicItemData entity = _dicById[message.Input.GetId()];
                if (ReferenceEquals(entity, message.Input))
                {
                    return;
                }
                string oldCode = entity.Code;
                entity.Update(message.Input);
                // 如果编码变更了
                if (oldCode != entity.Code)
                {
                    _dicByDicId[entity.DicId].Remove(oldCode);
                    _dicByDicId[entity.DicId].Add(entity.Code, entity);
                }
                var repository = NTMinerRoot.CreateCompositeRepository <SysDicItemData>(isUseJson);
                repository.Update(entity);

                VirtualRoot.Happened(new SysDicItemUpdatedEvent(entity));
            });
            _root.ServerContextWindow <RemoveSysDicItemCommand>("移除系统字典项", LogEnum.DevConsole,
                                                                action: (message) => {
                InitOnece();
                if (message == null || message.EntityId == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_dicById.ContainsKey(message.EntityId))
                {
                    return;
                }
                SysDicItemData entity = _dicById[message.EntityId];
                _dicById.Remove(entity.Id);
                if (_dicByDicId.ContainsKey(entity.DicId))
                {
                    if (_dicByDicId[entity.DicId].ContainsKey(entity.Code))
                    {
                        _dicByDicId[entity.DicId].Remove(entity.Code);
                    }
                }
                var repository = NTMinerRoot.CreateCompositeRepository <SysDicItemData>(isUseJson);
                repository.Remove(entity.Id);

                VirtualRoot.Happened(new SysDicItemRemovedEvent(entity));
            });
        }
示例#2
0
        public SysDicItemSet(IServerContext context)
        {
            _context = context;
            _context.AddCmdPath <AddSysDicItemCommand>("添加系统字典项", LogEnum.DevConsole,
                                                       action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("dicitem code can't be null or empty");
                }
                if (_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                if (!_dicByDicId.ContainsKey(message.Input.DicId))
                {
                    _dicByDicId.Add(message.Input.DicId, new Dictionary <string, SysDicItemData>(StringComparer.OrdinalIgnoreCase));
                }
                if (_dicByDicId[message.Input.DicId].ContainsKey(message.Input.Code))
                {
                    throw new ValidationException("编码重复");
                }
                SysDicItemData entity = new SysDicItemData().Update(message.Input);
                _dicById.Add(entity.Id, entity);
                _dicByDicId[message.Input.DicId].Add(entity.Code, entity);
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Add(entity);

                VirtualRoot.RaiseEvent(new SysDicItemAddedEvent(message.MessageId, entity));
            }, location: this.GetType());
            _context.AddCmdPath <UpdateSysDicItemCommand>("更新系统字典项", LogEnum.DevConsole,
                                                          action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("sysDicItem code can't be null or empty");
                }
                if (!_dicById.TryGetValue(message.Input.GetId(), out SysDicItemData entity))
                {
                    return;
                }
                if (ReferenceEquals(entity, message.Input))
                {
                    return;
                }
                string oldCode = entity.Code;
                entity.Update(message.Input);
                // 如果编码变更了
                if (oldCode != entity.Code)
                {
                    _dicByDicId[entity.DicId].Remove(oldCode);
                    _dicByDicId[entity.DicId].Add(entity.Code, entity);
                }
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Update(entity);

                VirtualRoot.RaiseEvent(new SysDicItemUpdatedEvent(message.MessageId, entity));
            }, location: this.GetType());
            _context.AddCmdPath <RemoveSysDicItemCommand>("移除系统字典项", LogEnum.DevConsole,
                                                          action: (message) => {
                InitOnece();
                if (message == null || message.EntityId == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_dicById.TryGetValue(message.EntityId, out SysDicItemData entity) || !_context.SysDicSet.TryGetSysDic(entity.DicId, out ISysDic sysDic))
                {
                    return;
                }
                bool isKernelBrand = sysDic.Code == NTKeyword.KernelBrandSysDicCode;
                bool isPoolBrand   = sysDic.Code == NTKeyword.PoolBrandSysDicCode;
                bool isAlgo        = sysDic.Code == NTKeyword.AlgoSysDicCode;
                // TODO:如果是内核品牌、矿池品牌、算法
                _dicById.Remove(entity.Id);
                if (_dicByDicId.TryGetValue(entity.DicId, out Dictionary <string, SysDicItemData> dicItemDic))
                {
                    dicItemDic.Remove(entity.Code);
                }
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Remove(entity.Id);

                VirtualRoot.RaiseEvent(new SysDicItemRemovedEvent(message.MessageId, entity));
            }, location: this.GetType());
        }
示例#3
0
        public SysDicItemSet(IServerContext context)
        {
            _context = context;
            _context.AddCmdPath <AddSysDicItemCommand>(LogEnum.DevConsole,
                                                       action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("dicitem code can't be null or empty");
                }
                if (_dicById.ContainsKey(message.Input.GetId()))
                {
                    return;
                }
                if (!_dicByDicId.ContainsKey(message.Input.DicId))
                {
                    _dicByDicId.Add(message.Input.DicId, new Dictionary <string, SysDicItemData>(StringComparer.OrdinalIgnoreCase));
                }
                if (_dicByDicId[message.Input.DicId].ContainsKey(message.Input.Code))
                {
                    throw new ValidationException("编码重复");
                }
                SysDicItemData entity = new SysDicItemData().Update(message.Input);
                _dicById.Add(entity.Id, entity);
                _dicByDicId[message.Input.DicId].Add(entity.Code, entity);
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Add(entity);

                VirtualRoot.RaiseEvent(new SysDicItemAddedEvent(message.MessageId, entity));
            }, location: this.GetType());
            _context.AddCmdPath <UpdateSysDicItemCommand>(LogEnum.DevConsole,
                                                          action: (message) => {
                InitOnece();
                if (message == null || message.Input == null || message.Input.GetId() == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (string.IsNullOrEmpty(message.Input.Code))
                {
                    throw new ValidationException("sysDicItem code can't be null or empty");
                }
                if (!_dicById.TryGetValue(message.Input.GetId(), out SysDicItemData entity))
                {
                    return;
                }
                if (ReferenceEquals(entity, message.Input))
                {
                    return;
                }
                string oldCode = entity.Code;
                entity.Update(message.Input);
                // 如果编码变更了
                if (oldCode != entity.Code)
                {
                    _dicByDicId[entity.DicId].Remove(oldCode);
                    _dicByDicId[entity.DicId].Add(entity.Code, entity);
                }
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Update(entity);

                VirtualRoot.RaiseEvent(new SysDicItemUpdatedEvent(message.MessageId, entity));
            }, location: this.GetType());
            _context.AddCmdPath <RemoveSysDicItemCommand>(LogEnum.DevConsole,
                                                          action: (message) => {
                InitOnece();
                if (message == null || message.EntityId == Guid.Empty)
                {
                    throw new ArgumentNullException();
                }
                if (!_dicById.TryGetValue(message.EntityId, out SysDicItemData entity) ||
                    !_context.SysDicSet.TryGetSysDic(entity.DicId, out ISysDic sysDic))
                {
                    return;
                }
                switch (sysDic.Code)
                {
                case NTKeyword.KernelBrandSysDicCode:
                    if (NTMinerContext.Instance.ServerContext.KernelSet.AsEnumerable().Any(a => a.BrandId == message.EntityId))
                    {
                        VirtualRoot.Out.ShowWarn("该内核品牌字典项关联有内核品牌不能删除,请先解除关联");
                        return;
                    }
                    break;

                case NTKeyword.PoolBrandSysDicCode:
                    if (NTMinerContext.Instance.ServerContext.PoolSet.AsEnumerable().Any(a => a.BrandId == message.EntityId))
                    {
                        VirtualRoot.Out.ShowWarn("该矿池品牌字典项关联有矿池品牌不能删除,请先解除关联");
                        return;
                    }
                    break;

                case NTKeyword.AlgoSysDicCode:
                    if (NTMinerContext.Instance.ServerContext.PackageSet.AsEnumerable().Any(a => a.AlgoIds.Contains(message.EntityId)))
                    {
                        VirtualRoot.Out.ShowWarn("该算法字典项关联有内核不能删除,请先解除关联");
                        return;
                    }
                    break;

                default:
                    break;
                }
                _dicById.Remove(entity.Id);
                if (_dicByDicId.TryGetValue(entity.DicId, out Dictionary <string, SysDicItemData> dicItemDic))
                {
                    dicItemDic.Remove(entity.Code);
                }
                var repository = context.CreateCompositeRepository <SysDicItemData>();
                repository.Remove(entity.Id);

                VirtualRoot.RaiseEvent(new SysDicItemRemovedEvent(message.MessageId, entity));
            }, location: this.GetType());
        }