using GameData; using ObjectModel.Club; using Server.DB.Redis; using StackExchange.Redis; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using GameData.Club; namespace GameDAL.Club { /// /// 俱乐部联赛数据逻辑 /// public static class ClubLeagueMatchDal { public static readonly string clubMatchKeyPrefix = "ClubLeagueMatch"; public static readonly DbStyle redisdb = DbStyle.main; public static readonly int dbidx = 7; static TimeSpan expiry = TimeSpan.FromDays(1); /// /// 获取俱乐部权限 /// /// /// public static ClubLeaguePower GetClubLeaguePower(int clubId) { if (clubId <= 0) return null; return ClubLeagueMatchAdo.GetClubLeaguePower(clubId); } /// /// 获取俱乐部权限 /// /// /// public static Task GetClubLeaguePowerAsync(int clubId) { return ClubLeagueMatchAdo.GetClubLeaguePowerAsync(clubId); } public static async Task SaveClubLeaguePowerAsync(ClubLeaguePower leaguePower) { return await Task.Run(()=>ClubLeagueMatchAdo.SaveClubLeaguePower(leaguePower)); } public static Task SaveBanDesksAsync(List list,int matchId) { return Task.Run(() => SaveBanDesks(list, matchId)); } /// /// 保存联赛禁桌数据,每次删除数据在保存。根据ClubMatchId 删除 /// /// public static void SaveBanDesks(List list,int matchId) { if (list == null || list.Count < 1) return; ClubLeagueMatchAdo.SaveBanDesks(list,matchId); } /// /// 获取联赛禁桌数据 /// /// /// public static List GetLeagueMatchBanDesks(int clubMatchId) { if (clubMatchId <= 0) return null; return ClubLeagueMatchAdo.GetLeagueMatchBanDesks(clubMatchId); } public static Task SaveLeagueMatchClubScoreAsync(List list,int matchId) { return Task.Run(() => SaveLeagueMatchClubScore(list, matchId)); } /// /// 保存联赛俱乐部统计数据,每次删除数据在保存。根据ClubMatchId 删除 /// /// public static void SaveLeagueMatchClubScore(List list,int matchId) { if (list == null || list.Count < 1) return; ClubLeagueMatchAdo.SaveLeagueMatchClubScore(list,matchId); } /// /// 获取联赛俱乐部统计数据 /// /// /// public static List GetLeagueMatchClubScores(int clubMatchId) { if (clubMatchId <= 0) return null; return ClubLeagueMatchAdo.GetLeagueMatchClubScores(clubMatchId); } /// /// 保存联赛颁奖记录,清空对应clubMatchId比赛的缓存(每次都是新的数据,不用做删除操作) /// public static async Task SaveAwardRecord(long awardId, int leagueClubId, int leagueMatchId, List list) { if (list == null || list.Count < 1) return false; var b = await ClubDBUtil.DoLeagueAwardRecord(awardId, leagueClubId, leagueMatchId, list); if (b) { var clubMatchIds = list.Select(p => p.ClubMatchId).Distinct().ToArray(); var keys1 = clubMatchIds.Select(p => GetAwardRecordListKey(p)); var keys2 = clubMatchIds.Select(p => GetAwardRecordKey(p)); var keys3 = clubMatchIds.Select(p => GetAwardRecordListByDateKey(p)); _ = redisdb.DeleteAsync(dbidx, keys1.Concat(keys2).Concat(keys3).ToArray()); } return b; } // /// // /// 获取联赛颁奖记录 近几条 // /// // /// // /// // /// // public static AwardRecord GetAwardByTop(int clubMatchId, int topNum = 1) // { // if (clubMatchId <= 0) return null; // var result = redisdb.GetOrAdd(RedisType.String, GetAwardRecordKey(clubMatchId), () => // { // return ClubLeagueMatchAdo.GetAwardByTop(clubMatchId, topNum) ?? new AwardRecord(); // }, dbidx, expiry); // return result.AwardRecordId != 0 ? result : null; // } #if Server /// /// 获取联赛颁奖记录。根据主键id倒序 /// /// 比赛Id /// CreateTime>dateTime /// public static List GetAwardRecords(int clubMatchId, DateTime dateTime) { if (clubMatchId <= 0) return null; return redisdb.GetOrAdd(GetAwardRecordListByDateKey(clubMatchId), dateTime.ToString("yyyyMMddHHmmss"), () => ClubLeagueMatchAdo.GetAwardRecords(clubMatchId, dateTime) , dbidx, expiry); } public static FightScore GetFightScorebyId(int id) { return DbStyle.bisai.GetOrAdd(RedisType.String, GetFightScoreByIdKey(id), () => ClubDataManager.GetFightScoreById(id) , dbidx, TimeSpan.FromMinutes(30)); } #endif static RedisKey GetFightScoreByIdKey(int id) { return $"GetFightScores:id:{id}"; } static RedisKey GetAwardRecordListByDateKey(int clubMatchId) { return $"{clubMatchKeyPrefix}:AwardRecordListBydate:{clubMatchId}"; } /// /// 获取联赛颁奖记录。根据主键id倒序,根据比赛:clubMatchId缓存 时间1天 /// /// /// public static List GetAwardRecords(int clubMatchId) { if (clubMatchId <= 0) return null; return redisdb.GetOrAdd(RedisType.String, GetAwardRecordListKey(clubMatchId), () => ClubLeagueMatchAdo.GetAwardRecords(clubMatchId) , dbidx, expiry); } static RedisKey GetAwardRecordListKey(int clubMatchId) { return $"{clubMatchKeyPrefix}:AwardRecordList:{clubMatchId}"; } static RedisKey GetAwardRecordKey(int clubMatchId) { return $"{clubMatchKeyPrefix}:AwardRecord:{clubMatchId}"; } public static Task SaveLeagueClubLiveTasksAsync(List list,int matchId) { return Task.Run(() => SaveLeagueClubLiveTasks(list, matchId)); } /// /// 保存生存任务,先删除再保存 /// /// public static void SaveLeagueClubLiveTasks(List list,int matchId) { if (list == null || list.Count < 1) return; ClubLeagueMatchAdo.SaveLeagueClubLiveTasks(list,matchId); } /// /// 保存加入到联赛的俱乐部集合 /// /// public static void SaveJoinInClubLeagueMatch(JoinInClubLeagueMatch model) { if (model == null) return; ClubLeagueMatchAdo.SaveJoinInClubLeagueMatch(model); } // /// // /// 获取 保存加入到联赛的俱乐部集合 对象 // /// // /// // /// // public static JoinInClubLeagueMatch GetJoinInClubLeagueMatch(int clubMatchId) // { // if (clubMatchId <= 0) return null; // return ClubLeagueMatchAdo.GetJoinInClubLeagueMatch(clubMatchId); // } static string GetLeagueAdminClubsKey(int clubId) { return $"GetLeagueAdminClubsKey:{clubId}"; } #if Server /// /// 保存联赛俱乐部管理员 /// public static void SaveLeagueAdminClubs(int clubId, List data) { if (clubId <= 0 || data == null) return; var key = GetLeagueAdminClubsKey(clubId); var str = JsonPack.GetJson(data); redisManager.GetBiSaidb(6).StringSet(key, str, TimeSpan.FromDays(365)); //数据缓存一年 } /// /// 获取联赛管理员列表 /// /// /// public static List GetLeagueAdminClubs(int clubId) { var result = new List(); if (clubId <= 0) return result; var key = GetLeagueAdminClubsKey(clubId); string str = redisManager.GetBiSaidb(6).StringGet(key); if (!string.IsNullOrWhiteSpace(str) && str.Length > 2) { return JsonPack.GetData>(str); } return result; } #endif } }