You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.4 KiB
Go

package finder
import (
"context"
"joybuywork/internal/repository/cache"
"joybuywork/internal/repository/model"
"reflect"
)
// User 用户id类型字段找一条数据
//
// params: val id, hash_id
func User(ctx context.Context, val ...any) (*model.User, error) {
cu := cache.NewUser(ctx)
for _, v := range val {
kind := reflect.TypeOf(v).Kind()
if kind == reflect.Int64 && v.(int64) > 0 {
return cu.FindById(v.(int64))
}
if kind == reflect.String && v.(string) != "" {
return cu.FindByHashId(v.(string))
}
}
return nil, nil
}
// Project 项目id类型字段找一条数据
//
// params: val id, hash_id
func Project(ctx context.Context, val ...any) (*model.Project, error) {
cu := cache.NewProject(ctx)
for _, v := range val {
kind := reflect.TypeOf(v).Kind()
if kind == reflect.Int64 && v.(int64) > 0 {
return cu.FindById(v.(int64))
}
if kind == reflect.String && v.(string) != "" {
return cu.FindByHashId(v.(string))
}
}
return nil, nil
}
// Campaign 活动id类型字段找一条数据
//
// params: val id, link_hash_id
func Campaign(ctx context.Context, val ...any) (*model.FissionCampaign, error) {
cu := cache.NewCampaign(ctx)
for _, v := range val {
kind := reflect.TypeOf(v).Kind()
if kind == reflect.Int64 && v.(int64) > 0 {
return cu.FindById(v.(int64))
}
if kind == reflect.String && v.(string) != "" {
return cu.FindByHashId(v.(string))
}
}
return nil, nil
}
// FissionUser 参与用户id类型字段找一条数据
//
// params: val id, link_hash_id
func FissionUser(ctx context.Context, campaignId int64, val ...any) (*model.FissionUser, error) {
cu := cache.NewFissionUser(ctx, campaignId)
for _, v := range val {
kind := reflect.TypeOf(v).Kind()
if kind == reflect.Int64 && v.(int64) > 0 {
return cu.FindById(v.(int64))
}
if kind == reflect.String && v.(string) != "" {
return cu.FindByHashId(v.(string))
}
}
return nil, nil
}
// FissionTemp 参与用户id类型字段找一条数据
//
// params: val id, link_hash_id
func FissionTemp(ctx context.Context, val ...any) (*model.FissionTemp, error) {
cu := cache.NewFissionTemp(ctx)
for _, v := range val {
kind := reflect.TypeOf(v).Kind()
if kind == reflect.Int64 && v.(int64) > 0 {
return cu.FindById(v.(int64))
}
if kind == reflect.String && v.(string) != "" {
return cu.FindByHashId(v.(string))
}
}
return nil, nil
}