提交代码

This commit is contained in:
zpc 2024-12-25 16:12:49 +08:00
parent 58ed076b13
commit d3a0c9024e
5 changed files with 147 additions and 52 deletions

View File

@ -4,6 +4,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace CloudGaming.Code.AppExtend namespace CloudGaming.Code.AppExtend
@ -25,12 +26,12 @@ namespace CloudGaming.Code.AppExtend
{ {
if (!(httpRequest?.Headers?.TryGetValue("Channel", out var _channel) ?? false)) if (!(httpRequest?.Headers?.TryGetValue("Channel", out var _channel) ?? false))
{ {
_channel = "27001"; _channel = "ps_001";
} }
channel = _channel; channel = _channel;
if (string.IsNullOrEmpty(channel)) if (string.IsNullOrEmpty(channel))
{ {
channel = "27001"; channel = "ps_001";
} }
} }
return channel; return channel;
@ -48,9 +49,30 @@ namespace CloudGaming.Code.AppExtend
{ {
if (string.IsNullOrEmpty(platform)) if (string.IsNullOrEmpty(platform))
{ {
if (!(httpRequest?.Headers.TryGetValue("Platform", out var _platform) ?? false)) if (!(httpRequest?.Headers.TryGetValue("Platform", out var _platform) ?? false))
{ {
_platform = "android"; _platform = "";
}
if (string.IsNullOrEmpty(_platform))
{
if (Channel.StartsWith("ps_"))
{
_platform = AppPlatform.android.ToString();
}
else if (Channel.StartsWith("ios_"))
{
_platform = AppPlatform.ios.ToString();
}
else if (Channel.StartsWith("cs_"))
{
_platform = AppPlatform.car.ToString();
}
else if (Channel.StartsWith("ts_"))
{
_platform = AppPlatform.tv.ToString();
}
} }
platform = _platform; platform = _platform;
} }

View File

@ -100,7 +100,7 @@ public class CloudGamingCache
{ {
if (gameEntityCache == null) if (gameEntityCache == null)
{ {
gameEntityCache = new GameEntityCache(_gamingBase.Dao, _gamingBase.RedisCache, _gamingBase.Mapper, _gamingBase.AppConfig, _gamingBase.AppRequestInfo.Language); gameEntityCache = new GameEntityCache(_gamingBase.Dao, _gamingBase.RedisCache, _gamingBase.Mapper, _gamingBase.AppConfig, _gamingBase.AppRequestInfo.Language, _gamingBase.AppRequestInfo.Platform);
} }
return gameEntityCache; return gameEntityCache;
} }
@ -329,9 +329,13 @@ public static class CloudGamingCacheExtend
cloudGamingBase.Cache.AppConfigCache.ClearLocalData(); cloudGamingBase.Cache.AppConfigCache.ClearLocalData();
cloudGamingBase.Cache.ProductCacheEntityCache.ClearLocalData(); cloudGamingBase.Cache.ProductCacheEntityCache.ClearLocalData();
cloudGamingBase.Cache.AppImageCache.ClearLocalData(); cloudGamingBase.Cache.AppImageCache.ClearLocalData();
cloudGamingBase.Cache.GameEntityCache.ClearLocalData(); //cloudGamingBase.Cache.GameEntityCache.ClearLocalData();
cloudGamingBase.Cache.RedemptionCodeEntityCache.ClearLocalData(); cloudGamingBase.Cache.RedemptionCodeEntityCache.ClearLocalData();
cloudGamingBase.Cache.SevenDayEntityCache.ClearLocalData(); cloudGamingBase.Cache.SevenDayEntityCache.ClearLocalData();
var gameEntityCache = new GameEntityCache(cloudGamingBase.Dao, cloudGamingBase.RedisCache, cloudGamingBase.Mapper, cloudGamingBase.AppConfig, cloudGamingBase.AppRequestInfo.Language, AppPlatform.android.ToString());
gameEntityCache.ClearData();
var gameEntityCache1 = new GameEntityCache(cloudGamingBase.Dao, cloudGamingBase.RedisCache, cloudGamingBase.Mapper, cloudGamingBase.AppConfig, cloudGamingBase.AppRequestInfo.Language, AppPlatform.car.ToString());
gameEntityCache1.ClearData();
} }

View File

