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

feat(player): 宠物购买功能优化

- 使用PetInfo_One_ID方法替代直接数据库查询
- 调整宠物购买时的价格计算逻辑,买入价格从*100调整为*102
- 卖出价格从*100调整为*98,买入扣款也相应调整为*102
- 删除宠物时使用Pet_del方法替代直接数据库删除操作
- 新增PetInfo_One_ID方法
This commit is contained in:
昔念
2026-03-10 23:05:43 +08:00
parent 6792e0e79a
commit fc620d668f

View File

@@ -50,9 +50,9 @@ func (s *PetService) UPdatePrice(ctime uint32, Price float32) {
}
func (s *PetService) BuyPet(pid uint32) error {
var tt *model.Pet
s.dbm(s.Model).Where("id", pid).Scan(&tt)
tt := NewPetService(0).PetInfo_One_ID(pid)
if tt == nil {
return fmt.Errorf("没有此精灵")
}
@@ -66,13 +66,13 @@ func (s *PetService) BuyPet(pid uint32) error {
return fmt.Errorf("未设置价格")
}
if service.NewBaseSysUserService().GetGold(uint(s.userid)) < int64(tt.SalePrice)*100 {
if service.NewBaseSysUserService().GetGold(uint(s.userid)) < int64(tt.SalePrice)*102 {
return fmt.Errorf("余额不足")
}
service.NewBaseSysUserService().UpdateGold(tt.PlayerID, int64(tt.SalePrice)*100)
service.NewBaseSysUserService().UpdateGold(s.userid, -int64(tt.SalePrice)*100)
service.NewBaseSysUserService().UpdateGold(tt.PlayerID, int64(tt.SalePrice)*98)
service.NewBaseSysUserService().UpdateGold(s.userid, -int64(tt.SalePrice)*102)
s.PetAdd(&tt.Data)
s.dbm(s.Model).Where("id", pid).Delete() //删除旧精灵
NewPetService(tt.PlayerID).Pet_del(tt.CatchTime)
return nil
@@ -104,6 +104,19 @@ func (s *PetService) PetInfo_One(cachetime uint32) *model.Pet {
tt.Data.CatchTime = tt.CatchTime
return tt
}
func (s *PetService) PetInfo_One_ID(Pid uint32) *model.Pet {
m := s.dbm(s.Model).Where("id", Pid)
var tt *model.Pet
m.Scan(&tt)
if tt == nil {
return nil
}
tt.Data.CatchTime = tt.CatchTime
return tt
}
func (s *PetService) PetInfo_One_ohter(userid, cachetime uint32) model.Pet {
m := s.dbm(s.Model).Where("catch_time", cachetime)