package service

import (
	"net/http"

	"github.com/gin-gonic/gin"

	"demo/internal/biz/errs"
	"demo/internal/util"
)

// ResponseError 公共返回错误处理
func ResponseError(c *gin.Context, err error) {
	if v, ok := err.(*errs.Error); ok {
		if v.Code == errs.ServiceError.Code {
			v.Msg = errs.ServiceError.Msg
		}
		c.AbortWithStatusJSON(http.StatusOK, gin.H{
			util.RequestKey: c.GetString(util.RequestKey),
			"code":          v.Code,
			"message":       v.Msg,
		})
	} else {
		c.AbortWithStatusJSON(http.StatusOK, gin.H{
			util.RequestKey: c.GetString(util.RequestKey),
			"code":          errs.ServiceError.Code,
			"message":       errs.ServiceError.Msg,
		})
	}
}

// ResponseSuccess 返回成功参数
func ResponseSuccess(c *gin.Context, result ...interface{}) {
	if len(result) > 0 {
		c.JSON(http.StatusOK, gin.H{
			util.RequestKey: c.GetString(util.RequestKey),
			"code":          http.StatusOK,
			"message":       util.StatusOK,
			"data":          result[0],
		})
	} else {
		c.JSON(http.StatusOK, gin.H{
			util.RequestKey: c.GetString(util.RequestKey),
			"code":          http.StatusOK,
			"message":       util.StatusOK,
		})
	}
}