package webServer

import (
	"common/resultStatus"
)

// ResponseObject
// @description: 响应对象
type ResponseObject struct {
	// 响应结果的状态值
	Code resultStatus.StatusCode

	// Status 状态
	Status int32

	// 响应结果的状态值所对应的描述信息
	Message string

	// 响应结果的数据
	Value interface{}
}

// SetResultStatus
// @description: 设置响应结果的状态值
// parameter:
// @receiver this: this
// @rs: 响应结果的状态值
// return:
// @*ResponseObject: 响应结果对象
func (this *ResponseObject) SetResultStatus(rs resultStatus.ResultStatus) *ResponseObject {
	this.Code = rs.Code()
	this.Message = rs.Message()

	return this
}

// SetData
// @description: 设置响应对象数据
// parameter:
// @receiver this: this
// @data: 响应结果的数据
// return:
// @*ResponseObject: 响应结果对象
func (this *ResponseObject) SetData(data interface{}) *ResponseObject {
	this.Value = data
	return this
}

// IsSuccess
// @description: 是否是请求成功
// parameter:
// @receiver this:this
// return:
// @bool:是请求成功
func (this *ResponseObject) IsSuccess() bool {
	return this.Code == resultStatus.Success.Code()
}

// SetCodeStatus
// @description: 同步code和status状态
// parameter:
// @receiver this:this
// return:
func (this *ResponseObject) SetCodeStatus() {
	if this.Code == resultStatus.Success.Code() && resultStatus.StatusCode(this.Status) != resultStatus.Success.Code() {
		this.Code = resultStatus.StatusCode(this.Status)
	}

	return
}

// GetInitResponseObj
// @description: 获取初始的响应对象
// parameter:
// return:
// @*ResponseObject: 响应对象
func GetInitResponseObj() *ResponseObject {
	return &ResponseObject{
		Code:    resultStatus.Success.Code(),
		Message: "",
		Value:   nil,
	}
}
