366 lines
8.8 KiB
Go
366 lines
8.8 KiB
Go
package router
|
|
|
|
import (
|
|
"case-admin-api/api/controller"
|
|
"case-admin-api/api/exception"
|
|
"case-admin-api/api/middlewares"
|
|
"case-admin-api/config"
|
|
"case-admin-api/consts"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"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.POST("/login", api.Public.Login)
|
|
|
|
// 验证码
|
|
adminGroup.GET("/captcha", api.Public.GetCaptcha)
|
|
|
|
// 配置
|
|
systemGroup := adminGroup.Group("/system")
|
|
{
|
|
// 编辑器配置
|
|
editorGroup := systemGroup.Group("/editor")
|
|
{
|
|
// 编辑器-获取配置
|
|
editorGroup.GET("", api.Editor.GetEditorConfig)
|
|
}
|
|
}
|
|
}
|
|
|
|
// adminRouter 公共路由-验证权限
|
|
func adminRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
|
|
// 签名
|
|
signGroup := adminGroup.Group("/sign")
|
|
{
|
|
// 获取oss签名
|
|
signGroup.GET("/oss", api.Public.GetOssSign)
|
|
}
|
|
|
|
}
|
|
|
|
// basicRouter 基础数据-验证权限
|
|
func basicRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
|
|
basicGroup := adminGroup.Group("/basic")
|
|
|
|
// 获取省份
|
|
basicGroup.GET("/area", api.Basic.GetArea)
|
|
|
|
// 获取医院等级
|
|
basicGroup.GET("/level", api.Basic.GetHospitalLevel)
|
|
|
|
// 获取医生职称
|
|
basicGroup.GET("/title", api.Basic.GetDoctorTitle)
|
|
|
|
// 获取医院科室
|
|
basicGroup.GET("/department", api.Basic.GetHospitalDepartment)
|
|
}
|
|
|
|
// privateRouter 私有路由-验证权限
|
|
func privateRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
|
|
// 项目
|
|
projectGroup := adminGroup.Group("/project")
|
|
{
|
|
// 获取列表-分页
|
|
projectGroup.GET("/page", api.Project.GetProjectPage)
|
|
|
|
// 获取详情
|
|
projectGroup.GET("/:project_id", api.Project.GetProject)
|
|
|
|
// 修改
|
|
projectGroup.PUT("/:project_id", api.Project.PutProject)
|
|
|
|
// 操作状态
|
|
projectGroup.PUT("/status/:project_id", api.Project.PutProjectStatus)
|
|
|
|
// 新增
|
|
projectGroup.POST("", api.Project.AddProject)
|
|
|
|
// 平台
|
|
projectPlatformGroup := projectGroup.Group("/platform")
|
|
{
|
|
// 获取列表-分页
|
|
projectPlatformGroup.GET("/page", api.ProjectPlatform.GetProjectPlatformPage)
|
|
|
|
// 获取详情
|
|
projectPlatformGroup.GET("/:project_platform_id", api.ProjectPlatform.GetProjectPlatform)
|
|
|
|
// 操作状态
|
|
projectPlatformGroup.PUT("/status/:project_platform_id", api.ProjectPlatform.PutProjectPlatformStatus)
|
|
|
|
// 新增
|
|
projectPlatformGroup.POST("", api.ProjectPlatform.AddProjectPlatform)
|
|
|
|
// 修改
|
|
projectPlatformGroup.PUT("/:project_platform_id", api.ProjectPlatform.PutProjectPlatform)
|
|
}
|
|
}
|
|
|
|
// 平台
|
|
platformGroup := adminGroup.Group("/platform")
|
|
{
|
|
// 获取列表-分页
|
|
platformGroup.GET("/page", api.Platform.GetPlatformPage)
|
|
|
|
// 获取列表
|
|
platformGroup.GET("/list", api.Platform.GetPlatformList)
|
|
|
|
// 获取详情
|
|
platformGroup.GET("/:platform_id", api.Platform.GetPlatform)
|
|
|
|
// 操作状态
|
|
platformGroup.PUT("/status/:platform_id", api.Platform.PutPlatformStatus)
|
|
|
|
// 新增
|
|
platformGroup.POST("", api.Platform.AddPlatform)
|
|
|
|
// 修改
|
|
platformGroup.PUT("/:platform_id", api.Platform.PutPlatform)
|
|
}
|
|
|
|
// 平台白名单
|
|
whiteGroup := adminGroup.Group("/white")
|
|
{
|
|
// 医院
|
|
hospitalGroup := whiteGroup.Group("/hospital")
|
|
{
|
|
// 获取列表-分页
|
|
hospitalGroup.GET("/page", api.ProjectPlatformHospital.GetProjectPlatformHospitalPage)
|
|
|
|
// 操作状态
|
|
hospitalGroup.PUT("/status/:white_hospital_id", api.ProjectPlatformHospital.PutProjectPlatformHospitalStatus)
|
|
|
|
// 新增
|
|
hospitalGroup.POST("", api.ProjectPlatformHospital.AddProjectPlatformHospital)
|
|
|
|
// 删除
|
|
hospitalGroup.DELETE("/:white_hospital_id", api.ProjectPlatformHospital.DeleteProjectPlatformHospital)
|
|
|
|
// 导出
|
|
hospitalGroup.POST("/export", api.ProjectPlatformHospital.ExportProjectPlatformHospital)
|
|
|
|
// 查询app医院
|
|
hospitalGroup.GET("/search", api.ProjectPlatformHospital.GetProjectPlatformHospitalList)
|
|
}
|
|
|
|
// 医生
|
|
doctorGroup := whiteGroup.Group("/doctor")
|
|
{
|
|
// 获取列表-分页
|
|
doctorGroup.GET("/page", api.ProjectPlatformDoctor.GetProjectPlatformDoctorPage)
|
|
|
|
// 操作状态
|
|
doctorGroup.PUT("/status/:white_doctor_id", api.ProjectPlatformDoctor.PutProjectPlatformDoctorStatus)
|
|
|
|
// 新增
|
|
doctorGroup.POST("", api.ProjectPlatformDoctor.AddProjectPlatformDoctor)
|
|
|
|
// 删除
|
|
doctorGroup.DELETE("/:white_doctor_id", api.ProjectPlatformDoctor.DeleteProjectPlatformDoctor)
|
|
|
|
// 导出---
|
|
doctorGroup.POST("/export", api.ProjectPlatformDoctor.ExportProjectPlatformDoctor)
|
|
|
|
// 查询app医生
|
|
doctorGroup.GET("/search", api.ProjectPlatformDoctor.GetProjectPlatformDoctorList)
|
|
}
|
|
|
|
// 动态
|
|
dynamicGroup := whiteGroup.Group("/dynamic")
|
|
{
|
|
// 获取列表
|
|
dynamicGroup.GET("", api.ProjectPlatformDynamic.GetProjectPlatformDynamic)
|
|
|
|
// 新增
|
|
dynamicGroup.POST("", api.ProjectPlatformDynamic.AddProjectPlatformDynamic)
|
|
|
|
// 修改
|
|
dynamicGroup.PUT("/:white_dynamic_id", api.ProjectPlatformDynamic.PutProjectPlatformDynamic)
|
|
}
|
|
}
|
|
|
|
// 用户
|
|
userGroup := adminGroup.Group("/user")
|
|
{
|
|
// 后台用户
|
|
userAdminGroup := userGroup.Group("/admin")
|
|
{
|
|
// 获取列表-分页
|
|
userAdminGroup.GET("/page", api.AdminUser.GetAdminUserPage)
|
|
|
|
// 用户详情
|
|
userAdminGroup.GET("/:user_id", api.AdminUser.GetAdminUser)
|
|
|
|
// 新增
|
|
userAdminGroup.POST("", api.AdminUser.AddAdminUser)
|
|
|
|
// 修改
|
|
userAdminGroup.PUT("/:user_id", api.AdminUser.PutAdminUser)
|
|
|
|
// 修改状态
|
|
userAdminGroup.PUT("/status/:user_id", api.AdminUser.PutAdminUserStatus)
|
|
|
|
// 修改禁用状态
|
|
userAdminGroup.PUT("/disabled/:user_id", api.AdminUser.PutAdminUserDisabled)
|
|
|
|
// 修改密码
|
|
userAdminGroup.PUT("/password/:user_id", api.AdminUser.PutAdminUserPassword)
|
|
|
|
// 退出登陆
|
|
userAdminGroup.PUT("loginout", api.AdminUser.LoginOut)
|
|
|
|
// 删除用户-批量
|
|
userAdminGroup.PUT("", api.AdminUser.DeleteAdminUser)
|
|
}
|
|
}
|
|
|
|
// 病例列表
|
|
caseGroup := adminGroup.Group("/case")
|
|
{
|
|
// 获取列表-分页
|
|
caseGroup.POST("/page", api.Case.GetCasePage)
|
|
|
|
// 获取详情
|
|
caseGroup.GET("/:case_id", api.Case.GetCase)
|
|
|
|
// 操作状态
|
|
caseGroup.PUT("/status/:case_id", api.Case.PutCaseStatus)
|
|
|
|
// 新增
|
|
caseGroup.POST("", api.Case.AddCase)
|
|
|
|
// 修改
|
|
caseGroup.PUT("/:case_id", api.Case.PutCase)
|
|
|
|
// 评论
|
|
commentGroup := caseGroup.Group("/comment")
|
|
{
|
|
// 获取列表-分页
|
|
commentGroup.GET("/page", api.CaseComment.GetCaseCommentPage)
|
|
|
|
// 操作状态
|
|
commentGroup.PUT("/status/:comment_id", api.CaseComment.PutCaseCommentStatus)
|
|
|
|
// 修改评论内容
|
|
commentGroup.PUT("/content/:comment_id", api.CaseComment.PutCaseCommentContent)
|
|
|
|
// 设置优质评论
|
|
commentGroup.POST("/high/:comment_id", api.CaseComment.AddCaseCommentHighQuality)
|
|
}
|
|
|
|
// 病例明细
|
|
caseItemGroup := caseGroup.Group("/item")
|
|
{
|
|
// 新增
|
|
caseItemGroup.POST("", api.CaseItem.AddCaseItem)
|
|
|
|
// 修改
|
|
caseItemGroup.PUT("/:case_item_id", api.CaseItem.PutCaseItem)
|
|
|
|
// 删除
|
|
caseItemGroup.DELETE("/:case_item_id", api.CaseItem.DeleteCaseItem)
|
|
}
|
|
}
|
|
|
|
// 统计
|
|
statsGroup := adminGroup.Group("/stats")
|
|
{
|
|
// 获取列表-分页-病例-平台
|
|
statsGroup.GET("/platform/page", api.StatsCase.GetStatsCasePlatformPage)
|
|
|
|
// 获取列表-分页-病例-用户
|
|
statsGroup.GET("/user/page", api.StatsCase.GetStatsCaseUserPage)
|
|
|
|
// 获取列表-分页-病例-用户-导出
|
|
statsGroup.POST("/user/export", api.StatsCase.ExportStatsCaseUser)
|
|
}
|
|
|
|
// 配置
|
|
systemGroup := adminGroup.Group("/system")
|
|
{
|
|
// 编辑器配置
|
|
editorGroup := systemGroup.Group("/editor")
|
|
{
|
|
// 编辑器-上传
|
|
editorGroup.POST("", api.Editor.EditorUpload)
|
|
}
|
|
}
|
|
|
|
// 导出
|
|
exportGroup := adminGroup.Group("/export")
|
|
{
|
|
// 用户参与记录导出
|
|
exportGroup.POST("/record", api.Export.ExportUserRecord)
|
|
}
|
|
}
|