跳到主要内容

game_server.lt_client_notify

简介

提供一些基础方法处理来自雷霆平台的推送通知

组件接口

lt_client_notify.gs

提供一些基础方法处理来自雷霆平台的推送通知

通过setup方法进行初始化

目前已知有两种来自雷霆平台的推送通知:

  1. 充值订单通知
    • 将通知信息转为LtChargeOrderNotify实例
    • 调用on_charge_order_notify方法
  2. 防沉迷登出通知
    • 将通知信息转为LtAddictionLogoutNotify实例
    • 调用on_addiction_logout_notify方法

平台文档中的充值通知等由平台推送给游戏服务器的通知处理:https://leiting.feishu.cn/docx/Jc0IdLInJoLyCcxKNc6ccXATnEH

文档:https://leiting.feishu.cn/docx/Jc0IdLInJoLyCcxKNc6ccXATnEH

函数原型函数作用
bool setup(map para = )初始化
bool is_whitelist_ip(string ip)ip是不是在白名单列表里
mixed op_order(string order_no, function func, ...)执行一个订单操作
void lock_order(string order_no)锁定一个订单,保证在锁定期间,只有锁定者才能操作本订单
void unlock_order(string order_no)解锁一个订单,订单操作完毕后需要释放订单的锁
bool save_order(string order_no, map order_data)保存订单数据
map load_order(string order_no)读取订单数据
bool on_charge_order_notify(LtChargeOrderNotify para, string ip, string key, ChargeOrderFunc func)充值通知
LtAddictionLogoutNotifyResult on_addiction_logout_notify(LtAddictionLogoutNotify para, string key, AddictionLogoutFunc func)防沉迷登出处理

样例

public void pkg_sample()
{
import pkg.game_server.lt_client_notify;

lt_client_notify.setup({
"charge_order_collection" : "charge_orders",
"ip_whitelist" : [
"127.0.0.1"
]
});
printf("---------------------------------------------------\n");

// 处理充值订单通知
LtChargeOrderNotify order_para = LtChargeOrderNotify.new();
order_para.gameOrderNo = "ORDER001";
order_para.status = "success";
order_para.thirdNo = "thirdNo";
order_para.thirdAmount = "100";
order_para.currency = "CNY";
order_para.channelNo = "channel";
order_para.productId = "vip688";
order_para.userId = "U0000000001";
order_para.sign = "94ab1cd2ed0cf120342361963a309357";
ChargeOrderFunc order_func = (LtChargeOrderNotify para) {
printf("order para=%O\n", para);
// 具体处理订单
// if (false)
// {
// // 异常需要上报结果
// // 推送订单异常
// LtChargeReportOrderException exception = LtChargeReportOrderException.new();
// exception.gameOrderNo = para.gameOrderNo;
// ...
// exception.sign_by_key("kkk");
// exception.request("http://127.0.0.1:4567");
// }
return true;
};
bool order_result = lt_client_notify.on_charge_order_notify(order_para, "kkk", "127.0.0.1", order_func);
printf("order result=%O\n", order_result);
printf("---------------------------------------------------\n");
// 处理防沉迷登出通知
LtAddictionLogoutNotify logout_para = LtAddictionLogoutNotify.new();
logout_para.age = 18;
logout_para.game = "test_game";
logout_para.gameZone = "Zone001";
logout_para.isFast = 1;
logout_para.isHoliday = 1;
logout_para.onlineTime = 3600 * 24;
logout_para.timestamp = 1706254028;
logout_para.type = 1;
logout_para.token = "3dadbce7f806732b8204f92458668d60";
AddictionLogoutFunc logout_func = (LtAddictionLogoutNotify para) {
printf("addiction logout para=%O\n", para);
// 具体处理登出
return true;
};
LtAddictionLogoutNotifyResult result = lt_client_notify.on_addiction_logout_notify(logout_para, "zzz", logout_func);
printf("addition result status: %O, msg=%O\n", result.status, result.message);
}