Esempio n. 1
0
        public async Task <UserCurrency> CreateAsync(Guid userId, string currency, bool isPrimary)
        {
            UserCurrency userCurrency         = new UserCurrency(userId, currency, isPrimary);
            EntityEntry <UserCurrency> result = await _set.AddAsync(userCurrency);

            return(result.Entity);
        }
Esempio n. 2
0
        public async Task <IActionResult> AddCurrencyToUser([FromBody] AddCurrencyToUserModel model)
        {
            if (model.Secret != _applicationSettings.DiscordBotSecret)
            {
                return(Unauthorized());
            }

            var user = await _userManager.Users.SingleOrDefaultAsync(u => u.DiscordId.StartsWith(model.DiscordId));

            if (user == null)
            {
                return(NotFound($"No user was found for DiscordId: {model.DiscordId}"));
            }

            var lastMessage = _storeRepository.GetMostRecentUserCurrencyByUserIdAndReason(user.Id, model.CurrencyTransactionReason);

            if (lastMessage == null || (DateTime.UtcNow - lastMessage.DateNoted).TotalSeconds >= _applicationSettings.DiscordPointCooldownInSeconds)
            {
                var uc = new UserCurrency
                {
                    Amount = model.Amount,
                    CurrencyTransactionReasonId = model.CurrencyTransactionReason,
                    CurrencyTypeId = CurrencyType.Normal,
                    DateNoted      = DateTime.UtcNow,
                    UserId         = user.Id
                };

                await _storeRepository.SaveUserCurrency(uc);
            }

            return(Ok());
        }
        public async Task <bool> DeleteFavCurrency(int currencyId, ClaimsPrincipal user)
        {
            bool result = false;

            var loggedInUser = await _userManager.Users
                               .Include(u => u.UserFavoriteCurrencies)
                               .SingleAsync(u => u.UserName == user.Identity.Name);

            if (loggedInUser != null)
            {
                UserCurrency userCurrency = await _userCurrencyRepository.GetUserCurrency(loggedInUser.Id, currencyId);

                if (userCurrency != null)
                {
                    try
                    {
                        _userCurrencyRepository.DeleteUserFavoriteCurrency(userCurrency);
                        result = true;
                    }
                    catch (ArgumentException e)
                    {
                        result = false;
                    }
                }
            }

            return(result);
        }
Esempio n. 4
0
        /// <summary>
        /// 获取商品类型
        /// </summary>
        /// <param name="context"></param>
        private void GetShopHome(HttpContext context)
        {
            AjaxJsonValid _ajv   = new AjaxJsonValid();
            int           typeid = GameRequest.GetQueryInt("typeid", 0);
            int           userid = GameRequest.GetQueryInt("userid", 0);

            _ajv.msg = "获取数据成功";
            _ajv.SetValidDataValue(true);

            DataSet           ds       = FacadeManage.aideNativeWebFacade.GetAwardHomeList(typeid);
            UserCurrency      Currency = FacadeManage.aideTreasureFacade.GetUserCurrency(userid);
            IList <AwardInfo> list     = DataHelper.ConvertDataTableToObjects <AwardInfo>(ds.Tables[1]);

            foreach (AwardInfo Info in list)
            {
                Info.AwardImg = Info.AwardImg.IndexOf("http://", StringComparison.Ordinal) < 0
                    ? Fetch.GetUploadFileUrl(Info.AwardImg)
                    : Info.AwardImg;
            }

            _ajv.SetDataItem("type", ds.Tables[0]);
            _ajv.SetDataItem("list", list);
            _ajv.SetDataItem("AwardTicket", Currency == null?0: Currency.AwardTicket);
            context.Response.Write(_ajv.SerializeToJson());
        }
