Пример #1
0
        public BuyerData GetBuyerDataAndRemove(Int64 uuid)
        {
            BuyerData ret = GetBuyerData(uuid);

            if (null != ret)
            {
                buyerDatas.Remove(uuid);
            }

            return(ret);
        }
Пример #2
0
        public BuyerData GetBuyerData(Int64 uuid)
        {
            BuyerData ret = null;

            if (buyerDatas.ContainsKey(uuid))
            {
                ret = buyerDatas[uuid];
            }

            return(ret);
        }
Пример #3
0
        public bool AddBuyerData(BuyerData buyerData)
        {
            var repoTrading = TCGGameSrv.IocContainer.Resolve <Repository.ITrading>();

            repoTrading.TradeUpdate(buyerData.goods.seq, TcpMsg.TradeStatus.Trading, TcpMsg.TradeStatus.Onsale);

            var tblTrade = repoTrading.GetTblTradeSeq(buyerData.goods.seq);

            if (null != tblTrade && tblTrade.status == (Int32)TcpMsg.TradeStatus.Trading)
            {
                buyerData.goods.status = tblTrade.status;
                buyerDatas.Add(buyerData.uuid, buyerData);

                return(true);
            }

            return(false);
        }
        public void ReqTradeGoodsBuy(NetMessage message)
        {
            if (null != user)
            {
                var reqData = message.GetData <TcpMsg.ReqTradeGoodsBuy>();

                var tblTrade = TradingManager.Instance.GetTradeGoods(reqData.goodsSeq, TcpMsg.TradeStatus.Onsale);

                var errorCode = TcpMsg.Error.None;
                if (null != tblTrade)
                {
                    if (tblTrade.uuid != user.UID)
                    {
                        var tokenTypeInfo = LBD.LBDApiManager.Instance.GetFungibleTypeToMeta(((Int32)Resource.PriceType.Coin).ToString());

                        var currencyInfo = user.CheckFungibleToken(tokenTypeInfo.tokenType, tblTrade.sale_price);
                        errorCode = currencyInfo.Item1;

                        if (TcpMsg.Error.None == errorCode)
                        {
                            var currency  = currencyInfo.Item2 as TCurrency;
                            var tokenType = currency.TokenType();
                            var buyerData = new BuyerData()
                            {
                                uuid         = user.UID,
                                userid       = user.lineUID,
                                nickName     = user.nickName,
                                buyTokenType = tokenType,
                                goods        = tblTrade
                            };

                            if (TradingManager.Instance.AddBuyerData(buyerData))
                            {
                                user.stateType = UserStateType.SellerPayments;
                                LBD.LBDApiManager.Instance.AddLBDCmd(new LBD.Msg.LBDMsg_UserId_Fungible_Transfer()
                                {
                                    uid        = user.UID,
                                    guid       = user.Id.ToString(),
                                    fromUserId = user.lineUID,
                                    toAddr     = string.Empty,
                                    toUserId   = tblTrade.userid,
                                    tokenType  = buyerData.buyTokenType,
                                    amount     = tblTrade.sale_price
                                });
                                return;
                            }
                            else
                            {
                                errorCode = TcpMsg.Error.NotFoundGoodsOrTradeing;
                            }
                        }
                    }
                    else
                    {
                        errorCode = TcpMsg.Error.NotTradeSelfGoods;
                    }
                }
                else
                {
                    errorCode = TcpMsg.Error.NotFoundGoodsOrTradeing;
                }

                logger.Warn($"{errorCode.ToString()}");

                var ackData = new TcpMsg.AckTradeGoodsBuy()
                {
                    errCode = errorCode
                };

                user.Send(new Packet(ackData));
            }
            else
            {
                logger.Warn($"Is User Null~~~");
            }
        }