/// <summary> /// 创建注单 /// </summary> /// <param name="user">The user.</param> /// <param name="speice">The speice.</param> /// <param name="betList">The bet list.</param> /// <param name="isCon">是否快速下单.</param> /// <returns></returns> public IDictionary<BetSheet, IList<BetOrder>> BuildOrder(User user, LotterySpecies specie, IEnumerable<BetItem> betList, bool isCon = false) { try { this._betResult = new BetResult(); var todayLotteryCompany = TodayLotteryCompany.Instance.GetTodayCompany(); //获取今日开奖公司 var memberComm = CommManager.GetMemberCommissionInSession(user, specie); //获取会员的佣金 Dictionary<BetSheet, IList<BetOrder>> betSheetDic = new Dictionary<BetSheet, IList<BetOrder>>(); //注单字典 List<WagerItem> betWagerList = new List<WagerItem>(); //下注金額列表 StringBuilder betCompanySB = new StringBuilder(); foreach (var betItem in betList) { var numList = ParseBetNums(betItem.Num); if (numList == null) continue; IList<long> fullArrangementNum = null; //全排列号码 BetSheet sheet = new BetSheet //注单 { Num = betItem.Num, UserId = user.UserId, Status = BetStatus.Valid }; betCompanySB.Clear(); betWagerList.Clear(); betSheetDic.Add(sheet, new List<BetOrder>()); foreach (var companyId in betItem.CompanyList) //先遍历公司列表,同个号码支持多个公司 { var company = todayLotteryCompany.Find(it => it.CompanyId == companyId); //找到对应的公司 var companyType = company.CompanyType; foreach (var wager in betItem.WargerList) //便利下注订单 { if (wager.Wager <= 0) continue; CheckBetWager(wager.GamePlayTypeId, wager.IsFullPermutation, wager.Wager, betWagerList); foreach (var num in numList) AddOrderToDic(betSheetDic[sheet], companyType, company, memberComm, num, wager, user, fullArrangementNum, isCon); } betCompanySB.AppendFormat("{0} ", company.Abbreviation); //现在只记录公司名称即可 } sheet.BetCompany = betCompanySB.ToString(); sheet.BetAmount = GetBetWagerData(betSheetDic[sheet], betWagerList); } return betSheetDic; } catch { //回滚注单 foreach (var order in Checker.BeInsertOrderList) Checker.RollLimit(order); throw; } }
public IDictionary<BetSheet, IList<BetOrder>> BuildFastBetOrder(User user, LotterySpecies specie, FastBetItem fastBetItem, GameType gameType) { this._betResult = new BetResult(); var todayLotteryCompany = TodayLotteryCompany.Instance.GetTodayCompany(); //获取今日开奖公司 var memberComm = CommManager.GetMemberCommissionInSession(user, specie); //获取会员的佣金 Dictionary<BetSheet, IList<BetOrder>> betSheetDic = new Dictionary<BetSheet, IList<BetOrder>>(); //注单字典 List<WagerItem> betWagerList = new List<WagerItem>(); //下注金額列表 StringBuilder betCompanySB = new StringBuilder(); BetSheet sheet = new BetSheet //注单 { Num = "FastBet" + EnumHelper.GetEnumDescript(gameType).Description, UserId = user.UserId, Status = BetStatus.Valid }; betSheetDic.Add(sheet, new List<BetOrder>()); foreach (var companyId in fastBetItem.Companys) { IList<long> fullArrangementNum = null; //全排列号码 var company = todayLotteryCompany.Find(it => it.CompanyId == companyId); //找到对应的公司 var companyType = company.CompanyType; foreach (var gpwId in fastBetItem.GamePlayWays) { CheckBetWager(gpwId, fastBetItem.IsFullPermutation, fastBetItem.Wager, betWagerList); var wager = new WagerItem { GamePlayTypeId = gpwId, Wager = fastBetItem.Wager, IsFullPermutation = fastBetItem.IsFullPermutation }; foreach (var num in fastBetItem.NumList) { AddOrderToDic(betSheetDic[sheet], companyType, company, memberComm, num, wager, user, fullArrangementNum, false); } } betCompanySB.AppendFormat("{0} ", company.Abbreviation); //现在只记录公司名称即可 sheet.BetCompany = betCompanySB.ToString(); sheet.BetAmount = GetBetWagerData(betSheetDic[sheet], betWagerList); } return betSheetDic; }