using System; using System.Collections.Generic; using System.Linq; using Server.DB.Redis; using System.Text; using StackExchange.Redis; using MrWu.Debug; namespace GameDAL { /// /// 竞技比赛的 禁止玩家游玩 /// public class ClubBankPlayerInGame { public const int DbIdx = 6; private ClubBankPlayerInGame() { } static ClubBankPlayerInGame() { instance = new ClubBankPlayerInGame(); } public static ClubBankPlayerInGame instance { get; private set; } /// /// 数据库单项操作 /// public IDatabaseProxy dbp { get { return redisManager.Getdb(DbIdx); } } /// /// 数据库操作 /// public IDatabase db { get { return redisManager.GetDataBase(DbStyle.main, DbIdx); } } /* * 数据结构 * * ClubBankPlayers:clubid [243633,243663] * ClubBankPlayers:clubid [243634,246338] * * */ public const string baseKey = "ClubBankPlayers"; /// /// 获取竞技比赛的 禁止同桌 所有集合的 key /// /// /// public string GetClubBankKey(int clubid) { return $"{baseKey}:{clubid}"; } public List GetAll(int clubId) { string key = GetClubBankKey(clubId); var values = dbp.SetMembers(key); var ret = values.Select(x=>int.Parse(x)).ToList(); return ret; } /// /// 添加一个禁止游玩的玩家 (过期时间一年) /// /// 竞技比赛id /// 用户id /// public bool Add(int clubId, int userId) { string key = GetClubBankKey(clubId); var isSuccess = dbp.SetAdd(key, userId); db.KeyExpire(key, TimeSpan.FromDays(365)); return isSuccess; } /// /// 移除玩家限制 /// 竞技比赛id /// 用户id /// public bool Remove(int clubId, int userId) { string key = GetClubBankKey(clubId); var isSuccess = dbp.SetRemove(key, userId); db.KeyExpire(key, TimeSpan.FromDays(365)); return isSuccess; } /// /// 移除 /// public bool Remove(int clubId) { string key = GetClubBankKey(clubId); var isSuccess = dbp.KeyDelete(key); return isSuccess; } /// /// 是否包含玩家 /// 竞技比赛id /// 用户id /// public bool Contains(int clubId, int userId) { string key = GetClubBankKey(clubId); return dbp.SetContains(key, userId); } } }