正在显示
6 个修改的文件
包含
138 行增加
和
3 行删除
| 1 | +package command | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "fmt" | ||
| 5 | + "reflect" | ||
| 6 | + "strings" | ||
| 7 | + | ||
| 8 | + "github.com/beego/beego/v2/core/validation" | ||
| 9 | +) | ||
| 10 | + | ||
| 11 | +type BatchDeleteRoleCommand struct { | ||
| 12 | + // 用户ID | ||
| 13 | + UserId int64 `cname:"用户ID" json:"userId"` | ||
| 14 | + // 组织ID | ||
| 15 | + OrgId int64 `cname:"组织ID" json:"orgId"` | ||
| 16 | + // 角色ID | ||
| 17 | + RoleIds []int64 `cname:"角色ID" json:"roleIds" valid:"Required"` | ||
| 18 | +} | ||
| 19 | + | ||
| 20 | +func (removeRoleCommand *BatchDeleteRoleCommand) Valid(validation *validation.Validation) { | ||
| 21 | + //validation.SetError("CustomValid", "未实现的自定义认证") | ||
| 22 | +} | ||
| 23 | + | ||
| 24 | +func (removeRoleCommand *BatchDeleteRoleCommand) ValidateCommand() error { | ||
| 25 | + valid := validation.Validation{} | ||
| 26 | + b, err := valid.Valid(removeRoleCommand) | ||
| 27 | + if err != nil { | ||
| 28 | + return err | ||
| 29 | + } | ||
| 30 | + if !b { | ||
| 31 | + elem := reflect.TypeOf(removeRoleCommand).Elem() | ||
| 32 | + for _, validErr := range valid.Errors { | ||
| 33 | + field, isExist := elem.FieldByName(validErr.Field) | ||
| 34 | + if isExist { | ||
| 35 | + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1)) | ||
| 36 | + } else { | ||
| 37 | + return fmt.Errorf(validErr.Message) | ||
| 38 | + } | ||
| 39 | + } | ||
| 40 | + } | ||
| 41 | + return nil | ||
| 42 | +} |
| @@ -10,9 +10,9 @@ import ( | @@ -10,9 +10,9 @@ import ( | ||
| 10 | 10 | ||
| 11 | type CreateRoleCommand struct { | 11 | type CreateRoleCommand struct { |
| 12 | // 用户ID | 12 | // 用户ID |
| 13 | - UserId int64 `cname:"用户ID" json:"userId" valid:"Required` | 13 | + UserId int64 `cname:"用户ID" json:"userId" valid:"Required"` |
| 14 | // 组织ID | 14 | // 组织ID |
| 15 | - OrgId int64 `cname:"组织ID" json:"orgId" valid:"Required` | 15 | + OrgId int64 `cname:"组织ID" json:"orgId" valid:"Required"` |
| 16 | // 角色名称 | 16 | // 角色名称 |
| 17 | RoleName string `cname:"角色名称" json:"roleName" valid:"Required"` | 17 | RoleName string `cname:"角色名称" json:"roleName" valid:"Required"` |
| 18 | // 描述 | 18 | // 描述 |
| @@ -314,6 +314,53 @@ func (roleService *RoleService) RemoveRole(removeRoleCommand *command.RemoveRole | @@ -314,6 +314,53 @@ func (roleService *RoleService) RemoveRole(removeRoleCommand *command.RemoveRole | ||
| 314 | } | 314 | } |
| 315 | } | 315 | } |
| 316 | 316 | ||
| 317 | +// 批量移除角色 | ||
| 318 | +func (roleService *RoleService) BatchDeleteRole(removeRoleCommand *command.BatchDeleteRoleCommand) (interface{}, error) { | ||
| 319 | + if err := removeRoleCommand.ValidateCommand(); err != nil { | ||
| 320 | + return nil, application.ThrowError(application.ARG_ERROR, err.Error()) | ||
| 321 | + } | ||
| 322 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 323 | + if err != nil { | ||
| 324 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 325 | + } | ||
| 326 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 327 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 328 | + } | ||
| 329 | + defer func() { | ||
| 330 | + transactionContext.RollbackTransaction() | ||
| 331 | + }() | ||
| 332 | + var roleRepository domain.RoleRepository | ||
| 333 | + if value, err := factory.CreateRoleRepository(map[string]interface{}{ | ||
| 334 | + "transactionContext": transactionContext, | ||
| 335 | + }); err != nil { | ||
| 336 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 337 | + } else { | ||
| 338 | + roleRepository = value | ||
| 339 | + } | ||
| 340 | + for i := range removeRoleCommand.RoleIds { | ||
| 341 | + roleId := removeRoleCommand.RoleIds[i] | ||
| 342 | + role, err := roleRepository.FindOne(map[string]interface{}{"roleId": roleId}) | ||
| 343 | + if err != nil { | ||
| 344 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 345 | + } | ||
| 346 | + if role == nil { | ||
| 347 | + return nil, application.ThrowError(application.RES_NO_FIND_ERROR, fmt.Sprintf("%v", roleId)) | ||
| 348 | + } | ||
| 349 | + if role.RoleType == domain.RoleTypeAdmin { | ||
| 350 | + return nil, application.ThrowError(application.BUSINESS_ERROR, "主管理员角色不可删除") | ||
| 351 | + } | ||
| 352 | + role.DeletedAt = time.Now() | ||
| 353 | + if _, err := roleRepository.Remove(role); err != nil { | ||
| 354 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 355 | + } | ||
| 356 | + } | ||
| 357 | + | ||
| 358 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 359 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 360 | + } | ||
| 361 | + return struct{}{}, nil | ||
| 362 | +} | ||
| 363 | + | ||
| 317 | // 取消用户分配的角色 | 364 | // 取消用户分配的角色 |
| 318 | func (roleService *RoleService) UnAssginRoleToUsers(unAssignRoleToUsersCommand *command.UnAssginRoleToUsersCommand) (interface{}, error) { | 365 | func (roleService *RoleService) UnAssginRoleToUsers(unAssignRoleToUsersCommand *command.UnAssginRoleToUsersCommand) (interface{}, error) { |
| 319 | if err := unAssignRoleToUsersCommand.ValidateCommand(); err != nil { | 366 | if err := unAssignRoleToUsersCommand.ValidateCommand(); err != nil { |
| @@ -409,10 +456,20 @@ func (roleService *RoleService) UpdateRoleAccessMenus(updateRoleAccessMenusComma | @@ -409,10 +456,20 @@ func (roleService *RoleService) UpdateRoleAccessMenus(updateRoleAccessMenusComma | ||
| 409 | defer func() { | 456 | defer func() { |
| 410 | transactionContext.RollbackTransaction() | 457 | transactionContext.RollbackTransaction() |
| 411 | }() | 458 | }() |
| 459 | + | ||
| 460 | + roleRepository, role, err := factory.FastPgRole(transactionContext, updateRoleAccessMenusCommand.RoleId) | ||
| 461 | + if err != nil { | ||
| 462 | + return nil, err | ||
| 463 | + } | ||
| 464 | + role.AccessMenus = updateRoleAccessMenusCommand.AccessMenus | ||
| 465 | + if role, err = roleRepository.Save(role); err != nil { | ||
| 466 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 467 | + } | ||
| 468 | + | ||
| 412 | if err := transactionContext.CommitTransaction(); err != nil { | 469 | if err := transactionContext.CommitTransaction(); err != nil { |
| 413 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 470 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
| 414 | } | 471 | } |
| 415 | - return nil, nil | 472 | + return role, nil |
| 416 | } | 473 | } |
| 417 | 474 | ||
| 418 | func NewRoleService(options map[string]interface{}) *RoleService { | 475 | func NewRoleService(options map[string]interface{}) *RoleService { |
| @@ -61,6 +61,7 @@ func (controller *CompanyController) ListCompanyCustomizeMenus() { | @@ -61,6 +61,7 @@ func (controller *CompanyController) ListCompanyCustomizeMenus() { | ||
| 61 | controller.Unmarshal(listCompanyCustomizeMenusCommand) | 61 | controller.Unmarshal(listCompanyCustomizeMenusCommand) |
| 62 | companyId, _ := controller.GetInt64(":companyId") | 62 | companyId, _ := controller.GetInt64(":companyId") |
| 63 | listCompanyCustomizeMenusCommand.CompanyId = companyId | 63 | listCompanyCustomizeMenusCommand.CompanyId = companyId |
| 64 | + listCompanyCustomizeMenusCommand.MenuCategory = controller.GetString("menuCategory") | ||
| 64 | data, err := companyService.ListCompanyCustomizeMenus(listCompanyCustomizeMenusCommand) | 65 | data, err := companyService.ListCompanyCustomizeMenus(listCompanyCustomizeMenusCommand) |
| 65 | controller.Response(data, err) | 66 | controller.Response(data, err) |
| 66 | } | 67 | } |
| @@ -48,6 +48,14 @@ func (controller *RoleController) RemoveRole() { | @@ -48,6 +48,14 @@ func (controller *RoleController) RemoveRole() { | ||
| 48 | controller.Response(data, err) | 48 | controller.Response(data, err) |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | +func (controller *RoleController) BatchDeleteRole() { | ||
| 52 | + roleService := service.NewRoleService(nil) | ||
| 53 | + removeRoleCommand := &command.BatchDeleteRoleCommand{} | ||
| 54 | + controller.Unmarshal(removeRoleCommand) | ||
| 55 | + data, err := roleService.BatchDeleteRole(removeRoleCommand) | ||
| 56 | + controller.Response(data, err) | ||
| 57 | +} | ||
| 58 | + | ||
| 51 | func (controller *RoleController) ListRole() { | 59 | func (controller *RoleController) ListRole() { |
| 52 | roleService := service.NewRoleService(nil) | 60 | roleService := service.NewRoleService(nil) |
| 53 | listRoleQuery := &query.ListRoleQuery{} | 61 | listRoleQuery := &query.ListRoleQuery{} |
| @@ -110,3 +118,18 @@ func (controller *RoleController) UnAssginRoleToUsers() { | @@ -110,3 +118,18 @@ func (controller *RoleController) UnAssginRoleToUsers() { | ||
| 110 | data, err := roleService.UnAssginRoleToUsers(unAssginRoleToUsersCommand) | 118 | data, err := roleService.UnAssginRoleToUsers(unAssginRoleToUsersCommand) |
| 111 | controller.Response(data, err) | 119 | controller.Response(data, err) |
| 112 | } | 120 | } |
| 121 | + | ||
| 122 | +/***** 1.适配web模块 *****/ | ||
| 123 | +func (controller *RoleController) WebSearchRole() { | ||
| 124 | + roleService := service.NewRoleService(nil) | ||
| 125 | + listRoleQuery := &query.ListRoleQuery{} | ||
| 126 | + Must(controller.Unmarshal(listRoleQuery)) | ||
| 127 | + listRoleQuery.Limit = 20 | ||
| 128 | + listRoleQuery.CompanyId = 23 | ||
| 129 | + data, err := roleService.ListRole(listRoleQuery) | ||
| 130 | + webData := map[string]interface{}{ | ||
| 131 | + "list": data.(map[string]interface{})["roles"], | ||
| 132 | + "total": data.(map[string]interface{})["count"], | ||
| 133 | + } | ||
| 134 | + ResponseGrid(controller.BaseController, webData, err) | ||
| 135 | +} |
| @@ -16,4 +16,16 @@ func init() { | @@ -16,4 +16,16 @@ func init() { | ||
| 16 | web.Router("/role/:roleId/access-menus", &controllers.RoleController{}, "Put:UpdateRoleAccessMenus") | 16 | web.Router("/role/:roleId/access-menus", &controllers.RoleController{}, "Put:UpdateRoleAccessMenus") |
| 17 | web.Router("/role/assign", &controllers.RoleController{}, "Post:AssginRoleToUsers") | 17 | web.Router("/role/assign", &controllers.RoleController{}, "Post:AssginRoleToUsers") |
| 18 | web.Router("/role/unassign", &controllers.RoleController{}, "Post:UnAssginRoleToUsers") | 18 | web.Router("/role/unassign", &controllers.RoleController{}, "Post:UnAssginRoleToUsers") |
| 19 | + web.Router("/role/batch-delete", &controllers.RoleController{}, "Post:BatchDeleteRole") | ||
| 20 | + | ||
| 21 | + web.Router("/v1/web/roles/", &controllers.RoleController{}, "Post:CreateRole") | ||
| 22 | + web.Router("/v1/web/roles/:roleId", &controllers.RoleController{}, "Put:UpdateRole") | ||
| 23 | + web.Router("/v1/web/roles/:roleId", &controllers.RoleController{}, "Get:GetRole") | ||
| 24 | + web.Router("/v1/web/roles/:roleId", &controllers.RoleController{}, "Delete:RemoveRole") | ||
| 25 | + web.Router("/v1/web/roles/search", &controllers.RoleController{}, "Post:WebSearchRole") | ||
| 26 | + web.Router("/v1/web/roles/:roleId/related-user", &controllers.RoleController{}, "Get:GetRoleRelatedUsers") | ||
| 27 | + web.Router("/v1/web/roles/:roleId/access-menus", &controllers.RoleController{}, "Get:GetRoleAccessMenus") | ||
| 28 | + web.Router("/v1/web/roles/:roleId/access-menus", &controllers.RoleController{}, "Put:UpdateRoleAccessMenus") | ||
| 29 | + web.Router("/v1/web/roles/assign", &controllers.RoleController{}, "Post:AssginRoleToUsers") | ||
| 30 | + web.Router("/v1/web/roles/unassign", &controllers.RoleController{}, "Post:UnAssginRoleToUsers") | ||
| 19 | } | 31 | } |
-
请 注册 或 登录 后发表评论