diff --git a/api/controller/role.go b/api/controller/role.go index d6e2c66..b812f6f 100644 --- a/api/controller/role.go +++ b/api/controller/role.go @@ -15,7 +15,7 @@ type Role struct{} var RoleRequest requests.RoleRequest -// GetRoleMenuList 获取角色菜单列表 +// GetRoleMenuList 获取登陆角色菜单列表 func (r *Role) GetRoleMenuList(c *gin.Context) { roleId := c.GetInt64("RoleId") if roleId == 0 { @@ -23,7 +23,7 @@ func (r *Role) GetRoleMenuList(c *gin.Context) { return } - // 登陆 + // 获取角色菜单 RoleService := service.RoleService{} roleMenuList, err := RoleService.GetRoleMenuList(roleId) if err != nil { @@ -113,3 +113,44 @@ func (r *Role) PutRoleStatus(c *gin.Context) { responses.Ok(c) } + +// AddRole 新增角色 +func (r *Role) AddRole(c *gin.Context) { + // if err := c.ShouldBind(&RoleRequest.PutRoleStatus); err != nil { + // responses.FailWithMessage(err.Error(), c) + // return + // } + // + // // 参数验证 + // if err := global.Validate.Struct(RoleRequest.PutRoleStatus); err != nil { + // responses.FailWithMessage(utils.Translate(err), c) + // return + // } + + responses.Ok(c) +} + +// GetRole 角色详情 +func (r *Role) GetRole(c *gin.Context) { + id := c.Param("role_id") + if id == "" { + responses.FailWithMessage("缺少参数", c) + return + } + + // 将 id 转换为 int64 类型 + roleId, err := strconv.ParseInt(id, 10, 64) + if err != nil { + responses.Fail(c) + return + } + + RoleService := service.RoleService{} + GetRoleResponse, err := RoleService.GetRole(roleId) + if err != nil { + responses.FailWithMessage(err.Error(), c) + return + } + + responses.OkWithData(GetRoleResponse, c) +} diff --git a/api/dao/adminRoleMenu.go b/api/dao/adminRoleMenu.go index f561b7c..34cdfdc 100644 --- a/api/dao/adminRoleMenu.go +++ b/api/dao/adminRoleMenu.go @@ -26,3 +26,16 @@ func (r *AdminRoleMenuDao) GetAdminRoleMenuListWithMenuByRoleId(roleId int64) (m } return m, nil } + +// GetAdminRoleMenuIdByRoleId 获取角色菜单id-角色id +// roleId 角色id +func (r *AdminRoleMenuDao) GetAdminRoleMenuIdByRoleId(roleId int64) (m []int64, err error) { + err = global.Db.Model(&model.AdminRoleMenu{}). + Where("role_id = ?", roleId). + Pluck("menu_id", &m). + Error + if err != nil { + return nil, err + } + return m, nil +} diff --git a/api/requests/role.go b/api/requests/role.go index 4842ed6..81c0564 100644 --- a/api/requests/role.go +++ b/api/requests/role.go @@ -16,3 +16,7 @@ type GetRoleList struct { type PutRoleStatus struct { RoleStatus int `json:"role_status" form:"role_status" validate:"oneof=1 2" label:"角色状态"` // (1:正常 2:禁用) } + +// AddRole 新增角色 +type AddRole struct { +} diff --git a/api/responses/roleResponse/roleResponse.go b/api/responses/roleResponse/roleResponse.go index 3492235..b763675 100644 --- a/api/responses/roleResponse/roleResponse.go +++ b/api/responses/roleResponse/roleResponse.go @@ -1,6 +1,6 @@ package roleResponse -// RoleMenuList 登陆 +// RoleMenuList 角色菜单列表 type RoleMenuList struct { MenuId int64 `json:"menu_id"` // 主键id MenuName string `json:"menu_name"` // 菜单名称 @@ -13,3 +13,12 @@ type RoleMenuList struct { Path string `json:"path"` // 页面地址(#表示当前页) Children []*RoleMenuList `json:"children"` // 下级页面 } + +// GetRole 角色详情 +type GetRole struct { + MenuIds []int64 `json:"menu_ids"` // 菜单id + RoleId int64 `json:"role_id"` // 角色id + RoleName string `json:"role_name"` // 角色名称 + RoleStatus int `json:"role_status"` // 角色状态(1:正常 2:禁用) + IsAdmin int `json:"is_admin"` // 是否管理员(0:否 1:是) +} diff --git a/api/router/router.go b/api/router/router.go index 1abda36..b847055 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -72,7 +72,7 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 角色 base1Group := adminGroup.Group("/role") { - // 获取角色菜单列表 + // 获取登陆角色菜单列表 base1Group.GET("menu", api.Role.GetRoleMenuList) // 搜索角色列表 @@ -80,6 +80,12 @@ func privateRouter(r *gin.Engine, api controller.Api) { // 角色禁用/启用 base1Group.PUT("status/:id", api.Role.PutRoleStatus) + + // 角色新增 + base1Group.POST("", api.Role.AddRole) + + // 角色详情 + base1Group.GET("/:role_id", api.Role.GetRole) } } diff --git a/api/service/role.go b/api/service/role.go index 550c51a..dfa8c31 100644 --- a/api/service/role.go +++ b/api/service/role.go @@ -99,3 +99,30 @@ func (r *RoleService) PutRoleStatus(roleId int64, roleStatus int) (bool, error) } return true, nil } + +// GetRole 角色详情 +func (r *RoleService) GetRole(roleId int64) (*roleResponse.GetRole, error) { + // 获取请求角色数据 + AdminRoleDao := dao.AdminRoleDao{} + adminRole, err := AdminRoleDao.GetAdminRoleFirstById(roleId) + if err != nil || adminRole.RoleId == 0 { + return nil, errors.New("非法操作") + } + + // 获取角色权限菜单id + AdminRoleMenuDao := dao.AdminRoleMenuDao{} + menuIds, err := AdminRoleMenuDao.GetAdminRoleMenuIdByRoleId(roleId) + if err != nil { + return nil, errors.New("角色权限菜单获取失败") + } + + GetRoleResponse := &roleResponse.GetRole{ + MenuIds: menuIds, + RoleId: adminRole.RoleId, + RoleName: adminRole.RoleName, + RoleStatus: adminRole.RoleStatus, + IsAdmin: adminRole.IsAdmin, + } + + return GetRoleResponse, nil +}