using ServerCore; using ServerBase; using ServerCommon; namespace GameServer; public class UgqRewardAction : EntityActionBase { public UgqRewardAction(EntityBase owner) : base(owner) { } public override async Task onInit() { await Task.CompletedTask; var result = new Result(); return result; } public override void onClear() { } public async Task uggDailyRewardRefreshWithoutTransaction() { var player = getOwner() as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); var result = new Result(); var server_logic = GameServerApp.getServerLogic(); var ugq_daily_reward_attribute = player.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(ugq_daily_reward_attribute, () => $"ugq_daily_reward_attribute is null !!! - {player.toBasicString()}"); var current_time = DateTimeHelper.Current; if (ugq_daily_reward_attribute.m_next_refresh_time > current_time) return result; ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Amature, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.RisingStar, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master1, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master2, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master3, 0, (key, old) => 0); ugq_daily_reward_attribute.m_next_refresh_time = DateTimeHelper.Current.Date.AddDays(1); ugq_daily_reward_attribute.modifiedEntityAttribute(true); return await Task.FromResult(result); } public async Task uggDailyRewardRefresh() { var player = getOwner() as Player; NullReferenceCheckHelper.throwIfNull(player, () => $"player is null !!!"); var server_logic = GameServerApp.getServerLogic(); var fn_transaction_runner = async delegate () { var ugq_daily_reward_attribute = player.getEntityAttribute(); NullReferenceCheckHelper.throwIfNull(ugq_daily_reward_attribute, () => $"ugq_daily_reward_attribute is null !!! - {player.toBasicString()}"); var fn_result = new Result(); var current_time = DateTimeHelper.Current; if (ugq_daily_reward_attribute.m_next_refresh_time > current_time) return fn_result; ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Amature, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.RisingStar, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master1, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master2, 0, (key, old) => 0); ugq_daily_reward_attribute.m_ugq_daily_reward_count.AddOrUpdate(UgqGradeType.Master3, 0, (key, old) => 0); ugq_daily_reward_attribute.m_next_refresh_time = DateTimeHelper.Current.Date.AddDays(1); ugq_daily_reward_attribute.modifiedEntityAttribute(true); var batch = new QueryBatchEx(player, LogActionType.UgqDailyRewardCountRefresh, server_logic.getDynamoDbClient()); { batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); } var log_invoker = new UgqDailyRewardBusinessLog(ugq_daily_reward_attribute.m_next_refresh_time, ugq_daily_reward_attribute.m_ugq_daily_reward_count); batch.appendBusinessLog(log_invoker); fn_result = await QueryHelper.sendQueryAndBusinessLog(batch); if (fn_result.isFail()) { return fn_result; } return fn_result; }; var result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "UgqDailyRewardCountRefresh", fn_transaction_runner); if (result.isFail()) { var err_msg = $"Failed to runTransactionRunnerSafely() !!! : {result.toBasicString()} - {player.toBasicString()}"; Log.getLogger().error(err_msg); return result; } return result; } }