Ejemplo n.º 1
0
        public void UpdateUserPlanTest()
        {
            var userId    = "08b4c537-08aa-40f9-9d24-ab6ccd1b189c";
            var lotteryId = "ACB89F4E-7C71-4785-BA09-D7E73084B467";
            var planIds   = new string[] { "83FF7434-C88E-45CD-A39F-73B3EB500001", "83FF7434-C88E-45CD-A39F-73B3EB500002" };
            var userDefaultNormConfigService = ObjectContainer.Resolve <IUserNormDefaultConfigService>();
            var finalLotteryDataService      = ObjectContainer.Resolve <ILotteryFinalDataQueryService>();

            var userDefaultNormConfig = userDefaultNormConfigService.GetUserNormOrDefaultConfig(userId, lotteryId);
            var finalLotteryData      = finalLotteryDataService.GetFinalData(lotteryId);
            var userNormConfig        = new List <UserPlanNormConfig>();
            int sort = 1;

            foreach (var planId in planIds)
            {
                var command = new AddNormConfigCommand(Guid.NewGuid().ToString(), userId, lotteryId, planId,
                                                       userDefaultNormConfig.PlanCycle, userDefaultNormConfig.ForecastCount, finalLotteryData.FinalPeriod,
                                                       userDefaultNormConfig.UnitHistoryCount, userDefaultNormConfig.HistoryCount,
                                                       userDefaultNormConfig.MinRightSeries,
                                                       userDefaultNormConfig.MaxRightSeries, userDefaultNormConfig.MinErrorSeries,
                                                       userDefaultNormConfig.MaxErrorSeries, userDefaultNormConfig.LookupPeriodCount,
                                                       userDefaultNormConfig.ExpectMinScore, userDefaultNormConfig.ExpectMaxScore, sort);
                sort++;
                ExecuteCommand(command);
            }
        }
Ejemplo n.º 2
0
 public void Handle(ICommandContext context, AddNormConfigCommand command)
 {
     context.Add(new NormConfig(command.AggregateRootId,
                                command.UserId, command.LotteryId, command.PlanId, command.LastStartPeriod,
                                command.PlanCycle, command.ForecastCount, command.UnitHistoryCount, command.HistoryCount,
                                command.MinRightSeries, command.MaxRightSeries, command.MinErrorSeries,
                                command.MaxErrorSeries, command.LookupPeriodCount, command.ExpectMinScore, command.ExpectMaxScore, command.Sort, command.CustomNumbers));
 }
Ejemplo n.º 3
0
        public async Task <UpdateUserPlanNormOutput> UpdateUserPlanNorm(UserNormPlanConfigInput input)
        {
            var validatorResult = await _userNormConfigInputValidator.ValidateAsync(input);

            if (!validatorResult.IsValid)
            {
                throw new LotteryDataException(validatorResult.Errors.Select(p => p.ErrorMessage + "</br>").ToString(";"));
            }

            // todo: 更严格的指标公式验证
            _cacheManager.RemoveByPattern("Lottery.PlanTrack");
            var finalLotteryData = _lotteryDataAppService.GetFinalLotteryData(LotteryInfo.Id);
            var userPlanNorm     = _normConfigAppService.GetUserNormConfigByPlanId(_lotterySession.UserId, LotteryInfo.Id, input.PlanId);

            if (userPlanNorm.Id.IsNullOrEmpty())
            {
                var planInfo = _planInfoAppService.GetPlanInfoById(input.PlanId);
                var command  = new AddNormConfigCommand(Guid.NewGuid().ToString(), _lotterySession.UserId, LotteryInfo.Id, input.PlanId,
                                                        input.PlanCycle, input.ForecastCount, finalLotteryData.Period,
                                                        input.UnitHistoryCount, input.HistoryCount, input.MinRightSeries, input.MaxRightSeries,
                                                        input.MinErrorSeries, input.MaxErrorSeries, input.LookupPeriodCount,
                                                        input.ExpectMinScore, input.ExpectMaxScore, planInfo.Sort, input.CustomNumbers);
                await SendCommandAsync(command);
            }
            else
            {
                var command = new UpdateNormConfigCommand(userPlanNorm.Id, _lotterySession.UserId, LotteryInfo.Id, input.PlanId,
                                                          input.PlanCycle, input.ForecastCount, finalLotteryData.Period,
                                                          input.UnitHistoryCount, input.HistoryCount, input.MinRightSeries, input.MaxRightSeries,
                                                          input.MinErrorSeries, input.MaxErrorSeries, input.LookupPeriodCount,
                                                          input.ExpectMinScore, input.ExpectMaxScore, input.CustomNumbers);
                await SendCommandAsync(command);
            }

            var canSwitchFormula = _userMemberRank > MemberRank.Senior;
            var tips             = "设置公式指标成功";

            if (canSwitchFormula)
            {
                tips += ",是否立即根据该指标计算追号数据?";
            }

            var result = new UpdateUserPlanNormOutput()
            {
                Tips             = tips,
                CanSwitchFormula = canSwitchFormula
            };

            return(result);
        }
