作者 yangfu

合并分支 'chenaq' 到 'dev'

Chenaq



查看合并请求 !14
@@ -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=
@@ -39,6 +39,7 @@ func CreateReturnGoodsService(options map[string]interface{}) (service.ReturnGoo @@ -39,6 +39,7 @@ func CreateReturnGoodsService(options map[string]interface{}) (service.ReturnGoo
39 } 39 }
40 40
41 func CreateUserCreateService(options map[string]interface{}) (service.UserCreateService, error) { 41 func CreateUserCreateService(options map[string]interface{}) (service.UserCreateService, error) {
  42 +
42 var transactionContext *pgTransaction.TransactionContext 43 var transactionContext *pgTransaction.TransactionContext
43 if value, ok := options["transactionContext"]; ok { 44 if value, ok := options["transactionContext"]; ok {
44 transactionContext = value.(*pgTransaction.TransactionContext) 45 transactionContext = value.(*pgTransaction.TransactionContext)
@@ -53,3 +54,11 @@ func CreatePhoneAuthService(options map[string]interface{}) (service.PhoneAuthSe @@ -53,3 +54,11 @@ func CreatePhoneAuthService(options map[string]interface{}) (service.PhoneAuthSe
53 } 54 }
54 return domainService.NewPhoneAuthenticationService(transactionContext) 55 return domainService.NewPhoneAuthenticationService(transactionContext)
55 } 56 }
  57 +
  58 +func CreateAddUserService(options map[string]interface{}) (service.AddUserService, error) {
  59 + var transactionContext *pgTransaction.TransactionContext
  60 + if value, ok := options["transactionContext"]; ok {
  61 + transactionContext = value.(*pgTransaction.TransactionContext)
  62 + }
  63 + return domainService.NewAddUserService(transactionContext)
  64 +}
  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 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain"
  7 +)
  8 +
  9 +type CreateUserCommand struct {
  10 + //按位与 1.高管 001 右第0位高管 ; 2.合伙人 010 右第1位合伙人 ;3.高管,合伙人 011;
  11 + // 1.高管 2.合伙人 3高管,合伙人 4:游客
  12 + UserType int `json:"userType" valid:"Required"`
  13 + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户
  14 + AdminType int `json:"adminType" valid:"Required"`
  15 + // 状态 1正常 2禁用
  16 + Status int64 `json:"status" valid:"Required"`
  17 + //用户账号(手机号)
  18 + UserAccount string `json:"userAccount" valid:"Required"`
  19 + // 业务员
  20 + Salesmans []*domain.Salesman `json:"salesmans,omitempty"`
  21 + // 用户信息
  22 + UserInfo *domain.UserInfo `json:"userInfo,omitempty"`
  23 + //合伙人信息
  24 + PartnerInfo *domain.PartnerInfo `json:"partnerInfo"`
  25 + //// 合伙人类型
  26 + PartnerCategorys []*domain.PartnerCategory `json:"partnerCategorys,omitempty"`
  27 + // 可查看合伙人列表
  28 + AccessPartners []int64 `json:"accessPartners,omitempty"`
  29 +}
  30 +
  31 +func (createUserCommand *CreateUserCommand) Valid(validation *validation.Validation) {
  32 + //validation.SetError("CustomValid", "未实现的自定义认证")
  33 +}
  34 +
  35 +func (createUserCommand *CreateUserCommand) ValidateCommand() error {
  36 + valid := validation.Validation{}
  37 + b, err := valid.Valid(createUserCommand)
  38 + if err != nil {
  39 + return err
  40 + }
  41 + if !b {
  42 + for _, validErr := range valid.Errors {
  43 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  44 + }
  45 + }
  46 + return nil
  47 +}
  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 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "github.com/beego/beego/v2/core/validation"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain"
  7 +)
  8 +
  9 +type UpdateUserCommand struct {
  10 + // 用户id
  11 + UserId int64 `json:"userId" valid:"Required"`
  12 + // 1.高管 2.合伙人 4:游客
  13 + UserType int `json:"userType,omitempty"`
  14 + // 管理员类型 1.超级管理员 10:企业管理员 100:普通用户
  15 + AdminType int `json:"adminType,omitempty"`
  16 + // 状态 1正常 2禁用
  17 + Status int64 `json:"status,omitempty"`
  18 + // 是否是公司负责人
  19 + UserInfo *domain.UserInfo `json:"userInfo,omitempty"`
  20 + // 业务员
  21 + Salesmans []*domain.Salesman `json:"salesmans,omitempty"`
  22 + // 合伙人类型
  23 + PartnerCategorys []*domain.PartnerCategory `json:"partnerCategorys,omitempty"`
  24 + // 可查看合伙人列表
  25 + AccessPartners []int64 `json:"accessPartners,omitempty"`
  26 +}
  27 +
  28 +func (updateUserCommand *UpdateUserCommand) Valid(validation *validation.Validation) {
  29 + //validation.SetError("CustomValid", "未实现的自定义认证")
  30 +}
  31 +
  32 +func (updateUserCommand *UpdateUserCommand) ValidateCommand() error {
  33 + valid := validation.Validation{}
  34 + b, err := valid.Valid(updateUserCommand)
  35 + if err != nil {
  36 + return err
  37 + }
  38 + if !b {
  39 + for _, validErr := range valid.Errors {
  40 + return fmt.Errorf("%s %s", validErr.Key, validErr.Message)
  41 + }
  42 + }
  43 + return nil
  44 +}
  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 +}
  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"`
  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 +}
  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 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain/service"
  12 +)
  13 +
  14 +// 用户管理服务
  15 +type UserService struct {
  16 +}
  17 +
  18 +// 用户状态转换(禁用、启用)
  19 +func (userService *UserService) ConvertUserStatus(convertUserStatusCommand *command.ConvertUserStatusCommand) (interface{}, error) {
  20 + if err := convertUserStatusCommand.ValidateCommand(); err != nil {
  21 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  22 + }
  23 + transactionContext, err := factory.CreateTransactionContext(nil)
  24 + if err != nil {
  25 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  26 + }
  27 + if err := transactionContext.StartTransaction(); err != nil {
  28 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  29 + }
  30 + defer func() {
  31 + transactionContext.RollbackTransaction()
  32 + }()
  33 +
  34 + var userRepository domain.UserRepository
  35 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  36 + "transactionContext": transactionContext,
  37 + }); err != nil {
  38 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  39 + } else {
  40 + userRepository = value
  41 + }
  42 + user, err := userRepository.FindOne(map[string]interface{}{"userId": convertUserStatusCommand.UserId})
  43 + if err != nil {
  44 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  45 + }
  46 + if user == nil {
  47 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(convertUserStatusCommand.UserId)))
  48 + }
  49 + if err := user.CovertUserStatus(convertUserStatusCommand.Status); err != nil {
  50 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  51 + }
  52 + if _, err := userRepository.Save(user); err != nil {
  53 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  54 + }
  55 +
  56 + if err := transactionContext.CommitTransaction(); err != nil {
  57 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  58 + }
  59 + return nil, nil
  60 +}
  61 +
  62 +// 创建
  63 +func (userService *UserService) CreateUser(createUserCommand *command.CreateUserCommand) (interface{}, error) {
  64 + if err := createUserCommand.ValidateCommand(); err != nil {
  65 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  66 + }
  67 + transactionContext, err := factory.CreateTransactionContext(nil)
  68 + if err != nil {
  69 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  70 + }
  71 + if err := transactionContext.StartTransaction(); err != nil {
  72 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  73 + }
  74 + defer func() {
  75 + transactionContext.RollbackTransaction()
  76 + }()
  77 + newUser := &domain.User{
  78 + UserType: createUserCommand.UserType,
  79 + AdminType: createUserCommand.AdminType,
  80 + UserAccount: createUserCommand.UserAccount,
  81 + Status: createUserCommand.Status,
  82 + UserInfo: createUserCommand.UserInfo,
  83 + PartnerInfo: createUserCommand.PartnerInfo,
  84 + AccessPartners: createUserCommand.AccessPartners,
  85 + }
  86 + var addUserService service.UserCreateService
  87 + if value, err := factory.CreateUserCreateService(map[string]interface{}{
  88 + "transactionContext": transactionContext,
  89 + }); err != nil {
  90 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  91 + } else {
  92 + addUserService = value
  93 + }
  94 +
  95 + if user, err := addUserService.CreateUser(0, newUser); err != nil {
  96 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  97 + } else {
  98 + if err := transactionContext.CommitTransaction(); err != nil {
  99 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  100 + }
  101 + return user, nil
  102 + }
  103 +}
  104 +
  105 +// 返回
  106 +func (userService *UserService) GetUser(getUserQuery *query.GetUserQuery) (interface{}, error) {
  107 + if err := getUserQuery.ValidateQuery(); err != nil {
  108 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  109 + }
  110 + transactionContext, err := factory.CreateTransactionContext(nil)
  111 + if err != nil {
  112 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  113 + }
  114 + if err := transactionContext.StartTransaction(); err != nil {
  115 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  116 + }
  117 + defer func() {
  118 + transactionContext.RollbackTransaction()
  119 + }()
  120 + var userRepository domain.UserRepository
  121 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  122 + "transactionContext": transactionContext,
  123 + }); err != nil {
  124 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  125 + } else {
  126 + userRepository = value
  127 + }
  128 + user, err := userRepository.FindOne(map[string]interface{}{"userId": getUserQuery.UserId})
  129 + if err != nil {
  130 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  131 + }
  132 + if user == nil {
  133 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(getUserQuery.UserId)))
  134 + } else {
  135 + if err := transactionContext.CommitTransaction(); err != nil {
  136 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  137 + }
  138 + return user, nil
  139 + }
  140 +}
  141 +
  142 +// 返回列表
  143 +func (userService *UserService) ListUser(listUserQuery *query.ListUserQuery) (interface{}, error) {
  144 + if err := listUserQuery.ValidateQuery(); err != nil {
  145 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  146 + }
  147 + transactionContext, err := factory.CreateTransactionContext(nil)
  148 + if err != nil {
  149 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  150 + }
  151 + if err := transactionContext.StartTransaction(); err != nil {
  152 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  153 + }
  154 + defer func() {
  155 + transactionContext.RollbackTransaction()
  156 + }()
  157 + var userRepository domain.UserRepository
  158 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  159 + "transactionContext": transactionContext,
  160 + }); err != nil {
  161 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  162 + } else {
  163 + userRepository = value
  164 + }
  165 + if count, users, err := userRepository.Find(tool_funs.SimpleStructToMap(listUserQuery)); err != nil {
  166 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  167 + } else {
  168 + if err := transactionContext.CommitTransaction(); err != nil {
  169 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  170 + }
  171 + return map[string]interface{}{
  172 + "count": count,
  173 + "users": users,
  174 + }, nil
  175 + }
  176 +}
  177 +
  178 +// 移除
  179 +func (userService *UserService) RemoveUser(removeUserCommand *command.RemoveUserCommand) (interface{}, error) {
  180 + if err := removeUserCommand.ValidateCommand(); err != nil {
  181 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  182 + }
  183 + transactionContext, err := factory.CreateTransactionContext(nil)
  184 + if err != nil {
  185 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  186 + }
  187 + if err := transactionContext.StartTransaction(); err != nil {
  188 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  189 + }
  190 + defer func() {
  191 + transactionContext.RollbackTransaction()
  192 + }()
  193 + var userRepository domain.UserRepository
  194 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  195 + "transactionContext": transactionContext,
  196 + }); err != nil {
  197 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  198 + } else {
  199 + userRepository = value
  200 + }
  201 + user, err := userRepository.FindOne(map[string]interface{}{"userId": removeUserCommand.UserId})
  202 + if err != nil {
  203 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  204 + }
  205 + if user == nil {
  206 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(removeUserCommand.UserId)))
  207 + }
  208 + if user, err := userRepository.Remove(user); err != nil {
  209 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  210 + } else {
  211 + if err := transactionContext.CommitTransaction(); err != nil {
  212 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  213 + }
  214 + return user, nil
  215 + }
  216 +}
  217 +
  218 +// 设置权限
  219 +func (userService *UserService) SetPermission(setPermissionCommand *command.SetPermissionCommand) (interface{}, error) {
  220 + if err := setPermissionCommand.ValidateCommand(); err != nil {
  221 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  222 + }
  223 + transactionContext, err := factory.CreateTransactionContext(nil)
  224 + if err != nil {
  225 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  226 + }
  227 + if err := transactionContext.StartTransaction(); err != nil {
  228 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  229 + }
  230 + defer func() {
  231 + transactionContext.RollbackTransaction()
  232 + }()
  233 +
  234 + var userRepository domain.UserRepository
  235 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  236 + "transactionContext": transactionContext,
  237 + }); err != nil {
  238 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  239 + } else {
  240 + userRepository = value
  241 + }
  242 + user, err := userRepository.FindOne(map[string]interface{}{"userId": setPermissionCommand.UserId})
  243 + if err != nil {
  244 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  245 + }
  246 + if user == nil {
  247 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(setPermissionCommand.UserId)))
  248 + }
  249 + if err := user.SetPermission(setPermissionCommand.Permissons); err != nil {
  250 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  251 + }
  252 + if _, err := userRepository.Save(user); err != nil {
  253 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  254 + }
  255 +
  256 + if err := transactionContext.CommitTransaction(); err != nil {
  257 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  258 + }
  259 + return nil, nil
  260 +}
  261 +
  262 +// 更新
  263 +func (userService *UserService) UpdateUser(updateUserCommand *command.UpdateUserCommand) (interface{}, error) {
  264 + if err := updateUserCommand.ValidateCommand(); err != nil {
  265 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  266 + }
  267 + transactionContext, err := factory.CreateTransactionContext(nil)
  268 + if err != nil {
  269 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  270 + }
  271 + if err := transactionContext.StartTransaction(); err != nil {
  272 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  273 + }
  274 + defer func() {
  275 + transactionContext.RollbackTransaction()
  276 + }()
  277 + var userRepository domain.UserRepository
  278 + if value, err := factory.CreateUserRepository(map[string]interface{}{
  279 + "transactionContext": transactionContext,
  280 + }); err != nil {
  281 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  282 + } else {
  283 + userRepository = value
  284 + }
  285 + user, err := userRepository.FindOne(map[string]interface{}{"userId": updateUserCommand.UserId})
  286 + if err != nil {
  287 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  288 + }
  289 + if user == nil {
  290 + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%s", string(updateUserCommand.UserId)))
  291 + }
  292 + if err := user.Update(tool_funs.SimpleStructToMap(updateUserCommand)); err != nil {
  293 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  294 + }
  295 + if user, err := userRepository.Save(user); err != nil {
  296 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  297 + } else {
  298 + if err := transactionContext.CommitTransaction(); err != nil {
  299 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  300 + }
  301 + return user, nil
  302 + }
  303 +}
  304 +
  305 +func NewUserService(options map[string]interface{}) *UserService {
  306 + newUserService := &UserService{}
  307 + return newUserService
  308 +}
  1 +package service
  2 +
  3 +import (
  4 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  5 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain"
  6 +)
  7 +
  8 +type AddUserService interface {
  9 + coreDomain.DomainEventPublisher
  10 + AddUser(*domain.User) (*domain.User, error)
  11 +}
