/// <summary> /// 获取充值记录 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回充值记录</returns> public PageResult<RechargeRecordExport> GetRechargeRecords(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<RechargeRecord, bool>> predicate1 = x => x.Id > 0; Expression<Func<RechargeRecord, bool>> predicate2 = x => x.Id > 0; Expression<Func<RechargeRecord, bool>> predicate3 = x => x.Id > 0; Expression<Func<RechargeRecord, bool>> predicate4 = x => x.Id > 0; Expression<Func<RechargeRecord, bool>> predicate5 = x => x.Id > 0; if (this.KeywordForUsername != null) { this.KeywordForUsername = VerifyHelper.EliminateSpaces(this.KeywordForUsername); string[] keywords = this.KeywordForUsername.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Owner.Username.Contains(kw)); } if (this.UserId != null) { int userId = (int)this.UserId; predicate2 = x => x.Owner.Id == userId; } if (this.BeginTime != null) { DateTime beginTime = (DateTime)this.BeginTime; predicate3 = x => x.CreatedTime >= beginTime; } if (this.EndTime != null) { DateTime endtime = (DateTime)this.EndTime; predicate4 = x => x.CreatedTime <= endtime; } if (this.Status != null) { RechargeStatus status = (RechargeStatus)this.Status; predicate5 = x => x.Status == status; } int countOfAllMessages = db.RechargeRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .Where(predicate5) .Count(); var tList = db.RechargeRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .Where(predicate5) .OrderByDescending(x => x.CreatedTime) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => new RechargeRecordExport(x)); return new PageResult<RechargeRecordExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 设置并保存 /// </summary> /// <param name="db">数据库连接对象</param> public void SetAndSave(IModelToDbContextOfAuthor db) { List<SystemQuota> sqs = db.SystemQuotas.ToList(); sqs.Where(x => !this.Quotas.Any(q => q.Rebate == x.Rebate)).ToList() .ForEach(x => { db.SystemQuotas.Remove(x); }); this.Quotas .ForEach(quota => { SystemQuota sq = sqs.FirstOrDefault(x => x.Rebate == quota.Rebate); if (sq == null) { sq = new SystemQuota(quota.Rebate, new List<SystemQuotaDetail>()); db.SystemQuotas.Add(sq); } sq.Details.RemoveAll(x => !quota.Details.Any(d => d.Rebate == x.Rebate)); quota.Details .ForEach(detail => { SystemQuotaDetail sqd = sq.Details.FirstOrDefault(x => x.Rebate == detail.Rebate); if (sqd == null) { sqd = new SystemQuotaDetail(detail.Rebate, detail.Sum); sq.Details.Add(sqd); } else { sqd.Sum = detail.Sum; } }); }); db.SaveChanges(); }
/// <summary> /// 保持心跳 /// </summary> /// <param name="db">数据库存储指针</param> public void KeepHeartbeat(IModelToDbContextOfAuthor db) { SettingOfBase setting = new SettingOfBase(db); int s = setting.HeartbeatInterval * 3; this.Timeout = DateTime.Now.AddSeconds(s); }
/// <summary> /// 获取用户组信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回用户组信息</returns> public PageResult<UserGroupExport> GetUserGroups(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<UserGroup, bool>> predicate1 = x => x.Id > 0; if (this.KeywordForGroupName != null) { this.KeywordForGroupName = VerifyHelper.EliminateSpaces(this.KeywordForGroupName); string[] keywords = this.KeywordForGroupName.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Name.Contains(kw)); } int countOfAllMessages = db.UserGroups .Where(predicate1) .Count(); var tList = db.UserGroups .Where(predicate1) .OrderBy(x => x.Grade) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(userGroup => new UserGroupExport(userGroup)); return new PageResult<UserGroupExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 保持心跳 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="token">身份标识</param> public static void KeepHeartbeat(IModelToDbContextOfAuthor db, string token) { AuthorLoginInfo info = infos.FirstOrDefault(x => x.Token == token); if (info == null) { throw new Exception("指定的身份标识所标示的用户不存在"); } info.KeepHeartbeat(db); }
/// <summary> /// 获取系统设置 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回系统设置</returns> public NormalResult<SettingExport> GetSetting(IModelToDbContextOfAuthor db) { SettingOfBase settingOfBase = new SettingOfBase(db); SettingOfAuthor settingOfAuthor = new SettingOfAuthor(db); SettingOfLottery settingOfLottery = new SettingOfLottery(db); var s = new SettingExport(settingOfBase, settingOfAuthor, settingOfLottery); return new NormalResult<SettingExport>(s); }
/// <summary> /// 实例化一个新的用户的登陆信息 /// </summary> /// <param name="db">数据库存储指针</param> /// <param name="userId">用户信息的存储指针</param> public AuthorLoginInfo(IModelToDbContextOfAuthor db, int userId) { SettingOfBase setting = new SettingOfBase(db); int s = setting.HeartbeatInterval * 3; this.Token = Guid.NewGuid().ToString("N"); this.UserId = userId; this.LoginTime = DateTime.Now; this.Timeout = this.LoginTime.AddSeconds(s); }
/// <summary> /// 声明用户登入 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="userId">用户信息的存储指针</param> /// <returns>返回身份标识</returns> public static string AddInfo(IModelToDbContextOfAuthor db, int userId) { lock (infos) { RemoveInfo(userId); AuthorLoginInfo info = new AuthorLoginInfo(db, userId); CallEvent(Logining, info); infos.Add(info); CallEvent(Logined, info); return info.Token; } }
/// <summary> /// 获取银行账户信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回银行账户信息</returns> public PageResult<SystemBankAccountExport> GetSystemBankAccounts(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); int countOfAllMessages = db.SystemBankAccounts .Count(); var tList = db.SystemBankAccounts .OrderBy(x => x.Order) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => new SystemBankAccountExport(x)); return new PageResult<SystemBankAccountExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 获取提现记录 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回提现记录</returns> public PageResult<WithdrawalsRecordExport> GetWithdrawDetails(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForClient * (this.PageIndex - 1); Expression<Func<WithdrawalsRecord, bool>> predicate1 = x => x.Id == this.Self.Id; Expression<Func<WithdrawalsRecord, bool>> predicate2 = x => x.Id > 0; Expression<Func<WithdrawalsRecord, bool>> predicate3 = x => x.Id > 0; Expression<Func<WithdrawalsRecord, bool>> predicate4 = x => x.Id > 0; if (this.BeginTime != null) { DateTime beginTime = (DateTime)this.BeginTime; predicate2 = x => x.CreatedTime >= beginTime; } if (this.EndTime != null) { DateTime endTime = (DateTime)this.EndTime; predicate3 = x => x.CreatedTime < endTime; } if (this.Status != null) { WithdrawalsStatus status = (WithdrawalsStatus)this.Status; predicate4 = x => x.Status == status; } int countOfAllMessages = db.WithdrawalsRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .Count(); var tList = db.WithdrawalsRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Where(predicate4) .OrderByDescending(x => x.CreatedTime) .Skip(startRow) .Take(settingOfBase.PageSizeForClient) .ToList() .ConvertAll(x => new WithdrawalsRecordExport(x)); return new PageResult<WithdrawalsRecordExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForClient, tList); }
/// <summary> /// 获取自己的用户信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回自己的用户信息</returns> public NormalResult<AuthorExport> GetSelf(IModelToDbContextOfAuthor db) { SettingOfAuthor settingOfAuthor = new SettingOfAuthor(db); UserGroup group = db.UserGroups.FirstOrDefault(g => g.LowerOfConsumption <= this.Self.Consumption && g.CapsOfConsumption > this.Self.Consumption); SystemQuota systemQuota = db.SystemQuotas.FirstOrDefault(s => s.Rebate == this.Self.PlayInfo.Rebate_Normal); if (systemQuota == null) { systemQuota = new SystemQuota(this.Self.PlayInfo.Rebate_Normal, new List<SystemQuotaDetail>()); for (double i = settingOfAuthor.LowerRebateOfHigh; i <= settingOfAuthor.CapsRebateOfHigh; i += 0.1) { SystemQuotaDetail sqd = new SystemQuotaDetail(i, 0); systemQuota.Details.Add(sqd); } } AuthorExport authorExport = new AuthorExport(this.Self, group, systemQuota.Details); return new NormalResult<AuthorExport>(authorExport); }
/// <summary> /// 获取转账记录 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回转账记录</returns> public PageResult<TransferRecordExport> GetTransferRecords(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<TransferRecord, bool>> predicate1 = x => x.Id > 0; Expression<Func<TransferRecord, bool>> predicate2 = x => x.Id > 0; Expression<Func<TransferRecord, bool>> predicate3 = x => x.Id > 0; if (this.BeginTime != null) { DateTime beginTime = (DateTime)this.BeginTime; predicate1 = x => x.CreatedTime >= beginTime; } if (this.EndTime != null) { DateTime endtime = (DateTime)this.EndTime; predicate2 = x => x.CreatedTime <= endtime; } if (this.Status != null) { TransferStatus status = (TransferStatus)this.Status; predicate3 = x => x.Status == status; } int countOfAllMessages = db.TransferRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .Count(); var tList = db.TransferRecords .Where(predicate1) .Where(predicate2) .Where(predicate3) .OrderByDescending(x => x.CreatedTime) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => new TransferRecordExport(x)); return new PageResult<TransferRecordExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 获取用户信息列表 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回用户信息列表</returns> public PageResult<BasicAuthorExport> GetUsers(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); SettingOfAuthor settingOfAuthor = new SettingOfAuthor(db); int startRow = settingOfBase.PageSizeForClient * (this.PageIndex - 1); Expression<Func<Author, bool>> predicate1 = x => x.Id > 0; Expression<Func<Author, bool>> predicate2 = x => x.Id > 0; Expression<Func<Author, bool>> predicate3 = x => x.Relatives.Any(r => r.NodeId == this.Self.Id); if (this.KeywordForUsername != null) { this.KeywordForUsername = VerifyHelper.EliminateSpaces(this.KeywordForUsername); string[] keywords = this.KeywordForUsername.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Username.Contains(kw)); } if (this.OnlyImmediate == true) { predicate2 = x => x.Layer == this.Self.Layer + 1; } int countOfAllMessages = db.Authors .Where(predicate1) .Where(predicate2) .Where(predicate3) .Count(); var tList = db.Authors .Where(predicate1) .Where(predicate2) .Where(predicate3) .OrderByDescending(x => x.Layer) .Skip(startRow) .Take(settingOfBase.PageSizeForClient) .ToList() .ConvertAll(x => { UserGroup group = db.UserGroups.FirstOrDefault(g => g.LowerOfConsumption <= x.Consumption && g.CapsOfConsumption > x.Consumption); return new BasicAuthorExport(x, group); }); return new PageResult<BasicAuthorExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForClient, tList); }
/// <summary> /// 获取用户信息 /// </summary> /// <param name="db">数据库存储指针</param> /// <returns>返回用户信息</returns> public Author GetUser(IModelToDbContextOfAuthor db) { return db.Authors.Find(this.UserId); }
/// <summary> /// 获取用户信息列表 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回用户信息列表</returns> public PageResult<AuthorExport> GetUsers(IModelToDbContextOfAuthor db) { if (this.PageIndex < 1) { this.PageIndex = 1; } SettingOfBase settingOfBase = new SettingOfBase(db); SettingOfAuthor settingOfAuthor = new SettingOfAuthor(db); int startRow = settingOfBase.PageSizeForAdmin * (this.PageIndex - 1); Expression<Func<Author, bool>> predicate1 = x => x.Id > 0; Expression<Func<Author, bool>> predicate2 = x => x.Id > 0; Expression<Func<Author, bool>> predicate3 = x => x.Id > 0; if (this.KeywordForUsername != null) { this.KeywordForUsername = VerifyHelper.EliminateSpaces(this.KeywordForUsername); string[] keywords = this.KeywordForUsername.Split(new char[] { ' ' }); predicate1 = x => keywords.All(kw => x.Username.Contains(kw)); } if (this.GroupId != null) { int groupId = (int)this.GroupId; UserGroup group = db.UserGroups.Find(groupId); predicate2 = x => x.Consumption >= group.LowerOfConsumption && x.Consumption < group.CapsOfConsumption; } if (this.BelongingUserId != null) { int belongingUserId = (int)this.BelongingUserId; predicate3 = x => x.Relatives.Any(r => r.NodeId == belongingUserId); } int countOfAllMessages = db.Authors .Where(predicate1) .Where(predicate2) .Where(predicate3) .Count(); var tList = db.Authors .Where(predicate1) .Where(predicate2) .Where(predicate3) .OrderBy(x => x.Username) .Skip(startRow) .Take(settingOfBase.PageSizeForAdmin) .ToList() .ConvertAll(x => { UserGroup group = db.UserGroups.FirstOrDefault(g => g.LowerOfConsumption <= x.Consumption && g.CapsOfConsumption > x.Consumption); SystemQuota systemQuota = db.SystemQuotas.FirstOrDefault(s => s.Rebate == x.PlayInfo.Rebate_Normal); var t = db.SystemQuotas.ToList(); if (systemQuota == null) { systemQuota = new SystemQuota(x.PlayInfo.Rebate_Normal, new List<SystemQuotaDetail>()); for (double i = settingOfAuthor.LowerRebateOfHigh; i <= settingOfAuthor.CapsRebateOfHigh; i += 0.1) { SystemQuotaDetail sqd = new SystemQuotaDetail(i, 0); systemQuota.Details.Add(sqd); } } Author parent = db.Authors.FirstOrDefault(p => x.Relatives.Any(r => r.NodeId == p.Id) && p.Layer == x.Layer - 1); return new AuthorExport(x, parent, group, systemQuota.Details); }); return new PageResult<AuthorExport>(this.PageIndex, countOfAllMessages, settingOfBase.PageSizeForAdmin, tList); }
/// <summary> /// 获取用户信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <param name="token">身份标识</param> /// <returns>返回用户信息</returns> public static Author GetUserInfo(IModelToDbContextOfAuthor db, string token) { AuthorLoginInfo info = infos.FirstOrDefault(x => x.Token == token); if (info == null) { throw new Exception("指定的身份标识所标示的用户不存在"); } return info.GetUser(db); }
/// <summary> /// 获取未处理的提现记录 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回</returns> public NormalResult<int> GetCountOfUntreatedWithdrawalsRecords(IModelToDbContextOfAuthor db) { int count = db.WithdrawalsRecords.Count(x => x.Status == WithdrawalsStatus.处理中); return new NormalResult<int>(count); }
/// <summary> /// 获取系统设定的高点号配额方案 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回系统设定的高点号配额方案</returns> public NormalResult<List<SystemQuotaExport>> GetSystemQuota(IModelToDbContextOfAuthor db) { var tlist = db.SystemQuotas.ToList().ConvertAll(x => new SystemQuotaExport(x)); return new NormalResult<List<SystemQuotaExport>>(tlist); }
/// <summary> /// 获取基础的用户组信息 /// </summary> /// <param name="db">数据库连接对象</param> /// <returns>返回基础的用户组信息</returns> public NormalResult<List<BasicUserGroupExport>> GetBasicUserGroups(IModelToDbContextOfAuthor db) { List<BasicUserGroupExport> tList = db.UserGroups.ToList().ConvertAll(x => new BasicUserGroupExport(x)); return new NormalResult<List<BasicUserGroupExport>>(tList); }
/// <summary> /// 设置并保存 /// </summary> /// <param name="db">数据库连接对象</param> public void SetAndSave(IModelToDbContextOfAuthor db) { SettingOfAuthor settingOfAuthor = new SettingOfAuthor(db); settingOfAuthor.LowerRebate = this.LowerRebate; settingOfAuthor.CapsRebate = this.CapsRebate; settingOfAuthor.LowerRebateOfHigh = this.LowerRebateOfHigh; settingOfAuthor.CapsRebateOfHigh = this.CapsRebateOfHigh; settingOfAuthor.RechargeRecordTimeout = this.RechargeRecordTimeout; settingOfAuthor.SpreadRecordTimeout = this.SpreadRecordTimeout; settingOfAuthor.ForgotPasswordRecordTimeout = this.ForgotPasswordRecordTimeout; settingOfAuthor.DaysOfDividend = this.DaysOfDividend; settingOfAuthor.TimesOfWithdrawal = this.TimesOfWithdrawal; settingOfAuthor.MinimumWithdrawalAmount = this.MinimumWithdrawalAmount; settingOfAuthor.MaximumWithdrawalAmount = this.MaximumWithdrawalAmount; settingOfAuthor.Commission_A = this.Commission_A; settingOfAuthor.Commission_B = this.Commission_B; settingOfAuthor.LowerConsumptionForCommission = this.LowerConsumptionForCommission; settingOfAuthor.Dividend_A = this.Dividend_A; settingOfAuthor.Dividend_B = this.Dividend_B; settingOfAuthor.LowerConsumptionForDividend = this.LowerConsumptionForDividend; settingOfAuthor.ClearUser_DaysOfInactive = this.ClearUser_DaysOfInactive; settingOfAuthor.ClearUser_DaysOfUnSetIn = this.ClearUser_DaysOfUnSetIn; settingOfAuthor.ClearUser_LowerOfMoney = this.ClearUser_LowerOfMoney; settingOfAuthor.ClearUser_DaysOfUnMoneyChange = this.ClearUser_DaysOfUnMoneyChange; settingOfAuthor.Save(db); }