package router import ( "net/http" "surveyService/controller/callback" "surveyService/controller/questionnaire_subject" "surveyService/controller/questionnaire_survey" "surveyService/controller/questionnaire_template" "surveyService/controller/survey" "surveyService/controller/survey_mechanism" "surveyService/controller/survey_result" "surveyService/middleware" "github.com/gin-gonic/gin" "gogs.uu.mdfitnesscao.com/hys/sdk/constants" ) func Init() *gin.Engine { router := gin.Default() router.Use(middleware.Cors()) router.GET("/ping", func(c *gin.Context) { c.String(http.StatusOK, "The Server is Running") }) // 后台API backendApiRouter := router.Group("/backend") backendApiRouter.Use(middleware.Authorize()) { // |------ 问卷管理 // 获取问卷列表 backendApiRouter.GET("/survey/list", survey.List) // 创建问卷 backendApiRouter.POST("/survey/updateOrCreate", middleware.PermissionCheck(constants.UserPermissionSurveyEdit), survey.UpdateOrCreate) // 获取问卷详情 backendApiRouter.GET("/survey/detail", middleware.PermissionCheck(constants.UserPermissionSurveyView), survey.Detail) // 获取问卷列表(分页) backendApiRouter.GET("/survey/paginate", middleware.PermissionCheck(constants.UserPermissionSurveyView), survey.Paginate) // 修改问卷备注 backendApiRouter.POST("/survey/update/remark", middleware.PermissionCheck(constants.UserPermissionSurveyEdit), survey.UpdateRemark) // 修改问卷状态 backendApiRouter.POST("/survey/update/status", middleware.PermissionCheck(constants.UserPermissionSurveyEdit), survey.UpdateStatus) // |------ 问卷授权管理 // 创建问卷授权 backendApiRouter.POST("/surveyAuthorize/create", middleware.PermissionCheck(constants.UserPermissionSurveyAuthorizeEdit), survey_mechanism.CreateForManage) // 获取问卷已被授权的机构列表 backendApiRouter.GET("/surveyAuthorize/listMechanismIds", middleware.PermissionCheck(constants.UserPermissionSurveyAuthorizeView), survey_mechanism.ListMechanismIdsForSurveyForManage) // 获取授权列表 backendApiRouter.GET("/surveyAuthorize/paginate", middleware.PermissionCheck(constants.UserPermissionSurveyAuthorizeView), survey_mechanism.PaginateForManage) // 修改授权状态 backendApiRouter.POST("/surveyAuthorize/update/status", middleware.PermissionCheck(constants.UserPermissionSurveyAuthorizeEdit), survey_mechanism.UpdateAuthorizeStatusForManage) // |------ 问卷结果管理 // 获取问卷结果列表 backendApiRouter.GET("/surveyResult/paginate", middleware.PermissionCheck(constants.UserPermissionSurveyResultView), survey_result.PaginateForManage) // 获取问卷结果详情 backendApiRouter.GET("/surveyResult/detail", middleware.PermissionCheck(constants.UserPermissionSurveyResultView), survey_result.DetailForManage) // 重新执行一次算法 backendApiRouter.POST("/surveyResult/run", middleware.PermissionCheck(constants.UserPermissionSurveyResultEdit), survey_result.RunForManage) // |------基础问卷管理 // 获取问卷列表(不要权限) backendApiRouter.GET("/questionnaireSurvey/list", questionnaire_survey.List) // 获取问题模板列表 backendApiRouter.GET("/algor/questionnaireTemplate/list", questionnaire_template.List) // 获取问题库列表 backendApiRouter.GET("/algor/questionnaireSubject/list", questionnaire_subject.List) // 将问题库和问题模板缓存到Redis backendApiRouter.GET("/algor/questionnaire/cache", questionnaire_survey.CacheList) } // 机构API mechanismApiRouter := router.Group("/mechanism") mechanismApiRouter.Use(middleware.AuthorizeMechanism()) { // |------ 问卷管理 // 获取问卷列表 mechanismApiRouter.GET("/survey/paginate", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyView), survey_mechanism.Paginate) // 修改问卷状态 mechanismApiRouter.POST("/survey/update/status", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyEdit), survey_mechanism.UpdateStatus) // 修改问卷信息 mechanismApiRouter.POST("/survey/update", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyEdit), survey_mechanism.Update) // 获取问卷详情 mechanismApiRouter.GET("/survey/detail", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyView), survey_mechanism.Detail) // 获取问卷详情(转译系统) mechanismApiRouter.GET("/survey/detail/config", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyView), survey_mechanism.DetailSurveyConfig) // |------ 问卷结果管理 // 获取问卷结果列表 mechanismApiRouter.GET("/surveyResult/paginate", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyResultView), survey_result.Paginate) // 获取问卷结果详情 mechanismApiRouter.GET("/surveyResult/detail", middleware.PermissionCheckStaff(constants.MechanismStaffPermissionSurveyResultView), survey_result.Detail) // |------基础问卷管理 // 获取问卷列表(不要权限) mechanismApiRouter.GET("/questionnaireSurvey/list", questionnaire_survey.List) // 获取问题模板列表 mechanismApiRouter.GET("/algor/questionnaireTemplate/list", questionnaire_template.List) // 获取问题库列表 mechanismApiRouter.GET("/algor/questionnaireSubject/list", questionnaire_subject.List) } memberApiRouter := router.Group("/member") memberApiRouter.Use(middleware.MemberMechanism(), middleware.AuthorizeMember()) { // |------ 问卷 // 获取问卷列表 memberApiRouter.GET("/survey/list", survey_mechanism.ListForMember) // 获取我的评测记录 memberApiRouter.GET("/surveyResult/paginate", survey_result.PaginateForMember) } // 下面的接口支持用户端使用,支持第三方凭证使用 // 鉴于middleware的执行顺序,AuthorizeMember必须放在AuthorizeSurveyToken后面,否则会导致AuthorizeSurveyToken校验无效 memberApiRouter.Use(middleware.MemberMechanism(), middleware.AuthorizeSurveyToken(), middleware.AuthorizeMember()) { // |------ 问卷 // 获取问卷详情 memberApiRouter.GET("/survey/detail", survey_mechanism.DetailForMember) // 获取问卷题目列表 memberApiRouter.GET("/survey/detail/questions", survey_mechanism.DetailQuestionsForMember) // 创建答题结果 memberApiRouter.POST("/surveyResult/create", survey_result.CreateSurveyResultForMember) // 提交答题结果 memberApiRouter.POST("/surveyResult/submit", survey_result.SubmitSurveyResultForMember) // 创建答题结果 memberApiRouter.POST("/surveyResult/createAndSubmit", survey_result.CreateAndSubmitSurveyResultForMember) // 获取问卷结果 memberApiRouter.GET("/surveyResult/detail", survey_result.DetailSurveyResultForMember) // 获取最后一份问卷结果 memberApiRouter.GET("/surveyResult/detail/last", survey_result.DetailLastSurveyResultForMember) } callbackApiRouter := router.Group("/callback") // 问卷结果回调 callbackApiRouter.POST("/survey/result", callback.CallbackSurveyResult) callbackApiRouter.POST("/survey/sync", callback.CallbackSurveySync) // 外部开发接口 externalOpenApiRouter := router.Group("/external/openapi") // 新增机构ID拦截 externalOpenApiRouter.Use(middleware.AuthorizeMechanismByAppKey()) { // 获取已授权的问卷列表 externalOpenApiRouter.POST("/survey/list", survey_mechanism.List) // 通过某个问卷编号获取H5端问卷答题地址 externalOpenApiRouter.POST("/survey/link", survey_mechanism.GetLinkBySurveyId) // 通过某个问卷结果编号获取H5端结果页地址 externalOpenApiRouter.POST("/survey/result/link", survey_result.GetLinkBySurveyResultId) } // 内部开放接口 openApiRouter := router.Group("/openapi") // 获取问题模板列表 openApiRouter.POST("/questionnaireTemplate/list", questionnaire_template.List) // 获取问题库列表 openApiRouter.POST("/questionnaireSubject/list", questionnaire_subject.List) return router }