1 package domain 1 package domain
2 2
3 -import "time" 3 +import (
  4 + "fmt"
  5 + "time"
  6 +)
4 7
5 const ( 8 const (
6 - StatusEnable int64 = 1  
7 - StatusDisable int64 = 2 9 + StatusEnable int64 = 1 //启用
  10 + StatusDisable int64 = 2 //禁用
8 ) 11 )
  12 +
  13 +// 管理员类型 1.超级管理员 10:企业管理员 100:普通用户
9 const ( 14 const (
10 - SuperAdministrator = 1  
11 - EnterpriseAdministrator = 10  
12 - NormalUser = 100 15 + SuperAdministrator = 1 //超级管理员
  16 + EnterpriseAdministrator = 10 //企业管理员
  17 + NormalUser = 100 //普通用户
13 ) 18 )
14 19
15 // UserType 20 // UserType
16 const ( 21 const (
17 - Manager = 1  
18 - Partner = 2  
19 - Guest = 3 22 + Manager = 1 //高管
  23 + Partner = 2 //合伙人
  24 + Guest = 3 //游客
20 ) 25 )
21 26
22 // 用户实体 27 // 用户实体
@@ -25,6 +30,8 @@ type User struct { @@ -25,6 +30,8 @@ type User struct {
25 UserId int64 `json:"userId"` 30 UserId int64 `json:"userId"`
26 // 1.高管 2.合伙人 4:游客 31 // 1.高管 2.合伙人 4:游客
27 UserType int `json:"userType"` 32 UserType int `json:"userType"`
  33 + //用户账号(手机号)
  34 + UserAccount string `json:"userAccount"`
28 // 用户权限 35 // 用户权限
29 Permissions []int `json:"permissions"` 36 Permissions []int `json:"permissions"`
30 // 公司Id 37 // 公司Id
@@ -61,66 +68,84 @@ func (user *User) Identify() interface{} { @@ -61,66 +68,84 @@ func (user *User) Identify() interface{} {
61 return user.UserId 68 return user.UserId
62 } 69 }
63 70
64 -func (user *User) Update(data map[string]interface{}) error {  
65 - if userId, ok := data["userId"]; ok {  
66 - user.UserId = userId.(int64) 71 +func (user *User) SetPermission(permissions []int) error {
  72 + user.Permissions = permissions
  73 + return nil
  74 +}
  75 +
  76 +func (user *User) CovertUserStatus(status int64) error {
  77 + if !(status == StatusEnable || status == StatusDisable) {
  78 + return fmt.Errorf("status options value (%v,%v) , invalid %v", StatusEnable, StatusDisable, status)
67 } 79 }
  80 + user.Status = status
  81 + return nil
  82 +}
  83 +
  84 +func (user *User) Update(data map[string]interface{}) error {
68 if userType, ok := data["userType"]; ok { 85 if userType, ok := data["userType"]; ok {
69 user.UserType = userType.(int) 86 user.UserType = userType.(int)
70 } 87 }
71 if permissions, ok := data["permissions"]; ok { 88 if permissions, ok := data["permissions"]; ok {
72 user.Permissions = permissions.([]int) 89 user.Permissions = permissions.([]int)
73 } 90 }
74 - if companyId, ok := data["companyId"]; ok {  
75 - user.CompanyId = companyId.(int64)  
76 - }  
77 - if isPrincipal, ok := data["isPrincipal"]; ok {  
78 - user.UserInfo.IsPrincipal = isPrincipal.(bool)  
79 - }  
80 - if uid, ok := data["uid"]; ok {  
81 - user.UserInfo.Uid = uid.(int64) 91 + if userInfo, ok := data["userInfo"]; ok {
  92 + user.UserInfo = userInfo.(*UserInfo)
82 } 93 }
83 - if userAccount, ok := data["userAccount"]; ok {  
84 - user.UserInfo.UserAccount = userAccount.(string) 94 + if partnerAccount, ok := data["partnerAccount"]; ok {
  95 + user.PartnerInfo.PartnerAccount = partnerAccount.(string)
85 } 96 }
86 - if userAvatarUrl, ok := data["userAvatarUrl"]; ok {  
87 - user.UserInfo.UserAvatarUrl = userAvatarUrl.(string) 97 + if partnerName, ok := data["partnerName"]; ok {
  98 + user.PartnerInfo.PartnerName = partnerName.(string)
88 } 99 }
89 - if userName, ok := data["userName"]; ok {  
90 - user.UserInfo.UserName = userName.(string) 100 + if regionName, ok := data["regionName"]; ok {
  101 + user.PartnerInfo.RegionInfo.RegionName = regionName.(string)
91 } 102 }
92 - if email, ok := data["email"]; ok {  
93 - user.UserInfo.Email = email.(string) 103 + if status, ok := data["status"]; ok {
  104 + user.PartnerInfo.Status = status.(int64)
94 } 105 }
95 - if gender, ok := data["gender"]; ok {  
96 - user.UserInfo.Gender = gender.(int) 106 + user.UpdateAt = time.Now()
  107 + return nil
  108 +}
  109 +
  110 +//添加/编辑高管
  111 +
  112 +func CheckAdminUserType(dm *User) (*User, error) {
  113 + if dm.UserInfo.Uid == int64(0) {
  114 + return nil, fmt.Errorf("高管的uid不能为空")
97 } 115 }
98 - if entryTime, ok := data["entryTime"]; ok {  
99 - user.UserInfo.EntryTime = entryTime.(time.Time) 116 + if dm.UserInfo.Email == "" {
  117 + return nil, fmt.Errorf("高管的Email不能为空")
100 } 118 }
101 - if extension, ok := data["extension"]; ok {  
102 - user.UserInfo.Extension = extension.(string) 119 + if dm.UserInfo.EntryTime.IsZero() {
  120 + return nil, fmt.Errorf("高管的入职时间不能为空")
103 } 121 }
104 - if workplace, ok := data["workplace"]; ok {  
105 - user.UserInfo.Workplace = workplace.(string) 122 + if dm.UserInfo.Workplace == "" {
  123 + return nil, fmt.Errorf("高管的工作地不能为空")
106 } 124 }
107 - if privateNumber, ok := data["privateNumber"]; ok {  
108 - user.UserInfo.PrivateNumber = privateNumber.(string) 125 + if dm.UserInfo.JobNumber == "" {
  126 + return nil, fmt.Errorf("高管的工号不能为空")
109 } 127 }
110 - if jobNumber, ok := data["jobNumber"]; ok {  
111 - user.UserInfo.JobNumber = jobNumber.(string) 128 + return dm, nil
  129 +}
  130 +
  131 +//添加/编辑合伙人
  132 +type PartnerUserType struct{}
  133 +
  134 +func CheckPartnerUserType(dm *User) (*User, error) {
  135 + if dm.PartnerInfo.Status == 0 {
  136 + return nil, fmt.Errorf("合伙人的状态不能为空")
112 } 137 }
113 - if partnerAccount, ok := data["partnerAccount"]; ok {  
114 - user.PartnerInfo.PartnerAccount = partnerAccount.(string) 138 + if dm.PartnerInfo.PartnerAccount == "" {
  139 + return nil, fmt.Errorf("合伙人账号不能为空")
115 } 140 }
116 - if partnerName, ok := data["partnerName"]; ok {  
117 - user.PartnerInfo.PartnerName = partnerName.(string) 141 + if dm.PartnerInfo.PartnerName == "" {
  142 + return nil, fmt.Errorf("合伙人姓名不能为空")
118 } 143 }
119 - if regionName, ok := data["regionName"]; ok {  
120 - user.PartnerInfo.RegionInfo.RegionName = regionName.(string) 144 + if len(dm.PartnerInfo.PartnerCategorys) == 0 {
  145 + return nil, fmt.Errorf("合伙人类别不能为空")
121 } 146 }
122 - if status, ok := data["status"]; ok {  
123 - user.PartnerInfo.Status = status.(int64) 147 + if len(dm.PartnerInfo.Salesmans) == 0 {
  148 + return nil, fmt.Errorf("合伙人查看合伙人账号不能为空")
124 } 149 }
125 - return nil 150 + return dm, nil
126 } 151 }
  1 +package domainService
  2 +
  3 +import (
  4 + "fmt"
  5 + coreDomain "github.com/linmadan/egglib-go/core/domain"
  6 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/domain"
  7 + "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/repository"
  8 +
  9 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  10 +)
  11 +
  12 +type AddUserService struct {
  13 + coreDomain.BaseEventPublisher
  14 + transactionContext *pgTransaction.TransactionContext
  15 +}
  16 +
  17 +func (service *AddUserService) AddUser(user *domain.User) (*domain.User, error) {
  18 +
  19 + if user.UserType&1 > 0 {
  20 + if _, err := domain.CheckAdminUserType(user); err != nil {
  21 + return nil, err
  22 + }
  23 + }
  24 +
  25 + if user.UserType&2 > 0 {
  26 + if _, err := domain.CheckPartnerUserType(user); err != nil {
  27 + return nil, err
  28 + }
  29 + }
  30 +
  31 + var userRepository domain.UserRepository
  32 + if repository, err := repository.NewUserRepository(service.transactionContext); err != nil {
  33 + return nil, err
  34 + } else {
  35 + userRepository = repository
  36 + }
  37 +
  38 + count, existUser, err := userRepository.Find(map[string]interface{}{
  39 + "userAccount": user.UserAccount,
  40 + "companyId": user.CompanyId,
  41 + })
  42 +
  43 + if count != 0 {
  44 + if existUser[0].UserType^user.UserType == 0 {
  45 + return nil, fmt.Errorf("用户已存在")
  46 + }
  47 + if existUser[0].UserType&1 > 0 {
  48 + user.UserInfo = existUser[0].UserInfo
  49 + }
  50 + if existUser[0].UserType&2 > 0 {
  51 + user.PartnerInfo = existUser[0].PartnerInfo
  52 + }
  53 + user.UserType = existUser[0].UserType + user.UserType
  54 + }
  55 +
  56 + user, err = userRepository.Save(user)
  57 +
  58 + if err != nil {
  59 + return nil, err
  60 + }
  61 +
  62 + return user, nil
  63 +}
  64 +
  65 +func NewAddUserService(transactionContext *pgTransaction.TransactionContext) (*AddUserService, error) {
  66 + if transactionContext == nil {
  67 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  68 + } else {
  69 + return &AddUserService{
  70 + transactionContext: transactionContext,
  71 + }, nil
  72 + }
  73 +}
@@ -13,6 +13,8 @@ type User struct { @@ -13,6 +13,8 @@ type User struct {
13 UserType int 13 UserType int
14 // 用户权限 14 // 用户权限
15 Permissions []int `pg:",array"` 15 Permissions []int `pg:",array"`
  16 + //用户账号(手机号)
  17 + UserAccount string
16 // 公司Id 18 // 公司Id
17 CompanyId int64 19 CompanyId int64
18 // 用户信息 20 // 用户信息
@@ -30,6 +30,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -30,6 +30,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
30 "user_type", 30 "user_type",
31 "permissions", 31 "permissions",
32 "company_id", 32 "company_id",
  33 + "user_account",
33 "user_info", 34 "user_info",
34 "partner_info", 35 "partner_info",
35 "status", 36 "status",
@@ -42,7 +43,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -42,7 +43,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
42 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) 43 insertFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
43 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields) 44 insertPlaceHoldersSnippet := sqlbuilder.SqlPlaceHoldersSnippet(sqlBuildFields)
44 returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields) 45 returningFieldsSnippet := sqlbuilder.SqlFieldsSnippet(sqlBuildFields)
45 - updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "user_id") 46 + updateFields := sqlbuilder.RemoveSqlFields(sqlBuildFields, "user_id", "delete_at", "create_at")
46 updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields) 47 updateFieldsSnippet := sqlbuilder.SqlUpdateFieldsSnippet(updateFields)
47 tx := repository.transactionContext.PgTx 48 tx := repository.transactionContext.PgTx
48 if user.Identify() == nil { 49 if user.Identify() == nil {
@@ -58,6 +59,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -58,6 +59,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
58 &user.UserType, 59 &user.UserType,
59 pg.Array(&user.Permissions), 60 pg.Array(&user.Permissions),
60 &user.CompanyId, 61 &user.CompanyId,
  62 + &user.UserAccount,
61 &user.UserInfo, 63 &user.UserInfo,
62 &user.PartnerInfo, 64 &user.PartnerInfo,
63 &user.Status, 65 &user.Status,
@@ -72,6 +74,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -72,6 +74,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
72 user.UserType, 74 user.UserType,
73 pg.Array(user.Permissions), 75 pg.Array(user.Permissions),
74 user.CompanyId, 76 user.CompanyId,
  77 + user.UserAccount,
75 user.UserInfo, 78 user.UserInfo,
76 user.PartnerInfo, 79 user.PartnerInfo,
77 user.Status, 80 user.Status,
@@ -90,6 +93,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -90,6 +93,7 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
90 &user.UserType, 93 &user.UserType,
91 pg.Array(&user.Permissions), 94 pg.Array(&user.Permissions),
92 &user.CompanyId, 95 &user.CompanyId,
  96 + &user.UserAccount,
93 &user.UserInfo, 97 &user.UserInfo,
94 &user.PartnerInfo, 98 &user.PartnerInfo,
95 &user.Status, 99 &user.Status,
@@ -100,18 +104,16 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error) @@ -100,18 +104,16 @@ func (repository *UserRepository) Save(user *domain.User) (*domain.User, error)
100 &user.DeleteAt, 104 &user.DeleteAt,
101 ), 105 ),
102 fmt.Sprintf("UPDATE users SET %s WHERE user_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet), 106 fmt.Sprintf("UPDATE users SET %s WHERE user_id=? RETURNING %s", updateFieldsSnippet, returningFieldsSnippet),
103 - user.UserId,  
104 user.UserType, 107 user.UserType,
105 pg.Array(user.Permissions), 108 pg.Array(user.Permissions),
106 user.CompanyId, 109 user.CompanyId,
  110 + user.UserAccount,
107 user.UserInfo, 111 user.UserInfo,
108 user.PartnerInfo, 112 user.PartnerInfo,
109 user.Status, 113 user.Status,
110 user.AdminType, 114 user.AdminType,
111 pg.Array(user.AccessPartners), 115 pg.Array(user.AccessPartners),
112 - user.CreateAt,  
113 user.UpdateAt, 116 user.UpdateAt,
114 - user.DeleteAt,  
115 user.Identify(), 117 user.Identify(),
116 ); err != nil { 118 ); err != nil {
117 return user, err 119 return user, err
  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 +}
  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) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  19 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  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": 1,
  28 + "status": 2,
  29 + }
  30 + httpExpect.POST("/users/convert-user-status").
  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 + pG "gitlab.fjmaimaimai.com/mmm-go-pp/partner01/pkg/infrastructure/pg"
  5 + "net/http"
  6 +
  7 + "github.com/gavv/httpexpect"
  8 + . "github.com/onsi/ginkgo"
  9 + . "github.com/onsi/gomega"
  10 +)
  11 +
  12 +var _ = Describe("创建", func() {
  13 + Describe("提交数据创建", func() {
  14 + Context("提交正确的新用户实体数据", func() {
  15 + It("返回用户实体数据", func() {
  16 + httpExpect := httpexpect.New(GinkgoT(), server.URL)
  17 + body := map[string]interface{}{
  18 + "userType": 1,
  19 + "adminType": 1,
  20 + "status": 1,
  21 + "userAccount": "13800000000",
  22 + "userInfo": map[string]interface{}{
  23 + "isPrincipal": false,
  24 + "uid": 5678664411598702,
  25 + "userAccount": "13800000000",
  26 + "userAvatarUrl": "www.baidu.com",
  27 + "userName": "彭于晏",
  28 + "email": "gfghf@qq.com",
  29 + "gender": 1,
  30 + "extension": "1",
  31 + "workplace": "2",
  32 + "privateNumber": "3",
  33 + "jobNumber": "4",
  34 + },
  35 + "partnerCategorys": "[]",
  36 + "accessPartners": "[]",
  37 + }
  38 + httpExpect.POST("/users/").
  39 + WithJSON(body).
  40 + Expect().
  41 + Status(http.StatusOK).
  42 + JSON().
  43 + Object().
  44 + ContainsKey("code").ValueEqual("code", 0).
  45 + ContainsKey("msg").ValueEqual("msg", "ok").
  46 + ContainsKey("data").Value("data").Object().
  47 + ContainsKey("userId").ValueNotEqual("userId", BeZero())
  48 + })
  49 + })
  50 + })
  51 + AfterEach(func() {
  52 + _, err := pG.DB.Exec("DELETE FROM users WHERE true")
  53 + _, err = pG.DB.Exec("DELETE FROM user_auth WHERE true")
  54 + Expect(err).NotTo(HaveOccurred())
  55 + })
  56 +})
  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) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  19 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  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/1").
  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) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  19 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  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", 0).
  28 + WithQuery("limit", 10).
  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) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  19 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  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/1").
  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 + return
  15 + var userId int64
  16 + BeforeEach(func() {
  17 + _, err := pG.DB.QueryOne(
  18 + pg.Scan(&userId),
  19 + "INSERT INTO users (user_id, user_type, permissions, company_id, user_info, partner_info, status, admin_type) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  20 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  21 + Expect(err).NotTo(HaveOccurred())
  22 + })
  23 + Describe("设置权限", func() {
  24 + Context("", func() {
  25 + It("", func() {
  26 + httpExpect := httpexpect.New(GinkgoT(), server.URL)
  27 + body := map[string]interface{}{
  28 + "userId": 1,
  29 + "permissons": []int{1, 2, 3},
  30 + }
  31 + httpExpect.POST("/users/setPermission").
  32 + WithJSON(body).
  33 + Expect().
  34 + Status(http.StatusOK).
  35 + JSON().
  36 + Object().
  37 + ContainsKey("code").ValueEqual("code", 0).
  38 + ContainsKey("msg").ValueEqual("msg", "ok").
  39 + ContainsKey("data").Value("data").Object()
  40 + })
  41 + })
  42 + })
  43 + AfterEach(func() {
  44 + _, err := pG.DB.Exec("DELETE FROM users WHERE true")
  45 + Expect(err).NotTo(HaveOccurred())
  46 + })
  47 +})
  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) VALUES (?, ?, ?, ?, ?, ?, ?, ?) RETURNING user_id",
  19 + 1, 1, pg.Array([]int{}), 1, `{}`, `{}`, 1, 1)
  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 + "userInfo": map[string]interface{}{
  28 + "isPrincipal": false,
  29 + "uid": 5678664411598702,
  30 + "userAccount": "13800000000",
  31 + "userAvatarUrl": "www.baidu.com",
  32 + "userName": "彭于晏01",
  33 + "email": "gfghf@qq.com",
  34 + "gender": 1,
  35 + "extension": "1",
  36 + "workplace": "2",
  37 + "privateNumber": "3",
  38 + "jobNumber": "4",
  39 + },
  40 + }
  41 + httpExpect.PUT("/users/1").
  42 + WithJSON(body).
  43 + Expect().
  44 + Status(http.StatusOK).
  45 + JSON().
  46 + Object().
  47 + ContainsKey("code").ValueEqual("code", 0).
  48 + ContainsKey("msg").ValueEqual("msg", "ok").
  49 + ContainsKey("data").Value("data").Object().
  50 + ContainsKey("userId").ValueEqual("userId", userId)
  51 + })
  52 + })
  53 + })
  54 + AfterEach(func() {
  55 + _, err := pG.DB.Exec("DELETE FROM users WHERE true")
  56 + Expect(err).NotTo(HaveOccurred())
  57 + })
  58 +})
  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 +})