/
biz_user.go
154 lines (136 loc) · 3.94 KB
/
biz_user.go
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package user
import (
"github.com/limes-cloud/kratosx"
ktypes "github.com/limes-cloud/kratosx/types"
v1 "github.com/limes-cloud/resource/api/v1"
"google.golang.org/protobuf/proto"
"github.com/limes-cloud/user-center/api/errors"
)
// GetBase 获取用户基础信息
func (u *UseCase) GetBase(ctx kratosx.Context, id uint32) (*User, error) {
user, err := u.repo.GetBase(ctx, id)
if err != nil {
return nil, errors.DatabaseFormat(err.Error())
}
return user, nil
}
// Get 获取用户信息
func (u *UseCase) Get(ctx kratosx.Context, id uint32) (*User, error) {
user, err := u.repo.Get(ctx, id)
if err != nil {
return nil, errors.DatabaseFormat(err.Error())
}
return user, nil
}
// GetByEmail 获取用户信息
func (u *UseCase) GetByEmail(ctx kratosx.Context, email string) (*User, error) {
user, err := u.repo.GetByEmail(ctx, email)
if err != nil {
return nil, errors.DatabaseFormat(err.Error())
}
return user, nil
}
// GetByPhone 获取用户信息
func (u *UseCase) GetByPhone(ctx kratosx.Context, phone string) (*User, error) {
user, err := u.repo.GetByPhone(ctx, phone)
if err != nil {
return nil, errors.DatabaseFormat(err.Error())
}
return user, nil
}
// GetByUsername 获取用户信息
func (u *UseCase) GetByUsername(ctx kratosx.Context, un string) (*User, error) {
user, err := u.repo.GetByUsername(ctx, un)
if err != nil {
return nil, errors.DatabaseFormat(err.Error())
}
return user, nil
}
// Page 分页获取用户
func (u *UseCase) Page(ctx kratosx.Context, req *PageUserRequest) ([]*User, uint32, error) {
list, total, err := u.repo.PageUser(ctx, req)
if err != nil {
return nil, 0, errors.DatabaseFormat(err.Error())
}
return list, total, err
}
// Add 添加用户信息
func (u *UseCase) Add(ctx kratosx.Context, user *User) (uint32, error) {
user.Status = proto.Bool(true)
if user.NickName == "" && user.RealName != nil {
user.NickName = *user.RealName
}
id, err := u.repo.Add(ctx, user)
if err != nil {
return 0, errors.DatabaseFormat(err.Error())
}
return id, nil
}
// Import 导入用户信息
func (u *UseCase) Import(ctx kratosx.Context, users []*User) error {
if err := u.repo.Import(ctx, users); err != nil {
return errors.DatabaseFormat(err.Error())
}
return nil
}
// Update 添加用户信息
func (u *UseCase) Update(ctx kratosx.Context, user *User) error {
if err := u.repo.Update(ctx, user); err != nil {
return errors.DatabaseFormat(err.Error())
}
return nil
}
// Delete 删除用户信息
func (u *UseCase) Delete(ctx kratosx.Context, id uint32) error {
if err := u.repo.Delete(ctx, id); err != nil {
return errors.DatabaseFormat(err.Error())
}
return nil
}
// Enable 启用用户
func (u *UseCase) Enable(ctx kratosx.Context, id uint32) error {
user := &User{
BaseModel: ktypes.BaseModel{ID: id},
Status: proto.Bool(true),
DisableDesc: proto.String(""),
}
if err := u.repo.Update(ctx, user); err != nil {
return errors.DatabaseFormat(err.Error())
}
return nil
}
// Disable 禁用用户
func (u *UseCase) Disable(ctx kratosx.Context, id uint32, desc string) error {
user := &User{
BaseModel: ktypes.BaseModel{ID: id},
Status: proto.Bool(false),
DisableDesc: proto.String(desc),
}
if err := u.repo.Update(ctx, user); err != nil {
return v1.DatabaseError()
}
return nil
}
// Offline 对当前登陆用户进行下线
func (u *UseCase) Offline(ctx kratosx.Context, id uint32) error {
tokens := u.repo.GetJwtTokens(ctx, id)
for _, token := range tokens {
ctx.JWT().AddBlacklist(token)
}
return nil
}
// AddApp 添加用户应用
func (u *UseCase) AddApp(ctx kratosx.Context, uid, aid uint32) (uint32, error) {
id, err := u.repo.AddUserApp(ctx, uid, aid)
if err != nil {
return 0, v1.DatabaseErrorFormat(err.Error())
}
return id, nil
}
// DeleteApp 删除用户应用
func (u *UseCase) DeleteApp(ctx kratosx.Context, uid, aid uint32) error {
if err := u.repo.DeleteUserApp(ctx, uid, aid); err != nil {
return v1.DatabaseErrorFormat(err.Error())
}
return nil
}