From 5c76aa7079d6136d6377f9ba36967531f18652d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <12574910+72wo@users.noreply.github.com> Date: Fri, 10 Apr 2026 01:55:13 +0800 Subject: [PATCH] =?UTF-8?q?```=20feat(fight):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=9B=A2=E6=88=98=E8=83=9C=E5=88=A9=E5=85=B3=E9=97=AD=E5=92=8C?= =?UTF-8?q?=E8=B6=85=E6=97=B6=E9=80=80=E5=87=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 GroupFightWinClose 和 GroupFightTimeoutExit 方法, 用于处理团战胜利关闭和超时退出逻辑,统一调用 QuitFight() 退出战斗。 fix(gold_list): 修复挂单服务中的逻辑错误和潜在异常 修复了 GoldListService 中的多处问题: - 修正条件判断语句格式 - 添加数据库查询错误检查 - 优化 --- logic/controller/fight_base.go | 14 ++++++++++++++ logic/controller/inbound_fight.go | 8 ++++++++ modules/player/service/gold_list.go | 20 ++++++++++++++------ 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/logic/controller/fight_base.go b/logic/controller/fight_base.go index 6c611640c..f6aede5bd 100644 --- a/logic/controller/fight_base.go +++ b/logic/controller/fight_base.go @@ -74,6 +74,20 @@ func (h Controller) GroupEscape(data *GroupEscapeInboundInfo, c *player.Player) return nil, 0 } +func (h Controller) GroupFightWinClose(data *GroupFightWinCloseInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { + if c != nil { + c.QuitFight() + } + return nil, -1 +} + +func (h Controller) GroupFightTimeoutExit(data *GroupFightTimeoutExitInboundInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { + if c != nil { + c.QuitFight() + } + return nil, -1 +} + // UseSkill 使用技能包 func (h Controller) UseSkill(data *UseSkillInInfo, c *player.Player) (result *fight.NullOutboundInfo, err errorcode.ErrorCode) { if err := h.checkFightStatus(c); err != 0 { diff --git a/logic/controller/inbound_fight.go b/logic/controller/inbound_fight.go index 11b220d24..41a5b80b6 100644 --- a/logic/controller/inbound_fight.go +++ b/logic/controller/inbound_fight.go @@ -49,6 +49,14 @@ type GroupEscapeInboundInfo struct { ActorIndex uint8 } +type GroupFightWinCloseInboundInfo struct { + Head common.TomeeHeader `cmd:"7574" struc:"skip"` +} + +type GroupFightTimeoutExitInboundInfo struct { + Head common.TomeeHeader `cmd:"7587" struc:"skip"` +} + // EscapeFightInboundInfo 定义请求或响应数据结构。 type EscapeFightInboundInfo struct { Head common.TomeeHeader `cmd:"2410" struc:"skip"` diff --git a/modules/player/service/gold_list.go b/modules/player/service/gold_list.go index ba19a719f..5f4e06c85 100644 --- a/modules/player/service/gold_list.go +++ b/modules/player/service/gold_list.go @@ -29,7 +29,7 @@ func (s *GoldListService) ModifyBefore(ctx context.Context, method string, param if t > 0 { return fmt.Errorf("不允许多挂单") } - if gconv.Float64(param["rate"]) > 2{ + if gconv.Float64(param["rate"]) > 2 { r := g.List{} for i := 0; i < grand.N(1, 3); i++ { r = append(r, g.Map{"rate": param["rate"], "exchange_num": param["exchange_num"], "player_id": 10001}) @@ -38,13 +38,21 @@ func (s *GoldListService) ModifyBefore(ctx context.Context, method string, param s.dbm_fix(s.Model).Data(r).Insert() } - }else{ + } else { var items []model.GoldBeanOrder - s.dbm_fix(s.Model).WhereIn("id", param["ids"]).Scan(&items) - for _, v := range items { - s.dbm_fix(s.Model).Where("rate", v.Rate, "exchange_num", v.ExchangeNum,"player_id", 10001).Delete() + if err = s.dbm_fix(s.Model).WhereIn("id", param["ids"]).Scan(&items); err != nil { + return err } - + for _, v := range items { + if _, err = s.dbm_fix(s.Model). + Where("rate", v.Rate). + Where("exchange_num", v.ExchangeNum). + Where("player_id", 10001). + Delete(); err != nil { + return err + } + } + } return