Beispiel #1
0
        public async Task ShowShop()
        {
            var result = await DoCommand(async() => {
                var playerId = _account.PlayerId;

                var command = new ShowShopCommand(playerId);
                await _bus.SendCommand(command);
            });
        }
Beispiel #2
0
        public async Task <Unit> Handle(ShowShopCommand command, CancellationToken cancellationToken)
        {
            var playerId = command.PlayerId;

            var player = await _playerDomainService.Get(playerId);

            if (player == null)
            {
                await _bus.RaiseEvent(new DomainNotification($"角色不存在!"));

                return(Unit.Value);
            }

            List <StoreWareModel> storeWareModels = new List <StoreWareModel>();

            var storeWares = (await _storeWareDomainService.GetAll()).ToList();

            if (storeWares == null)
            {
                return(Unit.Value);
            }

            var ids = storeWares.Select(x => x.WareId).ToList();

            var wares = (await _wareDomainService.GetAll()).Where(x => ids.Contains(x.Id));

            foreach (var storeWare in storeWares)
            {
                var ware = wares.FirstOrDefault(x => x.Id == storeWare.WareId);
                if (ware != null)
                {
                    var wareModel = _mapper.Map <StoreWareModel>(ware);
                    wareModel.StoreWareId   = storeWare.Id;
                    wareModel.Number        = storeWare.Number;
                    wareModel.Price         = storeWare.Price;
                    wareModel.OriginalPrice = storeWare.OriginalPrice;
                    wareModel.PriceType     = storeWare.PriceType;
                    wareModel.IsBind        = storeWare.IsBind;
                    wareModel.PriceDesc     = storeWare.Price.ToMoney();
                    storeWareModels.Add(wareModel);
                }
            }


            await _mudProvider.ShowShop(playerId, storeWareModels);

            return(Unit.Value);
        }