| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- package response
- import (
- "gfast/library/utils"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/net/ghttp"
- "github.com/gogf/gf/os/gview"
- "github.com/gogf/gf/text/gstr"
- "github.com/gogf/gf/util/gconv"
- )
- const (
- SuccessCode int = 0
- ErrorCode int = -1
- )
- type Response struct {
- // 代码
- Code int `json:"code" example:"200"`
- // 数据集
- Data interface{} `json:"data"`
- // 消息
- Msg string `json:"msg"`
- }
- var response *Response
- func JsonExit(r *ghttp.Request, code int, msg string, data ...interface{}) {
- response.JsonExit(r, code, msg, data...)
- }
- func RJson(r *ghttp.Request, code int, msg string, data ...interface{}) {
- response.RJson(r, code, msg, data...)
- }
- func SusJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
- response.SusJson(isExit, r, msg, data...)
- }
- func FailJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
- response.FailJson(isExit, r, msg, data...)
- }
- func WriteTpl(r *ghttp.Request, tpl string, view *gview.View, params ...gview.Params) error {
- return response.WriteTpl(r, tpl, view, params...)
- }
- // 返回JSON数据并退出当前HTTP执行函数。
- func (res *Response) JsonExit(r *ghttp.Request, code int, msg string, data ...interface{}) {
- res.RJson(r, code, msg, data...)
- r.Exit()
- }
- // 标准返回结果数据结构封装。
- // 返回固定数据结构的JSON:
- // code: 状态码(200:成功,302跳转,和http请求状态码一至);
- // msg: 请求结果信息;
- // data: 请求结果,根据不同接口返回结果的数据结构不同;
- func (res *Response) RJson(r *ghttp.Request, code int, msg string, data ...interface{}) {
- responseData := interface{}(nil)
- if len(data) > 0 {
- responseData = data[0]
- }
- response = &Response{
- Code: code,
- Msg: msg,
- Data: responseData,
- }
- r.SetParam("apiReturnRes", response)
- r.Response.WriteJson(response)
- }
- //成功返回JSON
- func (res *Response) SusJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
- if isExit {
- res.JsonExit(r, SuccessCode, msg, data...)
- }
- res.RJson(r, SuccessCode, msg, data...)
- }
- //失败返回JSON
- func (res *Response) FailJson(isExit bool, r *ghttp.Request, msg string, data ...interface{}) {
- if isExit {
- res.JsonExit(r, ErrorCode, msg, data...)
- }
- res.RJson(r, ErrorCode, msg, data...)
- }
- //模板输出
- func (res *Response) WriteTpl(r *ghttp.Request, tpl string, view *gview.View, params ...gview.Params) error {
- //绑定模板中需要用到的方法
- view.BindFuncMap(g.Map{
- // 根据长度i来切割字符串
- "subStr": func(str interface{}, i int) (s string) {
- s1 := gconv.String(str)
- if gstr.LenRune(s1) > i {
- s = gstr.SubStrRune(s1, 0, i) + "..."
- return s
- }
- return s1
- },
- // 格式化时间戳 年月日
- "timeFormatYear": func(time interface{}) string {
- return utils.TimeStampToDate(gconv.Int64(time))
- },
- // 格式化时间戳 年月日时分秒
- "timeFormatDateTime": func(time interface{}) string {
- return utils.TimeStampToDateTime(gconv.Int64(time))
- },
- // 判断是否有子菜单
- "isSon": func(id, menus interface{}) bool {
- i := gconv.Int(id)
- m := gconv.SliceMap(menus)
- for _, v := range m {
- if gconv.Int(v["classification_pid"]) == i {
- return true
- }
- }
- return false
- },
- "add": func(a, b interface{}) int {
- return gconv.Int(a) + gconv.Int(b)
- },
- })
- //设置全局变量
- domain, _ := utils.GetDomain(r)
- view.Assigns(g.Map{
- "domain": domain,
- })
- return r.Response.WriteTpl(tpl, params...)
- }
- func (res *Response) Redirect(r *ghttp.Request, location string, code ...int) {
- r.Response.RedirectTo(location, code...)
- }
|