2023-06-13 11:08:31 +08:00

116 lines
2.6 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)
}