Esempio n. 5
0
        /// <summary>
        /// 获取下单信息
        /// </summary>
        /// <param name="context"></param>
        private void GetOrderAwardInfo(HttpContext context)
        {
            int id     = GameRequest.GetQueryInt("id", 0);
            int userid = GameRequest.GetQueryInt("uid", 0);


            AjaxJsonValid _ajv = new AjaxJsonValid();

            if (id == 0)
            {
                _ajv.msg = "缺少参数奖品ID";
                context.Response.Write(_ajv.SerializeToJson());
                return;
            }

            UserCurrency Currency = FacadeManage.aideTreasureFacade.GetUserCurrency(userid);

            _ajv.msg = "获取数据成功";
            _ajv.SetValidDataValue(true);


            DataSet ds = FacadeManage.aideNativeWebFacade.GetOrderAwardInfo(userid, id);

            _ajv.SetDataItem("award", ds.Tables[0]);
            _ajv.SetDataItem("uinfo", ds.Tables[1]);
            _ajv.SetDataItem("AwardTicket", Currency.AwardTicket);
            context.Response.Write(_ajv.SerializeToJson());
        }
Esempio n. 6
0
        public async Task <List <BalancePrimaryCurrencyModel> > GetUserPrimaryCurrencyBalancesAsync(Guid userId)
        {
            UserCurrency userCurrency = await _userCurrencyRepository.GetPrimaryCurrencyAsync(userId);

            IEnumerable <Balance> balances = await _balanceRepository.GetLatestBalancesAsync(userId);

            List <BalancePrimaryCurrencyModel> result = new List <BalancePrimaryCurrencyModel>();

            if (balances.Count() == 0)
            {
                return(result);
            }

            DateTime effectiveDate = balances.First().EffectiveDate;
            List <ExchangeRateModel> exchangeRates = await _exchangeRateService.GetExchangeRatesAsync(userId, effectiveDate);

            foreach (Balance balance in balances)
            {
                ExchangeRateModel rate = exchangeRates.First(r =>
                                                             r.BaseCurrency.Equals(balance.Asset.Balance.Currency, StringComparison.OrdinalIgnoreCase) &&
                                                             r.CounterCurrency.Equals(userCurrency.Currency, StringComparison.OrdinalIgnoreCase));

                result.Add(new BalancePrimaryCurrencyModel(userCurrency.Currency, balance, rate));
            }

            return(result);
        }
        public UserFixture()
        {
            UserId = 123456;

            EmptyUser = new User
            {
                UserTelegramId = 123456
            };

            UserWithCurrencies = new User
            {
                Currencies = new List <UserCurrency>
                {
                    new UserCurrency {
                        Currency = Currencies.EUR
                    },
                    new UserCurrency {
                        Currency = Currencies.USD
                    }
                },
                UserTelegramId = 123456
            };

            UserWithLanguageCode = new User
            {
                LanguageCode = "uk"
            };

            RubCurrency = new UserCurrency
            {
                Currency = Currencies.RUB
            };
        }
Esempio n. 8
0
        public static string TezToCurrency(this decimal tz, Tezos.MarketData md, UserCurrency currency)
        {
            var code = currency.GetDisplayName();

            return((tz * md.CurrencyRate((Currency)currency))
                   .ToString($"###,###,###,###,##0.00 {code}", CultureInfo.InvariantCulture).Trim());
        }
Esempio n. 9
0
        public async Task <bool> CheckIsPrimaryAsync(Guid userId, string currency)
        {
            UserCurrency userCurrency = await _set.FirstOrDefaultAsync(uc => uc.Currency == currency && uc.UserId == userId);

            return(userCurrency != null
                ? userCurrency.IsPrimary
                : false);
        }
Esempio n. 10
0
        public async Task <UserCurrencyModel> GetUserCurrencyAsync(Guid userId, string currency)
        {
            UserCurrency userCurrency = await _userCurrencyRepository.GetCurrencyAsync(userId, currency);

            UserCurrencyModel result = new UserCurrencyModel(userCurrency.Currency, userCurrency.IsPrimary);

            return(result);
        }
Esempio n. 11
0
        public async Task <UserCurrency> SetPrimaryAsync(Guid userId, string currency)
        {
            List <UserCurrency> userCurrencies = await _set.Where(uc => uc.UserId == userId).ToListAsync();

            userCurrencies.Select(uc => uc.IsPrimary = false);
            UserCurrency primary = userCurrencies.First(uc => uc.Currency == currency);

            return(primary);
        }
