作者 yangfu

用户新增 、数据权限全局接口

@@ -2,6 +2,7 @@ package factory @@ -2,6 +2,7 @@ package factory
2 2
3 import ( 3 import (
4 pgTransaction "github.com/linmadan/egglib-go/transaction/pg" 4 pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain"
5 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain/service" 6 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain/service"
6 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/infrastructure/domainService" 7 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/infrastructure/domainService"
7 ) 8 )
@@ -29,3 +30,19 @@ func CreatePgAuthAccountDestroyService(options map[string]interface{}) (service. @@ -29,3 +30,19 @@ func CreatePgAuthAccountDestroyService(options map[string]interface{}) (service.
29 } 30 }
30 return domainService.NewPgAuthAccountDestroyService(transactionContext) 31 return domainService.NewPgAuthAccountDestroyService(transactionContext)
31 } 32 }
  33 +
  34 +func CreatePgCreateUserService(options map[string]interface{}) (service.PgCreateUserService, error) {
  35 + var transactionContext *pgTransaction.TransactionContext
  36 + if value, ok := options["transactionContext"]; ok {
  37 + transactionContext = value.(*pgTransaction.TransactionContext)
  38 + }
  39 + return domainService.NewPgCreateUserService(transactionContext)
  40 +}
  41 +
  42 +func CreatePgDataAuthService(options map[string]interface{}) (domain.DataAuthor, error) {
  43 + var transactionContext *pgTransaction.TransactionContext
  44 + if value, ok := options["transactionContext"]; ok {
  45 + transactionContext = value.(*pgTransaction.TransactionContext)
  46 + }
  47 + return domainService.NewPgDataAuthService(transactionContext)
  48 +}
