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) } // GetRolePage 搜索角色列表 func (r *Role) GetRolePage(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, total, err := AdminRoleDao.GetAdminRolePageSearch(RoleRequest.GetRoleList.RoleName, RoleRequest.GetRoleList.Page, RoleRequest.GetRoleList.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) c.Abort() return } result := make(map[string]interface{}) result["page"] = RoleRequest.GetRoleList.Page result["page_size"] = RoleRequest.GetRoleList.PageSize result["total"] = total result["data"] = adminRole responses.OkWithData(result, 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.ShouldBindJSON(&RoleRequest.AddRole); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(RoleRequest.AddRole); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 判断菜单数据是否为空 if len(RoleRequest.AddRole.MenuIds) == 0 { responses.FailWithMessage("请为角色添加菜单", c) return } // 业务处理 RoleService := service.RoleService{} _, err := RoleService.AddRole(c, RoleRequest.AddRole) if err != nil { responses.FailWithMessage(err.Error(), 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) } // PutRole 修改角色 func (r *Role) PutRole(c *gin.Context) { if err := c.ShouldBindJSON(&RoleRequest.PutRole); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(RoleRequest.PutRole); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } 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 } // 判断菜单数据是否为空 if len(RoleRequest.PutRole.MenuIds) == 0 { responses.FailWithMessage("请为角色添加菜单", c) return } // 业务处理 RoleService := service.RoleService{} _, err = RoleService.PutRole(c, roleId, RoleRequest.PutRole) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) }