package api import ( "context" "next-terminal/server/common/maps" "next-terminal/server/model" "next-terminal/server/repository" "next-terminal/server/service" "strconv" "strings" "github.com/labstack/echo/v4" ) type LoginLogApi struct{} func (api LoginLogApi) LoginLogPagingEndpoint(c echo.Context) error { pageIndex, _ := strconv.Atoi(c.QueryParam("pageIndex")) pageSize, _ := strconv.Atoi(c.QueryParam("pageSize")) username := c.QueryParam("username") clientIp := c.QueryParam("clientIp") state := c.QueryParam("state") items, total, err := repository.LoginLogRepository.Find(context.TODO(), pageIndex, pageSize, username, clientIp, state) if err != nil { return err } for i := range items { items[i].Success = items[i].State == "1" items[i].UserAgent = parseUserAgent(items[i].ClientUserAgent) } return Success(c, maps.Map{ "total": total, "items": items, }) } func parseUserAgent(ua string) *model.UserAgent { if ua == "" { return nil } return &model.UserAgent{ String: ua, } } func (api LoginLogApi) LoginLogDeleteEndpoint(c echo.Context) error { ids := c.Param("id") tokens := strings.Split(ids, ",") if err := service.UserService.DeleteLoginLogs(tokens); err != nil { return err } return Success(c, nil) } func (api LoginLogApi) LoginLogClearEndpoint(c echo.Context) error { loginLogs, err := repository.LoginLogRepository.FindAllLoginLogs(context.TODO()) if err != nil { return err } var tokens = make([]string, 0) for i := range loginLogs { tokens = append(tokens, loginLogs[i].ID) } if err := service.UserService.DeleteLoginLogs(tokens); err != nil { return err } return Success(c, nil) }