@@ -10,24 +10,28 @@ import ( @@ -10,24 +10,28 @@ import (
10 ) 10 )
11 11
12 type CreateCooperatorCommand struct { 12 type CreateCooperatorCommand struct {
  13 + // 企业ID
  14 + CompanyId int64 `cname:"企业ID" json:"companyId" valid:"Required"`
13 // 共创公司 15 // 共创公司
14 - CooperationCompany string `cname:"共创公司" json:"cooperationCompany" valid:"Required"` 16 + CooperationCompany string `cname:"共创公司" json:"cooperationCompany"`
15 // 共创到期时间 17 // 共创到期时间
16 - CooperationDeadline time.Time `cname:"共创到期时间" json:"cooperationDeadline" valid:"Required"` 18 + CooperationDeadline time.Time `cname:"共创到期时间" json:"cooperationDeadline"`
17 // 邮箱 19 // 邮箱
18 - Email string `cname:"邮箱" json:"email" valid:"Required"` 20 + Email string `cname:"邮箱" json:"email"`
19 // 启用状态(启用:1 禁用:2 注销:3) 21 // 启用状态(启用:1 禁用:2 注销:3)
20 EnableStatus int `cname:"启用状态(启用:1 禁用:2 注销:3)" json:"enableStatus" valid:"Required"` 22 EnableStatus int `cname:"启用状态(启用:1 禁用:2 注销:3)" json:"enableStatus" valid:"Required"`
21 // 用户编号 企业内标识 23 // 用户编号 企业内标识
22 UserCode string `cname:"用户编号 企业内标识" json:"userCode" valid:"Required"` 24 UserCode string `cname:"用户编号 企业内标识" json:"userCode" valid:"Required"`
23 - // 用户Id 用户唯一标识  
24 - UserId int64 `cname:"用户Id 用户唯一标识" json:"userId,string" valid:"Required"`  
25 // 用户姓名 25 // 用户姓名
26 UserName string `cname:"用户姓名" json:"userName" valid:"Required"` 26 UserName string `cname:"用户姓名" json:"userName" valid:"Required"`
27 // 头像 27 // 头像
28 - Avatar string `cname:"头像" json:"avatar" valid:"Required"` 28 + Avatar string `cname:"头像" json:"avatar"`
29 // 组织ID 29 // 组织ID
30 - OrgId int64 `cname:"组织ID" json:"orgId,string" valid:"Required"` 30 + OrgId int64 `cname:"组织ID" json:"orgId" valid:"Required"`
  31 + // 手机号码
  32 + Phone string `cname:"手机号码" json:"phone" valid:"Required"`
  33 + // 密码
  34 + Password string `cname:"密码" json:"password" valid:"Required"`
31 } 35 }
32 36
33 func (createCooperatorCommand *CreateCooperatorCommand) Valid(validation *validation.Validation) { 37 func (createCooperatorCommand *CreateCooperatorCommand) Valid(validation *validation.Validation) {
@@ -2,25 +2,24 @@ package command @@ -2,25 +2,24 @@ package command
2 2
3 import ( 3 import (
4 "fmt" 4 "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
5 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain" 6 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain"
6 "reflect" 7 "reflect"
7 "strings" 8 "strings"
8 "time" 9 "time"
9 -  
10 - "github.com/beego/beego/v2/core/validation"  
11 ) 10 )
12 11
13 type CreateUserCommand struct { 12 type CreateUserCommand struct {
14 // 企业id 13 // 企业id
15 - CompanyId int64 `cname:"企业id" json:"companyId,string" valid:"Required"` 14 + CompanyId int64 `cname:"企业id" json:"companyId" valid:"Required"`
16 // 用户类型 1:企业内部用户(内部添加) 2:共创用户 1024:企业注册用户(注册添加) 15 // 用户类型 1:企业内部用户(内部添加) 2:共创用户 1024:企业注册用户(注册添加)
17 UserType int `cname:"用户类型 1:企业内部用户(内部添加) 2:共创用户 1024:企业注册用户(注册添加)" json:"userType" valid:"Required"` 16 UserType int `cname:"用户类型 1:企业内部用户(内部添加) 2:共创用户 1024:企业注册用户(注册添加)" json:"userType" valid:"Required"`
18 // 用户编号 企业内标识 17 // 用户编号 企业内标识
19 UserCode string `cname:"用户编号 企业内标识" json:"userCode" valid:"Required"` 18 UserCode string `cname:"用户编号 企业内标识" json:"userCode" valid:"Required"`
20 // 组织机构 19 // 组织机构
21 - OrganizationId int64 `cname:"组织机构" json:"organizationId,string,omitempty"` 20 + OrganizationId int64 `cname:"组织机构" json:"organizationId,omitempty" valid:"Required"`
22 // 所属部门 21 // 所属部门
23 - DepartmentId int64 `cname:"所属部门" json:"departmentId,string,omitempty"` 22 + DepartmentId int64 `cname:"所属部门" json:"departmentId,omitempty" valid:"Required"`
24 // 用户关联的组织 23 // 用户关联的组织
25 UserOrg []*domain.Org `cname:"用户关联的组织" json:"userOrg,omitempty"` 24 UserOrg []*domain.Org `cname:"用户关联的组织" json:"userOrg,omitempty"`
26 // 用户关联的角色 25 // 用户关联的角色
@@ -30,7 +29,7 @@ type CreateUserCommand struct { @@ -30,7 +29,7 @@ type CreateUserCommand struct {
30 // 共创到期时间 (yyyy-MM-dd) 29 // 共创到期时间 (yyyy-MM-dd)
31 CooperationDeadline time.Time `cname:"共创到期时间 (yyyy-MM-dd)" json:"cooperationDeadline,omitempty"` 30 CooperationDeadline time.Time `cname:"共创到期时间 (yyyy-MM-dd)" json:"cooperationDeadline,omitempty"`
32 // 启用状态(启用:1 禁用:2) 31 // 启用状态(启用:1 禁用:2)
33 - EnableStatus int `cname:"启用状态(启用:1 禁用:2)" json:"enableStatus,omitempty"` 32 + EnableStatus int `cname:"启用状态(启用:1 禁用:2)" json:"enableStatus,omitempty" valid:"Required"`
34 // 密码 33 // 密码
35 Password string `cname:"密码" json:"password" valid:"Required"` 34 Password string `cname:"密码" json:"password" valid:"Required"`
36 // 用户姓名 35 // 用户姓名
@@ -38,9 +37,9 @@ type CreateUserCommand struct { @@ -38,9 +37,9 @@ type CreateUserCommand struct {
38 // 手机号码 37 // 手机号码
39 Phone string `cname:"手机号码" json:"phone" valid:"Required"` 38 Phone string `cname:"手机号码" json:"phone" valid:"Required"`
40 // 头像 39 // 头像
41 - Avatar string `cname:"头像" json:"avatar" valid:"Required"` 40 + Avatar string `cname:"头像" json:"avatar"`
42 // 邮箱 41 // 邮箱
43 - Email string `cname:"邮箱" json:"email" valid:"Required"` 42 + Email string `cname:"邮箱" json:"email"`
44 } 43 }
45 44
46 func (createUserCommand *CreateUserCommand) Valid(validation *validation.Validation) { 45 func (createUserCommand *CreateUserCommand) Valid(validation *validation.Validation) {
@@ -14,7 +14,7 @@ type RemoveUserCommand struct { @@ -14,7 +14,7 @@ type RemoveUserCommand struct {
14 } 14 }
15 15
16 func (removeUserCommand *RemoveUserCommand) Valid(validation *validation.Validation) { 16 func (removeUserCommand *RemoveUserCommand) Valid(validation *validation.Validation) {
17 - //validation.SetError("CustomValid", "未实现的自定义认证") 17 + validation.SetError("CustomValid", "未实现的自定义认证")
18 } 18 }
19 19
20 func (removeUserCommand *RemoveUserCommand) ValidateCommand() error { 20 func (removeUserCommand *RemoveUserCommand) ValidateCommand() error {
@@ -8,6 +8,7 @@ import ( @@ -8,6 +8,7 @@ import (
8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/application/user/command" 8 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/application/user/command"
9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/application/user/query" 9 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/application/user/query"
10 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain" 10 "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain"
  11 + "time"
11 ) 12 )
12 13
13 // 用户 14 // 用户
@@ -92,10 +93,43 @@ func (userService *UserService) CreateCooperator(createCooperatorCommand *comman @@ -92,10 +93,43 @@ func (userService *UserService) CreateCooperator(createCooperatorCommand *comman
92 defer func() { 93 defer func() {
93 transactionContext.RollbackTransaction() 94 transactionContext.RollbackTransaction()
94 }() 95 }()
  96 + nweUserInfo := &domain.UserInfo{
  97 + UserName: createCooperatorCommand.UserName,
  98 + Phone: createCooperatorCommand.Phone,
  99 + Avatar: createCooperatorCommand.Avatar,
  100 + Email: createCooperatorCommand.Email,
  101 + }
  102 + var sampleUserOrg = make([]*domain.Org, 0)
  103 + var sampleUserRole = make([]*domain.Role, 0)
  104 + newUser := &domain.User{
  105 + CompanyId: createCooperatorCommand.CompanyId,
  106 + UserType: domain.UserTypeCooperation,
  107 + UserCode: createCooperatorCommand.UserCode,
  108 + OrganizationId: createCooperatorCommand.OrgId,
  109 + UserOrg: sampleUserOrg,
  110 + UserRole: sampleUserRole,
  111 + FavoriteMenus: []string{},
  112 + CooperationInfo: &domain.CooperationInfo{},
  113 + UserInfo: nweUserInfo,
  114 + //EnableStatus: createUserCommand.EnableStatus,
  115 + Ext: &domain.Ext{
  116 + Phone: createCooperatorCommand.Phone,
  117 + },
  118 + CreatedAt: time.Now(),
  119 + UpdatedAt: time.Now(),
  120 + }
  121 + var user *domain.User
  122 + createUserService, _ := factory.CreatePgCreateUserService(map[string]interface{}{
  123 + "transactionContext": transactionContext,
  124 + })
  125 + if user, err = createUserService.CreateUser(nil, newUser, createCooperatorCommand.Password); err != nil {
  126 + return nil, err
  127 + }
  128 +
95 if err := transactionContext.CommitTransaction(); err != nil { 129 if err := transactionContext.CommitTransaction(); err != nil {
96 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 130 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
97 } 131 }
98 - return nil, nil 132 + return user, nil
99 } 133 }
100 134
101 // 创建 135 // 创建
@@ -113,38 +147,49 @@ func (userService *UserService) CreateUser(createUserCommand *command.CreateUser @@ -113,38 +147,49 @@ func (userService *UserService) CreateUser(createUserCommand *command.CreateUser
113 defer func() { 147 defer func() {
114 transactionContext.RollbackTransaction() 148 transactionContext.RollbackTransaction()
115 }() 149 }()
116 - newUser := &domain.User{  
117 - CompanyId: createUserCommand.CompanyId,  
118 - UserType: createUserCommand.UserType,  
119 - UserCode: createUserCommand.UserCode,  
120 - OrganizationId: createUserCommand.OrganizationId,  
121 - DepartmentId: createUserCommand.DepartmentId,  
122 - UserOrg: createUserCommand.UserOrg,  
123 - UserRole: createUserCommand.UserRole,  
124 - //CooperationInfo: createUserCommand.CooperationInfo,  
125 - EnableStatus: createUserCommand.EnableStatus,  
126 - //Password: createUserCommand.Password,  
127 - //UserName: createUserCommand.UserName,  
128 - //Phone: createUserCommand.Phone,  
129 - //Avatar: createUserCommand.Avatar,  
130 - //Email: createUserCommand.Email, 150 + nweUserInfo := &domain.UserInfo{
  151 + UserName: createUserCommand.UserName,
  152 + Phone: createUserCommand.Phone,
  153 + Avatar: createUserCommand.Avatar,
  154 + Email: createUserCommand.Email,
131 } 155 }
132 - var userRepository domain.UserRepository  
133 - if value, err := factory.CreateUserRepository(map[string]interface{}{ 156 + var sampleUserOrg = make([]*domain.Org, 0)
  157 + var sampleUserRole = make([]*domain.Role, 0)
  158 + for i := range createUserCommand.UserOrg {
  159 + sampleUserOrg = append(sampleUserOrg, createUserCommand.UserOrg[i].CloneSample())
  160 + }
  161 + for i := range createUserCommand.UserRole {
  162 + sampleUserRole = append(sampleUserRole, createUserCommand.UserRole[i].CloneSample())
  163 + }
  164 + newUser := &domain.User{
  165 + CompanyId: createUserCommand.CompanyId,
  166 + UserType: createUserCommand.UserType,
  167 + UserCode: createUserCommand.UserCode,
  168 + OrganizationId: createUserCommand.OrganizationId,
  169 + DepartmentId: createUserCommand.DepartmentId,
  170 + UserOrg: sampleUserOrg,
  171 + UserRole: sampleUserRole,
  172 + FavoriteMenus: []string{},
  173 + CooperationInfo: &domain.CooperationInfo{},
  174 + UserInfo: nweUserInfo,
  175 + EnableStatus: createUserCommand.EnableStatus,
  176 + Ext: &domain.Ext{
  177 + Phone: createUserCommand.Phone,
  178 + },
  179 + CreatedAt: time.Now(),
  180 + UpdatedAt: time.Now(),
  181 + }
  182 + var user *domain.User
  183 + createUserService, _ := factory.CreatePgCreateUserService(map[string]interface{}{
134 "transactionContext": transactionContext, 184 "transactionContext": transactionContext,
135 - }); err != nil {  
136 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
137 - } else {  
138 - userRepository = value 185 + })
  186 + if user, err = createUserService.CreateUser(nil, newUser, createUserCommand.Password); err != nil {
  187 + return nil, err
139 } 188 }
140 - if user, err := userRepository.Save(newUser); err != nil {  
141 - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
142 - } else {  
143 - if err := transactionContext.CommitTransaction(); err != nil {  
144 - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())  
145 - }  
146 - return user, nil 189 + if err := transactionContext.CommitTransaction(); err != nil {
  190 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
147 } 191 }
  192 + return user, nil
148 } 193 }
149 194
150 // 移除我收藏的菜单 195 // 移除我收藏的菜单
@@ -304,7 +349,7 @@ func (userService *UserService) ListUser(listUserQuery *query.ListUserQuery) (in @@ -304,7 +349,7 @@ func (userService *UserService) ListUser(listUserQuery *query.ListUserQuery) (in
304 } 349 }
305 } 350 }
306 351
307 -// 移除 352 +// 移除 (暂不需要)
308 func (userService *UserService) RemoveUser(removeUserCommand *command.RemoveUserCommand) (interface{}, error) { 353 func (userService *UserService) RemoveUser(removeUserCommand *command.RemoveUserCommand) (interface{}, error) {
309 if err := removeUserCommand.ValidateCommand(); err != nil { 354 if err := removeUserCommand.ValidateCommand(); err != nil {
310 return nil, application.ThrowError(application.ARG_ERROR, err.Error()) 355 return nil, application.ThrowError(application.ARG_ERROR, err.Error())
@@ -5,3 +5,32 @@ import "fmt" @@ -5,3 +5,32 @@ import "fmt"
5 var ( 5 var (
6 ErrorNotFound = fmt.Errorf("没有此资源") 6 ErrorNotFound = fmt.Errorf("没有此资源")
7 ) 7 )
  8 +
  9 +/***** 1.数据权限 *****/
  10 +// DataAuthor 数据验证器
  11 +type DataAuthor interface {
  12 + DataAuth(options CheckOptions, data AuthedData) error
  13 +}
  14 +
  15 +// AuthedData 需要认证的数据
  16 +type AuthedData interface {
  17 + // 数据所属组织
  18 + BelongOrg() int64
  19 +}
  20 +
  21 +// 验证参数
  22 +type CheckOptions struct {
  23 + // 当前操作人
  24 + OptUser int64
  25 + // 当前登录的组织
  26 + Org int64
  27 + // 菜单模块
  28 + MenuCode string
  29 +}
  30 +
  31 +func NewCheckOptions(optUser, org int64) CheckOptions {
  32 + return CheckOptions{
  33 + OptUser: optUser,
  34 + Org: org,
  35 + }
  36 +}
1 package service 1 package service
2 2
  3 +import "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain"
  4 +
3 // PgCreateUserService 创建用户服务 5 // PgCreateUserService 创建用户服务
4 type PgCreateUserService interface { 6 type PgCreateUserService interface {
  7 + CreateUser(optUser *domain.User, newUser *domain.User, password string) (*domain.User, error)
5 } 8 }
@@ -15,13 +15,18 @@ type PgCreateUserAccountService struct { @@ -15,13 +15,18 @@ type PgCreateUserAccountService struct {
15 15
16 // CreateUserAccount 创建账号服务 16 // CreateUserAccount 创建账号服务
17 // 17 //
18 -// p1 p1_desc 18 +// registerAccount 注册账号
  19 +// password 密码
  20 +// userInfo 用户信息
19 func (ptr *PgCreateUserAccountService) CreateUserAccount(registerAccount string, password string, userInfo *domain.UserInfo) (*domain.UserBase, error) { 21 func (ptr *PgCreateUserAccountService) CreateUserAccount(registerAccount string, password string, userInfo *domain.UserInfo) (*domain.UserBase, error) {
20 22
21 userBaseRepository, err := repository.NewUserBaseRepository(ptr.transactionContext) 23 userBaseRepository, err := repository.NewUserBaseRepository(ptr.transactionContext)
22 if err != nil { 24 if err != nil {
23 return nil, err 25 return nil, err
24 } 26 }
  27 + if len(password) == 0 {
  28 + return nil, fmt.Errorf("密码不能为空")
  29 + }
25 userBase := &domain.UserBase{ 30 userBase := &domain.UserBase{
26 UserInfo: userInfo, 31 UserInfo: userInfo,
27 Account: registerAccount, 32 Account: registerAccount,
@@ -32,6 +32,27 @@ func (ptr *PgCreateUserService) CreateUser(optUser *domain.User, newUser *domain @@ -32,6 +32,27 @@ func (ptr *PgCreateUserService) CreateUser(optUser *domain.User, newUser *domain
32 if err != nil { 32 if err != nil {
33 return nil, err 33 return nil, err
34 } 34 }
  35 + orgRepository, err := repository.NewOrgRepository(ptr.transactionContext)
  36 + if err != nil {
  37 + return nil, err
  38 + }
  39 + // 0.冗余组织部门值
  40 + if newUser.Ext != nil {
  41 + if len(newUser.Ext.OrgName) == 0 && newUser.OrganizationId > 0 {
  42 + if org, err := orgRepository.FindOne(map[string]interface{}{"orgId": newUser.OrganizationId}); err != nil {
  43 + return nil, err
  44 + } else {
  45 + newUser.Ext.OrgName = org.OrgName
  46 + }
  47 + }
  48 + if len(newUser.Ext.DepName) == 0 && newUser.DepartmentId > 0 {
  49 + if org, err := orgRepository.FindOne(map[string]interface{}{"orgId": newUser.DepartmentId}); err != nil {
  50 + return nil, err
  51 + } else {
  52 + newUser.Ext.DepName = org.OrgName
  53 + }
  54 + }
  55 + }
35 56
36 // 普通账号需要验证 57 // 普通账号需要验证
37 // 1.用户编号唯一验证 用户编号在该企业内已存在,请重新输入 58 // 1.用户编号唯一验证 用户编号在该企业内已存在,请重新输入
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/domain"
  6 +
  7 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  8 +)
  9 +
  10 +// PgDataAuthService 数据权限验证服务
  11 +type PgDataAuthService struct {
  12 + transactionContext *pgTransaction.TransactionContext
  13 +}
  14 +
  15 +// DataAuth 数据权限验证
  16 +//
  17 +// options 数据参数
  18 +// data 需要验证权限的数据
  19 +func (ptr *PgDataAuthService) DataAuth(options domain.CheckOptions, data domain.AuthedData) error {
  20 + return nil
  21 +}
  22 +
  23 +func NewPgDataAuthService(transactionContext *pgTransaction.TransactionContext) (*PgDataAuthService, error) {
  24 + if transactionContext == nil {
  25 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  26 + } else {
  27 + return &PgDataAuthService{
  28 + transactionContext: transactionContext,
  29 + }, nil
  30 + }
  31 +}
@@ -4,6 +4,7 @@ import ( @@ -4,6 +4,7 @@ import (
4 "github.com/beego/beego/v2/server/web/context" 4 "github.com/beego/beego/v2/server/web/context"
5 "github.com/linmadan/egglib-go/web/beego" 5 "github.com/linmadan/egglib-go/web/beego"
6 "github.com/linmadan/egglib-go/web/beego/utils" 6 "github.com/linmadan/egglib-go/web/beego/utils"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-user/pkg/log"
7 ) 8 )
8 9
9 func ResponseGrid(c beego.BaseController, data interface{}, err error) { 10 func ResponseGrid(c beego.BaseController, data interface{}, err error) {
@@ -25,3 +26,9 @@ func ResponseGridData(ctx *context.Context, data interface{}) utils.JsonResponse @@ -25,3 +26,9 @@ func ResponseGridData(ctx *context.Context, data interface{}) utils.JsonResponse
25 ctx.Input.SetData("outputData", jsonResponse) 26 ctx.Input.SetData("outputData", jsonResponse)
26 return jsonResponse 27 return jsonResponse
27 } 28 }
  29 +
  30 +func Must(err error) {
  31 + if err != nil {
  32 + log.Logger.Error(err.Error())
  33 + }
  34 +}
@@ -14,7 +14,7 @@ type UserController struct { @@ -14,7 +14,7 @@ type UserController struct {
14 func (controller *UserController) CreateUser() { 14 func (controller *UserController) CreateUser() {
15 userService := service.NewUserService(nil) 15 userService := service.NewUserService(nil)
16 createUserCommand := &command.CreateUserCommand{} 16 createUserCommand := &command.CreateUserCommand{}
17 - controller.Unmarshal(createUserCommand) 17 + Must(controller.Unmarshal(createUserCommand))
18 data, err := userService.CreateUser(createUserCommand) 18 data, err := userService.CreateUser(createUserCommand)
19 controller.Response(data, err) 19 controller.Response(data, err)
20 } 20 }
@@ -22,7 +22,7 @@ func (controller *UserController) CreateUser() { @@ -22,7 +22,7 @@ func (controller *UserController) CreateUser() {
22 func (controller *UserController) UpdateUser() { 22 func (controller *UserController) UpdateUser() {
23 userService := service.NewUserService(nil) 23 userService := service.NewUserService(nil)
24 updateUserCommand := &command.UpdateUserCommand{} 24 updateUserCommand := &command.UpdateUserCommand{}
25 - controller.Unmarshal(updateUserCommand) 25 + Must(controller.Unmarshal(updateUserCommand))
26 userId, _ := controller.GetInt64(":userId") 26 userId, _ := controller.GetInt64(":userId")
27 updateUserCommand.UserId = userId 27 updateUserCommand.UserId = userId
28 data, err := userService.UpdateUser(updateUserCommand) 28 data, err := userService.UpdateUser(updateUserCommand)
@@ -78,7 +78,7 @@ func (controller *UserController) GetUserProfile() { @@ -78,7 +78,7 @@ func (controller *UserController) GetUserProfile() {
78 func (controller *UserController) BatchAdd() { 78 func (controller *UserController) BatchAdd() {
79 userService := service.NewUserService(nil) 79 userService := service.NewUserService(nil)
80 batchAddCommand := &command.BatchAddCommand{} 80 batchAddCommand := &command.BatchAddCommand{}
81 - controller.Unmarshal(batchAddCommand) 81 + Must(controller.Unmarshal(batchAddCommand))
82 data, err := userService.BatchAdd(batchAddCommand) 82 data, err := userService.BatchAdd(batchAddCommand)
83 controller.Response(data, err) 83 controller.Response(data, err)
84 } 84 }
@@ -112,7 +112,7 @@ func (controller *UserController) UpdateUsersBase() { @@ -112,7 +112,7 @@ func (controller *UserController) UpdateUsersBase() {
112 func (controller *UserController) CreateCooperator() { 112 func (controller *UserController) CreateCooperator() {
113 userService := service.NewUserService(nil) 113 userService := service.NewUserService(nil)
114 createCooperatorCommand := &command.CreateCooperatorCommand{} 114 createCooperatorCommand := &command.CreateCooperatorCommand{}
115 - controller.Unmarshal(createCooperatorCommand) 115 + Must(controller.Unmarshal(createCooperatorCommand))
116 data, err := userService.CreateCooperator(createCooperatorCommand) 116 data, err := userService.CreateCooperator(createCooperatorCommand)
117 controller.Response(data, err) 117 controller.Response(data, err)
118 } 118 }
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("批量添加", func() { 13 var _ = Describe("批量添加", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("批量修改启用状态", func() { 13 var _ = Describe("批量修改启用状态", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("批量重置密码", func() { 13 var _ = Describe("批量重置密码", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,12 +11,12 @@ import ( @@ -11,12 +11,12 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("创建共创用户", func() { 13 var _ = Describe("创建共创用户", func() {
14 - var userId int64 14 + var id int64
15 BeforeEach(func() { 15 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 16 _, err := pG.DB.QueryOne(
17 - pg.Scan(&userId),  
18 - "INSERT INTO users (user_id, company_id, user_base_id, user_type, user_code, organization_id, department_id, user_info, user_org, user_role, favorite_menus, cooperation_info, enable_status, ext, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",  
19 - "testUserId", "testCompanyId", "testUserBaseId", "testUserType", "testUserCode", "testOrganizationId", "testDepartmentId", "testUserInfo", "testUserOrg", "testUserRole", "testFavoriteMenus", "testCooperationInfo", "testEnableStatus", "testExt", "testCreatedAt", "testUpdatedAt") 17 + pg.Scan(&id),
  18 + "INSERT INTO users.org (org_id, company_id,org_code, org_name,is_org,org_status) VALUES (?, ?, ?, ?, ?, ?) RETURNING org_id",
  19 + 999, 999, "testOrgCode", "testOrgName", 1, 1)
20 Expect(err).NotTo(HaveOccurred()) 20 Expect(err).NotTo(HaveOccurred())
21 }) 21 })
22 Describe("创建共创用户", func() { 22 Describe("创建共创用户", func() {
@@ -25,14 +25,15 @@ var _ = Describe("创建共创用户", func() { @@ -25,14 +25,15 @@ var _ = Describe("创建共创用户", func() {
25 httpExpect := httpexpect.New(GinkgoT(), server.URL) 25 httpExpect := httpexpect.New(GinkgoT(), server.URL)
26 body := map[string]interface{}{ 26 body := map[string]interface{}{
27 "cooperationCompany": "string", 27 "cooperationCompany": "string",
28 - "cooperationDeadline": "datetime", 28 + "cooperationDeadline": "2021-07-25T15:11:56+08:00",
29 "email": "string", 29 "email": "string",
30 - "enableStatus": "int", 30 + "enableStatus": 1,
31 "userCode": "string", 31 "userCode": "string",
32 - "userId": "int64",  
33 "userName": "string", 32 "userName": "string",
34 "avatar": "string", 33 "avatar": "string",
35 - "orgId": "int64", 34 + "orgId": 999,
  35 + "phone": "string01",
  36 + "password": "string",
36 } 37 }
37 httpExpect.POST("/user/cooperator"). 38 httpExpect.POST("/user/cooperator").
38 WithJSON(body). 39 WithJSON(body).
@@ -47,7 +48,10 @@ var _ = Describe("创建共创用户", func() { @@ -47,7 +48,10 @@ var _ = Describe("创建共创用户", func() {
47 }) 48 })
48 }) 49 })
49 AfterEach(func() { 50 AfterEach(func() {
50 - _, err := pG.DB.Exec("DELETE FROM users WHERE true") 51 + var err error
  52 + _, err = pG.DB.Exec(`DELETE FROM users."user" WHERE true`)
  53 + Expect(err).NotTo(HaveOccurred())
  54 + _, err = pG.DB.Exec(`DELETE FROM users."org" WHERE true`)
51 Expect(err).NotTo(HaveOccurred()) 55 Expect(err).NotTo(HaveOccurred())
52 }) 56 })
53 }) 57 })
1 package user 1 package user
2 2
3 import ( 3 import (
  4 + "github.com/go-pg/pg/v10"
4 "net/http" 5 "net/http"
5 6
6 "github.com/gavv/httpexpect" 7 "github.com/gavv/httpexpect"
@@ -10,26 +11,34 @@ import ( @@ -10,26 +11,34 @@ import (
10 ) 11 )
11 12
12 var _ = Describe("创建", func() { 13 var _ = Describe("创建", func() {
  14 + var id int64
  15 + BeforeEach(func() {
  16 + _, err := pG.DB.QueryOne(
  17 + pg.Scan(&id),
  18 + "INSERT INTO users.org (org_id, company_id,org_code, org_name,is_org,org_status) VALUES (?, ?, ?, ?, ?, ?) RETURNING org_id",
  19 + 999, 999, "testOrgCode", "testOrgName", 1, 1)
  20 + Expect(err).NotTo(HaveOccurred())
  21 + })
13 Describe("提交数据创建", func() { 22 Describe("提交数据创建", func() {
14 Context("提交正确的新用户数据", func() { 23 Context("提交正确的新用户数据", func() {
15 It("返回用户数据", func() { 24 It("返回用户数据", func() {
16 httpExpect := httpexpect.New(GinkgoT(), server.URL) 25 httpExpect := httpexpect.New(GinkgoT(), server.URL)
17 body := map[string]interface{}{ 26 body := map[string]interface{}{
18 - "companyId": "int64",  
19 - "userType": "int",  
20 - "userCode": "string",  
21 - "organizationId": "int64",  
22 - "departmentId": "int64",  
23 - "userOrg": "array",  
24 - "userRole": "array",  
25 - "cooperationCompany": "string",  
26 - "cooperationDeadline": "datetime",  
27 - "enableStatus": "int",  
28 - "password": "string",  
29 - "userName": "string",  
30 - "phone": "string",  
31 - "avatar": "string",  
32 - "email": "string", 27 + "companyId": 999,
  28 + "userType": 1,
  29 + "userCode": "string",
  30 + "organizationId": 999,
  31 + "departmentId": 999,
  32 + //"userOrg": "array",
  33 + //"userRole": "array",
  34 + //"cooperationCompany": "string",
  35 + //"cooperationDeadline": "datetime",
  36 + "enableStatus": 1,
  37 + "password": "string",
  38 + "userName": "string",
  39 + "phone": "string",
  40 + "avatar": "string",
  41 + "email": "string",
33 } 42 }
34 httpExpect.POST("/user/"). 43 httpExpect.POST("/user/").
35 WithJSON(body). 44 WithJSON(body).
@@ -45,7 +54,10 @@ var _ = Describe("创建", func() { @@ -45,7 +54,10 @@ var _ = Describe("创建", func() {
45 }) 54 })
46 }) 55 })
47 AfterEach(func() { 56 AfterEach(func() {
48 - _, err := pG.DB.Exec("DELETE FROM users WHERE true") 57 + var err error
  58 + _, err = pG.DB.Exec(`DELETE FROM users."user" WHERE true`)
  59 + Expect(err).NotTo(HaveOccurred())
  60 + _, err = pG.DB.Exec(`DELETE FROM users."org" WHERE true`)
49 Expect(err).NotTo(HaveOccurred()) 61 Expect(err).NotTo(HaveOccurred())
50 }) 62 })
51 }) 63 })
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("返回用户有权限的菜单", func() { 13 var _ = Describe("返回用户有权限的菜单", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("获取用户概要数据", func() { 13 var _ = Describe("获取用户概要数据", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("返回", func() { 13 var _ = Describe("返回", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("返回列表", func() { 13 var _ = Describe("返回列表", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("移除", func() { 13 var _ = Describe("移除", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("更新共创用户", func() { 13 var _ = Describe("更新共创用户", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("更新", func() { 13 var _ = Describe("更新", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(
@@ -11,6 +11,7 @@ import ( @@ -11,6 +11,7 @@ import (
11 ) 11 )
12 12
13 var _ = Describe("更新用户基础信息数据", func() { 13 var _ = Describe("更新用户基础信息数据", func() {
  14 + return
14 var userId int64 15 var userId int64
15 BeforeEach(func() { 16 BeforeEach(func() {
16 _, err := pG.DB.QueryOne( 17 _, err := pG.DB.QueryOne(