202 lines
4.0 KiB
Go

package router
import (
"fmt"
"github.com/gin-gonic/gin"
"hospital-admin-api/api/controller"
"hospital-admin-api/api/exception"
"hospital-admin-api/api/middlewares"
"hospital-admin-api/consts"
"net/http"
)
// Init 初始化路由
func Init() *gin.Engine {
r := gin.New()
r.Use(middlewares.Logrus())
r.Use(gin.Recovery())
// 404处理
r.NoRoute(func(c *gin.Context) {
path := c.Request.URL.Path
method := c.Request.Method
c.JSON(http.StatusNotFound, gin.H{
"msg": fmt.Sprintf("%s %s not found", method, path),
"code": consts.CLIENT_HTTP_NOT_FOUND,
"data": "",
})
})
// 异常处理
r.Use(exception.Recover())
// 跨域处理
r.Use(middlewares.Cors())
// 加载基础路由
api := controller.Api{}
// 公开路由-不验证权限
publicRouter(r, api)
// 验证jwt
r.Use(middlewares.Jwt())
// 验证权限
r.Use(middlewares.Auth())
// 注册私有路由
privateRouter(r, api)
return r
}
// publicRouter 公开路由-不验证权限
func publicRouter(r *gin.Engine, api controller.Api) {
adminGroup := r.Group("/admin")
basicGroup := adminGroup.Group("/basic")
{
// 验证码
basicGroup.GET("captcha", api.Basic.GetCaptcha)
// 登陆
basicGroup.POST("login", api.Basic.Login)
}
}
// privateRouter 私有路由
func privateRouter(r *gin.Engine, api controller.Api) {
adminGroup := r.Group("/admin")
// 角色
roleGroup := adminGroup.Group("/role")
{
// 获取登陆角色菜单列表
roleGroup.GET("menu", api.Role.GetRoleMenuList)
// 获取角色列表-分页
roleGroup.GET("", api.Role.GetRolePage)
// 角色禁用/启用
roleGroup.PUT("status/:id", api.Role.PutRoleStatus)
// 角色新增
roleGroup.POST("", api.Role.AddRole)
// 角色详情
roleGroup.GET("/:role_id", api.Role.GetRole)
// 角色修改
roleGroup.PUT("/:role_id", api.Role.PutRole)
// 删除角色-批量
roleGroup.DELETE("", api.Role.DeleteRole)
}
// 菜单
menuGroup := adminGroup.Group("/menu")
{
// 获取全部菜单列表
menuGroup.GET("", api.Menu.GetMenuList)
// 新增菜单
menuGroup.POST("", api.Menu.AddMenu)
// 修改菜单
menuGroup.PUT("/:menu_id", api.Menu.PutMenu)
// 删除菜单-批量
menuGroup.DELETE("", api.Menu.DeleteMenu)
// 菜单详情
menuGroup.GET("/:menu_id", api.Menu.GetMenu)
}
// 用户
userGroup := adminGroup.Group("/user")
{
// 获取用户列表-分页
userGroup.GET("", api.User.GetUserPage)
// 新增用户
userGroup.POST("", api.User.AddUser)
// 用户详情
userGroup.GET("/:user_id", api.User.GetUser)
// 删除用户-批量
userGroup.DELETE("", api.User.DeleteUser)
// 修改用户
userGroup.PUT("/:user_id", api.User.PutUser)
// 修改用户密码
userGroup.PUT("/password", api.User.PutUserPassword)
// 退出登陆
userGroup.PUT("loginout", api.User.LoginOut)
}
// 接口
apiGroup := adminGroup.Group("/api")
{
// 获取接口列表-分页
apiGroup.GET("", api.AdminApi.GetApiPage)
// 获取接口列表
apiGroup.GET("/list", api.AdminApi.GetApiList)
// 新增接口
apiGroup.POST("", api.AdminApi.AddApi)
// 接口详情
apiGroup.GET("/:api_id", api.AdminApi.GetApi)
// 删除接口-批量
apiGroup.DELETE("", api.AdminApi.DeleteApi)
// 修改接口
apiGroup.PUT("/:api_id", api.AdminApi.PutApi)
}
// 部门
deptGroup := adminGroup.Group("/dept")
{
// 获取部门列表
deptGroup.GET("", api.Dept.GetDeptList)
// 新增部门
deptGroup.POST("", api.Dept.AddDept)
// 部门详情
deptGroup.GET("/:dept_id", api.Dept.GetDept)
// 删除部门-批量
deptGroup.DELETE("", api.Dept.DeleteDept)
// 修改部门
deptGroup.PUT("/:dept_id", api.Dept.PutDept)
}
// 岗位
postGroup := adminGroup.Group("/post")
{
// 获取岗位列表-分页
postGroup.GET("", api.Post.GetPostPage)
// 新增岗位
postGroup.POST("", api.Post.AddPost)
// 岗位详情
postGroup.GET("/:post_id", api.Post.GetPost)
// 删除岗位-批量
postGroup.DELETE("", api.Post.DeletePost)
// 修改岗位
postGroup.PUT("/:post_id", api.Post.PutPost)
}
}