Files
2025-05-01 07:20:41 +09:00

83 lines
3.0 KiB
C#

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<PackageAction>();
ArgumentNullException.ThrowIfNull(package_action);
var mail_action = player.getEntityAction<MailAction>();
ArgumentNullException.ThrowIfNull(mail_action);
var fn_give_product = async delegate ()
{
var result = new Result();
var invokers = new List<ILogInvoker>();
(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<QueryRunnerWithDocument>(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);
}
}
}