Files

74 lines
1.8 KiB
Go

package quota
import (
"errors"
"net/http"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/binding"
"github.com/go-admin-team/go-admin-core/sdk/api"
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
coreService "github.com/go-admin-team/go-admin-core/sdk/service"
)
type API struct{ api.Api }
func (e *API) service(c *gin.Context) (*Service, error) {
base := coreService.Service{}
if err := e.MakeContext(c).MakeOrm().MakeService(&base).Errors; err != nil {
return nil, err
}
return &Service{DB: base.Orm}, nil
}
func (e *API) Get(c *gin.Context) {
service, err := e.service(c)
if err != nil {
e.writeError(err)
return
}
request := PageRequest{}
if err = e.MakeContext(c).Bind(&request).Errors; err != nil {
e.Error(http.StatusBadRequest, err, "查询条件格式不正确")
return
}
response, err := service.Overview(request)
if err != nil {
e.writeError(err)
return
}
e.OK(response, "查询成功")
}
func (e *API) Update(c *gin.Context) {
service, err := e.service(c)
if err != nil {
e.writeError(err)
return
}
request := UpdateRequest{UpdateBy: user.GetUserId(c)}
if err = e.MakeContext(c).Bind(&request, binding.JSON).Errors; err != nil {
e.Error(http.StatusBadRequest, err, "请求内容格式不正确")
return
}
response, err := service.Update(request)
if err != nil {
e.writeError(err)
return
}
e.OK(response, "配额已更新")
}
func (e *API) writeError(err error) {
switch {
case errors.Is(err, ErrInvalid):
e.Error(http.StatusBadRequest, err, err.Error())
case errors.Is(err, ErrExceeded), errors.Is(err, ErrVersionConflict):
e.Error(http.StatusConflict, err, err.Error())
case errors.Is(err, ErrUnavailable):
e.Error(http.StatusServiceUnavailable, err, err.Error())
default:
e.Error(http.StatusInternalServerError, err, "容量与配额操作失败")
}
}