Esempio n. 12
0
        public async Task <UserCurrencyModel> SetUserPrimaryCurrencyAsync(Guid userId, string currency)
        {
            UserCurrency userCurrency = await _userCurrencyRepository.SetPrimaryAsync(userId, currency);

            await _unitOfWork.SaveChangesAsync();

            UserCurrencyModel result = new UserCurrencyModel(userCurrency.Currency, userCurrency.IsPrimary);

            return(result);
        }
Esempio n. 13
0
        public void Refresh(UserCurrency currency)
        {
            foreach (var current in currency.Current)
            {
                var indicator = indicators.FirstOrDefault(i => i.Type == current.Type);
                var max       = currency.Max.FirstOrDefault(x => x.Type == current.Type);

                indicator.Refresh(current.Count, max.Count);
            }
        }
        public async void InsertUserCurrencyAsync(UserCurrency userCurrency)
        {
            if (userCurrency.UserCurrencyId != Guid.Empty)
            {
                throw new InvalidOperationException("UserCurrency objects can only be inserted, not updated.");
            }

            _context.UserCurrency.Add(userCurrency);
            await _context.SaveChangesAsync();
        }
        public async Task SaveUserCurrency(UserCurrency userCurrency)
        {
            if (userCurrency.UserCurrencyId == Guid.Empty)
            {
                _context.Add(userCurrency);
            }
            else
            {
                _context.Update(userCurrency);
            }

            await _context.SaveChangesAsync();
        }
Esempio n. 16
0
    public void Awake()
    {
        if (Instance == null)
        {
            Instance = GetComponent <UserCurrency> ();
        }
        else
        {
            Destroy(gameObject);
        }

        DontDestroyOnLoad(gameObject);
    }
        /// <summary>
        /// 领取排行榜奖励
        /// </summary>
        /// <param name="dateid"></param>
        /// <param name="typeid"></param>
        private static void ReceiveRankingAward(int dateid, int typeid)
        {
            //领取排行榜奖励
            Message msg =
                FacadeManage.aideNativeWebFacade.ReceiveRankingAward(_userid, dateid, typeid, GameRequest.GetUserIP());

            if (msg.Success)
            {
                _ajv.SetValidDataValue(true);
                UserCurrency currency = msg.EntityList[0] as UserCurrency;
                _ajv.SetDataItem("diamond", currency?.Diamond ?? 0);
            }
            _ajv.msg = msg.Content;
        }
Esempio n. 18
0
 protected void Page_Load(object sender, EventArgs e)
 {
     Card.Site.Menu = 3;
     if (!IsPostBack)
     {
         //获取登录信息
         UserTicketInfo user = userTicket;
         //身上钻石数
         UserCurrency currency = FacadeManage.aideTreasureFacade.GetUserCurrency(user.UserID);
         lbDiamond.Text = currency?.Diamond.ToString() ?? "0";
         //获取今日赠送钻石
         lbPresentDiamond.Text = FacadeManage.aideRecordFacade.GetTodayAgentPresentDiamond(user.UserID).ToString();
     }
 }
Esempio n. 19
0
        public async Task <System.Net.HttpStatusCode> AddCrypto(string cryptoname, int userid)
        {
            UserCurrency curr = new UserCurrency();

            curr.crypto = cryptoname;
            var json = JsonConvert.SerializeObject(curr);
            var data = new StringContent(json, Encoding.UTF8, "application/json");

            using var client = new HttpClient();
            var content = await client.PostAsync("https://crmonapi.azurewebsites.net/crypto/useraddcrypto/" + userid, data);

            System.Net.HttpStatusCode state = content.StatusCode;
            return(state);
        }
Esempio n. 20
0
        public async Task <bool> DeleteAsync(Guid userId, string currency)
        {
            UserCurrency userCurrency = await _set.FirstOrDefaultAsync(uc => uc.Currency == currency && uc.UserId == userId);

            if (userCurrency != null)
            {
                _set.Remove(userCurrency);
                return(true);
            }
            else
            {
                return(false);
            }
        }
 protected void Page_Init(object sender, EventArgs e)
 {
     if (AbleContext.Current.Store.Currencies.Count > 1)
     {
         Store store = AbleContext.Current.Store;
         HelpText.Text           = string.Format(HelpText.Text, store.Name, store.BaseCurrency.Name);
         UserCurrency.DataSource = store.Currencies;
         UserCurrency.DataBind();
     }
     else
     {
         WidgetPanel.Visible = false;
     }
 }
