859 lines
21 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.Public.GetCaptcha)
// 登陆
adminGroup.POST("/login", api.Public.Login)
// 基础数据
basicGroup := adminGroup.Group("/basic")
{
// 地区管理-基础数据
areaGroup := basicGroup.Group("/area")
{
// 获取地区列表
areaGroup.GET("/list", api.Basic.Area.GetAreaList)
// 修改地区
// 新增地区
}
}
}
// 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)
// 解密药品订单收货人数据
decryptGroup.GET("/order/product/consignee/:order_product_id", api.Admin.GetDecryptOrderProductConsignee)
// 解密手机号
decryptGroup.GET("/mobile", api.Admin.GetDecryptMobile)
}
}
// 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.GetHospitalList)
}
// 专长管理-基础数据
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.Basic.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.AdminUser.GetUserPage)
// 新增用户
userGroup.POST("", api.AdminUser.AddUser)
// 用户详情
userGroup.GET("/:user_id", api.AdminUser.GetUser)
// 删除用户-批量
userGroup.DELETE("", api.AdminUser.DeleteUser)
// 修改用户
userGroup.PUT("/:user_id", api.AdminUser.PutUser)
// 修改用户密码
userGroup.PUT("/password", api.AdminUser.PutUserPassword)
// 退出登陆
userGroup.PUT("loginout", api.AdminUser.LoginOut)
// 获取用户菜单列表
userGroup.GET("/menu", api.AdminUser.GetUserMenuList)
// 获取用户按钮列表
userGroup.GET("/button", api.AdminUser.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("/list", api.UserDoctor.GetUserDoctorList)
// 医生详情
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)
}
// 银行卡管理
bankGroup := doctorGroup.Group("/bank")
{
// 获取医生银行卡列表-分页
bankGroup.GET("", api.UserDoctor.GetUserDoctorBankCardPage)
}
// 医生账户
accountGroup := doctorGroup.Group("/account")
{
// 获取医生账户列表-分页
accountGroup.GET("", api.DoctorAccount.GetDoctorAccountPage)
// 医生账户详情
accountGroup.GET("/:doctor_id", api.DoctorAccount.GetDoctorAccount)
// 获取医生账户关联订单列表-分页
accountGroup.GET("/order", api.OrderInquiry.GetOrderInquiryForAccountPage)
}
// 简介审核列表
doctorIntroductionGroup := doctorGroup.Group("/introduction")
{
// 简介审核-获取医生列表-分页
doctorIntroductionGroup.GET("", api.UserDoctor.GetDoctorIntroductionPage)
// 简介审核-医生详情
doctorIntroductionGroup.GET("/:doctor_id", api.UserDoctor.GetUserDoctorIntroduction)
// 简介审核-审核医生
doctorIntroductionGroup.PUT("/:doctor_id", api.UserDoctor.PutDoctorIntroduction)
}
}
// 订单管理
orderGroup := adminGroup.Group("/order")
{
// 问诊订单
inquiryGroup := orderGroup.Group("/inquiry")
{
// 获取问诊订单列表-分页
inquiryGroup.GET("", api.OrderInquiry.GetOrderInquiryPage)
// 问诊订单详情
inquiryGroup.GET("/:order_inquiry_id", api.OrderInquiry.GetOrderInquiry)
// 取消问诊订单
inquiryGroup.PUT("/cancel/:order_inquiry_id", api.OrderInquiry.CancelOrderInquiry)
// 获取问诊订单im内容列表-分页
inquiryGroup.GET("/im", api.OrderInquiry.GetOrderInquiryImPage)
}
// 药品订单
productGroup := orderGroup.Group("/product")
{
// 获取药品订单列表-分页
productGroup.GET("", api.OrderProduct.GetOrderProductPage)
// 药品订单详情
productGroup.GET("/:order_product_id", api.OrderProduct.GetOrderProduct)
// 取消药品订单
productGroup.PUT("/cancel/:order_product_id", api.OrderProduct.CancelOrderProduct)
}
// 上报数据
reportGroup := orderGroup.Group("/report")
{
// 上报处方平台
reportGroup.POST("/pre/:order_product_id", api.Order.ReportPreOrder)
// 上报监管平台
}
// 问诊记录-继承问诊订单路由
inquiryRecordGroup := inquiryGroup.Group("/record")
{
// 获取问诊记录列表-分页
inquiryRecordGroup.GET("", api.OrderInquiry.GetOrderInquiryRecordPage)
// 问诊记录详情
inquiryRecordGroup.GET("/:order_inquiry_id", api.OrderInquiry.GetOrderInquiryRecord)
}
// 服务包订单
serviceGroup := orderGroup.Group("/service")
{
// 获取服务包订单列表-分页
serviceGroup.POST("/page", api.OrderServicePackage.GetOrderServicePackagePage)
// 获取服务包订单详情
serviceGroup.GET("/:order_service_id", api.OrderServicePackage.GetOrderServicePackage)
// 获取服务包订单服务权益详情
serviceGroup.GET("/detail/:order_service_id", api.OrderServicePackage.GetOrderServicePackageDetailInfo)
// 取消服务包订单
serviceGroup.PUT("/cancel/:order_service_id", api.OrderServicePackage.CancelOrderServicePackage)
}
}
// 病例管理
caseGroup := adminGroup.Group("/case")
{
// 问诊病例
caseInquiryGroup := caseGroup.Group("/inquiry")
{
// 问诊病例详情
caseInquiryGroup.GET("/:inquiry_case_id", api.Case.GetOrderInquiryCase)
// 上报监管平台
}
// 检测病例
}
// 患者管理
patientGroup := adminGroup.Group("/patient")
{
// 获取患者列表-分页
patientGroup.GET("", api.UserPatient.GetUserPatientPage)
// 获取患者列表-限制条数
patientGroup.GET("/list", api.UserPatient.GetUserPatientList)
// 患者详情
patientGroup.GET("/:patient_id", api.UserPatient.GetUserPatient)
// 修改患者状态
patientGroup.PUT("/status/:patient_id", api.UserPatient.PutUserDoctorStatus)
// 就诊人管理
patientFamilyGroup := patientGroup.Group("/family")
{
// 获取就诊人列表-分页
patientFamilyGroup.GET("", api.PatientFamily.GetPatientFamilyPage)
// 就诊人详情
patientFamilyGroup.GET("/:family_id", api.PatientFamily.GetPatientFamily)
}
}
// 处方管理
prescriptionGroup := adminGroup.Group("/prescription")
{
// 获取处方列表-分页
prescriptionGroup.GET("", api.OrderPrescription.GetOrderPrescriptionPage)
// 处方详情
prescriptionGroup.GET("/:order_prescription_id", api.OrderPrescription.GetOrderPrescription)
}
// 问诊管理
inquiryGroup := adminGroup.Group("/inquiry")
{
// 医生问诊配置
doctorGroup := inquiryGroup.Group("/doctor")
{
// 获取开启问诊配置医生列表-分页
doctorGroup.GET("/page", api.InquiryConfig.GetDoctorInquiryConfigPage)
// 医生问诊配置详情
doctorGroup.GET("", api.InquiryConfig.GetDoctorInquiryConfig)
// 修改医生问诊配置
doctorGroup.PUT("/:inquiry_config_id", api.InquiryConfig.PutDoctorInquiryConfig)
// 新增医生问诊配置
doctorGroup.POST("", api.InquiryConfig.AddDoctorInquiryConfig)
// 医生健康包配置
healthGroup := doctorGroup.Group("/health")
{
// 获取开启健康包服务的医生-分页
healthGroup.GET("", api.DoctorConfigHealthPackage.GetDoctorHealthPage)
// 医生健康包配置详情
healthGroup.GET("/:health_package_id", api.DoctorConfigHealthPackage.GetDoctorHealth)
// 修改医生健康包配置
healthGroup.PUT("/:health_package_id", api.DoctorConfigHealthPackage.PutDoctorHealth)
// 新增医生健康包配置
healthGroup.POST("", api.DoctorConfigHealthPackage.AddDoctorHealth)
}
// 医生随访包配置
followGroup := doctorGroup.Group("/follow")
{
// 获取开启随访包服务的医生-分页
followGroup.GET("", api.DoctorConfigFollowPackage.GetDoctorFollowPage)
// 医生随访包配置详情
followGroup.GET("/:follow_package_id", api.DoctorConfigFollowPackage.GetDoctorFollow)
// 修改医生随访包配置
followGroup.PUT("/:follow_package_id", api.DoctorConfigFollowPackage.PutDoctorFollow)
// 新增医生随访包配置
followGroup.POST("", api.DoctorConfigFollowPackage.AddDoctorFollow)
}
}
// 系统问诊配置
systemGroup := inquiryGroup.Group("/system")
{
// 获取系统问诊配置列表-分页
systemGroup.GET("", api.InquiryConfig.GetSystemInquiryConfigPage)
// 系统问诊配置详情-id
systemGroup.GET("/:system_inquiry_config_id", api.InquiryConfig.GetSystemInquiryConfig)
// 修改系统问诊配置
systemGroup.PUT("/:system_inquiry_config_id", api.InquiryConfig.PutSystemInquiryConfig)
// 系统问诊配置详情-条件
systemGroup.GET("/detail", api.InquiryConfig.GetSystemInquiryConfigDetail)
}
// 健康包管理
healthGroup := inquiryGroup.Group("/health")
{
// 获取健康包列表-分页
healthGroup.POST("/page", api.HealthPackage.GetHealthPackagePage)
// 获取健康包列表-限制条数
healthGroup.GET("/list", api.HealthPackage.GetHealthPackageList)
// 获取健康包详情
healthGroup.GET("/:package_id", api.HealthPackage.GetHealthPackage)
// 修改健康包
healthGroup.PUT("/:package_id", api.HealthPackage.PutHealthPackage)
// 新增健康包
healthGroup.POST("", api.HealthPackage.AddHealthPackage)
}
}
// 财务管理
financeGroup := adminGroup.Group("/finance")
{
// 提现记录
withdrawalGroup := financeGroup.Group("/withdrawal")
{
// 获取医生提现列表-分页
withdrawalGroup.GET("", api.DoctorWithdrawal.GetDoctorWithdrawalPage)
// 提现详情
withdrawalGroup.GET("/:withdrawal_id", api.DoctorWithdrawal.GetDoctorWithdrawal)
// 提现详情-关联订单列表-分页
withdrawalGroup.GET("/order", api.DoctorWithdrawal.GetDoctorWithdrawalOrderPage)
// 修改提现个人所得税
withdrawalGroup.PUT("/income/:withdrawal_id", api.DoctorWithdrawal.PutDoctorWithdrawalIncome)
// 修改提现审核状态
withdrawalGroup.PUT("/examine/:withdrawal_id", api.DoctorWithdrawal.PutDoctorWithdrawalExamine)
// 确认打款
withdrawalGroup.PUT("/payment/:withdrawal_id", api.DoctorWithdrawal.PutDoctorWithdrawalPayment)
}
}
// ca管理
caGroup := adminGroup.Group("/ca")
{
// 云证书
certGroup := caGroup.Group("/cert")
{
// 用户
userGroup := certGroup.Group("/user")
{
// 更新云证书-个人-续约
userGroup.PUT("/renew/:user_id", api.UserCaCert.RenewUserCloudCert)
// 注销云证书-个人
userGroup.PUT("/remove/:user_id", api.UserCaCert.RemoveUserCloudCert)
// 申请云证书-个人
userGroup.POST("/:user_id", api.UserCaCert.AddUserCloudCert)
// 补充所有用户云证书数据-纯接口,无调用
userGroup.POST("", api.UserCaCert.UserCloudCert)
}
// 医院
hospitalGroup := certGroup.Group("/hospital")
{
// 获取医院云证书数据
hospitalGroup.GET("", api.UserCaCert.GetHospitalCloudCert)
// 更新云证书-医院-续约
hospitalGroup.PUT("/renew", api.UserCaCert.RenewHospitalCloudCert)
// 申请云证书-医院
hospitalGroup.POST("", api.UserCaCert.AddHospitalCloudCert)
}
}
// 签章
signGroup := caGroup.Group("/sign")
{
// 添加签章配置
signGroup.POST("", api.UserCaCert.AddUserSignConfig)
}
}
// 导出管理
exportGroup := adminGroup.Group("/export")
{
// 提现
withdrawalGroup := exportGroup.Group("/withdrawal")
{
// 提现记录
withdrawalGroup.POST("", api.Export.DoctorWithdrawal)
// 提现记录-关联订单
withdrawalGroup.POST("/order", api.Export.DoctorWithdrawalOrder)
}
// 医生
doctorGroup := exportGroup.Group("/doctor")
{
// 医生列表
doctorGroup.POST("", api.Export.UserDoctor)
// 医生银行卡列表
doctorGroup.POST("/bank/card", api.Export.UserDoctorBankCard)
// 医生账户
doctorGroup.POST("/account", api.Export.DoctorAccount)
// 医生账户-关联订单
doctorGroup.POST("/account/order", api.Export.OrderInquiryForAccount)
}
// 患者
patientGroup := exportGroup.Group("/patient")
{
// 患者列表
patientGroup.POST("", api.Export.UserPatient)
// 就诊人列表
patientGroup.POST("/family", api.Export.PatientFamily)
}
// 订单
orderGroup := exportGroup.Group("/order")
{
// 问诊订单
orderGroup.POST("/inquiry", api.Export.OrderInquiry)
// 药品订单
orderGroup.POST("/product", api.Export.OrderProduct)
// 服务包订单
orderGroup.POST("/service", api.Export.OrderService)
}
// 处方
prescriptionGroup := exportGroup.Group("/prescription")
{
// 处方
prescriptionGroup.POST("", api.Export.OrderPrescription)
}
// 药品
productGroup := exportGroup.Group("/product")
{
// 系统药品
productGroup.POST("", api.Export.Product)
}
}
// 商品管理
productGroup := adminGroup.Group("/product")
{
// 获取系统商品列表-分页
productGroup.POST("/page", api.Product.GetProductPage)
// 获取系统商品列表-限制条数
productGroup.GET("/list", api.Product.GetProductList)
// 系统商品详情
productGroup.GET("/:product_id", api.Product.GetProduct)
// 新增商品
productGroup.POST("", api.Product.AddProduct)
// 修改商品
productGroup.PUT("/:product_id", api.Product.PutProduct)
// 修改商品状态(上/下架)
productGroup.PUT("/status/:product_id", api.Product.PutProductStatus)
// 平台商品
platformGroup := productGroup.Group("/platform")
{
// 获取平台商品列表-分页
platformGroup.GET("", api.Product.GetPlatformProductPage)
// 平台商品详情
platformGroup.GET("/:product_platform_id", api.Product.GetProductPlatform)
// 获取平台商品列表
platformGroup.GET("/list", api.Product.GetPlatformProductList)
}
}
// 优惠卷管理
couponGroup := adminGroup.Group("/coupon")
{
// 系统优惠卷管理
systemGroup := couponGroup.Group("/system")
{
// 获取系统优惠卷列表-分页
systemGroup.POST("/page", api.Coupon.GetSystemCouponPage)
// 系统优惠卷详情
systemGroup.GET("/:coupon_id", api.Coupon.GetSystemCoupon)
// 新增系统优惠卷
systemGroup.POST("", api.Coupon.AddSystemCoupon)
// 修改系统优惠卷
systemGroup.PUT("/:coupon_id", api.Coupon.PutSystemCoupon)
// 修改系统优惠卷状态
systemGroup.PUT("/status/:coupon_id", api.Coupon.PutSystemCouponStatus)
// 发放系统优惠卷
systemGroup.POST("/grant/:coupon_id", api.Coupon.GrantSystemCoupon)
}
// 用户优惠卷管理
userGroup := couponGroup.Group("/user")
{
// 获取用户优惠卷列表-分页
userGroup.POST("/page", api.Coupon.GetUserCouponPage)
}
}
// 基础数据
basicGroup := adminGroup.Group("/basic")
{
// 地区管理
areaGroup := basicGroup.Group("/area")
{
// 获取地区列表
areaGroup.GET("", api.Area.GetAreaList)
// 新增地区
areaGroup.POST("", api.Basic.Area.AddArea)
// 修改地区
areaGroup.PUT("/:area_id", api.Basic.Area.PutArea)
}
// 医院管理
hospitalGroup := basicGroup.Group("/hospital")
{
// 获取医院列表-限制条数
hospitalGroup.GET("", api.Hospital.GetHospitalList)
// 获取医院列表-分页
hospitalGroup.POST("/page", api.Hospital.GetHospitalPage)
// 获取医院详情
hospitalGroup.GET("/:hospital_id", api.Hospital.GetHospital)
// 新增医院
hospitalGroup.POST("", api.Hospital.AddHospital)
// 修改医院
hospitalGroup.PUT("/:hospital_id", api.Hospital.PutHospital)
}
}
}