247 lines
5.6 KiB
Go
247 lines
5.6 KiB
Go
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)
|
|
}
|