统一初始beego mvc 的方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.1 KiB

  1. package response
  2. import "reflect"
  3. type JsonResponseGenerator struct {
  4. Interface JsonInterface
  5. }
  6. func (j JsonResponseGenerator) NewJsonByDefaultSuccess(data ...interface{}) JsonInterface {
  7. ptr := j.NewJson(true, 0, JsonMsgDefaultOk, data...)
  8. ptr.SetCode(ptr.GetDefaultSuccessCode())
  9. return ptr
  10. }
  11. func (j JsonResponseGenerator) NewJsonByDefaultFailed(data ...interface{}) JsonInterface {
  12. ptr := j.NewJson(false, 1, JsonMsgDefaultFailed, data...)
  13. ptr.SetCode(ptr.GetDefaultFailedCode())
  14. return ptr
  15. }
  16. func (j JsonResponseGenerator) NewJsonByFailed(code int, msg string) JsonInterface {
  17. return j.NewJson(false, code, msg)
  18. }
  19. func (j JsonResponseGenerator) NewJsonByFailedWithData(code int, msg string, data interface{}) JsonInterface {
  20. return j.NewJson(false, code, msg, data)
  21. }
  22. func (j JsonResponseGenerator) NewJson(status bool, code int, msg string, data ...interface{}) JsonInterface {
  23. jPtr := reflect.New(reflect.TypeOf(j.Interface).Elem())
  24. if b, ok := jPtr.Interface().(JsonInterface); ok {
  25. b.SetStatus(status)
  26. b.SetCode(code)
  27. b.SetMessage(msg)
  28. if len(data) > 0 {
  29. b.SetData(data[0])
  30. }
  31. return b
  32. }
  33. return nil
  34. }