正在显示
20 个修改的文件
包含
1037 行增加
和
0 行删除
@@ -13,6 +13,7 @@ require ( | @@ -13,6 +13,7 @@ require ( | ||
13 | github.com/google/go-querystring v1.1.0 // indirect | 13 | github.com/google/go-querystring v1.1.0 // indirect |
14 | github.com/gorilla/websocket v1.4.2 // indirect | 14 | github.com/gorilla/websocket v1.4.2 // indirect |
15 | github.com/imkira/go-interpol v1.1.0 // indirect | 15 | github.com/imkira/go-interpol v1.1.0 // indirect |
16 | + github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 // indirect | ||
16 | github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 | 17 | github.com/linmadan/egglib-go v0.0.0-20210313060205-8b5e456b11f7 |
17 | github.com/mattn/go-colorable v0.1.8 // indirect | 18 | github.com/mattn/go-colorable v0.1.8 // indirect |
18 | github.com/moul/http2curl v1.0.0 // indirect | 19 | github.com/moul/http2curl v1.0.0 // indirect |
@@ -132,6 +132,8 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ | @@ -132,6 +132,8 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ | ||
132 | github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= | 132 | github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= |
133 | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | 133 | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= |
134 | github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | 134 | github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= |
135 | +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 h1:uC1QfSlInpQF+M0ao65imhwqKnz3Q2z/d8PWZRMQvDM= | ||
136 | +github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= | ||
135 | github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= | 137 | github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= |
136 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= | 138 | github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= |
137 | github.com/klauspost/compress v1.11.8 h1:difgzQsp5mdAz9v8lm3P/I+EpDKMU/6uTMw1y1FObuo= | 139 | github.com/klauspost/compress v1.11.8 h1:difgzQsp5mdAz9v8lm3P/I+EpDKMU/6uTMw1y1FObuo= |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type ConvertUserStatusCommand struct { | ||
10 | + // 用户id | ||
11 | + UserId int64 `json:"userId,omitempty"` | ||
12 | + // 状态 1正常 2禁用 | ||
13 | + Status int64 `json:"status" valid:"Required"` | ||
14 | +} | ||
15 | + | ||
16 | +func (convertUserStatusCommand *ConvertUserStatusCommand) Valid(validation *validation.Validation) { | ||
17 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
18 | +} | ||
19 | + | ||
20 | +func (convertUserStatusCommand *ConvertUserStatusCommand) ValidateCommand() error { | ||
21 | + valid := validation.Validation{} | ||
22 | + b, err := valid.Valid(convertUserStatusCommand) | ||
23 | + if err != nil { | ||
24 | + return err | ||
25 | + } | ||
26 | + if !b { | ||
27 | + for _, validErr := range valid.Errors { | ||
28 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | + } | ||
30 | + } | ||
31 | + return nil | ||
32 | +} |
pkg/application/user/command/create_user.go
0 → 100644
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
6 | + "time" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type CreateUserCommand struct { | ||
12 | + // 1.高管 2.合伙人 4:游客 | ||
13 | + UserType int `json:"userType" valid:"Required"` | ||
14 | + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户 | ||
15 | + AdminType int `json:"adminType" valid:"Required"` | ||
16 | + // 状态 1正常 2禁用 | ||
17 | + Status int64 `json:"status" valid:"Required"` | ||
18 | + // 是否是公司负责人 | ||
19 | + IsPrincipal bool `json:"isPrincipal" valid:"Required"` | ||
20 | + // 统一用户id | ||
21 | + Uid int64 `json:"uid" valid:"Required"` | ||
22 | + // 用户账号 | ||
23 | + UserAccount string `json:"userAccount" valid:"Required"` | ||
24 | + // 用户头像URL | ||
25 | + UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"` | ||
26 | + // 用户名称 | ||
27 | + UserName string `json:"userName" valid:"Required"` | ||
28 | + // 邮件地址 | ||
29 | + Email string `json:"email" valid:"Required"` | ||
30 | + // 性别 | ||
31 | + Gender int `json:"gender" valid:"Required"` | ||
32 | + // 入职时间 | ||
33 | + EntryTime time.Time `json:"entryTime" valid:"Required"` | ||
34 | + // 分机 | ||
35 | + Extension string `json:"extension" valid:"Required"` | ||
36 | + // 工作地 | ||
37 | + Workplace string `json:"workplace" valid:"Required"` | ||
38 | + // 私人电话 | ||
39 | + PrivateNumber string `json:"privateNumber" valid:"Required"` | ||
40 | + // 工号 | ||
41 | + JobNumber string `json:"jobNumber" valid:"Required"` | ||
42 | + // 合伙人账号 | ||
43 | + PartnerAccount string `json:"partnerAccount" valid:"Required"` | ||
44 | + // 合伙人姓名 | ||
45 | + PartnerName string `json:"partnerName" valid:"Required"` | ||
46 | + // 区域名称 eg:华南地区 | ||
47 | + RegionName string `json:"regionName,omitempty"` | ||
48 | + // 合伙时间 | ||
49 | + CooperateTime time.Time `json:"cooperateTime" valid:"Required"` | ||
50 | + // 业务员 | ||
51 | + Salesmans []*domain.Salesman `json:"salesmans,omitempty"` | ||
52 | + // 用户信息 | ||
53 | + UserInfo *domain.UserInfo `json:"userInfo,omitempty"` | ||
54 | + //合伙人信息 | ||
55 | + PartnerInfo *domain.PartnerInfo `json:"partnerInfo"` | ||
56 | + //// 合伙人类型 | ||
57 | + PartnerCategorys []*domain.PartnerCategory `json:"partnerCategorys,omitempty"` | ||
58 | + // 可查看合伙人列表 | ||
59 | + AccessPartners []int64 `json:"accessPartners,omitempty"` | ||
60 | +} | ||
61 | + | ||
62 | +func (createUserCommand *CreateUserCommand) Valid(validation *validation.Validation) { | ||
63 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
64 | +} | ||
65 | + | ||
66 | +func (createUserCommand *CreateUserCommand) ValidateCommand() error { | ||
67 | + valid := validation.Validation{} | ||
68 | + b, err := valid.Valid(createUserCommand) | ||
69 | + if err != nil { | ||
70 | + return err | ||
71 | + } | ||
72 | + if !b { | ||
73 | + for _, validErr := range valid.Errors { | ||
74 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
75 | + } | ||
76 | + } | ||
77 | + return nil | ||
78 | +} |
pkg/application/user/command/remove_user.go
0 → 100644
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type RemoveUserCommand struct { | ||
10 | + // 用户id | ||
11 | + UserId int64 `json:"userId" valid:"Required"` | ||
12 | +} | ||
13 | + | ||
14 | +func (removeUserCommand *RemoveUserCommand) Valid(validation *validation.Validation) { | ||
15 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
16 | +} | ||
17 | + | ||
18 | +func (removeUserCommand *RemoveUserCommand) ValidateCommand() error { | ||
19 | + valid := validation.Validation{} | ||
20 | + b, err := valid.Valid(removeUserCommand) | ||
21 | + if err != nil { | ||
22 | + return err | ||
23 | + } | ||
24 | + if !b { | ||
25 | + for _, validErr := range valid.Errors { | ||
26 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
27 | + } | ||
28 | + } | ||
29 | + return nil | ||
30 | +} |
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type SetPermissionCommand struct { | ||
10 | + // 用户id | ||
11 | + UserId int64 `json:"userId" valid:"Required"` | ||
12 | + // 权限编码列表 | ||
13 | + Permissons []int `json:"permissons,omitempty"` | ||
14 | +} | ||
15 | + | ||
16 | +func (setPermissionCommand *SetPermissionCommand) Valid(validation *validation.Validation) { | ||
17 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
18 | +} | ||
19 | + | ||
20 | +func (setPermissionCommand *SetPermissionCommand) ValidateCommand() error { | ||
21 | + valid := validation.Validation{} | ||
22 | + b, err := valid.Valid(setPermissionCommand) | ||
23 | + if err != nil { | ||
24 | + return err | ||
25 | + } | ||
26 | + if !b { | ||
27 | + for _, validErr := range valid.Errors { | ||
28 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | + } | ||
30 | + } | ||
31 | + return nil | ||
32 | +} |
pkg/application/user/command/update_user.go
0 → 100644
1 | +package command | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
6 | + "time" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/core/validation" | ||
9 | +) | ||
10 | + | ||
11 | +type UpdateUserCommand struct { | ||
12 | + // 用户id | ||
13 | + UserId int64 `json:"userId" valid:"Required"` | ||
14 | + // 1.高管 2.合伙人 4:游客 | ||
15 | + UserType int `json:"userType,omitempty"` | ||
16 | + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户 | ||
17 | + AdminType int `json:"adminType,omitempty"` | ||
18 | + // 状态 1正常 2禁用 | ||
19 | + Status int64 `json:"status" valid:"Required"` | ||
20 | + // 是否是公司负责人 | ||
21 | + IsPrincipal bool `json:"isPrincipal" valid:"Required"` | ||
22 | + // 统一用户id | ||
23 | + Uid int64 `json:"uid" valid:"Required"` | ||
24 | + // 用户账号 | ||
25 | + UserAccount string `json:"userAccount" valid:"Required"` | ||
26 | + // 用户头像URL | ||
27 | + UserAvatarUrl string `json:"userAvatarUrl" valid:"Required"` | ||
28 | + // 用户名称 | ||
29 | + UserName string `json:"userName" valid:"Required"` | ||
30 | + // 邮件地址 | ||
31 | + Email string `json:"email" valid:"Required"` | ||
32 | + // 性别 | ||
33 | + Gender int `json:"gender" valid:"Required"` | ||
34 | + // 入职时间 | ||
35 | + EntryTime time.Time `json:"entryTime" valid:"Required"` | ||
36 | + // 分机 | ||
37 | + Extension string `json:"extension" valid:"Required"` | ||
38 | + // 工作地 | ||
39 | + Workplace string `json:"workplace" valid:"Required"` | ||
40 | + // 私人电话 | ||
41 | + PrivateNumber string `json:"privateNumber" valid:"Required"` | ||
42 | + // 工号 | ||
43 | + JobNumber string `json:"jobNumber" valid:"Required"` | ||
44 | + // 合伙人账号 | ||
45 | + PartnerAccount string `json:"partnerAccount" valid:"Required"` | ||
46 | + // 合伙人姓名 | ||
47 | + PartnerName string `json:"partnerName" valid:"Required"` | ||
48 | + // 区域名称 eg:华南地区 | ||
49 | + RegionName string `json:"regionName,omitempty"` | ||
50 | + // 合伙时间 | ||
51 | + CooperateTime time.Time `json:"cooperateTime" valid:"Required"` | ||
52 | + // 业务员 | ||
53 | + Salesmans []*domain.Salesman `json:"salesmans,omitempty"` | ||
54 | + // 合伙人类型 | ||
55 | + PartnerCategorys []*domain.PartnerCategory `json:"partnerCategorys,omitempty"` | ||
56 | + // 可查看合伙人列表 | ||
57 | + AccessPartners []int64 `json:"accessPartners,omitempty"` | ||
58 | +} | ||
59 | + | ||
60 | +func (updateUserCommand *UpdateUserCommand) Valid(validation *validation.Validation) { | ||
61 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
62 | +} | ||
63 | + | ||
64 | +func (updateUserCommand *UpdateUserCommand) ValidateCommand() error { | ||
65 | + valid := validation.Validation{} | ||
66 | + b, err := valid.Valid(updateUserCommand) | ||
67 | + if err != nil { | ||
68 | + return err | ||
69 | + } | ||
70 | + if !b { | ||
71 | + for _, validErr := range valid.Errors { | ||
72 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
73 | + } | ||
74 | + } | ||
75 | + return nil | ||
76 | +} |
pkg/application/user/query/get_user.go
0 → 100644
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type GetUserQuery struct { | ||
10 | + // 用户id | ||
11 | + UserId int64 `json:"userId" valid:"Required"` | ||
12 | +} | ||
13 | + | ||
14 | +func (getUserQuery *GetUserQuery) Valid(validation *validation.Validation) { | ||
15 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
16 | +} | ||
17 | + | ||
18 | +func (getUserQuery *GetUserQuery) ValidateQuery() error { | ||
19 | + valid := validation.Validation{} | ||
20 | + b, err := valid.Valid(getUserQuery) | ||
21 | + if err != nil { | ||
22 | + return err | ||
23 | + } | ||
24 | + if !b { | ||
25 | + for _, validErr := range valid.Errors { | ||
26 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
27 | + } | ||
28 | + } | ||
29 | + return nil | ||
30 | +} |
pkg/application/user/query/list_user.go
0 → 100644
1 | +package query | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/beego/beego/v2/core/validation" | ||
7 | +) | ||
8 | + | ||
9 | +type ListUserQuery struct { | ||
10 | + // 查询偏离量 | ||
11 | + Offset int `json:"offset" valid:"Required"` | ||
12 | + // 查询限制 | ||
13 | + Limit int `json:"limit" valid:"Required"` | ||
14 | +} | ||
15 | + | ||
16 | +func (listUserQuery *ListUserQuery) Valid(validation *validation.Validation) { | ||
17 | + validation.SetError("CustomValid", "未实现的自定义认证") | ||
18 | +} | ||
19 | + | ||
20 | +func (listUserQuery *ListUserQuery) ValidateQuery() error { | ||
21 | + valid := validation.Validation{} | ||
22 | + b, err := valid.Valid(listUserQuery) | ||
23 | + if err != nil { | ||
24 | + return err | ||
25 | + } | ||
26 | + if !b { | ||
27 | + for _, validErr := range valid.Errors { | ||
28 | + return fmt.Errorf("%s %s", validErr.Key, validErr.Message) | ||
29 | + } | ||
30 | + } | ||
31 | + return nil | ||
32 | +} |
pkg/application/user/service/user.go
0 → 100644
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + "github.com/linmadan/egglib-go/core/application" | ||
6 | + "github.com/linmadan/egglib-go/utils/tool_funs" | ||
7 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/factory" | ||
8 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/user/command" | ||
9 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/user/query" | ||
10 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain" | ||
11 | +) | ||
12 | + | ||
13 | +// 用户管理服务 | ||
14 | +type UserService struct { | ||
15 | +} | ||
16 | + | ||
17 | +// 用户状态转换(禁用、启用) | ||
18 | +func (userService *UserService) ConvertUserStatus(convertUserStatusCommand *command.ConvertUserStatusCommand) (interface{}, error) { | ||
19 | + if err := convertUserStatusCommand.ValidateCommand(); err != nil { | ||
20 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
21 | + } | ||
22 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
23 | + if err != nil { | ||
24 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
25 | + } | ||
26 | + if err := transactionContext.StartTransaction(); err != nil { | ||
27 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
28 | + } | ||
29 | + defer func() { | ||
30 | + transactionContext.RollbackTransaction() | ||
31 | + }() | ||
32 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
33 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
34 | + } | ||
35 | + return nil, nil | ||
36 | +} | ||
37 | + | ||
38 | +// 创建 | ||
39 | +func (userService *UserService) CreateUser(createUserCommand *command.CreateUserCommand) (interface{}, error) { | ||
40 | + if err := createUserCommand.ValidateCommand(); err != nil { | ||
41 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
42 | + } | ||
43 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
44 | + if err != nil { | ||
45 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
46 | + } | ||
47 | + if err := transactionContext.StartTransaction(); err != nil { | ||
48 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
49 | + } | ||
50 | + defer func() { | ||
51 | + transactionContext.RollbackTransaction() | ||
52 | + }() | ||
53 | + newUser := &domain.User{ | ||
54 | + UserType: createUserCommand.UserType, | ||
55 | + AdminType: createUserCommand.AdminType, | ||
56 | + Status: createUserCommand.Status, | ||
57 | + UserInfo: createUserCommand.UserInfo, | ||
58 | + PartnerInfo: createUserCommand.PartnerInfo, | ||
59 | + AccessPartners: createUserCommand.AccessPartners, | ||
60 | + } | ||
61 | + var userRepository domain.UserRepository | ||
62 | + if value, err := factory.CreateUserRepository(map[string]interface{}{ | ||
63 | + "transactionContext": transactionContext, | ||
64 | + }); err != nil { | ||
65 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
66 | + } else { | ||
67 | + userRepository = value | ||
68 | + } | ||
69 | + if user, err := userRepository.Save(newUser); err != nil { | ||
70 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
71 | + } else { | ||
72 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
73 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
74 | + } | ||
75 | + return user, nil | ||
76 | + } | ||
77 | +} | ||
78 | + | ||
79 | +// 返回 | ||
80 | +func (userService *UserService) GetUser(getUserQuery *query.GetUserQuery) (interface{}, error) { | ||
81 | + if err := getUserQuery.ValidateQuery(); err != nil { | ||
82 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
83 | + } | ||
84 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
85 | + if err != nil { | ||
86 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
87 | + } | ||
88 | + if err := transactionContext.StartTransaction(); err != nil { | ||
89 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
90 | + } | ||
91 | + defer func() { | ||
92 | + transactionContext.RollbackTransaction() | ||
93 | + }() | ||
94 | + var userRepository domain.UserRepository | ||
95 | + if value, err := factory.CreateUserRepository(map[string]interface{}{ | ||
96 | + "transactionContext": transactionContext, | ||
97 | + }); err != nil { | ||
98 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
99 | + } else { | ||
100 | + userRepository = value | ||
101 | + } | ||
102 | + user, err := userRepository.FindOne(map[string]interface{}{"userId": getUserQuery.UserId}) | ||
103 | + if err != nil { | ||
104 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
105 | + } | ||
106 | + if user == nil { | ||
107 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getUserQuery.UserId))) | ||
108 | + } else { | ||
109 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
110 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
111 | + } | ||
112 | + return user, nil | ||
113 | + } | ||
114 | +} | ||
115 | + | ||
116 | +// 返回列表 | ||
117 | +func (userService *UserService) ListUser(listUserQuery *query.ListUserQuery) (interface{}, error) { | ||
118 | + if err := listUserQuery.ValidateQuery(); err != nil { | ||
119 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
120 | + } | ||
121 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
122 | + if err != nil { | ||
123 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
124 | + } | ||
125 | + if err := transactionContext.StartTransaction(); err != nil { | ||
126 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
127 | + } | ||
128 | + defer func() { | ||
129 | + transactionContext.RollbackTransaction() | ||
130 | + }() | ||
131 | + var userRepository domain.UserRepository | ||
132 | + if value, err := factory.CreateUserRepository(map[string]interface{}{ | ||
133 | + "transactionContext": transactionContext, | ||
134 | + }); err != nil { | ||
135 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
136 | + } else { | ||
137 | + userRepository = value | ||
138 | + } | ||
139 | + if count, users, err := userRepository.Find(tool_funs.SimpleStructToMap(listUserQuery)); err != nil { | ||
140 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
141 | + } else { | ||
142 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
143 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
144 | + } | ||
145 | + return map[string]interface{}{ | ||
146 | + "count": count, | ||
147 | + "users": users, | ||
148 | + }, nil | ||
149 | + } | ||
150 | +} | ||
151 | + | ||
152 | +// 移除 | ||
153 | +func (userService *UserService) RemoveUser(removeUserCommand *command.RemoveUserCommand) (interface{}, error) { | ||
154 | + if err := removeUserCommand.ValidateCommand(); err != nil { | ||
155 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
156 | + } | ||
157 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
158 | + if err != nil { | ||
159 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
160 | + } | ||
161 | + if err := transactionContext.StartTransaction(); err != nil { | ||
162 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
163 | + } | ||
164 | + defer func() { | ||
165 | + transactionContext.RollbackTransaction() | ||
166 | + }() | ||
167 | + var userRepository domain.UserRepository | ||
168 | + if value, err := factory.CreateUserRepository(map[string]interface{}{ | ||
169 | + "transactionContext": transactionContext, | ||
170 | + }); err != nil { | ||
171 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
172 | + } else { | ||
173 | + userRepository = value | ||
174 | + } | ||
175 | + user, err := userRepository.FindOne(map[string]interface{}{"userId": removeUserCommand.UserId}) | ||
176 | + if err != nil { | ||
177 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
178 | + } | ||
179 | + if user == nil { | ||
180 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeUserCommand.UserId))) | ||
181 | + } | ||
182 | + if user, err := userRepository.Remove(user); err != nil { | ||
183 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
184 | + } else { | ||
185 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
186 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
187 | + } | ||
188 | + return user, nil | ||
189 | + } | ||
190 | +} | ||
191 | + | ||
192 | +// 设置权限 | ||
193 | +func (userService *UserService) SetPermission(setPermissionCommand *command.SetPermissionCommand) (interface{}, error) { | ||
194 | + if err := setPermissionCommand.ValidateCommand(); err != nil { | ||
195 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
196 | + } | ||
197 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
198 | + if err != nil { | ||
199 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
200 | + } | ||
201 | + if err := transactionContext.StartTransaction(); err != nil { | ||
202 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
203 | + } | ||
204 | + defer func() { | ||
205 | + transactionContext.RollbackTransaction() | ||
206 | + }() | ||
207 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
208 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
209 | + } | ||
210 | + return nil, nil | ||
211 | +} | ||
212 | + | ||
213 | +// 更新 | ||
214 | +func (userService *UserService) UpdateUser(updateUserCommand *command.UpdateUserCommand) (interface{}, error) { | ||
215 | + if err := updateUserCommand.ValidateCommand(); err != nil { | ||
216 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
217 | + } | ||
218 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
219 | + if err != nil { | ||
220 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
221 | + } | ||
222 | + if err := transactionContext.StartTransaction(); err != nil { | ||
223 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
224 | + } | ||
225 | + defer func() { | ||
226 | + transactionContext.RollbackTransaction() | ||
227 | + }() | ||
228 | + var userRepository domain.UserRepository | ||
229 | + if value, err := factory.CreateUserRepository(map[string]interface{}{ | ||
230 | + "transactionContext": transactionContext, | ||
231 | + }); err != nil { | ||
232 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
233 | + } else { | ||
234 | + userRepository = value | ||
235 | + } | ||
236 | + user, err := userRepository.FindOne(map[string]interface{}{"userId": updateUserCommand.UserId}) | ||
237 | + if err != nil { | ||
238 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
239 | + } | ||
240 | + if user == nil { | ||
241 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateUserCommand.UserId))) | ||
242 | + } | ||
243 | + if err := user.Update(tool_funs.SimpleStructToMap(updateUserCommand)); err != nil { | ||
244 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
245 | + } | ||
246 | + if user, err := userRepository.Save(user); err != nil { | ||
247 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
248 | + } else { | ||
249 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
250 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
251 | + } | ||
252 | + return user, nil | ||
253 | + } | ||
254 | +} | ||
255 | + | ||
256 | +func NewUserService(options map[string]interface{}) *UserService { | ||
257 | + newUserService := &UserService{} | ||
258 | + return newUserService | ||
259 | +} |
1 | +package controllers | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/linmadan/egglib-go/web/beego" | ||
5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/user/command" | ||
6 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/user/query" | ||
7 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/application/user/service" | ||
8 | +) | ||
9 | + | ||
10 | +type UserController struct { | ||
11 | + beego.BaseController | ||
12 | +} | ||
13 | + | ||
14 | +func (controller *UserController) CreateUser() { | ||
15 | + userService := service.NewUserService(nil) | ||
16 | + createUserCommand := &command.CreateUserCommand{} | ||
17 | + controller.Unmarshal(createUserCommand) | ||
18 | + data, err := userService.CreateUser(createUserCommand) | ||
19 | + controller.Response(data, err) | ||
20 | +} | ||
21 | + | ||
22 | +func (controller *UserController) UpdateUser() { | ||
23 | + userService := service.NewUserService(nil) | ||
24 | + updateUserCommand := &command.UpdateUserCommand{} | ||
25 | + controller.Unmarshal(updateUserCommand) | ||
26 | + userId, _ := controller.GetInt64(":userId") | ||
27 | + updateUserCommand.UserId = userId | ||
28 | + data, err := userService.UpdateUser(updateUserCommand) | ||
29 | + controller.Response(data, err) | ||
30 | +} | ||
31 | + | ||
32 | +func (controller *UserController) GetUser() { | ||
33 | + userService := service.NewUserService(nil) | ||
34 | + getUserQuery := &query.GetUserQuery{} | ||
35 | + userId, _ := controller.GetInt64(":userId") | ||
36 | + getUserQuery.UserId = userId | ||
37 | + data, err := userService.GetUser(getUserQuery) | ||
38 | + controller.Response(data, err) | ||
39 | +} | ||
40 | + | ||
41 | +func (controller *UserController) RemoveUser() { | ||
42 | + userService := service.NewUserService(nil) | ||
43 | + removeUserCommand := &command.RemoveUserCommand{} | ||
44 | + controller.Unmarshal(removeUserCommand) | ||
45 | + userId, _ := controller.GetInt64(":userId") | ||
46 | + removeUserCommand.UserId = userId | ||
47 | + data, err := userService.RemoveUser(removeUserCommand) | ||
48 | + controller.Response(data, err) | ||
49 | +} | ||
50 | + | ||
51 | +func (controller *UserController) ListUser() { | ||
52 | + userService := service.NewUserService(nil) | ||
53 | + listUserQuery := &query.ListUserQuery{} | ||
54 | + offset, _ := controller.GetInt("offset") | ||
55 | + listUserQuery.Offset = offset | ||
56 | + limit, _ := controller.GetInt("limit") | ||
57 | + listUserQuery.Limit = limit | ||
58 | + data, err := userService.ListUser(listUserQuery) | ||
59 | + controller.Response(data, err) | ||
60 | +} | ||
61 | + | ||
62 | +func (controller *UserController) ConvertUserStatus() { | ||
63 | + userService := service.NewUserService(nil) | ||
64 | + convertUserStatusCommand := &command.ConvertUserStatusCommand{} | ||
65 | + controller.Unmarshal(convertUserStatusCommand) | ||
66 | + data, err := userService.ConvertUserStatus(convertUserStatusCommand) | ||
67 | + controller.Response(data, err) | ||
68 | +} | ||
69 | + | ||
70 | +func (controller *UserController) SetPermission() { | ||
71 | + userService := service.NewUserService(nil) | ||
72 | + setPermissionCommand := &command.SetPermissionCommand{} | ||
73 | + controller.Unmarshal(setPermissionCommand) | ||
74 | + data, err := userService.SetPermission(setPermissionCommand) | ||
75 | + controller.Response(data, err) | ||
76 | +} |
pkg/port/beego/routers/user_router.go
0 → 100644
1 | +package routers | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/beego/beego/v2/server/web" | ||
5 | + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/port/beego/controllers" | ||
6 | +) | ||
7 | + | ||
8 | +func init() { | ||
9 | + web.Router("/users/", &controllers.UserController{}, "Post:CreateUser") | ||
10 | + web.Router("/users/:userId", &controllers.UserController{}, "Put:UpdateUser") | ||
11 | + web.Router("/users/:userId", &controllers.UserController{}, "Get:GetUser") | ||
12 | + web.Router("/users/:userId", &controllers.UserController{}, "Delete:RemoveUser") | ||
13 | + web.Router("/users/", &controllers.UserController{}, "Get:ListUser") | ||
14 | + web.Router("/users/convert-user-status", &controllers.UserController{}, "Post:ConvertUserStatus") | ||
15 | + web.Router("/users/set-permission", &controllers.UserController{}, "Post:SetPermission") | ||
16 | +} |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("用户状态转换(禁用、启用)", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("用户状态转换(禁用、启用)", func() { | ||
23 | + Context("", func() { | ||
24 | + It("", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + body := map[string]interface{}{ | ||
27 | + "userId": "int64", | ||
28 | + "status": "int64", | ||
29 | + } | ||
30 | + httpExpect.POST("/users/convertUserStatus"). | ||
31 | + WithJSON(body). | ||
32 | + Expect(). | ||
33 | + Status(http.StatusOK). | ||
34 | + JSON(). | ||
35 | + Object(). | ||
36 | + ContainsKey("code").ValueEqual("code", 0). | ||
37 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
38 | + ContainsKey("data").Value("data").Object() | ||
39 | + }) | ||
40 | + }) | ||
41 | + }) | ||
42 | + AfterEach(func() { | ||
43 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
44 | + //Expect(err).NotTo(HaveOccurred()) | ||
45 | + }) | ||
46 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "net/http" | ||
5 | + | ||
6 | + "github.com/gavv/httpexpect" | ||
7 | + . "github.com/onsi/ginkgo" | ||
8 | + . "github.com/onsi/gomega" | ||
9 | +) | ||
10 | + | ||
11 | +var _ = Describe("创建", func() { | ||
12 | + Describe("提交数据创建", func() { | ||
13 | + Context("提交正确的新用户实体数据", func() { | ||
14 | + It("返回用户实体数据", func() { | ||
15 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
16 | + body := map[string]interface{}{ | ||
17 | + "userType": "int", | ||
18 | + "adminType": "int", | ||
19 | + "status": "int64", | ||
20 | + "isPrincipal": "boolean", | ||
21 | + "uid": "int64", | ||
22 | + "userAccount": "string", | ||
23 | + "userAvatarUrl": "string", | ||
24 | + "userName": "string", | ||
25 | + "email": "string", | ||
26 | + "gender": "int", | ||
27 | + "entryTime": "datetime", | ||
28 | + "extension": "string", | ||
29 | + "workplace": "string", | ||
30 | + "privateNumber": "string", | ||
31 | + "jobNumber": "string", | ||
32 | + "partnerAccount": "string", | ||
33 | + "partnerName": "string", | ||
34 | + "regionName": "string", | ||
35 | + "cooperateTime": "datetime", | ||
36 | + "salesmans": "array", | ||
37 | + "partnerCategorys": "array", | ||
38 | + "accessPartners": "array", | ||
39 | + } | ||
40 | + httpExpect.POST("/users/"). | ||
41 | + WithJSON(body). | ||
42 | + Expect(). | ||
43 | + Status(http.StatusOK). | ||
44 | + JSON(). | ||
45 | + Object(). | ||
46 | + ContainsKey("code").ValueEqual("code", 0). | ||
47 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
48 | + ContainsKey("data").Value("data").Object(). | ||
49 | + ContainsKey("userId").ValueNotEqual("userId", BeZero()) | ||
50 | + }) | ||
51 | + }) | ||
52 | + }) | ||
53 | + AfterEach(func() { | ||
54 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
55 | + //Expect(err).NotTo(HaveOccurred()) | ||
56 | + }) | ||
57 | +}) |
test/integration/beego/user/get_user_test.go
0 → 100644
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("返回", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("根据userId参数返回用户实体", func() { | ||
23 | + Context("传入有效的userId", func() { | ||
24 | + It("返回用户实体数据", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + httpExpect.GET("/users/{userId}"). | ||
27 | + Expect(). | ||
28 | + Status(http.StatusOK). | ||
29 | + JSON(). | ||
30 | + Object(). | ||
31 | + ContainsKey("code").ValueEqual("code", 0). | ||
32 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
33 | + ContainsKey("data").Value("data").Object() | ||
34 | + }) | ||
35 | + }) | ||
36 | + }) | ||
37 | + AfterEach(func() { | ||
38 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
39 | + //Expect(err).NotTo(HaveOccurred()) | ||
40 | + }) | ||
41 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("返回列表", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("根据参数返回用户实体列表", func() { | ||
23 | + Context("传入有效的参数", func() { | ||
24 | + It("返回用户实体数据列表", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + httpExpect.GET("/users/"). | ||
27 | + WithQuery("offset", "int"). | ||
28 | + WithQuery("limit", "int"). | ||
29 | + Expect(). | ||
30 | + Status(http.StatusOK). | ||
31 | + JSON(). | ||
32 | + Object(). | ||
33 | + ContainsKey("code").ValueEqual("code", 0). | ||
34 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
35 | + ContainsKey("data").Value("data").Object(). | ||
36 | + ContainsKey("count").ValueEqual("count", 1). | ||
37 | + ContainsKey("users").Value("users").Array() | ||
38 | + }) | ||
39 | + }) | ||
40 | + }) | ||
41 | + AfterEach(func() { | ||
42 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
43 | + //Expect(err).NotTo(HaveOccurred()) | ||
44 | + }) | ||
45 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("移除", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("根据参数移除", func() { | ||
23 | + Context("传入有效的userId", func() { | ||
24 | + It("返回被移除用户实体的数据", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + httpExpect.DELETE("/users/{userId}"). | ||
27 | + Expect(). | ||
28 | + Status(http.StatusOK). | ||
29 | + JSON(). | ||
30 | + Object(). | ||
31 | + ContainsKey("code").ValueEqual("code", 0). | ||
32 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
33 | + ContainsKey("data").Value("data").Object() | ||
34 | + }) | ||
35 | + }) | ||
36 | + }) | ||
37 | + AfterEach(func() { | ||
38 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
39 | + //Expect(err).NotTo(HaveOccurred()) | ||
40 | + }) | ||
41 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("设置权限", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("设置权限", func() { | ||
23 | + Context("", func() { | ||
24 | + It("", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + body := map[string]interface{}{ | ||
27 | + "userId": "int64", | ||
28 | + "permissons": "array", | ||
29 | + } | ||
30 | + httpExpect.POST("/users/setPermission"). | ||
31 | + WithJSON(body). | ||
32 | + Expect(). | ||
33 | + Status(http.StatusOK). | ||
34 | + JSON(). | ||
35 | + Object(). | ||
36 | + ContainsKey("code").ValueEqual("code", 0). | ||
37 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
38 | + ContainsKey("data").Value("data").Object() | ||
39 | + }) | ||
40 | + }) | ||
41 | + }) | ||
42 | + AfterEach(func() { | ||
43 | + _, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
44 | + Expect(err).NotTo(HaveOccurred()) | ||
45 | + }) | ||
46 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "github.com/go-pg/pg/v10" | ||
5 | + "net/http" | ||
6 | + | ||
7 | + "github.com/gavv/httpexpect" | ||
8 | + . "github.com/onsi/ginkgo" | ||
9 | + . "github.com/onsi/gomega" | ||
10 | + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
11 | +) | ||
12 | + | ||
13 | +var _ = Describe("更新", func() { | ||
14 | + var userId int64 | ||
15 | + BeforeEach(func() { | ||
16 | + _, err := pG.DB.QueryOne( | ||
17 | + pg.Scan(&userId), | ||
18 | + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type, access_partners, create_at, update_at, delete_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id", | ||
19 | + "testUserId", "testUserType", "testPermissions", "testCompanyId", "testUserInfo", "testPartnerInfo", "testStatus", "testAdminType", "testAccessPartners", "testCreateAt", "testUpdateAt", "testDeleteAt") | ||
20 | + Expect(err).NotTo(HaveOccurred()) | ||
21 | + }) | ||
22 | + Describe("提交数据更新", func() { | ||
23 | + Context("提交正确的用户实体数据", func() { | ||
24 | + It("返回更新后的用户实体数据", func() { | ||
25 | + httpExpect := httpexpect.New(GinkgoT(), server.URL) | ||
26 | + body := map[string]interface{}{ | ||
27 | + "userType": "int", | ||
28 | + "adminType": "int", | ||
29 | + "status": "int64", | ||
30 | + "isPrincipal": "boolean", | ||
31 | + "uid": "int64", | ||
32 | + "userAccount": "string", | ||
33 | + "userAvatarUrl": "string", | ||
34 | + "userName": "string", | ||
35 | + "email": "string", | ||
36 | + "gender": "int", | ||
37 | + "entryTime": "datetime", | ||
38 | + "extension": "string", | ||
39 | + "workplace": "string", | ||
40 | + "privateNumber": "string", | ||
41 | + "jobNumber": "string", | ||
42 | + "partnerAccount": "string", | ||
43 | + "partnerName": "string", | ||
44 | + "regionName": "string", | ||
45 | + "cooperateTime": "datetime", | ||
46 | + "salesmans": "array", | ||
47 | + "partnerCategorys": "array", | ||
48 | + "accessPartners": "array", | ||
49 | + } | ||
50 | + httpExpect.PUT("/users/{userId}"). | ||
51 | + WithJSON(body). | ||
52 | + Expect(). | ||
53 | + Status(http.StatusOK). | ||
54 | + JSON(). | ||
55 | + Object(). | ||
56 | + ContainsKey("code").ValueEqual("code", 0). | ||
57 | + ContainsKey("msg").ValueEqual("msg", "ok"). | ||
58 | + ContainsKey("data").Value("data").Object(). | ||
59 | + ContainsKey("userId").ValueEqual("userId", userId) | ||
60 | + }) | ||
61 | + }) | ||
62 | + }) | ||
63 | + AfterEach(func() { | ||
64 | + //_, err := pG.DB.Exec("DELETE FROM users WHERE true") | ||
65 | + //Expect(err).NotTo(HaveOccurred()) | ||
66 | + }) | ||
67 | +}) |
1 | +package user | ||
2 | + | ||
3 | +import ( | ||
4 | + "net/http" | ||
5 | + "net/http/httptest" | ||
6 | + "testing" | ||
7 | + | ||
8 | + "github.com/beego/beego/v2/server/web" | ||
9 | + . "github.com/onsi/ginkgo" | ||
10 | + . "github.com/onsi/gomega" | ||
11 | + _ "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg" | ||
12 | + _ "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/port/beego" | ||
13 | +) | ||
14 | + | ||
15 | +func TestUser(t *testing.T) { | ||
16 | + RegisterFailHandler(Fail) | ||
17 | + RunSpecs(t, "Beego Port User Correlations Test Case Suite") | ||
18 | +} | ||
19 | + | ||
20 | +var handler http.Handler | ||
21 | +var server *httptest.Server | ||
22 | + | ||
23 | +var _ = BeforeSuite(func() { | ||
24 | + handler = web.BeeApp.Handlers | ||
25 | + server = httptest.NewServer(handler) | ||
26 | +}) | ||
27 | + | ||
28 | +var _ = AfterSuite(func() { | ||
29 | + server.Close() | ||
30 | +}) |
-
请 注册 或 登录 后发表评论