Esempio n. 22
0
        public async Task <IReadOnlyCollection <ExchangeRateProviderModel> > FetchProviderExchangeRatesAsync(
            Guid userId,
            string provider)
        {
            IEnumerable <Currency> currenciesEntities = await _currencyRepository.GetAllAsync();

            List <string> currencies      = currenciesEntities.Select(c => c.Name).ToList();
            UserCurrency  primaryCurrency = await _userCurrencyRepository.GetPrimaryCurrencyAsync(userId);

            IReadOnlyCollection <ExchangeRateProviderModel> result = await _exchangeRateExternalService
                                                                     .FetchProviderExchangeRateAsync(provider, primaryCurrency.Currency, currencies);

            return(result);
        }
Esempio n. 23
0
        public async Task <UserCurrencyModel> AddUserCurrencyAsync(Guid userId, string currency, bool isPrimary)
        {
            UserCurrency userCurrency = await _userCurrencyRepository.GetCurrencyAsync(userId, currency);

            if (userCurrency == null)
            {
                userCurrency = await _userCurrencyRepository.CreateAsync(userId, currency, isPrimary);

                await _unitOfWork.SaveChangesAsync();
            }

            UserCurrencyModel result = new UserCurrencyModel(userCurrency.Currency, userCurrency.IsPrimary);

            return(result);
        }
        public async Task PurchaseItem(StoreItem item, ApplicationUser user)
        {
            var uc = new UserCurrency
            {
                Amount = -item.Price,
                CurrencyTransactionReasonId = CurrencyTransactionReason.Purchase,
                CurrencyTypeId = CurrencyType.Normal,
                User           = user,
                DateNoted      = DateTime.UtcNow
            };

            _context.UserCurrency.Add(uc);
            await _context.SaveChangesAsync();

            return;
        }
        private UserManager <User> CreateUserManagerMock()
        {
            var userManagerMock = new Mock <UserManager <User> >(
                new Mock <IUserStore <User> >().Object,
                new Mock <IOptions <IdentityOptions> >().Object,
                new Mock <IPasswordHasher <User> >().Object,
                new IUserValidator <User> [0],
                new IPasswordValidator <User> [0],
                new Mock <ILookupNormalizer>().Object,
                new Mock <IdentityErrorDescriber>().Object,
                new Mock <IServiceProvider>().Object,
                new Mock <ILogger <UserManager <User> > >().Object);
            List <User> users    = new List <User>();
            User        testUser = new User()
            {
                UserName = _testUserName,
                Id       = _testUserId,
                UserFavoriteCurrencies = new List <UserCurrency>()
            };
            UserCurrency testUserCurrency = new UserCurrency()
            {
                CurrencyId = 1,
                Currency   = null,
                UserId     = testUser.Id,
                User       = testUser,
            };
            Currency testCurrency = new Currency()
            {
                Id               = _firstTestCurrencyId,
                Name             = _firstTestCurrencyName,
                FavoritedByUsers = new List <UserCurrency> {
                    testUserCurrency
                }
            };

            testUserCurrency.Currency = testCurrency;
            testUser.UserFavoriteCurrencies.Add(testUserCurrency);

            var mock = users.AsQueryable().BuildMock();

            users.Add(testUser);

            userManagerMock.Setup(x => x.Users).Returns(mock.Object);

            return(userManagerMock.Object);
        }
        public async Task AddCurrencyForUser(string gamerTag, decimal amount, CurrencyTransactionReason currencyTransactionReason, CurrencyType currencyType = CurrencyType.Normal)
        {
            using (var scope = _serviceProvider.CreateScope())
                using (var userManager = scope.ServiceProvider.GetRequiredService <UserManager <ApplicationUser> > ())
                {
                    var user = userManager.Users.SingleOrDefault(u => string.Equals(gamerTag, u.GamerTag, StringComparison.CurrentCultureIgnoreCase));

                    var uc = new UserCurrency
                    {
                        Amount = amount,
                        CurrencyTransactionReasonId = currencyTransactionReason,
                        CurrencyTypeId = currencyType,
                        DateNoted      = DateTime.UtcNow,
                        UserId         = user.Id
                    };

                    await _storeRepository.SaveUserCurrency(uc);
                }
        }
