package ndh import ( "context" "encoding/json" "io" ) type Ctx struct { ctx context.Context req io.Reader res io.Writer } func NewCtx(ctx context.Context, req io.Reader, res io.Writer) *Ctx { return &Ctx{ ctx: ctx, req: req, res: res, } } func (c *Ctx) Context() context.Context { return c.ctx } func (c *Ctx) Write(bs []byte) (int, error) { return c.res.Write(bs) } func (c *Ctx) ReqParse(req any) error { return json.NewDecoder(c.req).Decode(req) } func (c *Ctx) Send200(data any, msg ...string) error { m := "操作成功" if len(msg) > 0 && msg[0] != "" { m = msg[0] } return c.Send(200, m, "", data) } func (c *Ctx) Send400(data any, msg ...string) error { m := "参数错误" if len(msg) > 0 && msg[0] != "" { m = msg[0] } return c.Send(400, m, "", data) } func (c *Ctx) Send500(data any, msg ...string) error { m := "系统错误" if len(msg) > 0 && msg[0] != "" { m = msg[0] } return c.Send(500, m, "", data) } func (c *Ctx) Send(status uint32, msg, error string, data any) error { value := map[string]any{"status": status, "msg": msg, "err": error, "data": data} bs, err := json.Marshal(value) if err != nil { return err } _, err = c.Write(bs) return err }