@ -19,18 +19,23 @@ namespace CloudGaming.Code.Cache.Special
/// <summary> /// <summary>
/// 游戏缓存表 /// 游戏缓存表
/// </summary> /// </summary>
public class GameEntityCache(DAO dao, IDatabase database, IMapper mapper, AppConfig appConfig, string language) : CommonDataEntityCache<GameInfo>(GameEntityCache.GameEntityCacheLock, 60 * 60 * 24 * 7), ICacheClearLocalData public class GameEntityCache(DAO dao, IDatabase database, IMapper mapper, AppConfig appConfig, string language, string platform) : CommonDataEntityCache<GameInfo>(GameEntityCache.GameEntityCacheLock, 60 * 60 * 24 * 7), ICacheClearLocalData
{ {
public static object GameEntityCacheLock; public static object GameEntityCacheLock;
public override string key => $"{appConfig.Identifier}:game:gameInfo:{language}"; /// <summary>
///
/// </summary>
public override string key => $"{appConfig.Identifier}:game:gameInfo:{platform}:{language}";
public string locaKey => $"lock:gameInfo:{language}"; public string locaKey => $"lock:gameInfo:{platform}:{language}";
public string RedisKey => $"cache:game:gameInfo:{language}"; public string RedisKey => $"cache:game:gameInfo:{platform}:{language}";
public override List<GameInfo> GetDataList() public override List<GameInfo> GetDataList()
{ {
//dao.DaoPhone.Context.T_GameCBT.AsNoTracking().Where(it => it.IsOnline&&it.OnlinePlatform==)
var gameCbtList = dao.DaoPhone.Context.T_GameCBT.AsNoTracking().Where(it => it.IsOnline).ToList() ?? new List<T_GameCBT>(); var gameCbtList = dao.DaoPhone.Context.T_GameCBT.AsNoTracking().Where(it => it.IsOnline).ToList() ?? new List<T_GameCBT>();
var gameListDict = dao.DaoGame.Context.T_Game_List.AsNoTracking().ToDictionary(g => g.GameId); var gameListDict = dao.DaoGame.Context.T_Game_List.AsNoTracking().ToDictionary(g => g.GameId);
var gameChildList = dao.DaoGame.Context.T_Game_ChildList.AsNoTracking().ToList(); var gameChildList = dao.DaoGame.Context.T_Game_ChildList.AsNoTracking().ToList();
var gameTypesDict = dao.DaoGame.Context.T_Game_Types.AsNoTracking().ToDictionary(type => type.TypeId) ?? new Dictionary<int, T_Game_Types>(); var gameTypesDict = dao.DaoGame.Context.T_Game_Types.AsNoTracking().ToDictionary(type => type.TypeId) ?? new Dictionary<int, T_Game_Types>();
@ -72,48 +77,96 @@ namespace CloudGaming.Code.Cache.Special
} }
} }
var gameLanguageDic = AppLanguage.GetAppLanguageGame(appConfig, language); var gameLanguageDic = AppLanguage.GetAppLanguageGame(appConfig, language);
var faker = new Faker("zh_CN"); var faker = new Faker("zh_CN");
var gameInfos = gameCbtList List<GameInfo> gameInfos = new List<GameInfo>();
.Where(gameCbt => gameListDict.ContainsKey(gameCbt.GameId)) foreach (var gameId in gameListDict.Keys)
.Select(gameCbt => {
var gameCbt = gameCbtList.FirstOrDefault(it => it.GameId == gameId && it.OnlinePlatform == platform);
if (gameCbt == null)
{ {
var game = gameListDict[gameCbt.GameId]; gameCbt = gameCbtList.FirstOrDefault(it => it.GameId == gameId && string.IsNullOrEmpty(it.OnlinePlatform));
var gameInfo = mapper.Map<GameInfo>(gameCbt); }
game.ToGameInfo(gameInfo); if (gameCbt == null)
//game.GameName {
gameInfo.GameType = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 1, gameTypesDict); continue;
gameInfo.GameTags = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 2, gameTagsDict); }
if (!gameUserShare.TryGetValue(gameCbt.GameId, out string NickName)) var game = gameListDict[gameCbt.GameId];
{ var gameInfo = mapper.Map<GameInfo>(gameCbt);
string chineseName = faker.Internet.UserName(); game.ToGameInfo(gameInfo);
NickName = chineseName; //game.GameName
} gameInfo.GameType = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 1, gameTypesDict);
gameInfo.GameShare = $"{NickName}"; gameInfo.GameTags = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 2, gameTagsDict);
var gameLanguageInfo = gameLanguageDic.GetAppGameLanguage(gameInfo); if (!gameUserShare.TryGetValue(gameCbt.GameId, out string NickName))
if (gameLanguageInfo != null) {
{ string chineseName = faker.Internet.UserName();
gameInfo.GameName = gameLanguageInfo.GameName; NickName = chineseName;
gameInfo.GameIntroduce = gameLanguageInfo.GameIntroduce; }
gameInfo.GameShare = gameLanguageInfo.GameShare; gameInfo.GameShare = $"{NickName}";
} var gameLanguageInfo = gameLanguageDic.GetAppGameLanguage(gameInfo);
gameInfo.GameIntroduce = $"<div style=\"color:#ffffff !important;\">{gameInfo.GameIntroduce}</div>"; if (gameLanguageInfo != null)
gameInfo.GameShareUserIcon = 90001; {
if (gameInfo.ConsumeDiamondNumHour == 0) gameInfo.GameName = gameLanguageInfo.GameName;
{ gameInfo.GameIntroduce = gameLanguageInfo.GameIntroduce;
gameInfo.ConsumeDiamondNumHour = defaultConsumeDiamondNumHour; gameInfo.GameShare = gameLanguageInfo.GameShare;
} }
if (gameInfo.ConsumeDiamondNumHour > 0) gameInfo.GameIntroduce = $"<div style=\"color:#ffffff !important;\">{gameInfo.GameIntroduce}</div>";
{ gameInfo.GameShareUserIcon = 90001;
gameInfo.GameDetailsofCharges = $"游戏资费:游玩按分钟计费,{gameInfo.ConsumeDiamondNumHour}钻石/小时。"; if (gameInfo.ConsumeDiamondNumHour == 0)
} {
else gameInfo.ConsumeDiamondNumHour = defaultConsumeDiamondNumHour;
{ }
gameInfo.GameDetailsofCharges = $"游戏免费"; if (gameInfo.ConsumeDiamondNumHour > 0)
} {
//gameInfo.GameIntroduce gameInfo.GameDetailsofCharges = $"游戏资费:游玩按分钟计费,{gameInfo.ConsumeDiamondNumHour}钻石/小时。";
return gameInfo; }
}) else
.ToList(); {
gameInfo.GameDetailsofCharges = $"游戏免费";
}
gameInfos.Add(gameInfo);
}
//var gameInfos = gameCbtList
// .Where(gameCbt => gameListDict.ContainsKey(gameCbt.GameId))
// .Select(gameCbt =>
// {
// var game = gameListDict[gameCbt.GameId];
// var gameInfo = mapper.Map<GameInfo>(gameCbt);
// game.ToGameInfo(gameInfo);
// //game.GameName
// gameInfo.GameType = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 1, gameTypesDict);
// gameInfo.GameTags = GetGameExtendedAttributes(gameChildList, gameCbt.GameId, 2, gameTagsDict);
// if (!gameUserShare.TryGetValue(gameCbt.GameId, out string NickName))
// {
// string chineseName = faker.Internet.UserName();
// NickName = chineseName;
// }
// gameInfo.GameShare = $"{NickName}";
// var gameLanguageInfo = gameLanguageDic.GetAppGameLanguage(gameInfo);
// if (gameLanguageInfo != null)
// {
// gameInfo.GameName = gameLanguageInfo.GameName;
// gameInfo.GameIntroduce = gameLanguageInfo.GameIntroduce;
// gameInfo.GameShare = gameLanguageInfo.GameShare;
// }
// gameInfo.GameIntroduce = $"<div style=\"color:#ffffff !important;\">{gameInfo.GameIntroduce}</div>";
// gameInfo.GameShareUserIcon = 90001;
// if (gameInfo.ConsumeDiamondNumHour == 0)
// {
// gameInfo.ConsumeDiamondNumHour = defaultConsumeDiamondNumHour;
// }
// if (gameInfo.ConsumeDiamondNumHour > 0)
// {
// gameInfo.GameDetailsofCharges = $"游戏资费:游玩按分钟计费,{gameInfo.ConsumeDiamondNumHour}钻石/小时。";
// }
// else
// {
// gameInfo.GameDetailsofCharges = $"游戏免费";
// }
// //gameInfo.GameIntroduce
// return gameInfo;
// })
// .ToList();
return gameInfos; return gameInfos;
} }

