Ejemplo n.º 1
0
        public JsonResult GetCurrentPKInfo()
        {
            var result = new ResponseResult();

            try
            {
                var pkModel = new PKService().GetCurrentPKModel();
                var pkRates = new PKRateService().GetPKRateModels(pkModel.PK.PKId);
                var bets    = new BetService().GetBets(pkModel.PK.PKId, LoginUser.UserId);
                var rebates = new UserRebateService().GetUserRebates(LoginUser.UserId);
                result.Data = new
                {
                    PKModel = pkModel,
                    PKRates = pkRates,
                    Bets    = bets,
                    Rebates = rebates
                };
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = MessageConst.System_Error;
                _logger.Info(ex);
            }

            return(Json(result));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 按wechat单号生成奖金+退水
        /// </summary>
        /// <param name="orderNo"></param>
        /// <returns></returns>
        public decimal GetBonusAndRebateAmount(long orderNo)
        {
            var rebateAmount = 0M;  //退水
            var bonusAmount  = 0M;  //奖金

            var dbBetItems = new BetItemService().GetBetItemsByOrderNo(orderNo);

            // 计算退水
            var userIds     = dbBetItems.Select(bi => bi.Bet.UserId).Distinct().ToList();
            var users       = new UserService().GetUsers(userIds);
            var userRebates = new UserRebateService().GetUserRebates(userIds);

            foreach (var userId in userIds)
            {
                var user = users.Where(u => u.UserId == userId).First();

                var userBetItems = dbBetItems.Where(bi => bi.Bet.UserId == userId).ToList();
                foreach (var userBetItem in userBetItems)
                {
                    var userRebate = userRebates.Where(e => e.UserId == userId && e.RebateNo == userBetItem.Num).FirstOrDefault();
                    if (userRebate != null)
                    {
                        var rebate = UserRebateService.GetDefaultRebate(userRebate, user.DefaultRebateType);

                        rebateAmount += Math.Round(userBetItem.Amount * rebate, 4);
                    }
                }
            }

            // 计算奖金
            var betService = new BetService();
            var pkIds      = dbBetItems.Select(bi => bi.Bet.PKId).Distinct().ToList();
            var pks        = new PKService().GetPKs(pkIds);
            var dbPKRates  = new PKRateService().GetPKRates(pkIds);

            foreach (var pk in pks)
            {
                var bets = betService.ConvertRanksToBets(pk.Ranks);
                foreach (var bet in bets)
                {
                    var pkRate = dbPKRates.Where(r => r.PKId == pk.PKId && r.Rank == bet.Rank && r.Num == bet.Num).First();

                    var betAmount = dbBetItems.Where(bi => bi.Bet.PKId == pk.PKId && bi.Rank == bet.Rank && bi.Num == bet.Num).Sum(bi => (decimal?)bi.Amount ?? 0);

                    bonusAmount += Math.Round(betAmount * pkRate.Rate, 4);
                }
            }

            return(rebateAmount + bonusAmount);
        }