feat(fight): 调整技能效果命中逻辑与回合开始处理

- 修改了技能效果命中的判定顺序,确保暴击计算在效果添加之前执行
- 修复了回合开始时敌我双方状态结算的上下文错误
- 优化了效果缓存初始化逻辑,避免重复添加相同效果
- 增加了效果去重判断,防止完全相同的效果被重复添加
- 调整了战斗循环中结束逻辑的位置,确保广播和通道关闭正确执行
- 更新了部分日志提示信息,使其更符合实际业务含义
- 移除了部分无用代码和注释,提高
This commit is contained in:
2025-11-11 01:10:26 +08:00
parent 996e342459
commit da9286d3d8
18 changed files with 150 additions and 99 deletions

View File

@@ -18,8 +18,8 @@ import (
"github.com/gogf/gf/v2/crypto/gmd5"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gcache"
"github.com/gogf/gf/v2/util/gconv"
"github.com/hashicorp/golang-lru/v2/expirable"
)
func (s *BaseSysLoginService) Reg(ctx context.Context, req *v1.BaseOpenLoginReq) (result *TokenResult, err error) {
@@ -56,7 +56,7 @@ func (s *BaseSysLoginService) Reg(ctx context.Context, req *v1.BaseOpenLoginReq)
// 10分钟内限制请求 ip->次数 邮箱->次数
// 验证码对redis传,防止被重复操作
// var emailcache = expirable.NewLRU[string, int](0, nil, time.Millisecond*10)
var ipcache = expirable.NewLRU[string, int](0, nil, time.Millisecond*10)
var ipcache = gcache.New(1000)
func (s *BaseSysLoginService) Email(ctx context.Context, req *v1.BaseOpenEmailReq) (result *TokenResult, err error) {
var (
@@ -65,14 +65,16 @@ func (s *BaseSysLoginService) Email(ctx context.Context, req *v1.BaseOpenEmailRe
)
ip := r.GetClientIp()
v, ok := ipcache.Get(ip)
if ok && v > 3 {
v, ok2 := ipcache.Get(context.Background(), ip)
if ok2 != nil || v.Int() > 3 {
return nil, gerror.New("操作过于频繁,请稍后再试")
}
ok, _ = share.ShareManager.EmailCodeExists(req.Email)
if ok {
ipcache.Set(context.Background(), ip, v.Int()+1, 10*time.Minute)
ok1, _ := share.ShareManager.EmailCodeExists(req.Email)
if ok1 {
return nil, gerror.New("注册码已下发 ")
}
// 发送验证码