Exemple #1
0
        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;
                    }
                }
            }
        }
Exemple #2
0
        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);
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        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));
        }
Exemple #8
0
        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);
        }