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
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
|
|
}
|