api.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package desktop
  2. import (
  3. "context"
  4. "encoding/json"
  5. "github.com/astaxie/beego/logs"
  6. "nginx-ui/server/models"
  7. "nginx-ui/server/service"
  8. )
  9. var ApiSession = Session{}
  10. var userService = service.NewUserService()
  11. // Api struct
  12. type Api struct {
  13. ctx context.Context
  14. }
  15. // NewApi NewApp creates a new App application struct
  16. func NewApi() *Api {
  17. return &Api{}
  18. }
  19. // Startup is called when the app starts. The context is saved
  20. // so we can call the runtime methods
  21. func (a *Api) Startup(ctx context.Context) {
  22. ApiSession.ctx = ctx
  23. a.ctx = ctx
  24. }
  25. type ApiResp struct {
  26. Data models.RespData `json:"data"`
  27. }
  28. // PostApi 做一个统一的适配层
  29. func (a *Api) PostApi(path string, req string) ApiResp {
  30. logs.Info("path: %s, data: %s", path, req)
  31. var data models.RespData
  32. switch path {
  33. case "/user/login":
  34. var user models.User
  35. err := json.Unmarshal([]byte(req), &user)
  36. if err != nil {
  37. logs.Error(err, req)
  38. data = models.NewErrorResp(err)
  39. }
  40. data = userService.Login(user)
  41. break
  42. case "/user/info":
  43. break
  44. }
  45. return ApiResp{Data: data}
  46. }
  47. func (a *Api) GetApi(path string, req string) ApiResp {
  48. logs.Info("path: %s, data: %s", path, req)
  49. var data models.RespData
  50. switch path {
  51. case "/user/info":
  52. data = models.SuccessResp(ApiSession.user)
  53. break
  54. }
  55. return ApiResp{Data: data}
  56. }
  57. func (a *Api) DeleteApi(path string, req string) ApiResp {
  58. logs.Info("path: %s, data: %s", path, req)
  59. switch path {
  60. case "/user/login":
  61. break
  62. case "/user/info":
  63. break
  64. }
  65. return ApiResp{}
  66. }
  67. func (a *Api) PutApi(path string, req string) ApiResp {
  68. logs.Info("path: %s, data: %s", path, req)
  69. switch path {
  70. case "/user/login":
  71. break
  72. case "/user/info":
  73. break
  74. }
  75. return ApiResp{}
  76. }