Esempio n. 27
0
        public async Task <List <ExchangeRateModel> > AddExchangeRatesAsync(Guid userId, DateTime effectiveDate)
        {
            IEnumerable <Currency> currenciesEntities = await _currencyRepository.GetAllAsync();

            IEnumerable <string>       currencies    = currenciesEntities.Select(c => c.Name);
            IEnumerable <ExchangeRate> existingRates = await _exchangeRateRepository.GetByEffectiveDateAsync(effectiveDate);

            List <string> missingCurrencies = currencies.Except(existingRates.Select(r => r.BaseCurrency)).ToList();

            List <ExchangeRateModel> result = existingRates.Select(r => new ExchangeRateModel(r)).ToList();

            if (missingCurrencies.Any())
            {
                UserCurrency primaryCurrency = await _userCurrencyRepository.GetPrimaryCurrencyAsync(userId);

                IReadOnlyCollection <ExchangeRateProviderModel> providerRates = await _exchangeRateExternalService
                                                                                .TryFetchRatesAsync(primaryCurrency.Currency, missingCurrencies);

                if (providerRates != null)
                {
                    foreach (ExchangeRateProviderModel rate in providerRates)
                    {
                        ExchangeRate exchangeRate = await _exchangeRateRepository
                                                    .AlterAsync(
                            effectiveDate,
                            rate.BaseCurrency,
                            primaryCurrency.Currency,
                            rate.Buy,
                            rate.Sell,
                            rate.Provider);

                        result.Add(new ExchangeRateModel(exchangeRate));
                    }

                    await _unitOfWork.SaveChangesAsync();
                }
            }

            return(result);
        }
        private IUserCurrencyRepository CreateUserCurrencyRepository()
        {
            Mock <IUserCurrencyRepository> userCurrencyRepositoryMock = new Mock <IUserCurrencyRepository>();
            List <Currency> currenciesToReturn;
            User            testUser = new User()
            {
                UserName = _testUserName,
                Id       = _testUserId,
                UserFavoriteCurrencies = new List <UserCurrency>()
            };
            UserCurrency testUserCurrency = new UserCurrency()
            {
                CurrencyId = 1,
                Currency   = null,
                UserId     = testUser.Id,
                User       = testUser,
            };
            Currency testCurrency = new Currency()
            {
                Id               = _firstTestCurrencyId,
                Name             = _firstTestCurrencyName,
                FavoritedByUsers = new List <UserCurrency> {
                    testUserCurrency
                }
            };

            testUserCurrency.Currency = testCurrency;
            currenciesToReturn        = new List <Currency>()
            {
                testCurrency
            };

            userCurrencyRepositoryMock.Setup(x => x.GetUserFavoriteCurrencies(testUser.Id)).ReturnsAsync(currenciesToReturn);
            userCurrencyRepositoryMock.Setup(x => x.GetUserCurrency(testUser.Id, testCurrency.Id)).ReturnsAsync(testUserCurrency);

            return(userCurrencyRepositoryMock.Object);
        }
        public UserCurrency GetUserCurrency(UUID agentId)
        {
            object remoteValue = DoRemoteByURL("CurrencyServerURI", agentId);
            if (remoteValue != null || m_doRemoteOnly)
                return (UserCurrency) remoteValue;

            Dictionary<string, object> where = new Dictionary<string, object> (1);
            where ["PrincipalID"] = agentId;
            List<string> query = GD.Query (new [] { "*" }, _REALM, new QueryFilter () {
                andFilters = where
            }, null, null, null);
            UserCurrency currency;
            if ((query == null) || (query.Count == 0))
            {
                currency = new UserCurrency(agentId, 0, 0, 0, false, 0);
                UserCurrencyCreate(agentId);
                return currency;
            }

            return new UserCurrency(query);
        }
 void UserCurrencyUpdate(UserCurrency agent, bool full)
 {
     if (full)
         GD.Update (_REALM,
             new Dictionary<string, object> {
                 { "LandInUse", agent.LandInUse },
                 { "Tier", agent.Tier },
                 { "IsGroup", agent.IsGroup },
                 { "Amount", agent.Amount },
                 { "StipendsBalance", agent.StipendsBalance }
             },
             null,
             new QueryFilter () {
                 andFilters = new Dictionary<string, object> {
                     { "PrincipalID", agent.PrincipalID }
                 }
             },
             null,
             null
         );
     else
         GD.Update (_REALM,
             new Dictionary<string, object> {
                 { "LandInUse", agent.LandInUse },
                 { "Tier", agent.Tier },
                 { "IsGroup", agent.IsGroup }
             },
             null,
             new QueryFilter () {
                 andFilters = new Dictionary<string, object> {
                     { "PrincipalID", agent.PrincipalID }
                 }
             },
             null,
             null);
 }
