package response

import (
	"github.com/kataras/iris/v12"
)

// 在controller中调用完JsonExitSuccess或JsonExit后需要return

const (
	CodeSuccess = 0
	CodeMsg     = "success"
)

// 数据返回通用JSON数据结构
type JsonResponse struct {
	Code int         `json:"code"` // 错误码((0:成功, 1:失败, >1:错误码))
	Msg  string      `json:"msg"`  // 提示信息
	Data interface{} `json:"data"` // 返回数据(业务接口定义具体数据结构)
}

// 标准返回结果数据结构封装。
func Json(ctx iris.Context, code int, msg string, data ...interface{}) {
	responseData := interface{}(nil)
	if len(data) > 0 {
		responseData = data[0]
	}
	ctx.JSON(JsonResponse{
		Code: code,
		Msg:  msg,
		Data: responseData,
	})
}

// 返回JSON数据并退出当前HTTP执行函数（出错时调用）
func JsonExit(ctx iris.Context, err int, msg string, data ...interface{}) {
	Json(ctx, err, msg, data...)
}

// 返回JSON数据并退出当前HTTP执行函数（成功时调用，如果data为null可以不填）
func JsonExitSuccess(ctx iris.Context, data ...interface{}) {
	JsonExit(ctx, CodeSuccess, CodeMsg, data...)
}
