2023-09-16 20:14:20 +08:00
|
|
|
package response
|
|
|
|
|
|
|
|
|
|
// Author: Yun
|
|
|
|
|
// Version: 2023年6月12日19:25:54
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"math"
|
|
|
|
|
"net/http"
|
|
|
|
|
|
2023-09-17 18:05:01 +08:00
|
|
|
"code.yun.ink/open/utils/langx"
|
2023-09-16 20:14:20 +08:00
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type pagination struct {
|
|
|
|
|
Page int `json:"page"`
|
|
|
|
|
Size int `json:"size"`
|
|
|
|
|
TotalPage int `json:"total_page"`
|
|
|
|
|
TotalCount int `json:"total_count"`
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 分页查询
|
2023-09-17 18:05:01 +08:00
|
|
|
func GetOffset(page, size int) (offset int, limit int) {
|
2023-09-16 20:14:20 +08:00
|
|
|
if page <= 0 {
|
|
|
|
|
page = 1
|
|
|
|
|
}
|
|
|
|
|
offset = (page - 1) * size
|
|
|
|
|
limit = size
|
|
|
|
|
if limit == 0 {
|
|
|
|
|
// 默认查10条
|
|
|
|
|
limit = 10
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 计算分页
|
|
|
|
|
func GetPagination(page, size, total_count int) pagination {
|
|
|
|
|
pa := pagination{}
|
|
|
|
|
total_page := int(math.Ceil(float64(total_count) / float64(size)))
|
|
|
|
|
pa.Page = page
|
|
|
|
|
pa.Size = size
|
|
|
|
|
pa.TotalPage = total_page
|
|
|
|
|
pa.TotalCount = total_count
|
|
|
|
|
return pa
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Msg格式化响应
|
|
|
|
|
func FormatMessage(ctx *gin.Context, message langx.MessageKey, mag_param map[string]string, data interface{}) {
|
|
|
|
|
code, msg := langx.GetTrans(message, mag_param)
|
|
|
|
|
Response(ctx, code, msg, data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 成功的响应
|
|
|
|
|
func Success(ctx *gin.Context, data interface{}, info ...interface{}) {
|
|
|
|
|
Response(ctx, 200, "请求成功", data, info)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func SuccessWithPage(ctx *gin.Context, data interface{}, page pagination) {
|
|
|
|
|
Response(ctx, 200, "请求成功", data, page)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 失败的响应
|
|
|
|
|
func Error(ctx *gin.Context, msg string) {
|
|
|
|
|
Response(ctx, 400, msg, "")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 基础的响应
|
|
|
|
|
func Response(ctx *gin.Context, code int, message string, data interface{}, other ...interface{}) {
|
|
|
|
|
|
|
|
|
|
res := make(map[string]interface{})
|
|
|
|
|
|
|
|
|
|
res["code"] = code
|
|
|
|
|
res["message"] = message
|
|
|
|
|
|
|
|
|
|
// data没有值则为空
|
|
|
|
|
if data != "" {
|
|
|
|
|
res["data"] = data
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 分页的内容
|
|
|
|
|
for _, value := range other {
|
|
|
|
|
pagination, ok := value.(pagination)
|
|
|
|
|
if ok {
|
|
|
|
|
res["pagination"] = pagination
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// log.Print(res)
|
|
|
|
|
|
|
|
|
|
ctx.JSON(http.StatusOK, res)
|
|
|
|
|
}
|