package response import ( "electricity_bill_calc/config" "github.com/gofiber/fiber/v2" ) type Result struct { Ctx *fiber.Ctx } type BaseResponse struct { Code int `json:"code"` Message string `json:"message"` } type PagedResponse struct { Page int `json:"current"` Size uint `json:"pageSize"` Total int64 `json:"total"` } func NewResult(ctx *fiber.Ctx) Result { return Result{Ctx: ctx} } func (r Result) response(status, code int, msg string, payloads ...map[string]interface{}) error { var finalPayload = make(map[string]interface{}, 0) finalPayload["code"] = code finalPayload["message"] = msg for _, m := range payloads { for k, v := range m { finalPayload[k] = v } } return r.Ctx.Status(status).JSON(finalPayload) } // 禁止访问响应 func (r Result) Forbidden(msg string) error { return r.response(fiber.StatusForbidden, fiber.StatusForbidden, msg) } // 操作出错(未成功)响应 func (r Result) Failure(code int, msg string) error { return r.response(fiber.StatusInternalServerError, code, msg) } // 操作出错(未成功)响应 func (r Result) Error(code int, msg string) error { return r.response(fiber.StatusOK, code, msg) } // 不能解析传入的参数 func (r Result) UnableToParse(msg string) error { return r.response(fiber.StatusInternalServerError, fiber.StatusInternalServerError, msg) } // 用户未获得授权)响应 func (r *Result) Unauthorized(msg string) error { return r.response(fiber.StatusUnauthorized, fiber.StatusUnauthorized, msg) } // 简易操作成功信息 func (r *Result) Success(msg string, payloads ...map[string]interface{}) error { return r.response(fiber.StatusOK, fiber.StatusOK, msg, payloads...) } // 数据成功创建 func (r Result) Created(msg string, payloads ...map[string]interface{}) error { return r.response(fiber.StatusCreated, fiber.StatusCreated, msg, payloads...) } // 数据成功更新 func (r Result) Updated(msg string, payloads ...map[string]interface{}) error { return r.response(fiber.StatusAccepted, fiber.StatusAccepted, msg, payloads...) } // 数据已成功删除 func (r Result) Deleted(msg string) error { return r.response(fiber.StatusNoContent, fiber.StatusNoContent, msg) } // 指定操作未被接受 func (r Result) BadRequest(msg string) error { return r.response(fiber.StatusBadRequest, fiber.StatusBadRequest, msg) } // 指定操作未被接受 func (r Result) NotAccept(msg string) error { return r.response(fiber.StatusNotAcceptable, fiber.StatusNotAcceptable, msg) } // 数据未找到 func (r Result) NotFound(msg string) error { return r.response(fiber.StatusNotFound, fiber.StatusNotFound, msg) } // 数据存在冲突 func (r Result) Conflict(msg string) error { return r.response(fiber.StatusConflict, fiber.StatusConflict, msg) } // 快速自由JSON格式响应 // ! 注意,给定的map中,同名的键会被覆盖。 func (r Result) Json(code int, msg string, payloads ...map[string]interface{}) error { return r.response(fiber.StatusOK, code, msg, payloads...) } func NewPagedResponse(page int, total int64) *PagedResponse { return &PagedResponse{page, config.ServiceSettings.ItemsPageSize, total} } func (r PagedResponse) ToMap() map[string]interface{} { return fiber.Map{ "current": r.Page, "pageSize": r.Size, "total": r.Total, } }