Ejemplo n.º 4
0
        private async Task AllotDefaultPlanNorm(string userId, string lotteryId)
        {
            var defaultUserNorms = _normConfigAppService.GetNormConfigsByUserIdOrDefault(lotteryId);

            var userNormConfigs       = _normConfigAppService.GetUserNormConfig(lotteryId, userId);
            var userDefaultNormConfig =
                _userNormDefaultConfigService.GetUserNormOrDefaultConfig(userId, lotteryId);
            var finalLotteryData = _lotteryDataAppService.GetFinalLotteryData(lotteryId);

            if (!userNormConfigs.Safe().Any())
            {
                foreach (var userNorm in defaultUserNorms)
                {
                    // 如果用户选中的计划则忽略
                    if (userNormConfigs != null && userNormConfigs.Any(p => p.PlanId == userNorm.PlanId))
                    {
                        continue;
                    }
                    var planInfo           = _planInfoAppService.GetPlanInfoById(userNorm.PlanId);
                    var planNormConfigInfo =
                        _normPlanConfigQueryService.GetNormPlanDefaultConfig(planInfo.LotteryInfo.LotteryCode,
                                                                             planInfo.PredictCode);
                    var planCycle     = userNorm.PlanCycle;
                    var forecastCount = userNorm.ForecastCount;
                    if (planNormConfigInfo != null)
                    {
                        if (planCycle > planNormConfigInfo.MaxPlanCycle)
                        {
                            planCycle = planNormConfigInfo.MaxPlanCycle;
                        }
                        if (forecastCount > planNormConfigInfo.MaxForecastCount)
                        {
                            forecastCount = planNormConfigInfo.MaxForecastCount;
                        }
                    }

                    var command = new AddNormConfigCommand(Guid.NewGuid().ToString(), userId,
                                                           lotteryId, planInfo.Id, planCycle,
                                                           forecastCount, finalLotteryData.Period,
                                                           userDefaultNormConfig.UnitHistoryCount, userDefaultNormConfig.HistoryCount,
                                                           userDefaultNormConfig.MinRightSeries,
                                                           userDefaultNormConfig.MaxRightSeries, userDefaultNormConfig.MinErrorSeries,
                                                           userDefaultNormConfig.MaxErrorSeries, userDefaultNormConfig.LookupPeriodCount,
                                                           userDefaultNormConfig.ExpectMinScore, userDefaultNormConfig.ExpectMaxScore, userNorm.Sort);
                    await SendCommandAsync(command);
                }
            }
        }
