Example #1
0
        public bool AddSellerData(SellerData sellerData)
        {
            if (sellerDatas.ContainsKey(sellerData.uuid))
            {
                logger.Warn($"SaleData is Already registered UserUid={sellerData.uuid} TokenId={sellerData.card.GetTokenId()}");
                return(false);
            }

            sellerDatas.Add(sellerData.uuid, sellerData);
            return(true);
        }
        public void ReqRegisterTradeGoods(NetMessage message)
        {
            var reqData = message.GetData <TcpMsg.ReqRegisterTradeGoods>();

            if (null != user)
            {
                var spendCoin = Define.GetCoinFees(reqData.sale_price);

                logger.Debug($"ReqRegisterTradeGoods UserID={user.UID} SalePrice={reqData.sale_price} SpendRuby={spendCoin}");

                var tokenTypeInfo = LBD.LBDApiManager.Instance.GetFungibleTypeToMeta(((Int32)Resource.PriceType.Coin).ToString());

                var errorCode    = TcpMsg.Error.None;
                var currencyInfo = user.CheckFungibleToken(tokenTypeInfo.tokenType, spendCoin);
                errorCode = currencyInfo.Item1;

                if (TcpMsg.Error.None == errorCode)
                {
                    var currency = currencyInfo.Item2 as TCurrency;

                    var tokenData = user.IsTradePossibleCard(reqData.tokenid);
                    errorCode = tokenData.Item1;

                    if (TcpMsg.Error.None == errorCode)
                    {
                        var sellerData = new SellerData()
                        {
                            uuid       = user.UID,
                            userid     = user.lineUID,
                            nickName   = user.nickName,
                            card       = tokenData.Item2,
                            comment    = reqData.comment,
                            sale_price = reqData.sale_price
                        };

                        if (TradingManager.Instance.AddSellerData(sellerData))
                        {
                            user.stateType = UserStateType.RegisterTradeGoodsFees;
                            user.WithdrawFungible(currency.TokenType(), spendCoin);
                            return;
                        }
                        else
                        {
                            errorCode = TcpMsg.Error.RegisterGoodsFail;
                        }
                    }
                }

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

                var ackData = new TcpMsg.AckRegisterTradeGoods()
                {
                    errCode   = errorCode,
                    goodsInfo = null
                };

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