77 lines
1.9 KiB
Go
77 lines
1.9 KiB
Go
package model_redis
|
|
|
|
import (
|
|
"catface/app/global/variable"
|
|
"catface/app/utils/redis_factory"
|
|
"encoding/json"
|
|
)
|
|
|
|
// INFO 辅助 animal - list - prefer 模式下的查询特化。
|
|
|
|
type SelectedAnimal4Prefer struct {
|
|
EncounteredCatsId []int64 `json:"encountered_cats_id"` // #1 对应第一阶段:近期路遇关联
|
|
NewCatsId []int64 `json:"new_cats_id"` // #2 对应第二阶段:近期新增
|
|
|
|
key int64 `json:"-"` // redis 的 key 值
|
|
notPassNewCat bool `json:"-"`
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) NotPassNew() bool {
|
|
return s.notPassNewCat
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) Length() int {
|
|
return len(s.NewCatsId) + len(s.EncounteredCatsId)
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) NumEnc() int {
|
|
return len(s.EncounteredCatsId)
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) GetAllIds() []int64 {
|
|
return append(s.EncounteredCatsId, s.NewCatsId...)
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) AppendEncIds(ids []int64) {
|
|
for _, id := range ids {
|
|
s.EncounteredCatsId = append(s.EncounteredCatsId, int64(id))
|
|
}
|
|
}
|
|
|
|
// BASE CURD
|
|
func (s *SelectedAnimal4Prefer) GenerateKey() int64 { // TODO 之后迁移到 model_redis 的基类去。
|
|
s.key = variable.SnowFlake.GetId()
|
|
s.notPassNewCat = true
|
|
return s.key
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) GetKey() int64 { // TODO 同上
|
|
return s.key
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) GetDataByKey(key int64) (bool, error) {
|
|
s.key = key
|
|
|
|
redisClient := redis_factory.GetOneRedisClient()
|
|
defer redisClient.ReleaseOneRedisClient()
|
|
|
|
if res, err := redisClient.String(redisClient.Execute("get", key)); err == nil {
|
|
json.Unmarshal([]byte(res), s)
|
|
return true, nil
|
|
} else {
|
|
return false, err
|
|
}
|
|
}
|
|
|
|
func (s *SelectedAnimal4Prefer) SetDataByKey() (bool, error) {
|
|
redisClient := redis_factory.GetOneRedisClient()
|
|
defer redisClient.ReleaseOneRedisClient()
|
|
|
|
data, _ := json.Marshal(s)
|
|
if _, err := redisClient.Execute("set", s.key, data); err == nil {
|
|
return true, nil
|
|
} else {
|
|
return false, err
|
|
}
|
|
}
|