83 lines
2.3 KiB
Go
83 lines
2.3 KiB
Go
package local_event
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/go-admin-team/go-admin-core/sdk/api"
|
|
"github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth/user"
|
|
|
|
"git.ilapage.cn/ila/yovision/Sense/server/common"
|
|
)
|
|
|
|
type API struct{ api.Api }
|
|
|
|
func (e *API) service(c *gin.Context) (*Service, error) {
|
|
service := &Service{}
|
|
if err := e.MakeContext(c).MakeOrm().MakeService(&service.Service).Errors; err != nil {
|
|
return nil, err
|
|
}
|
|
return service, nil
|
|
}
|
|
|
|
func (e *API) List(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.audit(c, service, "List", auditFailure, "本地事件查询条件格式不正确")
|
|
e.Error(http.StatusBadRequest, err, "查询条件格式不正确")
|
|
return
|
|
}
|
|
list, count, err := service.List(request)
|
|
if err != nil {
|
|
e.audit(c, service, "List", auditFailure, "本地事件列表查询失败")
|
|
e.writeError(err)
|
|
return
|
|
}
|
|
e.audit(c, service, "List", auditSuccess, "读取本地事件列表")
|
|
e.PageOK(list, int(count), request.GetPageIndex(), request.GetPageSize(), "查询成功")
|
|
}
|
|
|
|
func (e *API) Get(c *gin.Context) {
|
|
service, err := e.service(c)
|
|
if err != nil {
|
|
e.writeError(err)
|
|
return
|
|
}
|
|
item, err := service.Get(c.Param("id"))
|
|
if err != nil {
|
|
e.audit(c, service, "Get", auditFailure, "本地事件详情查询失败")
|
|
e.writeError(err)
|
|
return
|
|
}
|
|
e.audit(c, service, "Get", auditSuccess, "读取本地事件详情 "+item.ID)
|
|
e.OK(item, "查询成功")
|
|
}
|
|
|
|
func (e *API) audit(c *gin.Context, service *Service, action, status, remark string) {
|
|
err := WriteAccessAudit(service.Orm, AccessAudit{
|
|
Action: action, Status: status, Username: user.GetUserName(c), UserID: user.GetUserId(c),
|
|
ClientIP: common.GetClientIP(c), Route: c.FullPath(), Remark: remark, At: time.Now(),
|
|
})
|
|
if err != nil {
|
|
api.GetRequestLogger(c).Errorf("local event access audit failed: %s", err.Error())
|
|
}
|
|
}
|
|
|
|
func (e *API) writeError(err error) {
|
|
switch {
|
|
case errors.Is(err, ErrInvalidFilter):
|
|
e.Error(http.StatusBadRequest, err, ErrInvalidFilter.Error())
|
|
case errors.Is(err, ErrNotFound):
|
|
e.Error(http.StatusNotFound, err, ErrNotFound.Error())
|
|
default:
|
|
e.Error(http.StatusInternalServerError, err, "本地事件查询失败")
|
|
}
|
|
}
|