From 7cab2e6eb12bab2568d41be1dbafd3969418d931 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:20:39 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 0e5d54d7..2fdc19f4 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -240,5 +240,5 @@ func HandleClientReq(args []interface{}) { if b { p.(*Player).SendClientRes() } - log.Debug("uid : %d, func : %s, execTime : %s ", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start)) + //log.Debug("uid : %d, func : %s, execTime : %s ", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start)) } From 8bf726f9a3a1b838af7d24f5b83e1e3d33a26f63 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:21:38 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/external.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/server/game/external.go b/src/server/game/external.go index 2fdc19f4..b3f81911 100644 --- a/src/server/game/external.go +++ b/src/server/game/external.go @@ -191,9 +191,7 @@ func HandleClientReq(args []interface{}) { p.(*Player).TeLog("Login_log", nil) p.(*Player).ProcessTrigger() } - if newPlayer { - log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer) - } + log.Debug("uid : %d, init user process : %s, execTime : %v , isNew: %v", p.(*Player).M_DwUin, m.GetFunc(), time.Since(start), newPlayer) case "ReqServerTime": // 获取服务器时间 detail := &msg.ReqServerTime{} proto.Unmarshal(buf, detail) From 1730d81990b3d8ee080d5bc72eeb7d6ab0f4e690 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 18:29:06 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=8C=E5=8E=BB?= =?UTF-8?q?=E9=99=A4kafka=E4=B8=AD=E9=97=B4=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/benchmark_test.go | 37 ---------------------------- src/server/game/GameLogic.go | 20 --------------- src/server/game/player_data.go | 15 +---------- src/server/middleware/kafka/kafka.go | 19 -------------- 4 files changed, 1 insertion(+), 90 deletions(-) diff --git a/src/server/benchmark_test.go b/src/server/benchmark_test.go index dbb7cdb9..5765fa3b 100644 --- a/src/server/benchmark_test.go +++ b/src/server/benchmark_test.go @@ -39,43 +39,6 @@ func BenchmarkClusterMsg(b *testing.B) { } } -func BenchmarkLog(b *testing.B) { - runtime.GOMAXPROCS(2) - t := game.G_getGameLogic() - for i := 0; i < 10000; i++ { - t.AddLog(&game.Log{ - EventName: "test_log", - Param: map[string]interface{}{ - "test_key": "test_value", - }, - }) - } - t.MLogManager.Close() -} - -func BenchmarkLog2(b *testing.B) { - // 准备耗时但不需要计入基准的初始化 - runtime.GOMAXPROCS(2) - // 假设有个函数 NewGameLogicForBenchmark() 创建全新、独立的对象 - b.ReportAllocs() - for i := 0; i < b.N; i++ { - // 每次迭代创建独立对象,避免副作用 - t := game.G_getGameLogic() - b.StartTimer() - // 被测操作:向日志管理器添加 1000 条日志 - for j := 0; j < 1000; j++ { - t.AddLog(&game.Log{ - EventName: "test_log", - Param: map[string]interface{}{ - "test_key": "test_value", - }, - }) - } - b.StopTimer() - t.MLogManager.Close() - } -} - func printMemUsage() { var m runtime.MemStats runtime.ReadMemStats(&m) diff --git a/src/server/game/GameLogic.go b/src/server/game/GameLogic.go index add674db..79e2b59c 100644 --- a/src/server/game/GameLogic.go +++ b/src/server/game/GameLogic.go @@ -77,7 +77,6 @@ type GameLogic struct { M_SvrGlobal db.SqlSvrGlobalStruct SeverInfo *ServerInfo - MLogManager *LogMgr // 日志管理器 FriendMgr *FriendMgr // 好友管理器 RankMgr *RankMgr // 排行榜管理器 MailMgr *MailMgr // 邮件管理器 @@ -209,10 +208,6 @@ func (ad *GameLogic) NewAccountInsertDataToDB() bool { UpdataTime: int32(time.Now().Unix()), } db.FormatAllMemInsertDb(playerMod, "t_player_mod") - G_GameLogicPtr.AddLog(&Log{ - Uid: insertId, - EventName: "register", - }) // 创建玩家日志 player := new(Player) BaseMod := player.PlayMod.getBaseMod() @@ -469,7 +464,6 @@ func G_getGameLogic() *GameLogic { G_GameLogicPtr.RegisterNetWorkFunc() // 注册客户端接口 G_GameLogicPtr.InitActivity() // 初始化活动 G_GameLogicPtr.GetVersion() // 获取版本号 - G_GameLogicPtr.CreateLogManager() //加载日志管理器 if conf.Server.ServerType == "center" { G_GameLogicPtr.CreateFriendMgr() //创建好友管理器 G_GameLogicPtr.CreateChampshipMgr() // 创建竞标赛管理器 @@ -873,24 +867,10 @@ func (ad *GameLogic) RegisterNetWorkFunc() { RegisterMsgProcessFunc("ReqChargeReceive", ReqChargeReceive) // 礼包回复邮件 } -func (ad *GameLogic) CreateLogManager() { - ad.MLogManager = new(LogMgr) - ad.MLogManager.InitManager() -} - func (ad *GameLogic) InitActivity() { ad.m_CronEntryIDs = make(map[int]*LimitActPeriod) } -func (ad *GameLogic) AddLog(Log *Log) { - Log.ServerId = conf.Server.ServerID - Log.AppId = conf.Server.AppID - Log.TimeStamp = time.Now().Unix() - go func() { - ad.MLogManager.AddLog(Log) - }() -} - func (ad *GameLogic) NotifyAll(m *MsgMod.Msg) { ad.M_Players.Range(func(k, v interface{}) bool { v.(*Player).Send(m) diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index cba042ac..a5b27d96 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -85,10 +85,6 @@ func (p *Player) Stop() { close(p.stopSignal) close(p.msgChan) } - G_GameLogicPtr.AddLog(&Log{ - Uid: p.M_DwUin, - EventName: "Login_Out", - }) p.McronSave.Stop() p.stop = true } @@ -1056,11 +1052,6 @@ func (p *Player) AddLog(Uid int, Type int, Param string, Time int64) { } func (p *Player) TeLog(Type string, Param map[string]interface{}) { - G_GameLogicPtr.AddLog(&Log{ - Uid: p.M_DwUin, - EventName: Type, - Param: Param, - }) agent := p.GetAgent() if Param == nil { Param = make(map[string]interface{}) @@ -1078,11 +1069,7 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) { } func (p *Player) Kafka(Type string, Param map[string]interface{}) { - G_GameLogicPtr.AddLog(&Log{ - Uid: p.M_DwUin, - EventName: Type, - Param: Param, - }) + } // 初始化活动 diff --git a/src/server/middleware/kafka/kafka.go b/src/server/middleware/kafka/kafka.go index db7af4e7..12f0b103 100644 --- a/src/server/middleware/kafka/kafka.go +++ b/src/server/middleware/kafka/kafka.go @@ -2,31 +2,12 @@ package kafkaMiddleware import ( "context" - "fmt" - "server/conf" - "server/pkg/github.com/name5566/leaf/log" "github.com/segmentio/kafka-go" ) var KafkaMod *kafka.Writer -func init() { - if conf.Server.GameName == "pet_home_local" { - return - } - KafkaMod = newKafkaWriter(fmt.Sprintf("%s:%s", conf.Server.KafkaHost, conf.Server.KafkaPort), conf.Server.GameName) - log.Debug("KafkaMod init") -} - -func newKafkaWriter(kafkaURL, topic string) *kafka.Writer { - return &kafka.Writer{ - Addr: kafka.TCP(kafkaURL), - Topic: topic, - Balancer: &kafka.LeastBytes{}, - } -} - func SendMsg(key, value []byte) error { if KafkaMod == nil { return nil From 524a0cfa0f0ab14711fc9c658465a28657396ea0 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 26 Jan 2026 22:58:56 +0800 Subject: [PATCH 4/5] =?UTF-8?q?reqplayroom=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/register_network_func.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index 5cf44f86..8303a101 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -3743,6 +3743,9 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { return nil } PlayerData := G_GameLogicPtr.GetSimplePlayerByUid(Targer) + if PlayerData == nil { + return fmt.Errorf("ReqPlayroomInfo player %d not found", Targer) + } PlayroomMod.SetTarget(Targer) player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_VISITROOM}) if PlayerData.Loginout > 0 && PlayerData.Loginout < GoUtil.Now()-int64(playroomCfg.GetGameOutline()) { From 56f400a4ef6d1b80beb58c9e52aeac4fbe97127a Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 27 Jan 2026 15:25:53 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E8=B4=A7?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/trigger_func.go | 100 ++------------------------------ src/server/game_util/feishu.go | 5 +- src/server/test/order_test.go | 2 +- 3 files changed, 10 insertions(+), 97 deletions(-) diff --git a/src/server/game/trigger_func.go b/src/server/game/trigger_func.go index c8ddee8a..0d2a536e 100644 --- a/src/server/game/trigger_func.go +++ b/src/server/game/trigger_func.go @@ -2,7 +2,6 @@ package game import ( "encoding/json" - "fmt" "math" "server/MergeConst" "server/conf" @@ -21,7 +20,6 @@ import ( "server/msg" "server/pkg/github.com/name5566/leaf/log" "sort" - "time" ) const ( @@ -114,11 +112,6 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { log.Debug("charge shipping order already shipped OrderSn:%s", OrderSn) return } - - if conf.Server.GameName == "Merge_Pet_online" { - ProduceName := chargeCfg.GetProduceName(OrderData.ProductId) - GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, ProduceName, OrderData.PayTime, GoUtil.Now()) - } log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token) player.lock.Lock() defer player.lock.Unlock() @@ -140,6 +133,11 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { OrderData.ProductName = req.ProduceId db.UpdatePlayerChargeData(OrderData) player.PlayMod.save() + if conf.Server.GameName == "Merge_Pet_online" { + ChargeMod := player.PlayMod.getChargeMod() + ProduceName := chargeCfg.GetProduceName(OrderData.ProductId) + GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, ProduceName, OrderData.PayTime, GoUtil.Now(), ChargeMod.Charge) + } orderDataMap := map[string]interface{}{ "AppId": conf.Server.AppID, "ServerId": conf.Server.ServerID, @@ -160,93 +158,7 @@ func (player *Player) TriggerShippingOrderOrigin(req *msg.ReqShippingOrder) { } func (player *Player) TriggerShippingOrder(req *msg.ReqShippingOrder) { - OrderSn := req.OrderSn - Status := int(req.Status) - if Status == MergeConst.ORDER_STATUS_CANCEL { // 取消支付 - player.CancelOrder(OrderSn) - player.PushClientRes(&msg.ResShippingOrder{ - Code: msg.RES_CODE_SUCCESS, - Msg: "cancel success", - }) - return - } - OrderData := &db.SqlChargeOrderStruct{} - var err error - n := 0 - for { - n++ - if n > 14 { - break - } - OrderData, err = player.GoogleVerify(OrderSn, req.ProduceId, req.Token) - if err != nil { - log.Debug("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token) - log.Debug("GoogleVerify err:%v", err) - if n < 5 { - time.Sleep(1 * time.Second) - continue - } - if n >= 5 && n < 10 { - time.Sleep(10 * time.Second) - continue - } - if n >= 10 { - time.Sleep(30 * time.Second) - continue - } - } - if OrderData.PayStatus != MergeConst.ORDER_STATUS_PAY { - time.Sleep(1 * time.Second) - continue - } - if OrderData.PayStatus == MergeConst.ORDER_STATUS_PAY { - break - } - } - if OrderData == nil { - GoUtil.SendFeishuFatal(int(player.M_DwUin), "GoogleVerify支付校验异常", fmt.Sprintf("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s; err: %v", OrderSn, req.ProduceId, req.Token, err)) - log.Debug("[order data nil] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderSn, req.ProduceId) - return - } else { - if conf.Server.GameName == "Merge_Pet_online" { - GoUtil.SendFeishuOrder(int(player.M_DwUin), OrderData.PayChannelOrderId, OrderData.Price, req.ProduceId, OrderData.PayTime, GoUtil.Now()) - } - } - log.Debug("[order verify success] Uid:%d;OrderSn:%s;PayOrder:%s;Token:%s", player.M_DwUin, OrderData.OrderId, OrderData.PayChannelOrderId, req.Token) - player.lock.Lock() - defer player.lock.Unlock() - OrderExtraData := &ChargeExtra{} - if OrderData.PayChannelExtra != "" { - err = json.Unmarshal([]byte(OrderData.PayChannelExtra), OrderExtraData) - if err != nil { - log.Debug("GoogleVerify err:%v", err) - return - } - OrderExtraData.ChargeId = OrderData.ProductId - } - if OrderExtraData.Type == 0 { - player.Charge(int(OrderData.ProductId)) - } else { - player.SendCharge(OrderExtraData) - } - OrderData.PayStatus = MergeConst.ORDER_STATUS_SHIP - OrderData.ProductName = req.ProduceId - db.UpdatePlayerChargeData(OrderData) - player.PlayMod.save() - orderDataMap := map[string]interface{}{ - "AppId": conf.Server.AppID, - "ServerId": conf.Server.ServerID, - "OrderId": OrderData.OrderId, - "PayChannelOrderId": OrderData.PayChannelOrderId, - "ProductId": OrderData.ProductId, - "CreateTime": OrderData.CreateTime, - "PayTime": OrderData.PayTime, - "Token": req.Token, - "Price": OrderData.Price, - "PayType": OrderData.PayType, - } - player.Kafka("pay", orderDataMap) - player.SendClientRes() + } func (p *Player) TriggerComfortOrder() { diff --git a/src/server/game_util/feishu.go b/src/server/game_util/feishu.go index 66732081..5c558e54 100644 --- a/src/server/game_util/feishu.go +++ b/src/server/game_util/feishu.go @@ -12,7 +12,7 @@ import ( const ( FEISHU_WEBHOOK = "https://gadmin.bywaystudios.com/api/alibaba/game/notify" - FEISHU_ORDER = "https://gadmin.bywaystudios.com/api/feishu/notify/order" + FEISHU_ORDER = "https://gadmin.bywaystudios.com/api/alibaba/notify/order" ) // AAqFpbuPhFSEx @@ -55,7 +55,7 @@ func SendFeishuFatal(PlayerId int, FuncName string, msg string) error { return nil } -func SendFeishuOrder(PlayerId int, OrderId string, Price float64, ProductName string, PayTime, VerityTime int64) error { +func SendFeishuOrder(PlayerId int, OrderId string, Price float64, ProductName string, PayTime, VerityTime int64, Charge float64) error { // 创建请求体 payload := map[string]interface{}{ @@ -65,6 +65,7 @@ func SendFeishuOrder(PlayerId int, OrderId string, Price float64, ProductName st "ProductName": ProductName, "EventRecovery": time.Unix(PayTime, 0).Format("2006-01-02 15:04:05"), "EventAge": time.Unix(VerityTime, 0).Format("2006-01-02 15:04:05"), + "TotalCharge": String(Charge), } payloadBytes, err := json.Marshal(payload) diff --git a/src/server/test/order_test.go b/src/server/test/order_test.go index a8eb5bc6..8a2b02c2 100644 --- a/src/server/test/order_test.go +++ b/src/server/test/order_test.go @@ -23,7 +23,7 @@ func TestOrderStart(t *testing.T) { func TestOrderFinish(t *testing.T) { p1 := new(game.Player) - p1.InitPlayer("3625212") + p1.InitPlayer("bbb004") game.G_GameLogicPtr.SetPlayer(p1) ChessMod := p1.GetChessMod() err := ChessMod.FinishOrder([]int{1, 2, 3})