using ServerCommon; using ServerCore; using ServerBase; namespace GameServer; [ChatCommandAttribute("packagetest", typeof(ChatCommandPackageTest), AuthAdminLevelType.Developer, AuthAdminLevelType.GmNormal, AuthAdminLevelType.GmSuper)] internal class ChatCommandPackageTest : ChatCommandBase { public override async Task invoke(Player player, string token, string[] args) { Log.getLogger().info($"HandleChatCommandPackageTest"); if (args.Length < 1) { Log.getLogger().error($"Invalid Argument"); return; } if (uint.TryParse(args[0], out uint product_meta_id) == false) return; string order_guid = Guid.NewGuid().ToString("N"); var result = new Result(); var err_msg = string.Empty; var server_logic = GameServerApp.getServerLogic(); ArgumentNullException.ThrowIfNull(server_logic); var package_action = player.getEntityAction(); ArgumentNullException.ThrowIfNull(package_action); var mail_action = player.getEntityAction(); ArgumentNullException.ThrowIfNull(mail_action); var fn_give_product = async delegate () { var result = new Result(); var invokers = new List(); (result, var new_package_repeat, var receivedMailDocs) = await package_action.tryOrderNewProduct(order_guid, product_meta_id, DateTime.UtcNow, invokers); if (result.isFail()) { return result; } NullReferenceCheckHelper.throwIfNull(receivedMailDocs, () => $"receivedMailDocs is null !!!"); var task_log_data = PackageBusinessLogHelper.toLastOrderRecodeLogInfo(order_guid, product_meta_id, DateTime.UtcNow, DateTime.UtcNow); invokers.Add(new PackageLastOrderRecordBusinessLog(task_log_data)); var batch = new QueryBatchEx(player, LogActionType.CheatCommandPackageSend , server_logic.getDynamoDbClient(), true); { batch.addQuery(new DBQEntityWrite(receivedMailDocs)); batch.addQuery(new DBQWriteToAttributeAllWithTransactionRunner()); } batch.appendBusinessLogs(invokers); result = await QueryHelper.sendQueryAndBusinessLog(batch); if (result.isFail()) return result; if(receivedMailDocs.Count > 0) { mail_action.NewReceivedMail(); } if(new_package_repeat != null) { package_action.addPackage(new_package_repeat); } return result; }; result = await player.runTransactionRunnerSafely(TransactionIdType.PrivateContents, "Cheat.package", fn_give_product); if (result.isFail()) { err_msg = $"Failed to runTransactionRunnerSafely()!!! : {result.toBasicString()} - {player.toBasicString()}"; Log.getLogger().error(err_msg); } } }