Ejemplo n.º 5
0
        public async Task <string> UpdateUserPlans(UserPlanInfoInput input)
        {
            var validatorResult = await _planInfoInputValidator.ValidateAsync(input);

            if (!validatorResult.IsValid)
            {
                throw new LotteryDataException(validatorResult.Errors.Select(p => p.ErrorMessage + "</br>").ToString(";"));
            }

            var authRankInfo =
                _authRankQueryService.GetAuthRankByLotteryIdAndRank(_lotterySession.SystemTypeId,
                                                                    _userMemberRank);

            if (input.PlanIds.Count > authRankInfo.PlanCount)
            {
                throw new LotteryException($"您至多允许选择{authRankInfo.PlanCount}个计划,如果需要选择更多计划,请先升级授权版本");
            }

            _cacheManager.RemoveByPattern("Lottery.PlanTrack");
            var finalLotteryData = _lotteryDataAppService.GetFinalLotteryData(LotteryInfo.Id);

            var userDefaultNormConfig =
                _userNormDefaultConfigService.GetUserNormOrDefaultConfig(_lotterySession.UserId, LotteryInfo.Id);

            var userNormConfigs = _normConfigAppService.GetUserNormConfig(LotteryInfo.Id, _lotterySession.UserId);

            if (userNormConfigs != null && userNormConfigs.Any())
            {
                var deleteUserNormConfigsPlanIds = userNormConfigs.Select(p => p.PlanId).Except(input.PlanIds.Select(p => p.PlanId));
                var deleteUserNormConfigs        =
                    userNormConfigs.Where(p => deleteUserNormConfigsPlanIds.Any(q => q == p.PlanId));
                // 移出本次未选中但是之前选中的计划
                foreach (var config in deleteUserNormConfigs)
                {
                    await SendCommandAsync(new DeteteNormConfigCommand(config.Id));
                }
            }

            foreach (var plan in input.PlanIds)
            {
                // 如果用户选中的计划则忽略
                if (userNormConfigs != null && userNormConfigs.Any(p => p.PlanId == plan.PlanId))
                {
                    continue;
                }
                var planInfo           = _planInfoAppService.GetPlanInfoById(plan.PlanId);
                var planNormConfigInfo =
                    _normPlanConfigQueryService.GetNormPlanDefaultConfig(planInfo.LotteryInfo.LotteryCode,
                                                                         planInfo.PredictCode);
                var planCycle     = userDefaultNormConfig.PlanCycle;
                var forecastCount = userDefaultNormConfig.ForecastCount;
                if (planNormConfigInfo != null)
                {
                    if (planCycle > planNormConfigInfo.MaxPlanCycle)
                    {
                        planCycle = planNormConfigInfo.MaxPlanCycle;
                    }
                    if (forecastCount > planNormConfigInfo.MaxForecastCount)
                    {
                        forecastCount = planNormConfigInfo.MaxForecastCount;
                    }
                }

                if (planInfo.PredictCode == PredictCodeDefinition.RxNumCode)
                {
                    var rxCount = Convert.ToInt32(planInfo.PlanCode.Substring(planInfo.PlanCode.Length - 1));

                    forecastCount = rxCount;
                }

                var command = new AddNormConfigCommand(Guid.NewGuid().ToString(), _lotterySession.UserId,
                                                       LotteryInfo.Id, plan.PlanId, planCycle,
                                                       forecastCount, finalLotteryData.Period,
                                                       userDefaultNormConfig.UnitHistoryCount, userDefaultNormConfig.HistoryCount,
                                                       userDefaultNormConfig.MinRightSeries,
                                                       userDefaultNormConfig.MaxRightSeries, userDefaultNormConfig.MinErrorSeries,
                                                       userDefaultNormConfig.MaxErrorSeries, userDefaultNormConfig.LookupPeriodCount,
                                                       userDefaultNormConfig.ExpectMinScore, userDefaultNormConfig.ExpectMaxScore, plan.Sort);
                await SendCommandAsync(command);
            }

            return("更改计划成功");
        }