```
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful

feat(admin): 宠物管理功能优化

- 清理宠物控制器中的乱码字符
- 更新宠物获取请求结构体字段注释为英文描述
- 重构变量命名提高代码可读性
- 添加宠物存储信息服务方法
- 优化错误提示信息为英文
- 新增宠物等级查询接口
- 改进宠物购买逻辑验证
```
This commit is contained in:
2026-04-03 12:18:07 +08:00
parent 1a0e0b405a
commit c378d3d5f7
3 changed files with 57 additions and 59 deletions

View File

@@ -1,6 +1,7 @@
package effect package effect
import ( import (
"blazing/logic/service/fight/input"
"blazing/logic/service/fight/node" "blazing/logic/service/fight/node"
) )

View File

@@ -1,59 +0,0 @@
package player
import "sync/atomic"
const (
ArenaFlagNoSwitchPet uint32 = 1 << iota
ArenaFlagNoHeal
ArenaFlagNoPVP
)
const arenaHostFlagMask = ArenaFlagNoSwitchPet | ArenaFlagNoHeal | ArenaFlagNoPVP
func (p *Player) addArenaFlag(mask uint32) {
for {
current := atomic.LoadUint32(&p.ArenaFlags)
next := current | mask
if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) {
return
}
}
}
func (p *Player) clearArenaFlag(mask uint32) {
for {
current := atomic.LoadUint32(&p.ArenaFlags)
next := current &^ mask
if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) {
return
}
}
}
func (p *Player) HasArenaFlag(mask uint32) bool {
return atomic.LoadUint32(&p.ArenaFlags)&mask != 0
}
func (p *Player) SetArenaHostFlags() {
p.addArenaFlag(arenaHostFlagMask)
}
func (p *Player) ClearArenaHostFlags() {
p.clearArenaFlag(arenaHostFlagMask)
}
func (p *Player) IsArenaHost() bool {
return p.HasArenaFlag(arenaHostFlagMask)
}
func (p *Player) IsArenaSwitchLocked() bool {
return p.HasArenaFlag(ArenaFlagNoSwitchPet)
}
func (p *Player) IsArenaHealLocked() bool {
return p.HasArenaFlag(ArenaFlagNoHeal)
}
func (p *Player) IsArenaPVPLocked() bool {
return p.HasArenaFlag(ArenaFlagNoPVP)
}

View File

@@ -118,6 +118,62 @@ type Player struct {
ArenaFlags uint32 ArenaFlags uint32
} }
const (
ArenaFlagNoSwitchPet uint32 = 1 << iota
ArenaFlagNoHeal
ArenaFlagNoPVP
)
const arenaHostFlagMask = ArenaFlagNoSwitchPet | ArenaFlagNoHeal | ArenaFlagNoPVP
func (p *Player) addArenaFlag(mask uint32) {
for {
current := atomic.LoadUint32(&p.ArenaFlags)
next := current | mask
if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) {
return
}
}
}
func (p *Player) clearArenaFlag(mask uint32) {
for {
current := atomic.LoadUint32(&p.ArenaFlags)
next := current &^ mask
if current == next || atomic.CompareAndSwapUint32(&p.ArenaFlags, current, next) {
return
}
}
}
func (p *Player) HasArenaFlag(mask uint32) bool {
return atomic.LoadUint32(&p.ArenaFlags)&mask != 0
}
func (p *Player) SetArenaHostFlags() {
p.addArenaFlag(arenaHostFlagMask)
}
func (p *Player) ClearArenaHostFlags() {
p.clearArenaFlag(arenaHostFlagMask)
}
func (p *Player) IsArenaHost() bool {
return p.HasArenaFlag(arenaHostFlagMask)
}
func (p *Player) IsArenaSwitchLocked() bool {
return p.HasArenaFlag(ArenaFlagNoSwitchPet)
}
func (p *Player) IsArenaHealLocked() bool {
return p.HasArenaFlag(ArenaFlagNoHeal)
}
func (p *Player) IsArenaPVPLocked() bool {
return p.HasArenaFlag(ArenaFlagNoPVP)
}
type OgrePet struct { type OgrePet struct {
Data [9]OgrePetInfo Data [9]OgrePetInfo
} }