Esempio n. 31
0
        public async Task <ObjectResult> AddCrypto([FromBody] UserCurrency item, string id)
        {
            UserList dBUserItemsDBFind = JsonConvert.DeserializeObject <UserList>(System.IO.File.ReadAllText(path));
            Commands comm = new Commands();

            comm.DBCheck(comm, dBUserItemsDBFind, id);
            if (comm.Exist == false)
            {
                Response.StatusCode = 404;
                return(new ObjectResult(null));
            }
            client = new CoinpaprikaAPI.Client();
            var coins = await client.GetCoinsAsync();

            string s  = JsonConvert.SerializeObject(coins);
            Value  st = JsonConvert.DeserializeObject <Value>(s);
            Dictionary <string, string> names = new Dictionary <string, string>();
            int lenght = st.value.Count;

            for (int i = 0; i < lenght; i++)
            {
                st.value[i].Name = st.value[i].Name.ToLower();
                names.Add(st.value[i].Id, st.value[i].Name);
            }
            item.crypto = item.crypto.ToLower();
            item.crypto = names.FirstOrDefault(x => x.Value == item.crypto).Key;
            string item1 = item.crypto;

            if (item1 == null)
            {
                Response.StatusCode = 400;
                return(new ObjectResult(null));
            }
            if (dBUserItemsDBFind.users[comm.Index].Currency == null)
            {
                UserMoney p1 = new UserMoney
                {
                    Crypto = item1,
                };
                List <UserMoney> users = new List <UserMoney>();
                users.Add(p1);
                dBUserItemsDBFind.users[comm.Index].Currency = users;
                await System.IO.File.WriteAllTextAsync(path, JsonConvert.SerializeObject(dBUserItemsDBFind, Formatting.Indented));
            }
            else
            {
                for (int i = 0; i < dBUserItemsDBFind.users[comm.Index].Currency.Count; i++)
                {
                    if (dBUserItemsDBFind.users[comm.Index].Currency[i].Crypto == item1)
                    {
                        Response.StatusCode = 409;
                        item1 = null;
                        return(new ObjectResult(null));
                    }
                }
                dBUserItemsDBFind.users[comm.Index].Currency.Add(new UserMoney()
                {
                    Crypto = item1
                });
            }
            if (dBUserItemsDBFind.users[comm.Index].Real == null)
            {
                dBUserItemsDBFind.users[comm.Index].Real = "usd";
            }
            await System.IO.File.WriteAllTextAsync(path, JsonConvert.SerializeObject(dBUserItemsDBFind, Formatting.Indented));

            return(new ObjectResult(null));
        }
