2023-09-28 08:40:43 +08:00

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)
}