378 lines
8.0 KiB
Go
378 lines
8.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/config"
|
|
"hospital-admin-api/consts"
|
|
"net/http"
|
|
)
|
|
|
|
// Init 初始化路由
|
|
func Init() *gin.Engine {
|
|
r := gin.New()
|
|
|
|
// 环境设置
|
|
if config.C.Env == "prod" {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
}
|
|
|
|
// 获取请求参数中间件-json格式下会导致接口获取不到请求数据
|
|
r.Use(middlewares.RequestParamsMiddleware())
|
|
|
|
// 日志中间件
|
|
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.ClientHttpNotFound,
|
|
"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)
|
|
|
|
// 公共路由-验证权限
|
|
adminRouter(r, api)
|
|
|
|
// 基础数据-验证权限
|
|
basicRouter(r, api)
|
|
|
|
return r
|
|
}
|
|
|
|
// publicRouter 公开路由-不验证权限
|
|
func publicRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
// 验证码
|
|
adminGroup.GET("/captcha", api.Admin.GetCaptcha)
|
|
|
|
// 登陆
|
|
adminGroup.POST("/login", api.Admin.Login)
|
|
}
|
|
|
|
// adminRouter 公共路由-验证权限
|
|
func adminRouter(r *gin.Engine, api controller.Api) {
|
|
// 签名
|
|
signGroup := r.Group("/sign")
|
|
{
|
|
// 获取oss签名
|
|
signGroup.GET("/oss", api.Admin.GetOssSign)
|
|
}
|
|
|
|
// 解密
|
|
decryptGroup := r.Group("/decrypt")
|
|
{
|
|
cardGroup := decryptGroup.Group("/card")
|
|
{
|
|
// 获取解密身份证号
|
|
cardGroup.GET("/num", api.Admin.GetDecryptCardNum)
|
|
}
|
|
|
|
// 获取解密银行卡号
|
|
decryptGroup.GET("/bank/:doctor_id", api.Admin.GetDecryptBank)
|
|
}
|
|
}
|
|
|
|
// basicRouter 基础数据-验证权限
|
|
func basicRouter(r *gin.Engine, api controller.Api) {
|
|
basicGroup := r.Group("/basic")
|
|
|
|
// 科室管理-基础数据
|
|
departmentGroup := basicGroup.Group("/department")
|
|
{
|
|
// 自定义科室
|
|
customGroup := departmentGroup.Group("/custom")
|
|
{
|
|
// 获取自定义科室列表
|
|
customGroup.GET("/list", api.Department.GetDepartmentCustomList)
|
|
}
|
|
}
|
|
|
|
// 医院管理-基础数据
|
|
hospitalGroup := basicGroup.Group("/hospital")
|
|
{
|
|
// 获取医院列表-限制条数
|
|
hospitalGroup.GET("/list", api.Hospital.GetHospitalLimit)
|
|
}
|
|
|
|
// 专长管理-基础数据
|
|
expertiseGroup := basicGroup.Group("/expertise")
|
|
{
|
|
// 获取专长列表
|
|
expertiseGroup.GET("/list", api.DiseaseClassExpertise.GetExpertiseList)
|
|
|
|
// 获取专长列表-分页
|
|
|
|
// 专长详情
|
|
|
|
// 修改专长
|
|
|
|
// 新增专长
|
|
}
|
|
|
|
// 银行管理-基础数据
|
|
bankGroup := basicGroup.Group("/bank")
|
|
{
|
|
// 获取银行列表
|
|
bankGroup.GET("/list", api.Bank.GetBankList)
|
|
|
|
// 获取银行列表-分页
|
|
|
|
// 银行详情
|
|
|
|
// 修改银行
|
|
|
|
// 新增银行
|
|
}
|
|
|
|
// 地区管理-基础数据
|
|
areaGroup := basicGroup.Group("/area")
|
|
{
|
|
// 获取地区列表
|
|
areaGroup.GET("/list", api.Area.GetAreaList)
|
|
|
|
// 获取地区列表-分页
|
|
|
|
// 地区详情
|
|
|
|
// 修改地区
|
|
|
|
// 新增地区
|
|
}
|
|
}
|
|
|
|
// privateRouter 私有路由-验证权限
|
|
func privateRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
|
|
// 角色
|
|
roleGroup := adminGroup.Group("/role")
|
|
{
|
|
// 获取角色列表-分页
|
|
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)
|
|
|
|
// 获取角色列表
|
|
roleGroup.GET("/list", api.Role.GetRoleList)
|
|
}
|
|
|
|
// 菜单
|
|
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)
|
|
|
|
// 获取用户菜单列表
|
|
userGroup.GET("/menu", api.User.GetUserMenuList)
|
|
|
|
// 获取用户按钮列表
|
|
userGroup.GET("/button", api.User.GetUserButtonList)
|
|
}
|
|
|
|
// 接口
|
|
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)
|
|
|
|
// 获取岗位列表
|
|
postGroup.GET("/list", api.Post.GetPostList)
|
|
}
|
|
|
|
// 医生管理
|
|
doctorGroup := adminGroup.Group("/doctor")
|
|
{
|
|
// 获取医生列表-分页
|
|
doctorGroup.GET("", api.UserDoctor.GetUserDoctorPage)
|
|
|
|
// 医生详情
|
|
doctorGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctor)
|
|
|
|
// 修改医生
|
|
doctorGroup.PUT("/:doctor_id", api.UserDoctor.PutUserDoctor)
|
|
|
|
// 新增医生
|
|
doctorGroup.POST("", api.UserDoctor.AddUserDoctor)
|
|
|
|
// 身份审核列表
|
|
doctorPendingGroup := doctorGroup.Group("/pending")
|
|
{
|
|
// 身份审核-获取医生列表-分页
|
|
doctorPendingGroup.GET("", api.UserDoctor.GetUserDoctorPendingPage)
|
|
|
|
// 身份审核-医生详情
|
|
doctorPendingGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctorPending)
|
|
|
|
// 身份审核-审核医生
|
|
doctorPendingGroup.PUT("/:doctor_id", api.UserDoctor.PutUserDoctorPending)
|
|
}
|
|
|
|
// 多点列表
|
|
doctorMultiGroup := doctorGroup.Group("/multi")
|
|
{
|
|
// 多点-获取医生列表-分页
|
|
doctorMultiGroup.GET("", api.UserDoctor.GetMultiPage)
|
|
|
|
// 多点-医生详情
|
|
doctorMultiGroup.GET("/:doctor_id", api.UserDoctor.GetMulti)
|
|
|
|
// 多点-审核医生
|
|
doctorMultiGroup.PUT("/:doctor_id", api.UserDoctor.PutMulti)
|
|
}
|
|
}
|
|
|
|
// 订单管理
|
|
orderGroup := adminGroup.Group("/order")
|
|
{
|
|
// 问诊订单
|
|
inquiryGroup := orderGroup.Group("/inquiry")
|
|
{
|
|
// 获取问诊订单列表-分页
|
|
inquiryGroup.GET("", api.OrderInquiry.GetOrderInquiryPage)
|
|
|
|
// 问诊订单详情
|
|
inquiryGroup.GET("/:order_inquiry_id", api.OrderInquiry.GetOrderInquiry)
|
|
|
|
// 删除问诊订单
|
|
inquiryGroup.DELETE("/:order_inquiry_id", api.OrderInquiry.DeleteOrderInquiry)
|
|
|
|
// 取消问诊订单
|
|
inquiryGroup.PUT("/:order_inquiry_id", api.OrderInquiry.CancelOrderInquiry)
|
|
}
|
|
}
|
|
}
|