application.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package controllers
  2. import (
  3. "sparrow/pkg/models"
  4. "sparrow/pkg/rpcs"
  5. "sparrow/pkg/server"
  6. "sparrow/services/knowoapi/services"
  7. "strings"
  8. "github.com/kataras/iris"
  9. )
  10. // AppController api
  11. type AppController struct {
  12. Ctx iris.Context
  13. Service services.ApplicationService
  14. Token Token
  15. }
  16. // Post 创建app
  17. // POST /application
  18. func (a *AppController) Post() {
  19. app := new(models.Application)
  20. if err := parseBody(a.Ctx, app); err != nil {
  21. badRequest(a.Ctx, err)
  22. return
  23. }
  24. app.VendorID = a.Token.getVendorID(a.Ctx)
  25. if app.AppIcon != "" {
  26. //move image
  27. args := &rpcs.ArgsMoveFile{
  28. Source: app.AppIcon,
  29. Target: "application",
  30. }
  31. reply := &rpcs.ReplyMoveFile{}
  32. err := server.RPCCallByName("fileaccess", "FileAccess.MoveFile", args, reply)
  33. if err != nil {
  34. server.Log.Error(err)
  35. app.AppIcon = ""
  36. } else {
  37. app.AppIcon = reply.FilePath
  38. }
  39. }
  40. err := a.Service.Create(app)
  41. if err != nil {
  42. responseError(a.Ctx, ErrDatabase, err.Error())
  43. return
  44. }
  45. done(a.Ctx, app)
  46. }
  47. // Get 获取我的app
  48. // GET /application?pi=1&ps=&name=
  49. func (a *AppController) Get() {
  50. pi, err := a.Ctx.URLParamInt("pi")
  51. if err != nil {
  52. badRequest(a.Ctx, err)
  53. return
  54. }
  55. ps, err := a.Ctx.URLParamInt("ps")
  56. if err != nil {
  57. badRequest(a.Ctx, err)
  58. return
  59. }
  60. name := a.Ctx.URLParam("name")
  61. ds, total, err := a.Service.GetVendorApps(a.Token.getVendorID(a.Ctx), pi, ps, name)
  62. if err != nil {
  63. responseError(a.Ctx, ErrDatabase, err.Error())
  64. return
  65. }
  66. done(a.Ctx, map[string]interface{}{
  67. "list": ds,
  68. "total": total,
  69. })
  70. }
  71. // Delete 删除
  72. // DELETE /application
  73. func (a *AppController) Delete() {
  74. app := new(models.Application)
  75. if err := parseBody(a.Ctx, app); err != nil {
  76. badRequest(a.Ctx, err)
  77. return
  78. }
  79. err := a.Service.Delete(app)
  80. if err != nil {
  81. responseError(a.Ctx, ErrDatabase, err.Error())
  82. return
  83. }
  84. done(a.Ctx, "删除成功")
  85. }
  86. // GetBy 获取app信息
  87. // GET /application/{key}
  88. func (a *AppController) GetBy(key string) {
  89. app, err := a.Service.GetAppInfo(a.Token.getVendorID(a.Ctx), key)
  90. if err != nil {
  91. responseError(a.Ctx, ErrDatabase, err.Error())
  92. return
  93. }
  94. done(a.Ctx, app)
  95. }
  96. // Put 更新
  97. // PUT /application
  98. func (a *AppController) Put() {
  99. app := new(models.Application)
  100. if err := parseBody(a.Ctx, app); err != nil {
  101. badRequest(a.Ctx, err)
  102. return
  103. }
  104. // check update image
  105. if strings.Contains(app.AppIcon, "tmp") {
  106. //move image
  107. args := &rpcs.ArgsMoveFile{
  108. Source: app.AppIcon,
  109. Target: "application",
  110. }
  111. reply := &rpcs.ReplyMoveFile{}
  112. err := server.RPCCallByName("fileaccess", "FileAccess.MoveFile", args, reply)
  113. if err != nil {
  114. server.Log.Error(err)
  115. app.AppIcon = ""
  116. } else {
  117. app.AppIcon = reply.FilePath
  118. }
  119. }
  120. if app.AppIcon == "" {
  121. old, _ := a.Service.GetAppInfo(a.Token.getVendorID(a.Ctx), app.AppKey)
  122. arg := &rpcs.ArgsDeleteFile{
  123. FileName: old.AppIcon,
  124. }
  125. reply := &rpcs.ReplyEmptyResult{}
  126. server.RPCCallByName("fileaccess", "FileAccess.DeleteFile", arg, reply)
  127. }
  128. result, err := a.Service.Update(app)
  129. if err != nil {
  130. responseError(a.Ctx, ErrDatabase, err.Error())
  131. return
  132. }
  133. done(a.Ctx, result)
  134. }