```
feat(fight): 调整技能效果命中逻辑与回合开始处理 - 修改了技能效果命中的判定顺序,确保暴击计算在效果添加之前执行 - 修复了回合开始时敌我双方状态结算的上下文错误 - 优化了效果缓存初始化逻辑,避免重复添加相同效果 - 增加了效果去重判断,防止完全相同的效果被重复添加 - 调整了战斗循环中结束逻辑的位置,确保广播和通道关闭正确执行 - 更新了部分日志提示信息,使其更符合实际业务含义 - 移除了部分无用代码和注释,提高
This commit is contained in:
@@ -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("注册码已下发 ")
|
||||
}
|
||||
// 发送验证码
|
||||
|
||||
Reference in New Issue
Block a user