diff --git a/api/controller/basic.go b/api/controller/basic.go index 2bde8f5..6f6aaf0 100644 --- a/api/controller/basic.go +++ b/api/controller/basic.go @@ -26,15 +26,15 @@ func (b *Basic) GetCaptcha(c *gin.Context) { // Login 登陆 func (b *Basic) Login(c *gin.Context) { - var login requests.Login + var basicRequest requests.BasicRequest - if err := c.ShouldBind(&login); err != nil { + if err := c.ShouldBind(&basicRequest.Login); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 - if err := global.Validate.Struct(login); err != nil { + if err := global.Validate.Struct(basicRequest.Login); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } @@ -48,8 +48,8 @@ func (b *Basic) Login(c *gin.Context) { // } // 登陆 - Basic := service.Basic{} - token, err := Basic.Login(login) + BasicService := service.BasicService{} + token, err := BasicService.Login(basicRequest.Login) if err != nil { responses.FailWithMessage(err.Error(), c) return diff --git a/api/controller/role.go b/api/controller/role.go index f819a3a..3bbf294 100644 --- a/api/controller/role.go +++ b/api/controller/role.go @@ -2,8 +2,12 @@ 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" ) type Role struct{} @@ -17,8 +21,8 @@ func (r *Role) GetRoleMenuList(c *gin.Context) { } // 登陆 - Role := service.Role{} - roleMenuList, err := Role.GetRoleMenuList(roleId) + RoleService := service.RoleService{} + roleMenuList, err := RoleService.GetRoleMenuList(roleId) if err != nil { responses.FailWithMessage(err.Error(), c) return @@ -31,3 +35,37 @@ func (r *Role) GetRoleMenuList(c *gin.Context) { responses.OkWithData(roleMenuList, c) } + +// GetRoleList 获取角色列表 +func (r *Role) GetRoleList(c *gin.Context) { + var RoleRequest requests.RoleRequest + + 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) +} diff --git a/api/dao/adminMenu.go b/api/dao/adminMenu.go index 8391b7d..c5f80ac 100644 --- a/api/dao/adminMenu.go +++ b/api/dao/adminMenu.go @@ -5,10 +5,10 @@ import ( "hospital-admin-api/global" ) -type AdminMenu struct { +type AdminMenuDao struct { } -func (r *AdminMenu) GetAdminMenuList() (m []*model.AdminMenu, err error) { +func (r *AdminMenuDao) GetAdminMenuList() (m []*model.AdminMenu, err error) { err = global.Db.Find(&m).Error if err != nil { return nil, err @@ -16,7 +16,7 @@ func (r *AdminMenu) GetAdminMenuList() (m []*model.AdminMenu, err error) { return m, nil } -func (r *AdminMenu) GetAdminMenuListSortOrderNum() (m []*model.AdminMenu, err error) { +func (r *AdminMenuDao) GetAdminMenuListSortOrderNum() (m []*model.AdminMenu, err error) { err = global.Db.Order("order_num asc").Find(&m).Error if err != nil { return nil, err diff --git a/api/dao/adminMenuApi.go b/api/dao/adminMenuApi.go index a97c173..624a86c 100644 --- a/api/dao/adminMenuApi.go +++ b/api/dao/adminMenuApi.go @@ -5,12 +5,12 @@ import ( "hospital-admin-api/global" ) -type AdminMenuApi struct { +type AdminMenuApiDao struct { } // GetAdminMenuApiListByMenuID 获取菜单api-菜单id // menuId 菜单id -func (r *AdminMenuApi) GetAdminMenuApiListByMenuID(menuId int64) (m []*model.AdminMenuApi, err error) { +func (r *AdminMenuApiDao) GetAdminMenuApiListByMenuID(menuId int64) (m []*model.AdminMenuApi, err error) { err = global.Db.Where("menu_id = ?", menuId).Preload("API").Find(&m).Error if err != nil { return nil, err diff --git a/api/dao/adminRole.go b/api/dao/adminRole.go index aa52d18..b9f6dfb 100644 --- a/api/dao/adminRole.go +++ b/api/dao/adminRole.go @@ -5,15 +5,34 @@ import ( "hospital-admin-api/global" ) -type AdminRole struct { +type AdminRoleDao struct { } // GetAdminRoleFirstById 角色id获取用户角色 // roleId 角色id -func (r *AdminRole) GetAdminRoleFirstById(roleId int64) (m model.AdminRole, err error) { +func (r *AdminRoleDao) GetAdminRoleFirstById(roleId int64) (m model.AdminRole, err error) { err = global.Db.First(&m, roleId).Error if err != nil { return m, err } return m, nil } + +// GetAdminRolePageSearch 搜索角色列表-分页 +func (r *AdminRoleDao) GetAdminRolePageSearch(roleName string, page, pageSize int) (m []model.AdminRole, err error) { + // 计算偏移量 + offset := (page - 1) * pageSize + + if roleName != "" { + err = global.Db.Where("role_name = ?", roleName).Offset(offset).Limit(pageSize).Find(&m).Error + if err != nil { + return m, err + } + } else { + err = global.Db.Offset(offset).Limit(pageSize).Find(&m).Error + if err != nil { + return m, err + } + } + return m, nil +} diff --git a/api/dao/adminRoleMenu.go b/api/dao/adminRoleMenu.go index 554d231..f561b7c 100644 --- a/api/dao/adminRoleMenu.go +++ b/api/dao/adminRoleMenu.go @@ -5,12 +5,12 @@ import ( "hospital-admin-api/global" ) -type AdminRoleMenu struct { +type AdminRoleMenuDao struct { } // GetAdminRoleMenuListByRoleId 获取角色菜单-角色id // roleId 角色id -func (r *AdminRoleMenu) GetAdminRoleMenuListByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) { +func (r *AdminRoleMenuDao) GetAdminRoleMenuListByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) { err = global.Db.Where("role_id = ?", roleId).Find(&m).Error if err != nil { return nil, err @@ -19,7 +19,7 @@ func (r *AdminRoleMenu) GetAdminRoleMenuListByRoleId(roleId int64) (m []*model.A } // GetAdminRoleMenuListWithMenuByRoleId 获取角色菜单 -func (r *AdminRoleMenu) GetAdminRoleMenuListWithMenuByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) { +func (r *AdminRoleMenuDao) GetAdminRoleMenuListWithMenuByRoleId(roleId int64) (m []*model.AdminRoleMenu, err error) { err = global.Db.Where("role_id = ?", roleId).Preload("Menu").Find(&m).Error if err != nil { return nil, err diff --git a/api/dao/adminUser.go b/api/dao/adminUser.go index b0341ac..f6b9607 100644 --- a/api/dao/adminUser.go +++ b/api/dao/adminUser.go @@ -5,12 +5,12 @@ import ( "hospital-admin-api/global" ) -type AdminUser struct { +type AdminUserDao struct { } // GetAdminUserFirstById 获取用户数据-用户id // roleId 用户id -func (r *AdminUser) GetAdminUserFirstById(userId int64) (m model.AdminUser, err error) { +func (r *AdminUserDao) GetAdminUserFirstById(userId int64) (m model.AdminUser, err error) { err = global.Db.First(&m, userId).Error if err != nil { return m, err @@ -19,7 +19,7 @@ func (r *AdminUser) GetAdminUserFirstById(userId int64) (m model.AdminUser, err } // GetAdminUserFirstByAccess 获取用户数据-用户账号 -func (r *AdminUser) GetAdminUserFirstByAccess(username string) (m model.AdminUser, err error) { +func (r *AdminUserDao) GetAdminUserFirstByAccess(username string) (m model.AdminUser, err error) { err = global.Db.Where("access = ?", username).First(&m).Error if err != nil { return m, err diff --git a/api/middlewares/auth.go b/api/middlewares/auth.go index 4f34d05..367eb17 100644 --- a/api/middlewares/auth.go +++ b/api/middlewares/auth.go @@ -29,7 +29,7 @@ func Auth() gin.HandlerFunc { } // 获取用户数据 - AdminUserDao := dao.AdminUser{} + AdminUserDao := dao.AdminUserDao{} adminUser, err := AdminUserDao.GetAdminUserFirstById(userId) if err != nil || adminUser.UserID == 0 { responses.FailWithMessage("用户数据错误", c) @@ -50,7 +50,7 @@ func Auth() gin.HandlerFunc { } // 获取角色数据 - AdminRoleDao := dao.AdminRole{} + AdminRoleDao := dao.AdminRoleDao{} adminRole, err := AdminRoleDao.GetAdminRoleFirstById(roleId) if err != nil || adminRole.RoleId == 0 { responses.FailWithMessage("用户数据错误", c) @@ -65,7 +65,7 @@ func Auth() gin.HandlerFunc { } // 获取角色菜单id - AdminRoleMenuDao := dao.AdminRoleMenu{} + AdminRoleMenuDao := dao.AdminRoleMenuDao{} adminRoleMenu, _ := AdminRoleMenuDao.GetAdminRoleMenuListByRoleId(roleId) if adminRoleMenu == nil { c.JSON(http.StatusForbidden, gin.H{ @@ -80,7 +80,7 @@ func Auth() gin.HandlerFunc { var apiPermissions = make(map[string]bool) // 获取菜单对应api - AdminMenuApiDao := dao.AdminMenuApi{} + AdminMenuApiDao := dao.AdminMenuApiDao{} for _, v := range adminRoleMenu { AdminMenuApi, _ := AdminMenuApiDao.GetAdminMenuApiListByMenuID(v.MenuID) if AdminMenuApi == nil { diff --git a/api/model/adminMenu.go b/api/model/adminMenu.go index be8c5c9..5afa01a 100644 --- a/api/model/adminMenu.go +++ b/api/model/adminMenu.go @@ -7,7 +7,7 @@ type AdminMenu struct { MenuName string `gorm:"column:menu_name;type:varchar(30);comment:菜单名称" json:"menu_name"` ParentId int64 `gorm:"column:parent_id;type:int(10);default:0;comment:父菜单ID(0表示一级)" json:"parent_id"` MenuStatus int `gorm:"column:menu_status;type:tinyint(1);default:1;comment:菜单状态(0:隐藏 1:正常)此优先级最高" json:"menu_status"` - MenuType int `gorm:"column:menu_type;type:tinyint(1);comment:菜单类型(1:模块 2:菜单 2:按钮)" json:"menu_type"` + MenuType int `gorm:"column:menu_type;type:tinyint(1);comment:菜单类型(1:模块 2:菜单 3:按钮)" json:"menu_type"` Permission string `gorm:"column:permission;type:varchar(255);comment:标识" json:"permission"` OrderNum int `gorm:"column:order_num;type:int(4);default:0;comment:显示顺序" json:"order_num"` Icon string `gorm:"column:icon;type:varchar(255);comment:图标地址" json:"icon"` diff --git a/api/requests/basic.go b/api/requests/basic.go index c3ba7a3..81eebdf 100644 --- a/api/requests/basic.go +++ b/api/requests/basic.go @@ -1,6 +1,6 @@ package requests -type Basic struct { +type BasicRequest struct { Login // 登陆 } diff --git a/api/requests/role.go b/api/requests/role.go new file mode 100644 index 0000000..a6541f1 --- /dev/null +++ b/api/requests/role.go @@ -0,0 +1,12 @@ +package requests + +type RoleRequest struct { + GetRoleList // 获取角色列表 +} + +// GetRoleListRequest 获取角色列表 +type GetRoleList struct { + RoleName string `json:"role_name" form:"role_name" label:"角色名称"` + Page int `json:"page" form:"page" label:"页码"` + PageSize int `json:"page_size" form:"page_size" label:"每页个数"` +} diff --git a/api/responses/roleResponse/roleResponse.go b/api/responses/roleResponse/roleResponse.go index 601a8bd..3492235 100644 --- a/api/responses/roleResponse/roleResponse.go +++ b/api/responses/roleResponse/roleResponse.go @@ -6,7 +6,7 @@ type RoleMenuList struct { MenuName string `json:"menu_name"` // 菜单名称 ParentId int64 `json:"parent_id"` // 父菜单ID(0表示一级) MenuStatus int `json:"menu_status"` // 菜单状态(0:隐藏 1:正常)此优先级最高 - MenuType int `json:"menu_type"` // 菜单类型(1:模块 2:菜单 2:按钮) + MenuType int `json:"menu_type"` // 菜单类型(1:模块 2:菜单 3:按钮) Permission string `json:"permission"` // 标识 OrderNum int `json:"order_num"` // 显示顺序 Icon string `json:"icon"` // 图标地址 diff --git a/api/router/router.go b/api/router/router.go index 39cada2..5348765 100644 --- a/api/router/router.go +++ b/api/router/router.go @@ -74,5 +74,9 @@ func privateRouter(r *gin.Engine, api controller.Api) { { // 获取角色菜单列表 base1Group.GET("menu", api.Role.GetRoleMenuList) + + // 获取角色列表 + base1Group.GET("list", api.Role.GetRoleList) } + } diff --git a/api/service/basic.go b/api/service/basic.go index 9137d75..329a48b 100644 --- a/api/service/basic.go +++ b/api/service/basic.go @@ -10,19 +10,19 @@ import ( "hospital-admin-api/utils" ) -type Basic struct{} +type BasicService struct{} // Login 登陆 -func (b *Basic) Login(login requests.Login) (basicResponse.Login, error) { +func (b *BasicService) Login(LoginRequest requests.Login) (basicResponse.Login, error) { // 获取用户信息 - AdminUserDao := dao.AdminUser{} - adminUser, err := AdminUserDao.GetAdminUserFirstByAccess(login.Access) + AdminUserDao := dao.AdminUserDao{} + adminUser, err := AdminUserDao.GetAdminUserFirstByAccess(LoginRequest.Access) if err != nil || adminUser.UserID == 0 { return basicResponse.Login{}, errors.New("用户名或密码错误") } // 检测用户密码 - password := md5.Sum([]byte(login.Password + adminUser.Salt)) + password := md5.Sum([]byte(LoginRequest.Password + adminUser.Salt)) // 将哈希值转换为16进制字符串 passwordString := hex.EncodeToString(password[:]) diff --git a/api/service/role.go b/api/service/role.go index 19581c3..aa2d6d0 100644 --- a/api/service/role.go +++ b/api/service/role.go @@ -6,18 +6,18 @@ import ( "hospital-admin-api/api/responses/roleResponse" ) -type Role struct{} +type RoleService struct{} // GetRoleMenuList 获取角色菜单 -func (r *Role) GetRoleMenuList(roleId int64) ([]*roleResponse.RoleMenuList, error) { - AdminRoleMenuDao := dao.AdminRoleMenu{} +func (r *RoleService) GetRoleMenuList(roleId int64) ([]*roleResponse.RoleMenuList, error) { + AdminRoleMenuDao := dao.AdminRoleMenuDao{} adminRoleMenu, _ := AdminRoleMenuDao.GetAdminRoleMenuListByRoleId(roleId) if adminRoleMenu == nil { return []*roleResponse.RoleMenuList{}, nil } // 获取全部菜单 - AdminMenuDao := dao.AdminMenu{} + AdminMenuDao := dao.AdminMenuDao{} adminMenu, _ := AdminMenuDao.GetAdminMenuListSortOrderNum() if adminMenu == nil { return []*roleResponse.RoleMenuList{}, nil @@ -38,7 +38,7 @@ func (r *Role) GetRoleMenuList(roleId int64) ([]*roleResponse.RoleMenuList, erro return menuTree, nil } -// 构建菜单树 +// 获取角色菜单-构建菜单树 func buildMenuTree(menuIds []int64, menuData []*model.AdminMenu) []*roleResponse.RoleMenuList { menuMap := make(map[int64]*roleResponse.RoleMenuList) rootNodes := make([]*roleResponse.RoleMenuList, 0) diff --git a/api/service/user.go b/api/service/user.go index b37ffc9..73fe424 100644 --- a/api/service/user.go +++ b/api/service/user.go @@ -1,4 +1,4 @@ package service -type AdminUser struct { +type AdminUserService struct { }