Files
bl/logic/controller/user_cdk.go
xinian 6510e4e09b
All checks were successful
ci/woodpecker/push/my-first-workflow Pipeline was successful
refactor: 重构入参类型引用
2026-04-05 07:24:36 +08:00

63 lines
1.8 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 *C2S_GET_GIFT_COMPLETE, player *player.Player) (result *user.S2C_GET_GIFT_COMPLETE, err errorcode.ErrorCode) {
result = &user.S2C_GET_GIFT_COMPLETE{}
cdkService := service.NewCdkService()
rewardPetService := service.NewPetRewardService()
itemRewardService := service.NewItemService()
now := time.Now()
r := cdkService.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(now) == -1 {
return nil, errorcode.ErrorCodes.ErrMolecularCodeExpired
}
if !player.Service.Cdk.CanGet(uint32(r.ID)) {
return
}
if !cdkService.Set(data.PassText) {
return nil, errorcode.ErrorCodes.ErrMolecularCodeGiftsGone
}
result.Flag = 1
for _, rewardID := range r.ElfRewardIds {
pet := rewardPetService.Get(rewardID)
if pet == nil {
continue
}
petInfo := model.GenPetInfo(int(pet.MonID), int(pet.DV), int(pet.Nature), int(pet.Effect), int(pet.Lv), nil, 0)
player.Service.Pet.PetAdd(petInfo, 0)
result.PetGift = append(result.PetGift, user.PetGiftInfo{PetID: petInfo.ID, CacthTime: petInfo.CatchTime})
}
for _, rewardID := range r.ItemRewardIds {
itemInfo := itemRewardService.GetItemCount(rewardID)
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
}