Esempio n. 32
0
        /// <summary>
        /// 购买商品
        /// </summary>
        /// <param name="context"></param>
        private void BuyAward(HttpContext context)
        {
            Message       msg      = new Message();
            AjaxJsonValid ajaxJson = new AjaxJsonValid();
            int           userid   = GameRequest.GetQueryInt("userid", 0);
            //判断登录
            //if (!Fetch.IsUserOnline())
            //{
            //    ajaxJson.code = 1;
            //    ajaxJson.msg = "请先登录";
            //    context.Response.Write(ajaxJson.SerializeToJson());
            //    return;
            //}

            //获取参数
            // int typeID = GameRequest.GetQueryInt("TypeID", 0);
            int          awardID  = GameRequest.GetQueryInt("awardID", 0); //商品ID
            int          counts   = GameRequest.GetQueryInt("counts", 0);  //购买数量
            AccountsInfo userinfo = FacadeManage.aideAccountsFacade.GetAccountsInfoByUserID(userid);

            //验证奖品
            if (awardID == 0)
            {
                ajaxJson.msg = "非常抱歉,你所选购的商品不存在!";
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }

            //验证数量
            if (counts <= 0)
            {
                ajaxJson.msg = "请输入正确的兑换数量!";
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }
            if (counts > 100)
            {
                ajaxJson.msg = "兑换数量不能超过100!";
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }

            AwardInfo awardInfo = FacadeManage.aideNativeWebFacade.GetAwardInfo(awardID);

            AwardUser awardUser = FacadeManage.aideNativeWebFacade.GetAwardUser(userid);


            //验证用户
            UserCurrency Currency = FacadeManage.aideTreasureFacade.GetUserCurrency(userid);


            //验证余额
            int totalAmount = awardInfo.UnitPrice * counts;     //总金额

            if (totalAmount <= 0)
            {
                ajaxJson.msg = "很抱歉!兑换的奖品配置额度太大或为零";
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }
            if (totalAmount > (Currency == null?0:Currency.AwardTicket))
            {
                ajaxJson.msg  = "很抱歉!您的奖券数不足,不能兑换该奖品";
                ajaxJson.code = -1;
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }

            //验证库存
            if (awardInfo.Inventory <= 0 && awardInfo.AwardType != 1)
            {
                ajaxJson.msg = "很抱歉!奖品的库存数不足,请更新其他奖品或者等待补充库存";
                context.Response.Write(ajaxJson.SerializeToJson());
                return;
            }

            //扣除奖牌
            Currency.AwardTicket = Currency.AwardTicket - totalAmount;

            //更新奖牌
            AwardOrder awardOrder = new AwardOrder();

            awardOrder.OrderID       = Fetch.GetOrderIDByPrefix("XT");
            awardOrder.UserID        = Currency.UserID;
            awardOrder.GameID        = userinfo.GameID;
            awardOrder.AwardID       = awardID;
            awardOrder.AwardType     = awardInfo.AwardType;
            awardOrder.AwardName     = awardInfo.AwardName;
            awardOrder.UnitPrice     = awardInfo.UnitPrice;
            awardOrder.BuyNum        = counts;
            awardOrder.PayTicket     = totalAmount;
            awardOrder.Gold          = awardInfo.Gold;
            awardOrder.Diamond       = awardInfo.Diamond;
            awardOrder.Compellation  = awardUser == null?"": awardUser.Compellation;
            awardOrder.MobilePhone   = awardUser == null ? "" : awardUser.MobilePhone;
            awardOrder.Province      = awardUser == null ? "" : awardUser.Province;
            awardOrder.City          = awardUser == null ? "" : awardUser.City;
            awardOrder.Area          = awardUser == null ? "" : awardUser.Area;
            awardOrder.DetailAddress = awardUser == null ? "" : awardUser.DetailAddress;
            awardOrder.ClinetIP      = Utility.UserIP;

            msg = FacadeManage.aideNativeWebFacade.BuyAward(awardOrder);
            if (msg.Success)
            {
                ajaxJson.SetValidDataValue(true);
                ajaxJson.msg = "兑换成功!实物商品请注意查收";
                if (awardInfo.AwardType == 1)
                {
                    ajaxJson.msg = "兑换成功!将在5分钟内发放至游戏中";
                }

                awardOrder = msg.EntityList[0] as AwardOrder;

                ajaxJson.SetDataItem("rs", 1);
                context.Response.Write(ajaxJson.SerializeToJson());
            }
            else
            {
                ajaxJson.msg = msg.Content;
                ajaxJson.SetDataItem("rs", -1);
                context.Response.Write(ajaxJson.SerializeToJson());
            }
        }