public void InsertUserPlans(string userId, LotteryType lotteryType, UserBasicNorm userBasicNorm, IList <int> planIds) { string sqlStr1 = "INSERT INTO [dbo].[LotteryAnalyseNorms]([Id],[PlanId],[PlanCycle],[LastStartPeriod],[ForecastCount],[BasicHistoryCount] ,[UnitHistoryCount],[HotWeight],[SizeWeight]" + " ,[ThreeRegionWeight],[MissingValueWeight],[OddEvenWeight],[Modulus],[LotteryType],[Enable],[IsDefault],[CreatTime],[CreateUserId])" + " VALUES(@Id, @PlanId, @PlanCycle, @LastStartPeriod, @ForecastCount, @BasicHistoryCount, @UnitHistoryCount, @HotWeight, @SizeWeight, @ThreeRegionWeight, @MissingValueWeight" + ", @OddEvenWeight, @Modulus, @LotteryType, @ENABLE, @IsDefault, GETDATE(), @CreateUserId)"; string sqlStr2 = "INSERT INTO [dbo].[UserAnylseNorms]([Id],[UserId],[PlanId],[LotteryAnalyseNormId],[LotteryType],[CreatTime])" + " VALUES(@Id, @UserId,@PlanId, @LotteryAnalyseNormId, @LotteryType, GETDATE())"; using (var cn = LotteryDbConnection) { cn.Open(); using (var trans = cn.BeginTransaction()) { try { foreach (var planId in planIds) { var lotteryAnalyseNorm = new LotteryAnalyseNorm() { PlanId = planId, BasicHistoryCount = userBasicNorm.BasicHistoryCount, CreateUserId = userId, ForecastCount = userBasicNorm.ForecastCount, HotWeight = userBasicNorm.HotWeight, LastStartPeriod = 0, // Todo: set LastStartPeriod LotteryType = lotteryType.ToString(), UnitHistoryCount = userBasicNorm.UnitHistoryCount, Modulus = userBasicNorm.Modulus, OddEvenWeight = userBasicNorm.OddEvenWeight, MissingValueWeight = userBasicNorm.MissingValueWeight, ThreeRegionWeight = userBasicNorm.ThreeRegionWeight, SizeWeight = userBasicNorm.SizeWeight, PlanCycle = userBasicNorm.PlanCycle, }; var userAnalyseNorm = new UserAnylseNorm() { LotteryAnalyseNormId = lotteryAnalyseNorm.Id, LotteryType = lotteryType.ToString(), UserId = userId, PlanId = planId, }; cn.Execute(sqlStr1, lotteryAnalyseNorm, trans); cn.Execute(sqlStr2, userAnalyseNorm, trans); } trans.Commit(); } catch (Exception ex) { trans.Rollback(); LogDbHelper.LogError(ex, GetType() + "=>InsertUserPlans"); throw ex; } } } }
public IList <LotteryPlanGroupDto> GetUserLotteryPlans(string userId, LotteryType lotteryType) { var lotteryPlanGroupDtos = new List <LotteryPlanGroupDto>(); var selectedPlanGroup = new LotteryPlanGroupDto() { LotteryType = lotteryType.ToString(), GroupId = 0, GroupName = "已选计划", IsSelecedGroup = true, Plans = new List <PlanOutput>(), }; lotteryPlanGroupDtos.Add(selectedPlanGroup); var lotteryFeature = _lotteryFeatureLoader.LoadLotteryFeature(lotteryType); var userSelectedPlans = _anylseNormAppService.GetUserSelectedPlans(userId, lotteryType); foreach (var normGroup in lotteryFeature.LotteryNorm.NormGroup) { var planGroupDto = new LotteryPlanGroupDto() { LotteryType = lotteryType.ToString(), GroupId = normGroup.GroupId, GroupName = normGroup.Cname, IsSelecedGroup = false, Plans = new List <PlanOutput>(), }; foreach (var plan in normGroup.Plans) { var planDto = new PlanOutput() { PlanId = plan.PlanId, PlanName = plan.Name, IsSelected = false }; if (userSelectedPlans.Contains(planDto.PlanId)) { planDto.IsSelected = true; selectedPlanGroup.Plans.Add(planDto); } planGroupDto.Plans.Add(planDto); } lotteryPlanGroupDtos.Add(planGroupDto); } return(lotteryPlanGroupDtos); }
/// <summary> /// 彩票引擎构造器,必须私有化,不允许外界访问 /// </summary> /// <param name="lotteryType">彩种</param> /// <param name="lotteryConfigData">彩票配置信息</param> private LotteryEngine(LotteryType lotteryType, string lotteryConfigData) { _lotteryType = lotteryType; _lotteryFeature = lotteryConfigData.ToObject <LotteryFeature>(); _lotteryFeatures[lotteryType] = _lotteryFeature; _lotteryAnalyseNormManager = ServiceLocator.Current.GetInstance <ILotteryAnalyseNormManager>(); _lotteryAnalyseNorms = _lotteryAnalyseNormManager.LoadLotteryAnalyseNorms(lotteryType); _lotteryDataManager = ServiceLocator.Current.GetInstance <ILotteryDataManager>(); InitLotteryPlan(); RedisHelper.Set(AppUtils.GetLotteryRedisKey(lotteryType.ToString(), LsConstant.LotteryFeatureRedisKey), lotteryConfigData); }
public UserBasicNorm GetUserBasicNorm(string userId, LotteryType lotteryType) { UserBasicNorm userBasicNorm = null; using (var cn = LotteryDbConnection) { string sqlStr1 = "SELECT TOP 1 * FROM [Lottery-Dev].[dbo].[UserBasicNorms] WHERE UserId=@UserId AND LotteryType=@LotteryType"; string sqlStr2 = "SELECT TOP 1 * FROM [Lottery-Dev].[dbo].[UserBasicNorms] WHERE IsDefault=@IsDefault AND LotteryType=@LotteryType"; userBasicNorm = cn.QuerySingleOrDefault <UserBasicNorm>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString() }) ?? cn.QuerySingleOrDefault <UserBasicNorm>(sqlStr2, new { IsDefault = 1, LotteryType = lotteryType.ToString() }); } return(userBasicNorm); }
public IList <int> GetUserSelectedPlans(string userId, LotteryType lotteryType, out bool isSysDefault) { var planIds = new List <int>(); using (var cn = LotteryDbConnection) { var sqlStr1 = "SELECT [LotteryAnalyseNormId] FROM [dbo].[UserAnylseNorms] " + " WHERE UserId = @UserId AND LotteryType =@LotteryType"; var lotteryAnalyseNormIds = cn.Query <string>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString() }); if (lotteryAnalyseNormIds != null && lotteryAnalyseNormIds.Any()) { var sqlStr2 = "SELECT PlanId FROM dbo.LotteryAnalyseNorms WHERE Id IN @LotteryAnalyseNormIds"; planIds = cn.Query <int>(sqlStr2, new { LotteryAnalyseNormIds = lotteryAnalyseNormIds.ToArray() }).ToList(); isSysDefault = false; } else { var sqlStr3 = "SELECT PlanId FROM [dbo].[LotteryAnalyseNorms] WHERE IsDefault = @IsDefault AND LotteryType = @LotteryType"; planIds = cn.Query <int>(sqlStr3, new { IsDefault = 1, LotteryType = lotteryType.ToString() }).ToList(); isSysDefault = true; } return(planIds); } }
public void GoPaiJiang(LotteryType type) { s = WcfProxy.GetProxy; List<LotteryNumsInfo> info = s.getIsNotPJ((int)type).ToList(); foreach (LotteryNumsInfo ln in info) { try { StringBuilder sb = new StringBuilder(); sb.AppendLine(type.ToString() + "==>" + DateTime.Now.ToString() + "," + ln.IssueNo + "期派奖开始"); s.UpdateLotteryFlag(1, ln.LotteryTypeID, ln.IssueNo); //派奖开始 List<BetRecord> listOrders = s.getOrders(ln.IssueNo, (int)type).ToList(); List<BetRecord> listResult_bet = new List<BetRecord>(); List<ProfitLossInfo> listResult_prl = new List<ProfitLossInfo>(); foreach (BetRecord order in listOrders) { try { BetRecord record = JudgeWin(order, ln); listResult_bet.Add(record); } catch(Exception ex) { Console.WriteLine(ex.Message); } } bool returnBool = s.UpdateOrdersWinInfo(new ObservableCollection<BetRecord>(listResult_bet));//更新中奖信息 //派奖结束 if (returnBool) s.UpdateLotteryFlag(2, ln.LotteryTypeID, ln.IssueNo); sb.AppendLine(type.ToString() + "==>" + DateTime.Now.ToString() + "," + ln.IssueNo + "期共有" + listResult_bet.Count.ToString() + "个订单"); sb.AppendLine(type.ToString() + "==>" + DateTime.Now.ToString() + "," + ln.IssueNo + "期派奖结束"); Console.WriteLine(sb.ToString()); } catch (Exception e) { s.UpdateLotteryFlag(0, ln.LotteryTypeID, ln.IssueNo); } } }
public LotteryData GetLastLotteryDatas(LotteryType lotteryType) { var key = AppUtils.GetLotteryRedisKey(lotteryType.ToString(), LsConstant.LastLotteryDataCacheKey); return(CacheHelper.GetCache <LotteryData>(key)); }
public void UpdateUserPlans(string userId, LotteryType lotteryType, UserBasicNorm userBasicNorm, IList <int> planIds, IList <int> userOldLotteryPlanIds) { string sqlStr1 = "SELECT * FROM [dbo].[UserAnylseNorms] WHERE UserId=@UserId AND LotteryType=@LotteryType AND PlanId=@PlanId"; string sqlStr2 = "INSERT INTO [dbo].[UserAnylseNorms]([Id],[UserId],[PlanId],[LotteryAnalyseNormId],[LotteryType],[CreatTime])" + " VALUES(@Id, @UserId,@PlanId, @LotteryAnalyseNormId, @LotteryType, GETDATE())"; string sqlStr2_1 = "INSERT INTO [dbo].[LotteryAnalyseNorms]([Id],[PlanId],[PlanCycle],[LastStartPeriod],[ForecastCount],[BasicHistoryCount] ,[UnitHistoryCount],[HotWeight],[SizeWeight]" + " ,[ThreeRegionWeight],[MissingValueWeight],[OddEvenWeight],[Modulus],[LotteryType],[Enable],[IsDefault],[CreatTime],[CreateUserId])" + " VALUES(@Id, @PlanId, @PlanCycle, @LastStartPeriod, @ForecastCount, @BasicHistoryCount, @UnitHistoryCount, @HotWeight, @SizeWeight, @ThreeRegionWeight, @MissingValueWeight" + ", @OddEvenWeight, @Modulus, @LotteryType, @ENABLE, @IsDefault, GETDATE(), @CreateUserId)"; string sqlStr3 = "SELECT * FROM [dbo].[LotteryAnalyseNorms] WHERE Id=@Id"; string sqlStr4 = "DELETE [dbo].[UserAnylseNorms] WHERE Id = @Id"; string sqlStr5 = "UPDATE [dbo].[LotteryAnalyseNorms]" + "SET [LastStartPeriod] = @LastStartPeriod" + ",[Enable] = @Enable" + ",[ModifyTime] = GETDATE()" + " WHERE [Id] = @Id"; string lotteryAnalyseNormHashKey = string.Format(LsConstant.LotteryAnalyseNormRedisKey, lotteryType); using (var cn = LotteryDbConnection) { cn.Open(); using (var trans = cn.BeginTransaction()) { try { // 1. 遍历更改的planIds foreach (var planId in planIds) { var userAnylseNorm = cn.QuerySingleOrDefault <UserAnylseNorm>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString(), PlanId = planId, }, trans); // 如果用户还没有添加过该计划 if (userAnylseNorm == null) { #region 用户没有添加过该计划 var lotteryAnalyseNorm = new LotteryAnalyseNorm() { PlanId = planId, BasicHistoryCount = userBasicNorm.BasicHistoryCount, CreateUserId = userId, ForecastCount = userBasicNorm.ForecastCount, HotWeight = userBasicNorm.HotWeight, LastStartPeriod = 0, // Todo: set LastStartPeriod LotteryType = lotteryType.ToString(), UnitHistoryCount = userBasicNorm.UnitHistoryCount, Modulus = userBasicNorm.Modulus, OddEvenWeight = userBasicNorm.OddEvenWeight, MissingValueWeight = userBasicNorm.MissingValueWeight, ThreeRegionWeight = userBasicNorm.ThreeRegionWeight, SizeWeight = userBasicNorm.SizeWeight, PlanCycle = userBasicNorm.PlanCycle, }; userAnylseNorm = new UserAnylseNorm() { LotteryAnalyseNormId = lotteryAnalyseNorm.Id, LotteryType = lotteryType.ToString(), UserId = userId, PlanId = planId, }; cn.Execute(sqlStr2_1, lotteryAnalyseNorm, trans); cn.Execute(sqlStr2, userAnylseNorm, trans); RedisHelper.SetHash(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id, lotteryAnalyseNorm); #endregion } else { #region 用户添加过该计划 var lotteryAnalyseNorm = cn.QuerySingle <LotteryAnalyseNorm>(sqlStr3, new { Id = userAnylseNorm.LotteryAnalyseNormId }, trans); if (!lotteryAnalyseNorm.Enable) { lotteryAnalyseNorm.Enable = true; lotteryAnalyseNorm.ModifyTime = DateTime.Now; lotteryAnalyseNorm.LastStartPeriod = 0; // Todo: set LastStartPeriod cn.Execute(sqlStr5, new { lotteryAnalyseNorm.Id, lotteryAnalyseNorm.Enable, LatestStartPeriod = lotteryAnalyseNorm.LastStartPeriod }, trans); RedisHelper.SetHash(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id, lotteryAnalyseNorm); } #endregion } } // 2. 将旧计划且当前没有选的计划移除 #region 将旧计划且当前没有选的计划移除 foreach (var oldPlanId in userOldLotteryPlanIds) { if (planIds.Contains(oldPlanId)) { continue; } var userAnylseNorm = cn.QuerySingleOrDefault <UserAnylseNorm>(sqlStr1, new { UserId = userId, LotteryType = lotteryType.ToString(), PlanId = oldPlanId, }, trans); if (userAnylseNorm != null) { cn.Execute(sqlStr4, new { Id = userAnylseNorm.Id }, trans); #region 修改LotteryAnalyseNorm 指标 var lotteryAnalyseNorm = cn.QuerySingle <LotteryAnalyseNorm>(sqlStr3, new { Id = userAnylseNorm.LotteryAnalyseNormId }, trans); if (lotteryAnalyseNorm.Enable) { lotteryAnalyseNorm.Enable = false; lotteryAnalyseNorm.LastStartPeriod = 0; // Todo: set LastStartPeriod cn.Execute(sqlStr5, new { lotteryAnalyseNorm.Id, lotteryAnalyseNorm.Enable, LatestStartPeriod = lotteryAnalyseNorm.LastStartPeriod }, trans); RedisHelper.Remove(lotteryAnalyseNormHashKey, lotteryAnalyseNorm.Id); } #endregion } } #endregion trans.Commit(); } catch (Exception ex) { LogDbHelper.LogError(ex, GetType().FullName + "UpdateUserPlans"); trans.Rollback(); throw ex; } } } }
protected LotteryDataJob(LotteryType lotteryType) { HostingEnvironment.RegisterObject(this); _LotteryType = lotteryType; _lotteryDataAppService = ServiceLocator.Current.GetInstance <ILotteryDataAppService>(); _lotteryUpdateConfigLoader = ServiceLocator.Current.GetInstance <ILotteryUpdateConfigLoader>(); _lotteryUpdateConfig = _lotteryUpdateConfigLoader.GetLotteryUpdateConfigs().Single(p => p.Name == lotteryType.ToString()); //_nextLotteryTime = _lotteryUpdateConfig.NextLotteryTime; _dataUpdateContainer = new DataUpdateContainer(_lotteryUpdateConfig, _lotteryDataAppService, this); }