open.go
2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
package open
import (
"context"
"github.com/zeromicro/go-zero/core/stores/redis"
"gitlab.fjmaimaimai.com/allied-creation/su-micro/cmd/ep/system/internal/pkg/db/repository"
"gitlab.fjmaimaimai.com/allied-creation/su-micro/cmd/ep/system/internal/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/su-micro/pkg/cache"
"gitlab.fjmaimaimai.com/allied-creation/su-micro/pkg/transaction"
)
type SystemOpen interface {
User(ctx context.Context, conn transaction.Conn, id int64) (User, error)
UserByName(ctx context.Context, conn transaction.Conn, companyId int64, name string) ([]User, error)
Company(ctx context.Context, conn transaction.Conn, id int64) (Company, error)
}
type systemOpenService struct {
UserRepository domain.SysUserRepository
CompanyRepository domain.SysCompanyRepository
}
type (
User domain.SysUser
Company domain.SysCompany
)
func (s systemOpenService) User(ctx context.Context, conn transaction.Conn, id int64) (User, error) {
user, err := s.UserRepository.FindOne(ctx, conn, id)
if err != nil {
return User{}, err
}
return User(*user), err
}
func (s systemOpenService) UserByName(ctx context.Context, conn transaction.Conn, companyId int64, name string) ([]User, error) {
_, users, err := s.UserRepository.Find(ctx, conn, domain.NewQueryOptions().MustWithKV("companyId", companyId).WithKV("name", name))
result := make([]User, 0)
if err != nil {
return result, err
}
for _, item := range users {
result = append(result, User(*item))
}
return result, err
}
func (s systemOpenService) Company(ctx context.Context, conn transaction.Conn, id int64) (Company, error) {
company, err := s.CompanyRepository.FindOne(ctx, conn, id)
if err != nil {
return Company{}, err
}
return Company(*company), nil
}
func NewSystemOpen(Redis redis.RedisConf) SystemOpen {
mlCache := cache.NewMultiLevelCache([]string{Redis.Host}, Redis.Pass)
return systemOpenService{
UserRepository: repository.NewSysUserRepository(cache.NewCachedRepository(mlCache)),
CompanyRepository: repository.NewSysCompanyRepository(cache.NewCachedRepository(mlCache)),
}
}