feat(player): 宠物购买功能优化 - 使用PetInfo_One_ID方法替代直接数据库查询 - 调整宠物购买时的价格计算逻辑,买入价格从*100调整为*102 - 卖出价格从*100调整为*98,买入扣款也相应调整为*102 - 删除宠物时使用Pet_del方法替代直接数据库删除操作 - 新增PetInfo_One_ID方法
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user