```
refactor(item_use): 重构道具使用逻辑并提取常量 - 添加 ItemDefaultLeftTime 和 ItemNeuronID 常量定义 - 使用结构体字面量初始化 itemInfo,替换手动赋值 - 将神经元道具处理逻辑提取为独立方法 handleNeuronItem - 将普通宠物道具处理逻辑提取为独立方法 handleRegularPetItem - 优化 UsePetItemOutOfFight 方法的条件判断结构 fix(NewSeIdx_700): 修复Boss技能伤害计算参数错误 - 修正 Skill_Useed 方法中 Div 方法的参数索引,从 Args()[1]
This commit is contained in:
@@ -2,8 +2,6 @@ package model
|
||||
|
||||
import (
|
||||
"blazing/cool"
|
||||
"errors"
|
||||
"fmt"
|
||||
"time"
|
||||
)
|
||||
|
||||
@@ -56,59 +54,6 @@ func NewCDKConfig() *CDKConfig {
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------- 业务操作方法(适配可兑换次数 != 0 需求)--------------------------
|
||||
|
||||
// SetExchangeTotalCount 设置总可兑换次数(确保不为0,满足where !=0 约束)
|
||||
func (c *CDKConfig) SetExchangeTotalCount(total uint32) error {
|
||||
if total == 0 {
|
||||
return errors.New("CDK总可兑换次数不能为0,请设置大于0的数值")
|
||||
}
|
||||
// 若剩余次数大于新的总次数,同步更新剩余次数为总次数
|
||||
if c.ExchangeRemainCount > total {
|
||||
c.ExchangeRemainCount = total
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// DeductRemainCount 扣减剩余可兑换次数(扣减后仍保证非负,且仅当剩余次数>0时可扣减)
|
||||
func (c *CDKConfig) DeductRemainCount(deductNum uint32) error {
|
||||
if deductNum <= 0 {
|
||||
return errors.New("扣减的兑换次数必须大于0")
|
||||
}
|
||||
// 校验剩余次数是否大于0(满足where !=0 前置条件)
|
||||
if c.ExchangeRemainCount == 0 {
|
||||
return errors.New("CDK剩余可兑换次数为0,无法继续扣减")
|
||||
}
|
||||
// 校验扣减后是否为负
|
||||
if c.ExchangeRemainCount < deductNum {
|
||||
return fmt.Errorf("剩余可兑换次数不足(当前剩余%d,需扣减%d)", c.ExchangeRemainCount, deductNum)
|
||||
}
|
||||
c.ExchangeRemainCount -= deductNum
|
||||
return nil
|
||||
}
|
||||
|
||||
// IsAvailable 判断CDK是否可用(剩余次数!=0 + 启用 + 在有效期内)
|
||||
func (c *CDKConfig) IsAvailable() (bool, string) {
|
||||
now := time.Now()
|
||||
// 校验剩余次数是否!=0
|
||||
if c.ExchangeRemainCount == 0 {
|
||||
return false, "CDK剩余可兑换次数为0,已失效"
|
||||
}
|
||||
// 校验是否启用
|
||||
if c.IsEnabled == 0 {
|
||||
return false, "CDK已被禁用,无法使用"
|
||||
}
|
||||
// 校验有效期
|
||||
if now.Before(c.ValidStartTime) {
|
||||
return false, "CDK尚未到有效时间,暂无法使用"
|
||||
}
|
||||
if now.After(c.ValidEndTime) {
|
||||
return false, "CDK已过有效期,已失效"
|
||||
}
|
||||
return true, "CDK可用"
|
||||
}
|
||||
|
||||
// -------------------------- 表结构自动同步 --------------------------
|
||||
func init() {
|
||||
cool.CreateTable(&CDKConfig{})
|
||||
|
||||
Reference in New Issue
Block a user