diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
index f7b9193..2c5841e 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/AccountExtend.cs
@@ -349,6 +349,66 @@ namespace CloudGaming.Code.Account
}
return await UserConsumeDiamondMoneyAsync(cloudGamingBase, money, it => { it.Title = title; it.OrderCode = orderId; });
}
+ ///
+ /// 用户玩游戏消耗钻石
+ ///
+ ///
+ /// 金额
+ /// 资产记录日志id
+ /// 游戏名称
+ /// 资产收入支出记录id
+ /// 游戏每分钟消耗多少钻石
+ ///
+ public static async Task<(bool, int, int)> UserPlayGameDiamondConsumeMoney(this CloudGamingBase cloudGamingBase, decimal money, string gameName, int currencyLogId,int diamondListId, string gameXiaoHao)
+ {
+ bool issuccess = false;
+ int _currencyLogId = currencyLogId;
+ try
+ {
+ var currency = new T_User_Currency();
+ GameDiamondConsumeMoney gameDiamondConsumeMoney = new GameDiamondConsumeMoney(cloudGamingBase.Dao, cloudGamingBase._UserId, UserCurrencyType.钻石, currency);
+ (issuccess, _currencyLogId) = await gameDiamondConsumeMoney.ConsumeMoneyAsync(money, currencyLogId);
+ if (issuccess)
+ {
+ cloudGamingBase.UserInfo.Diamond = (int)currency.CurrencyMoney;
+ await cloudGamingBase.SaveUserInfoCacheChangesAsync();
+ UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
+ T_User_DiamondList userDiamondList = null;
+ if (diamondListId > 0)
+ {
+ userDiamondList = await cloudGamingBase.Dao.DaoUser.Context.T_User_DiamondList.FirstOrDefaultAsync(it => it.Id == diamondListId);
+ }
+ if (userDiamondList == null)
+ {
+ userDiamondList = new T_User_DiamondList()
+ {
+ CreateAt = DateTime.Now,
+ Consume = 0,
+ ConsumeType = (int)consumeType,
+ CurrencyType = (int)UserCurrencyType.钻石,
+ OrderCode = "",
+ Title = $"游玩《{gameName}》",
+ UpdateAt = DateTime.Now,
+ UserId = cloudGamingBase.UserInfo.UserId,
+ Extend = gameXiaoHao,
+ };
+ await cloudGamingBase.Dao.DaoUser.Context.AddAsync(userDiamondList);
+ diamondListId = userDiamondList.Id;
+ }
+ userDiamondList.Consume += money;
+ userDiamondList.UpdateAt = DateTime.Now;
+ await cloudGamingBase.Dao.DaoUser.Context.SaveChangesAsync();
+ }
+ }
+ catch (Exception ex)
+ {
+
+ return (false, _currencyLogId, diamondListId); ;
+ }
+ return (issuccess, _currencyLogId, diamondListId);
+
+ }
+
///
/// 发送消息
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
index a6325a8..ee3b0d1 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/DiamondConsumeMoney.cs
@@ -1,3 +1,5 @@
+using Bogus.DataSets;
+
using CloudGaming.Code.Account.Contract;
using CloudGaming.Code.DataAccess;
using CloudGaming.DtoModel.Account.User;
@@ -8,75 +10,89 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace CloudGaming.Code.Account.UserCurrency
+namespace CloudGaming.Code.Account.UserCurrency;
+
+///
+/// 扣除或者充值用户钻石
+///
+///
+///
+///
+///
+public class DiamondConsumeMoney(DAO dao, int userId, UserCurrencyType userCurrencyType, T_User_Currency userCurrency = null) : IUserConsumeMoney
{
///
- /// 扣除或者充值用户钻石
+ /// 用户余额扣除
+ ///
+ ///
+ ///
+ ///
+
+ public async Task ConsumeMoneyAsync(decimal money)
+ {
+ T_User_Currency? currency = await AddUserCurrencyAsync(dao, userId, userCurrencyType, money);
+ UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
+ var currency_Log = new T_User_Currency_Log()
+ {
+ Consume = money,
+ ConsumeType = (int)consumeType,
+ CreateAt = DateTime.Now,
+ CurrencyType = (int)userCurrencyType,
+ Remarks = $"于{DateTime.Now:yyyy-MM-dd HH:mm:ss}{consumeType}[{Math.Abs(money)}]{userCurrencyType};",
+ UpdateAt = DateTime.Now,
+ UserId = userId,
+ };
+ await dao.DaoUser.Context.T_User_Currency_Log.AddAsync(currency_Log);
+ await dao.DaoUser.Context.SaveChangesAsync();
+ if (userCurrency != null)
+ {
+ userCurrency.CurrencyMoney = currency.CurrencyMoney;
+ userCurrency.UpdateAt = currency.UpdateAt;
+ userCurrency.Id = currency.Id;
+ userCurrency.CurrencyName = currency.CurrencyName;
+ userCurrency.CreateAt = currency.CreateAt;
+ userCurrency.CurrencyType = currency.CurrencyType;
+ }
+ else
+ {
+ userCurrency = currency;
+ }
+ return true;
+ }
+
+
+ ///
+ ///
///
///
///
///
- ///
- public class DiamondConsumeMoney(DAO dao, int userId, UserCurrencyType userCurrencyType, T_User_Currency userCurrency = null) : IUserConsumeMoney
+ ///
+ ///
+ /// 余额不足
+ public async Task AddUserCurrencyAsync(decimal money)
{
- ///
- /// 用户余额扣除
- ///
- ///
- ///
- ///
-
- public async Task ConsumeMoneyAsync(decimal money)
+ var currency = await dao.DaoUser.Context.T_User_Currency.Where(it => it.CurrencyType == (int)userCurrencyType && it.UserId == userId).FirstOrDefaultAsync();
+ if (currency == null)
{
-
- var currency = await dao.DaoUser.Context.T_User_Currency.Where(it => it.CurrencyType == (int)userCurrencyType && it.UserId == userId).FirstOrDefaultAsync();
- if (currency == null)
+ currency = new T_User_Currency()
{
- currency = new T_User_Currency()
- {
- CreateAt = DateTime.Now,
- CurrencyMoney = 0,
- CurrencyName = userCurrencyType.ToString(),
- CurrencyType = (int)userCurrencyType,
- UserId = userId,
- UpdateAt = DateTime.Now,
- };
- await dao.DaoUser.Context.T_User_Currency.AddAsync(currency);
- await dao.DaoUser.Context.SaveChangesAsync();
- }
- currency.CurrencyMoney += money;
- if (currency.CurrencyMoney < 0)
- {
- throw new Exception("余额不足");
- }
- UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
- var currency_Log = new T_User_Currency_Log()
- {
- Consume = money,
- ConsumeType = (int)consumeType,
CreateAt = DateTime.Now,
+ CurrencyMoney = 0,
+ CurrencyName = userCurrencyType.ToString(),
CurrencyType = (int)userCurrencyType,
- Remarks = $"于{DateTime.Now:yyyy-MM-dd HH:mm:ss}{consumeType}[{Math.Abs(money)}]{userCurrencyType};",
- UpdateAt = DateTime.Now,
UserId = userId,
+ UpdateAt = DateTime.Now,
};
- await dao.DaoUser.Context.T_User_Currency_Log.AddAsync(currency_Log);
+ await dao.DaoUser.Context.T_User_Currency.AddAsync(currency);
await dao.DaoUser.Context.SaveChangesAsync();
- if (userCurrency != null)
- {
- userCurrency.CurrencyMoney = currency.CurrencyMoney;
- userCurrency.UpdateAt = currency.UpdateAt;
- userCurrency.Id = currency.Id;
- userCurrency.CurrencyName = currency.CurrencyName;
- userCurrency.CreateAt = currency.CreateAt;
- userCurrency.CurrencyType = currency.CurrencyType;
- }
- else
- {
- userCurrency = currency;
- }
- return true;
-
}
+ currency.CurrencyMoney += money;
+ if (currency.CurrencyMoney < 0)
+ {
+ throw new Exception("余额不足");
+ }
+
+ return currency;
}
}
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/GameDiamondConsumeMoney.cs b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/GameDiamondConsumeMoney.cs
new file mode 100644
index 0000000..03dbb75
--- /dev/null
+++ b/src/CloudGaming/Code/CloudGaming.Code/Account/UserCurrency/GameDiamondConsumeMoney.cs
@@ -0,0 +1,89 @@
+using CloudGaming.Code.Account.Contract;
+using CloudGaming.Code.DataAccess;
+using CloudGaming.DtoModel.Account.User;
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CloudGaming.Code.Account.UserCurrency;
+
+///
+/// 游戏扣除钻石
+///
+///
+///
+///
+///
+public class GameDiamondConsumeMoney(DAO dao, int userId, UserCurrencyType userCurrencyType, T_User_Currency userCurrency = null) : IUserConsumeMoney
+{
+ ///
+ /// 玩游戏消耗钻石
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task<(bool, int)> ConsumeMoneyAsync(decimal money, int currencyLogId)
+ {
+ var currency = await new DiamondConsumeMoney(dao, userId, userCurrencyType, userCurrency).AddUserCurrencyAsync(money);
+ if (currency == null)
+ {
+ throw new Exception("扣费失败");
+ }
+ UserCurrencyConsumeType consumeType = money >= 0 ? UserCurrencyConsumeType.收入 : UserCurrencyConsumeType.消耗;
+ T_User_Currency_Log currency_Log = null;
+ if (currencyLogId > 0)
+ {
+ currency_Log = await dao.DaoUser.Context.T_User_Currency_Log.FirstOrDefaultAsync(it => it.Id == currencyLogId);
+ }
+ if (currency_Log == null)
+ {
+ currency_Log = new T_User_Currency_Log()
+ {
+ Consume = 0,
+ ConsumeType = (int)consumeType,
+ CreateAt = DateTime.Now,
+ CurrencyType = (int)userCurrencyType,
+ Remarks = $"",
+ UpdateAt = DateTime.Now,
+ UserId = userId,
+ };
+ await dao.DaoUser.Context.T_User_Currency_Log.AddAsync(currency_Log);
+ }
+ currency_Log.Consume += money;
+ currency_Log.Remarks = $"用户玩游戏{consumeType}[{Math.Abs(money)}]{userCurrencyType}";
+ await dao.DaoUser.Context.SaveChangesAsync();
+ if (userCurrency != null)
+ {
+ userCurrency.CurrencyMoney = currency.CurrencyMoney;
+ userCurrency.UpdateAt = currency.UpdateAt;
+ userCurrency.Id = currency.Id;
+ userCurrency.CurrencyName = currency.CurrencyName;
+ userCurrency.CreateAt = currency.CreateAt;
+ userCurrency.CurrencyType = currency.CurrencyType;
+ }
+ else
+ {
+ userCurrency = currency;
+ }
+ return (true, currency_Log?.Id ?? 0);
+ }
+
+
+ ///
+ /// 用户余额扣除
+ ///
+ ///
+ ///
+ ///
+
+ public async Task ConsumeMoneyAsync(decimal money)
+ {
+ return await new DiamondConsumeMoney(dao, userId, userCurrencyType, userCurrency).ConsumeMoneyAsync(money);
+ }
+
+
+}
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs b/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
index a2cae7a..9767ca9 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Contract/IJYApi.cs
@@ -67,7 +67,7 @@ namespace CloudGaming.Code.Contract
///
///
[Post("/jyapi/reconPlayGame")]
- Task>> ReconPlayGame([Body(BodySerializationMethod.UrlEncoded)] DisplayGradeSettings playGameQueue);
+ Task>> ReconPlayGame([Body(BodySerializationMethod.UrlEncoded)] ReconPlayGameSettings reconPlayGameSettings);
///
/// 停止游戏
@@ -77,6 +77,14 @@ namespace CloudGaming.Code.Contract
[Post("/jyapi/stopGame")]
Task>> StopGame([Body(BodySerializationMethod.UrlEncoded)] PlayGameCommonSetting playGameQueue);
+
+ ///
+ /// 查看自己的会话列表
+ ///
+ ///
+ ///
+ [Post("/jyapi/myScList")]
+ Task>> MyScList([Body(BodySerializationMethod.UrlEncoded)] RequestBaseModel requestBase);
///
/// 获取会话列表
///
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
index fd589b2..2d947e2 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameBLL.cs
@@ -1,5 +1,9 @@
+using Azure.Core;
+
+using CloudGaming.Code.Account;
using CloudGaming.Code.AppExtend.ConfigModel;
using CloudGaming.Code.Contract;
+using CloudGaming.DtoModel.Account.User;
using CloudGaming.DtoModel.Game;
using CloudGaming.DtoModel.JY;
using CloudGaming.DtoModel.PlayGame;
@@ -118,20 +122,10 @@ namespace CloudGaming.Code.Game
};
playGameRequest.Cpu = playGameRequest.Cpu;
- // 调用游戏启动接口
+ // 调用游戏启动接口
var data = await JYApi.PlayGame(playGameSettings);
- // 创建游戏启动日志对象
- var playGameLog = new T_User_PlayGmaeLog
- {
- CreateTime = DateTime.Now,
- DescribeContent = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} 用户尝试启动游戏;",
- GameId = playGameRequest.GameId,
- UserId = _UserId,
- RequestContent = data.RequestStr,
- ResponseContent = data.ResponseStr,
- SessionId = gameInfoCache?.SessionId
- };
+ //T_User_PlayGmaeLog playGameLog = await AddPlayGmaeLog(gameInfoCache, $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} 用户尝试启动游戏;", data.ResponseStr, data.ResponseContent);
var response = new BaseResponse
///
///
- public async Task> CancelQueue(GameRequest gameRequest)
+ public async Task> CancelQueueAsync(GameRequest gameRequest)
{
if (_UserId == 0)
{
@@ -289,13 +418,9 @@ namespace CloudGaming.Code.Game
PlayGameUserInfo gameInfoCache = await PlayGameExtend.GetPlayGameUserInfoOrNull(this, userInfo, gameInfo);
if (gameInfoCache == null)
{
- throw MessageBox.ErrorShow("未找到排队信息");
+ throw MessageBox.ErrorShow("未找到游戏信息");
}
- if (gameInfoCache.PlayQueueId == 0)
- {
- throw MessageBox.ErrorShow("排队出错");
- }
- //CancelQueue
+ //CancelQueueAsync
//PlayGameCancelQueue playGameQueue
PlayGameQueue playGameQueue = new PlayGameQueue()
{
@@ -311,9 +436,105 @@ namespace CloudGaming.Code.Game
return new BaseResponse(ResponseCode.Success, "取消排队成功");
}
- public async Task DisplayGrade(int queue_grade)
+ ///
+ /// 切换视频等级
+ ///
+ ///
+ ///
+ ///
+ public async Task> DisplayGrade(int displayGrade, string gameId)
{
- return new BaseResponse();
+
+ if (_UserId == 0)
+ {
+ throw MessageBox.ErrorShow("请先登录");
+ }
+
+ // 检查游戏是否存在
+ var gameCache = Cache.GameEntityCache;
+ var gameInfo = gameCache[gameId];
+ if (gameInfo == null)
+ {
+ throw MessageBox.ErrorShow("游戏不存在");
+ }
+
+ // 获取用户和游戏信息
+ var userInfo = UserInfo;
+ PlayGameUserInfo gameInfoCache = await PlayGameExtend.GetPlayGameUserInfoOrNull(this, userInfo, gameInfo);
+ if (gameInfoCache == null)
+ {
+ throw MessageBox.ErrorShow("未找到游戏信息");
+ }
+ if (gameInfoCache.GameStatus != PlayGameStatus.开始游戏 && gameInfoCache.GameStatus != PlayGameStatus.游戏中)
+ {
+ throw MessageBox.ErrorShow("不在游戏中");
+ }
+ DisplayGradeSettings displayGradeSettings = new DisplayGradeSettings()
+ {
+ DisplayGrade = displayGrade,
+ ScId = gameInfoCache.ScId,
+ Sn = gameInfoCache.Sn,
+ };
+ //切换视频等级
+ var response = await JYApi.DisplayGrade(displayGradeSettings);
+ if (response.IsSuccess)
+ {
+ gameInfoCache.DisplayGrade = displayGrade;
+ await gameInfoCache.SaveChangesAsync(this);
+ }
+ else
+ {
+ throw MessageBox.ErrorShow("切换失败");
+ }
+ return new BaseResponse(ResponseCode.Success, "", response.Data);
+ }
+
+
+ ///
+ /// 获取可重连的会话列表
+ ///
+ ///
+ ///
+ public async Task> GetMyScList(string sn)
+ {
+ var requestParmat = new RequestBaseModel()
+ {
+ Sn = sn,
+ };
+ var response = await JYApi.MyScList(requestParmat);
+ if (response.IsSuccess)
+ {
+ return new BaseResponse(ResponseCode.Success, "", response.Data) { };
+ }
+ throw response.ToMessageBox();
+
+ }
+
+ ///
+ /// 重连会话
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task> ReconPlayGame(int sc_id, int display_grade, string model_name, string sn, string cpu)
+ {
+ var setting = new ReconPlayGameSettings()
+ {
+ ScId = sc_id,
+ DisplayGrade = display_grade,
+ Cpu = cpu,
+ ModelName = model_name,
+ Sn = sn,
+ };
+ var response = await JYApi.ReconPlayGame(setting);
+ if (response.IsSuccess)
+ {
+ return new BaseResponse(ResponseCode.Success, "", response.Data) { };
+ }
+ throw response.ToMessageBox();
}
}
}
diff --git a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs
index d74da81..8a9bede 100644
--- a/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs
+++ b/src/CloudGaming/Code/CloudGaming.Code/Game/PlayGameExtend.cs
@@ -82,7 +82,7 @@ namespace CloudGaming.Code.Game
/// 游戏记录id
/// 游戏显示等级
///
- public static bool PlayGameStart(this PlayGameUserInfo playGameUserInfo, string scId, int gameListId, int display_grade)
+ public static bool PlayGameStart(this PlayGameUserInfo playGameUserInfo, int scId, int gameListId, int display_grade)
{
playGameUserInfo.GameStatus = PlayGameStatus.开始游戏;
playGameUserInfo.GameListId = gameListId;
@@ -95,6 +95,7 @@ namespace CloudGaming.Code.Game
});
playGameUserInfo.PlayGameStartAt = DateTime.Now;
playGameUserInfo.PlayGameHeartbeatAt = DateTime.Now;
+ playGameUserInfo.LastChargingAt = DateTime.Now;
return true;
}
@@ -108,6 +109,18 @@ namespace CloudGaming.Code.Game
playGameUserInfo.GameStatus = PlayGameStatus.游戏启动失败;
return true;
}
+
+ ///
+ /// 游戏启动失败
+ ///
+ ///
+ ///
+ public static bool PlayGameClose(this PlayGameUserInfo playGameUserInfo)
+ {
+ playGameUserInfo.GameStatus = PlayGameStatus.游戏结束;
+ return true;
+ }
+
///
/// 游戏心跳
///
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYPlayGameModel.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYPlayGameModel.cs
index 7c864c8..d2c9a96 100644
--- a/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYPlayGameModel.cs
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/JY/JYPlayGameModel.cs
@@ -32,7 +32,7 @@ namespace CloudGaming.DtoModel.JY
/// 本次游戏连接会话 id
///
[JsonProperty("sc_id")]
- public string ScId { get; set; }
+ public int ScId { get; set; }
///
/// 链路唯一标识,
///
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameCommonSetting.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameCommonSetting.cs
index daacb7f..89cc336 100644
--- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameCommonSetting.cs
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameCommonSetting.cs
@@ -16,6 +16,6 @@ namespace CloudGaming.DtoModel.PlayGame
/// 本次游戏连接会话 id
///
[JsonPropertyName("sc_id")]
- public string ScId { get; set; }
+ public int ScId { get; set; }
}
}
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameHeartbeatResponse.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameHeartbeatResponse.cs
new file mode 100644
index 0000000..4183c34
--- /dev/null
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameHeartbeatResponse.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CloudGaming.DtoModel.PlayGame
+{
+ ///
+ ///
+ ///
+ public class PlayGameHeartbeatResponse
+ {
+ ///
+ /// 当前游戏消耗钻石数/每分钟
+ ///
+ public int GameConsumeDiamond { get; set; }
+
+ ///
+ /// 用户剩余游玩时间(分钟)
+ ///
+ public int UserPlayGameTime { get; set; }
+
+ ///
+ /// 用户剩余钻石
+ ///
+ public int Diamond { get; set; }
+ }
+}
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs
index 0bb1587..736830f 100644
--- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs
@@ -53,6 +53,11 @@ namespace CloudGaming.DtoModel.PlayGame
///
public DateTime PlayGameHeartbeatAt { get; set; }
+ ///
+ /// 最后一次扣费时间
+ ///
+ public DateTime LastChargingAt { get; set; }
+
///
/// 游戏记录id
///
@@ -78,7 +83,7 @@ namespace CloudGaming.DtoModel.PlayGame
///
/// 鲸云scid
///
- public string ScId { get; set; }
+ public int ScId { get; set; }
///
/// 第三方游戏id
@@ -118,5 +123,16 @@ namespace CloudGaming.DtoModel.PlayGame
/// 用户操作内容
///
public List GameUserOperation { get; set; }
+
+ ///
+ /// 金额日志表id
+ ///
+ public int CurrencyLogId { get; set; }
+
+
+ ///
+ /// 资产记录表id
+ ///
+ public int DiamondListId { get; set; }
}
}
diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ReconPlayGameSettings.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ReconPlayGameSettings.cs
index bfc703a..ec2b032 100644
--- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ReconPlayGameSettings.cs
+++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/ReconPlayGameSettings.cs
@@ -15,6 +15,12 @@ namespace CloudGaming.DtoModel.PlayGame
public ReconPlayGameSettings() { }
+ ///
+ /// 会话 id
+ ///
+ [JsonPropertyName("sc_id")]
+ public int ScId { get; set; }
+
///
/// 显示等级,可在后台配置,默认为 1
///