All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
feat(service): 宠物添加功能增加销售计数参数并优化价格更新逻辑 - 修改PetAdd方法签名,增加salecount参数用于追踪宠物销售次数 - 在多个控制器中统一调用PetAdd方法时传入0作为初始销售次数 - 临时禁用寒流枪活动中的宠物发放功能 - 优化UPdatePrice方法,添加错误处理和价格范围验证逻辑 - 调整宠物购买逻辑,使用免费金币系统并计算递增购买
60 lines
1.7 KiB
Go
60 lines
1.7 KiB
Go
package controller
|
|
|
|
import (
|
|
"blazing/common/socket/errorcode"
|
|
"blazing/logic/service/player"
|
|
"blazing/logic/service/user"
|
|
"blazing/modules/config/service"
|
|
"blazing/modules/player/model"
|
|
"time"
|
|
)
|
|
|
|
func (h Controller) CDK(data *user.C2S_GET_GIFT_COMPLETE, player *player.Player) (result *user.S2C_GET_GIFT_COMPLETE, err errorcode.ErrorCode) {
|
|
result = &user.S2C_GET_GIFT_COMPLETE{}
|
|
|
|
r := service.NewCdkService().Get(data.PassText)
|
|
if r == nil {
|
|
return nil, errorcode.ErrorCodes.ErrMolecularCodeNotExists
|
|
}
|
|
if r.BindUserId != 0 && r.BindUserId != data.Head.UserID {
|
|
return nil, errorcode.ErrorCodes.ErrMolecularCodeFrozen
|
|
}
|
|
|
|
if r.ValidEndTime.Compare(time.Now()) == -1 {
|
|
return nil, errorcode.ErrorCodes.ErrMolecularCodeExpired
|
|
}
|
|
if !player.Service.Cdk.CanGet(uint32(r.ID)) {
|
|
return
|
|
}
|
|
if !service.NewCdkService().Set(data.PassText) {
|
|
return nil, errorcode.ErrorCodes.ErrMolecularCodeGiftsGone
|
|
}
|
|
|
|
result.Flag = 1
|
|
for _, v := range r.ElfRewardIds {
|
|
pet := service.NewPetRewardService().Get(v)
|
|
if pet != nil {
|
|
peti := model.GenPetInfo(int(pet.MonID), int(pet.DV), int(pet.Nature), int(pet.Effect), int(pet.Lv), nil, 0)
|
|
player.Service.Pet.PetAdd(peti, 0)
|
|
result.PetGift = append(result.PetGift, user.PetGiftInfo{PetID: peti.ID, CacthTime: peti.CatchTime})
|
|
}
|
|
|
|
}
|
|
|
|
for _, itemID := range r.ItemRewardIds {
|
|
iteminfo := service.NewItemService().GetItemCount(itemID)
|
|
player.ItemAdd(iteminfo.ItemId, iteminfo.ItemCnt)
|
|
|
|
result.GiftList = append(result.GiftList, user.GiftInfo{GiftID: iteminfo.ItemId, Count: iteminfo.ItemCnt})
|
|
|
|
}
|
|
if r.TitleRewardIds != 0 {
|
|
player.Service.Title.Give(r.TitleRewardIds)
|
|
result.Tile = r.TitleRewardIds
|
|
|
|
}
|
|
player.Service.Cdk.Log(uint32(r.ID))
|
|
|
|
return
|
|
}
|