View File

@ -25,7 +25,13 @@ namespace CloudGaming.Code.Epg
/// <returns></returns> /// <returns></returns>
public async Task<List<EpgCategoryDto>> GetHomeInfo() public async Task<List<EpgCategoryDto>> GetHomeInfo()
{ {
var listQueryable = GetEpgCategory(EpgEnum.EpgCatIdName.).AsQueryable(); var home = Cache.EpgCategoryCfg.Where(it => it.IdName.Contains(EpgEnum.EpgCatIdName.) && it.Platform == AppRequestInfo.Platform).FirstOrDefault();
if (home == null)
{
home = Cache.EpgCategoryCfg.Where(it => it.IdName.Contains(EpgEnum.EpgCatIdName.) && string.IsNullOrEmpty(it.Platform)).FirstOrDefault();
}
string homeStr = home?.IdName ?? "Home";
var listQueryable = GetEpgCategory(homeStr).AsQueryable();
if (IsChecking) if (IsChecking)
{ {
listQueryable = listQueryable.Where(it => it.ShowStatus == 0 || it.ShowStatus == 2).AsQueryable(); listQueryable = listQueryable.Where(it => it.ShowStatus == 0 || it.ShowStatus == 2).AsQueryable();
@ -51,8 +57,8 @@ namespace CloudGaming.Code.Epg
{ {
return; return;
} }
var epgInfo = item.ToEpgInfo(Cache.GameEntityCache,it.DefaultImageStyle); var epgInfo = item.ToEpgInfo(Cache.GameEntityCache, it.DefaultImageStyle);
if (epgInfo != null) if (epgInfo != null)
{ {
list.Add(epgInfo); list.Add(epgInfo);

View File

@ -146,5 +146,15 @@ namespace CloudGaming.AppConfigModel
/// </summary> /// </summary>
App App
} }
/// <summary>
/// 手机平台
/// </summary>
public enum AppPlatform
{
android,
ios,
tv,
car,
}
} }