157 lines
3.5 KiB
Go
157 lines
3.5 KiB
Go
package controller
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"hospital-admin-api/api/dao"
|
|
"hospital-admin-api/api/requests"
|
|
"hospital-admin-api/api/responses"
|
|
"hospital-admin-api/api/service"
|
|
"hospital-admin-api/global"
|
|
"hospital-admin-api/utils"
|
|
"strconv"
|
|
)
|
|
|
|
type Role struct{}
|
|
|
|
var RoleRequest requests.RoleRequest
|
|
|
|
// GetRoleMenuList 获取登陆角色菜单列表
|
|
func (r *Role) GetRoleMenuList(c *gin.Context) {
|
|
roleId := c.GetInt64("RoleId")
|
|
if roleId == 0 {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 获取角色菜单
|
|
RoleService := service.RoleService{}
|
|
roleMenuList, err := RoleService.GetRoleMenuList(roleId)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
if len(roleMenuList) == 0 {
|
|
responses.FailWithMessage("请联系管理人员设置菜单", c)
|
|
return
|
|
}
|
|
|
|
responses.OkWithData(roleMenuList, c)
|
|
}
|
|
|
|
// GetRoleList 搜索角色列表
|
|
func (r *Role) GetRoleList(c *gin.Context) {
|
|
if err := c.ShouldBind(&RoleRequest.GetRoleList); err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
// 参数验证
|
|
if err := global.Validate.Struct(RoleRequest.GetRoleList); err != nil {
|
|
responses.FailWithMessage(utils.Translate(err), c)
|
|
return
|
|
}
|
|
|
|
if RoleRequest.GetRoleList.Page == 0 {
|
|
RoleRequest.GetRoleList.Page = 1
|
|
}
|
|
|
|
if RoleRequest.GetRoleList.PageSize == 0 {
|
|
RoleRequest.GetRoleList.PageSize = 20
|
|
}
|
|
|
|
AdminRoleDao := dao.AdminRoleDao{}
|
|
adminRole, err := AdminRoleDao.GetAdminRolePageSearch(RoleRequest.GetRoleList.RoleName, RoleRequest.GetRoleList.Page, RoleRequest.GetRoleList.PageSize)
|
|
if err != nil || len(adminRole) == 0 {
|
|
responses.Ok(c)
|
|
c.Abort()
|
|
return
|
|
}
|
|
|
|
responses.OkWithData(adminRole, c)
|
|
}
|
|
|
|
// PutRoleStatus 角色禁用/启用
|
|
// 此处应该允许修改下级角色
|
|
func (r *Role) PutRoleStatus(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
|
|
}
|
|
|
|
id := c.Param("id")
|
|
if id == "" {
|
|
responses.FailWithMessage("缺少参数", c)
|
|
return
|
|
}
|
|
|
|
// 将 id 转换为 int64 类型
|
|
roleId, err := strconv.ParseInt(id, 10, 64)
|
|
if err != nil {
|
|
responses.Fail(c)
|
|
return
|
|
}
|
|
|
|
// 不可修改自己
|
|
if roleId == c.GetInt64("RoleId") {
|
|
responses.FailWithMessage("无法操作当前账号所属角色", c)
|
|
return
|
|
}
|
|
|
|
RoleService := service.RoleService{}
|
|
_, err = RoleService.PutRoleStatus(roleId, RoleRequest.PutRoleStatus.RoleStatus)
|
|
if err != nil {
|
|
responses.FailWithMessage(err.Error(), c)
|
|
return
|
|
}
|
|
|
|
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)
|
|
}
|