feat(cache): 添加复合键缓存操作支持 添加了基于 uint32+string 组合键的缓存操作方法,包括 GetByCompoundKey、SetByCompoundKey、DelByCompoundKey 和 ContainsByCompoundKey 方法,用于处理用户ID和会话ID的组合缓存场景 fix(vscode): 添加 cSpell 配置支持 struc 词汇 refactor(session): 移除过时的会话管理方法 移除了基于单一字符串键的会话管理方法,因为已迁移到使用 复合键的缓存操作方式 ```
63 lines
1.8 KiB
Go
63 lines
1.8 KiB
Go
package controller
|
||
|
||
import (
|
||
"blazing/common/socket/errorcode"
|
||
"blazing/logic/service/pet"
|
||
"blazing/logic/service/player"
|
||
"blazing/modules/player/model"
|
||
|
||
"github.com/samber/lo"
|
||
)
|
||
|
||
func (h Controller) IsCollect(
|
||
data *pet.C2S_IS_COLLECT, c *player.Player) (result *pet.S2C_IS_COLLECT, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||
result = &pet.S2C_IS_COLLECT{
|
||
ID: data.Type,
|
||
}
|
||
|
||
res := c.Info.GetTask(1335 + int(data.Type)) //第一期
|
||
if res == model.Completed {
|
||
result.IsCom = 1
|
||
}
|
||
|
||
return result, 0
|
||
|
||
}
|
||
|
||
// 定义 Type 与合法 ID 集合的映射表,集中管理所有规则
|
||
var validTypeIDMap = map[int][]uint32{
|
||
1: {1, 4, 7}, // Type1:合法ID为1、4、7
|
||
2: {71}, // Type2:合法ID为71
|
||
3: {275}, // Type3:合法ID为275
|
||
4: {669}, // Type4:合法ID为669(注:你之前提到的是670,确认是否笔误)
|
||
301: {1, 4, 7}, //精灵王计划
|
||
}
|
||
|
||
func (h Controller) Collect(
|
||
data *pet.C2S_PET_COLLECT, c *player.Player) (result *pet.S2C_PET_COLLECT, err errorcode.ErrorCode) { //这个时候player应该是空的
|
||
result = &pet.S2C_PET_COLLECT{ID: data.ID}
|
||
res := c.Info.GetTask(1335 + int(data.Type)) //第一期
|
||
if res != model.Unaccepted {
|
||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||
}
|
||
|
||
validIDs, ok := validTypeIDMap[int(data.Type)]
|
||
if !ok {
|
||
// Type不在映射表中,返回系统错误
|
||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||
}
|
||
|
||
// 2. 判断ID是否在合法集合中
|
||
if !lo.Contains(validIDs, data.ID) {
|
||
return nil, errorcode.ErrorCode(errorcode.ErrorCodes.ErrSystemError)
|
||
}
|
||
|
||
c.Info.SetTask(1335+int(data.Type), model.Completed)
|
||
r := model.GenPetInfo(int(data.ID), -1, -1, 0, 1, nil)
|
||
c.Service.Pet.PetAdd(r)
|
||
result.CatchTime = r.CatchTime
|
||
|
||
return result, 0
|
||
|
||
}
|