/// <summary> /// 计算投注结果 /// </summary> /// <param name="issueCode">当前期号</param> /// <param name="openResult">开奖结果</param> private void CalculateBetting(string lotteryCode, string issueCode, string openResult) { //获取本期所有投注数据,进行计算 int pageSize = 50; int totalCount = 0; IDbContextFactory factory = new DbContextFactory(); var betDetailService = new BetDetailService(new Repo <BetDetail>(factory)); var result = betDetailService.GetIssuesBetDetail(lotteryCode, issueCode); totalCount = result.Count; LogManager.Info(lotteryCode + " 期数:" + issueCode + " 待计算总投注数:" + totalCount); if (totalCount < 1) { IssueCatchNumsing.CreateInstance().CompledRunning(lotteryCode + "_" + issueCode); return; } List <BetDetail> details = new List <BetDetail>(); var curIndex = 1; for (var i = 0; i < totalCount; i++) { if (result[i].IsBuyTogether == 1 && result[i].GroupByState == 0) { continue; } details.Add(result[i]); if (curIndex == pageSize || (i + 1) == totalCount) { PoolParam param = new PoolParam() { Issue = issueCode, openResult = openResult, PageSize = pageSize, pageIndex = i, lotteryCode = lotteryCode, Details = details }; IssueBettingNumsing.CreateInstance().PutRunning(lotteryCode + "_" + issueCode, new Running() { IsCompled = false, PageIndex = i }); ThreadPool.QueueUserWorkItem(CalculatePage, param); details = new List <BetDetail>(); curIndex = 1; } curIndex++; } }
protected readonly MessageService mMessageService; //消息处理类 public BetDetailsCalculate_Auto() { IDbContextFactory factory = new DbContextFactory(); this.mBetDetailService = new BetDetailService(new Repo <BetDetail>(factory)); this.mSysCatchNumService = new SysCatchNumService(new Repo <CatchNum>(factory)); this.mSysCatchNumIssueService = new SysCatchNumIssueService(new Repo <CatchNumIssue>(factory)); Ytg.Comm.IHasher hasher = new Ytg.Comm.Hasher(); var sysUser = new SysUserService(new Repo <SysUser>(factory), hasher); mMessageService = new MessageService(new Repo <Message>(factory)); this.mSysUserBalanceService = new SysUserBalanceService(new Repo <SysUserBalance>(factory), hasher, sysUser); this.mSysUserBalanceDetailService = new SysUserBalanceDetailService(new Repo <SysUserBalanceDetail>(factory), this.mSysUserBalanceService); mRebateHelper = new Service.Logic.RebateHelper(sysUser, this.mSysUserBalanceService, this.mSysUserBalanceDetailService); }