package controller import ( "github.com/gin-gonic/gin" "hospital-admin-api/api/dao" "hospital-admin-api/api/dto" "hospital-admin-api/api/requests" "hospital-admin-api/api/responses" "hospital-admin-api/api/service" "hospital-admin-api/global" "hospital-admin-api/utils" "strconv" ) type AdminApi struct{} // GetApiPage 获取api列表-分页 func (r *AdminApi) GetApiPage(c *gin.Context) { apiRequest := requests.ApiRequest{} if err := c.ShouldBind(&apiRequest.GetApiPage); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(apiRequest.GetApiPage); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } if apiRequest.GetApiPage.Page == 0 { apiRequest.GetApiPage.Page = 1 } if apiRequest.GetApiPage.PageSize == 0 { apiRequest.GetApiPage.PageSize = 20 } adminApiDao := dao.AdminApiDao{} adminApi, total, err := adminApiDao.GetAdminApiPageSearch(apiRequest.GetApiPage, apiRequest.GetApiPage.Page, apiRequest.GetApiPage.PageSize) if err != nil { responses.FailWithMessage(err.Error(), c) return } // 处理返回值 getApiPageResponses := dto.GetAdminApiListDto(adminApi) result := make(map[string]interface{}) result["page"] = apiRequest.GetApiPage.Page result["page_size"] = apiRequest.GetApiPage.PageSize result["total"] = total result["data"] = getApiPageResponses responses.OkWithData(result, c) } // GetApiList 获取api列表 func (r *AdminApi) GetApiList(c *gin.Context) { apiRequest := requests.ApiRequest{} if err := c.ShouldBind(&apiRequest.GetApiList); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(apiRequest.GetApiList); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } adminApiDao := dao.AdminApiDao{} maps := make(map[string]interface{}) if apiRequest.GetApiList.ApiName != "" { maps["api_name"] = apiRequest.GetApiList.ApiName } adminApis, err := adminApiDao.GetAdminApiList(maps) if err != nil { responses.FailWithMessage(err.Error(), c) return } if len(adminApis) == 0 { responses.Ok(c) return } // 处理返回值 getApiPageResponses := dto.GetAdminApiListDto(adminApis) responses.OkWithData(getApiPageResponses, c) } // AddApi 新增接口 func (r *AdminApi) AddApi(c *gin.Context) { apiRequest := requests.ApiRequest{} if err := c.ShouldBind(&apiRequest.AddApi); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(apiRequest.AddApi); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法操作", c) return } // 业务处理 ApiService := service.ApiService{} _, err = ApiService.AddApi(c, apiRequest.AddApi) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // GetApi 接口详情 func (r *AdminApi) GetApi(c *gin.Context) { id := c.Param("api_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 apiId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取接口详情 adminApiDao := dao.AdminApiDao{} adminApi, err := adminApiDao.GetAdminApiById(apiId) if err != nil || adminApi == nil { responses.FailWithMessage("接口数据错误", c) return } // 处理返回值 getApiResponses := dto.GetAdminApiDto(adminApi) responses.OkWithData(getApiResponses, c) } // DeleteApi 删除接口-批量 func (r *AdminApi) DeleteApi(c *gin.Context) { apiRequest := requests.ApiRequest{} if err := c.ShouldBindJSON(&apiRequest.DeleteApi); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(apiRequest.DeleteApi); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法操作", c) return } // 业务处理 apiService := service.ApiService{} _, err = apiService.DeleteApi(c, apiRequest.DeleteApi) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) } // PutApi 修改接口 func (r *AdminApi) PutApi(c *gin.Context) { apiRequest := requests.ApiRequest{} if err := c.ShouldBind(&apiRequest.PutApi); err != nil { responses.FailWithMessage(err.Error(), c) return } // 参数验证 if err := global.Validate.Struct(apiRequest.PutApi); err != nil { responses.FailWithMessage(utils.Translate(err), c) return } id := c.Param("api_id") if id == "" { responses.FailWithMessage("缺少参数", c) return } // 将 id 转换为 int64 类型 ApiId, err := strconv.ParseInt(id, 10, 64) if err != nil { responses.Fail(c) return } // 获取角色身份 roleService := service.RoleService{} isAdmin, err := roleService.GetRoleIden(c) if err != nil { responses.FailWithMessage(err.Error(), c) return } if !isAdmin { responses.FailWithMessage("非管理员,无法操作", c) return } // 业务处理 apiService := service.ApiService{} _, err = apiService.PutApi(c, ApiId, apiRequest.PutApi) if err != nil { responses.FailWithMessage(err.Error(), c) return } responses.Ok(c) }