新增获取角色列表,调整文件结构

This commit is contained in:
wucongxing 2023-06-13 08:48:07 +08:00
parent c4d8dd6791
commit 4a9c5b9c4d
16 changed files with 111 additions and 38 deletions

View File

@ -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

View File

@ -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)
}

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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 {

View File

@ -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:父菜单ID0表示一级" 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"`

View File

@ -1,6 +1,6 @@
package requests
type Basic struct {
type BasicRequest struct {
Login // 登陆
}

12
api/requests/role.go Normal file
View File

@ -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:"每页个数"`
}

View File

@ -6,7 +6,7 @@ type RoleMenuList struct {
MenuName string `json:"menu_name"` // 菜单名称
ParentId int64 `json:"parent_id"` // 父菜单ID0表示一级
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"` // 图标地址

View File

@ -74,5 +74,9 @@ func privateRouter(r *gin.Engine, api controller.Api) {
{
// 获取角色菜单列表
base1Group.GET("menu", api.Role.GetRoleMenuList)
// 获取角色列表
base1Group.GET("list", api.Role.GetRoleList)
}
}

View File

@ -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[:])

View File

@ -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)

View File

@ -1,4 +1,4 @@
package service
type AdminUser struct {
type AdminUserService struct {
}