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); } }
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)); }
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); }
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); } } }
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("更改计划成功"); }