package controllers

import (
	"bytes"
	"encoding/json"
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/context"
	"gitlab.fjmaimaimai.com/mmm-go/godevp/pkg/protocol"
)

type BaseController struct {
	beego.Controller
}

func (controller BaseController) JsonUnmarshal(v interface{}) error {
	body := controller.Ctx.Input.RequestBody
	if len(body) == 0 {
		body = []byte("{}")
	}
	newDecoder := json.NewDecoder(bytes.NewReader(body))
	newDecoder.UseNumber()
	err := newDecoder.Decode(v)
	return err
}

func (controller *BaseController) Resp(msg *protocol.ResponseMessage) {
	if msg.Errno != 0 {
		msg.Errno = -1
	}
	controller.Data["json"] = msg
	controller.Ctx.Input.SetData("outputData", msg)
	controller.ServeJSON()
}

func (controller BaseController) GetLimitInfo() (offset int, limit int) {
	offset, _ = controller.GetInt("offset")
	limit, _ = controller.GetInt("limit")
	return
}

//获取请求头信息
func (controller *BaseController) GetRequestHeader(ctx *context.Context) *protocol.RequestHeader {
	h := &protocol.RequestHeader{}
	if ctx.Input.GetData("x-mmm-id") != nil {
		v := ctx.Input.GetData("x-mmm-id")
		h.UserId = int64(v.(int))
	}
	return h
}