diff --git a/logic/service/fight/effect/2270_2294.go b/logic/service/fight/effect/2270_2294.go index 37e7f3d6..e1eecb84 100644 --- a/logic/service/fight/effect/2270_2294.go +++ b/logic/service/fight/effect/2270_2294.go @@ -444,7 +444,7 @@ func (e *Effect2278) Skill_Use() bool { return true } - damage := marked.GetHP().Mul(alpacadecimal.NewFromInt(percent)).Div(hundred) + damage := marked.GetMaxHP().Mul(alpacadecimal.NewFromInt(percent)).Div(hundred) if damage.Cmp(alpacadecimal.Zero) > 0 { e.Ctx().Opp.Damage(e.Ctx().Our, &info.DamageZone{ Type: info.DamageType.Percent, diff --git a/logic/service/fight/input/fight.go b/logic/service/fight/input/fight.go index c5f9d6dc..ac93c203 100644 --- a/logic/service/fight/input/fight.go +++ b/logic/service/fight/input/fight.go @@ -298,7 +298,7 @@ func (our *Input) CalculatePower(deftype *Input, skill *info.SkillEntity) alpaca } if skill.XML.PwrBindDv == 2 { - skill.XML.Power = int(ourPet.Info.Hp/3 + ourPet.Info.Dv) + skill.XML.Power = int(ourPet.Info.MaxHp/3 + ourPet.Info.Dv) } } diff --git a/modules/player/service/gold_list.go b/modules/player/service/gold_list.go index 0b1a5245..38f2dcc3 100644 --- a/modules/player/service/gold_list.go +++ b/modules/player/service/gold_list.go @@ -11,6 +11,7 @@ import ( "time" "github.com/gogf/gf/v2/database/gdb" + "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/util/gconv" @@ -20,6 +21,23 @@ type GoldListService struct { BaseService } +func (s *GoldListService) validateOrderInput(exchangeNum uint32, rate float64) error { + if exchangeNum == 0 { + return gerror.New("出售数量必须大于0") + } + if rate <= 0 { + return gerror.New("汇率必须大于0") + } + return nil +} + +func (s *GoldListService) validateOrderRecord(order *model.GoldBeanOrder) error { + if order == nil || order.ID == 0 { + return gerror.New("重复订单") + } + return s.validateOrderInput(order.ExchangeNum, order.Rate) +} + func (s *GoldListService) getPrevDayAvgRate() float64 { var ( now = gtime.Now() @@ -49,7 +67,16 @@ func (s *GoldListService) ModifyBefore(ctx context.Context, method string, param userId := admin.UserId if method == "Add" { - if service.NewBaseSysUserService().GetGold(userId) < gconv.Int64(param["exchange_num"])*100 { + var ( + exchangeNum = gconv.Uint32(param["exchange_num"]) + rate = gconv.Float64(param["rate"]) + ) + + if err = s.validateOrderInput(exchangeNum, rate); err != nil { + return err + } + + if service.NewBaseSysUserService().GetGold(userId) < int64(exchangeNum)*100 { return fmt.Errorf("金额不足") } @@ -59,7 +86,6 @@ func (s *GoldListService) ModifyBefore(ctx context.Context, method string, param } var ( - rate = gconv.Float64(param["rate"]) prevAvg = s.getPrevDayAvgRate() minRate = math.Round(prevAvg*0.9*10000) / 10000 maxRate = math.Round(prevAvg*1.1*10000) / 10000 @@ -90,6 +116,9 @@ func (s *GoldListService) ModifyBefore(ctx context.Context, method string, param func (s *GoldListService) Done(listid uint32) (*model.GoldBeanOrder, error) { var rr model.GoldBeanOrder s.dbm_fix(s.Model).Where("id", listid).Scan(&rr) + if err := s.validateOrderRecord(&rr); err != nil { + return nil, err + } r, err := s.dbm_fix(s.Model).Data("status", 1).Where("status", 0).Where("id", listid).Update() if err != nil { return nil, err @@ -114,8 +143,8 @@ func (s *GoldListService) Trade(ctx context.Context, listid uint32, buyerID uint if err := tx.Model(s.Model).Where("id", listid).Where("status", 0).Scan(&order); err != nil { return err } - if order.ID == 0 { - return fmt.Errorf("重复订单") + if err := s.validateOrderRecord(&order); err != nil { + return err } if !order.UpdateTime.Add(1 * time.Hour).Before(gtime.Now()) { @@ -196,7 +225,12 @@ func (s *GoldListService) Trade(ctx context.Context, listid uint32, buyerID uint } func (s *GoldListService) Get() []model.GoldBeanOrder { var rr []model.GoldBeanOrder - s.dbm_fix(s.Model).Where("status", 0).Order("rate", "asc").Scan(&rr) + s.dbm_fix(s.Model). + Where("status", 0). + WhereGT("exchange_num", 0). + WhereGT("rate", 0). + Order("rate", "asc"). + Scan(&rr) return rr } @@ -214,6 +248,9 @@ func NewGoldListService(id uint32) *GoldListService { }, ListQueryOp: &cool.QueryOp{ + Extend: func(ctx g.Ctx, m *gdb.Model) *gdb.Model { + return m.WhereGT("exchange_num", 0).WhereGT("rate", 0) + }, AddOrderby: g.MapStrStr{"updateTime": "asc"}, }, InsertParam: func(ctx context.Context) g.MapStrAny {