83 lines
3.0 KiB
C#
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);
|
|
}
|
|
}
|
|
} |