提交代码

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.Linq;
using System.Text;
using System.Threading.Channels;
using System.Threading.Tasks;
namespace CloudGaming.Code.AppExtend
@ -25,12 +26,12 @@ namespace CloudGaming.Code.AppExtend
{
if (!(httpRequest?.Headers?.TryGetValue("Channel", out var _channel) ?? false))
{
_channel = "27001";
_channel = "ps_001";
}
channel = _channel;
if (string.IsNullOrEmpty(channel))
{
channel = "27001";
channel = "ps_001";
}
}
return channel;
@ -48,9 +49,30 @@ namespace CloudGaming.Code.AppExtend
{
if (string.IsNullOrEmpty(platform))
{
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;
}

View File

@ -100,7 +100,7 @@ public class CloudGamingCache
{
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;
}
@ -329,9 +329,13 @@ public static class CloudGamingCacheExtend
cloudGamingBase.Cache.AppConfigCache.ClearLocalData();
cloudGamingBase.Cache.ProductCacheEntityCache.ClearLocalData();
cloudGamingBase.Cache.AppImageCache.ClearLocalData();
cloudGamingBase.Cache.GameEntityCache.ClearLocalData();
//cloudGamingBase.Cache.GameEntityCache.ClearLocalData();
cloudGamingBase.Cache.RedemptionCodeEntityCache.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>
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 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 RedisKey => $"cache:game:gameInfo:{language}";
public string locaKey => $"lock:gameInfo:{platform}:{language}";
public string RedisKey => $"cache:game:gameInfo:{platform}:{language}";
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 gameListDict = dao.DaoGame.Context.T_Game_List.AsNoTracking().ToDictionary(g => g.GameId);
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>();
@ -72,11 +77,20 @@ namespace CloudGaming.Code.Cache.Special
}
}
var gameLanguageDic = AppLanguage.GetAppLanguageGame(appConfig, language);
var faker = new Faker("zh_CN");
var gameInfos = gameCbtList
.Where(gameCbt => gameListDict.ContainsKey(gameCbt.GameId))
.Select(gameCbt =>
List<GameInfo> gameInfos = new List<GameInfo>();
foreach (var gameId in gameListDict.Keys)
{
var gameCbt = gameCbtList.FirstOrDefault(it => it.GameId == gameId && it.OnlinePlatform == platform);
if (gameCbt == null)
{
gameCbt = gameCbtList.FirstOrDefault(it => it.GameId == gameId && string.IsNullOrEmpty(it.OnlinePlatform));
}
if (gameCbt == null)
{
continue;
}
var game = gameListDict[gameCbt.GameId];
var gameInfo = mapper.Map<GameInfo>(gameCbt);
game.ToGameInfo(gameInfo);
@ -110,10 +124,49 @@ namespace CloudGaming.Code.Cache.Special
{
gameInfo.GameDetailsofCharges = $"游戏免费";
}
//gameInfo.GameIntroduce
return gameInfo;
})
.ToList();
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;
}

View File

@ -25,7 +25,13 @@ namespace CloudGaming.Code.Epg
/// <returns></returns>
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)
{
listQueryable = listQueryable.Where(it => it.ShowStatus == 0 || it.ShowStatus == 2).AsQueryable();

View File

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