public async Task <int> VerifyUserClientNo(string userId, string systemTypeId) { var clientNo = 0; var memberRank = _memberAppService.ConcludeUserMemRank(userId, systemTypeId).ToEnum <MemberRank>(); var userLogCount = await _conLogQueryService.GetUserLoginCount(userId, systemTypeId); clientNo = userLogCount + 1; if (systemTypeId != LotteryConstants.BackOfficeKey) { var authRank = _authRankQueryService.GetAuthRankByLotteryIdAndRank(systemTypeId, memberRank); if (authRank != null && clientNo > authRank.PermitClientCount) { if (memberRank == MemberRank.Elite) { throw new LotteryAuthorizationException("该账号登录的客户端超过运行登录的最大数量", ErrorCode.OverloadPermitClientCount); } else { throw new LotteryAuthorizationException("您的账号在其他客户端登录,是否强制登录?", ErrorCode.RepeatLogin); } //throw new LotteryAuthorizationException("您的账号在其他客户端登录,请先从其他客户端中登出,如果需要从更多的客户端登录,请购买团队版",ErrorCode.OverloadPermitClientCount); } } return(clientNo); }
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("更改计划成功"); }