2025-03-09 10:05:28 +08:00
|
|
|
package api
|
2025-03-09 11:27:50 +08:00
|
|
|
|
|
|
|
import (
|
|
|
|
restfulspec "github.com/emicklei/go-restful-openapi/v2"
|
|
|
|
"github.com/emicklei/go-restful/v3"
|
|
|
|
"github.com/gin-gonic/gin/binding"
|
|
|
|
"github.com/infraboard/mcube/v2/exception"
|
|
|
|
"github.com/infraboard/mcube/v2/http/restful/response"
|
|
|
|
"github.com/infraboard/mcube/v2/ioc"
|
|
|
|
"github.com/infraboard/mcube/v2/ioc/config/gorestful"
|
|
|
|
"gitlab.com/go-course-project/go17/devcloud-mini/cmdb/apps/resource"
|
|
|
|
)
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
ioc.Api().Registry(&ResourceApiHandler{})
|
|
|
|
}
|
|
|
|
|
|
|
|
type ResourceApiHandler struct {
|
|
|
|
ioc.ObjectImpl
|
2025-03-30 12:01:18 +08:00
|
|
|
|
|
|
|
// @Resource(name="", namespace="")
|
|
|
|
// @Resource
|
|
|
|
// ResourceService resource.Service `ioc:"autowire=true;namespace=controllers"`
|
2025-03-09 11:27:50 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ResourceApiHandler) Name() string {
|
|
|
|
return resource.AppName
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ResourceApiHandler) Init() error {
|
|
|
|
// WebService ws
|
|
|
|
// api/v1/resource
|
|
|
|
ws := gorestful.ObjectRouter(r)
|
|
|
|
|
2025-03-30 12:01:18 +08:00
|
|
|
// 半自动
|
|
|
|
// r.ResourceService = resource.GetService()
|
|
|
|
|
2025-03-09 11:27:50 +08:00
|
|
|
tags := []string{"资源管理"}
|
|
|
|
|
|
|
|
ws.Route(ws.GET("").To(r.Search).Doc("资源检索").
|
|
|
|
Param(ws.PathParameter("page_size", "分页大小").DataType("intger")).
|
|
|
|
Param(ws.PathParameter("page_number", "页码").DataType("intger")).
|
|
|
|
Param(ws.PathParameter("keywords", "关键字过滤").DataType("string")).
|
|
|
|
Metadata(restfulspec.KeyOpenAPITags, tags).
|
|
|
|
Writes(resource.ResourceSet{}).
|
|
|
|
Returns(200, "OK", resource.ResourceSet{}).
|
|
|
|
Returns(404, "Not Found", exception.ApiException{}))
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (r *ResourceApiHandler) Search(req *restful.Request, resp *restful.Response) {
|
|
|
|
sr := resource.NewSearchRequest()
|
|
|
|
|
|
|
|
// 获取参数, bind
|
|
|
|
err := binding.Query.Bind(req.Request, sr)
|
|
|
|
if err != nil {
|
|
|
|
response.Failed(resp, exception.NewBadRequest(err.Error()))
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 业务逻辑
|
|
|
|
set, err := resource.GetService().Search(req.Request.Context(), sr)
|
|
|
|
if err != nil {
|
|
|
|
response.Failed(resp, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
response.Success(resp, set)
|
|
|
|
}
|