version.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package v1
  2. import (
  3. "dsbqj-admin/app/service"
  4. "dsbqj-admin/pkg/app"
  5. "dsbqj-admin/pkg/e"
  6. "dsbqj-admin/pkg/serializer"
  7. "net/http"
  8. "github.com/gin-gonic/gin"
  9. )
  10. const versionExternalConfigKey = "version_external_config"
  11. func isOldVersion(v string) bool {
  12. // 比如 < 1.2.0 都算老版本
  13. return v <= "1.0.67"
  14. }
  15. func CheckVersion(c *gin.Context) {
  16. var appG = app.Gin{C: c}
  17. service := service.VersionCheckService{}
  18. err := c.ShouldBind(&service)
  19. if err != nil {
  20. if isOldVersion(service.Version) {
  21. service.Channel = "wx"
  22. } else {
  23. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  24. return
  25. }
  26. }
  27. if res, err := service.Check(); err != nil {
  28. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  29. } else {
  30. appG.Response(http.StatusOK, e.SUCCESS, serializer.BuildVersion(res))
  31. }
  32. }
  33. func ServerVersion(c *gin.Context) {
  34. var appG = app.Gin{C: c}
  35. service := service.VersionServerService{}
  36. if err := c.ShouldBind(&service); err == nil {
  37. if res, err := service.Servers(); err != nil {
  38. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  39. } else {
  40. appG.Response(http.StatusOK, e.SUCCESS, serializer.BuildVersions(res))
  41. }
  42. } else {
  43. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  44. }
  45. }
  46. func ReloadVersion(c *gin.Context) {
  47. var appG = app.Gin{C: c}
  48. service := service.VersionReloadService{}
  49. if err := c.ShouldBind(&service); err == nil {
  50. if err := service.Reload(); err != nil {
  51. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  52. } else {
  53. appG.Response(http.StatusOK, e.SUCCESS, nil)
  54. }
  55. } else {
  56. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  57. }
  58. }
  59. func ShowVersions(c *gin.Context) {
  60. var appG = app.Gin{C: c}
  61. service := service.VersionShowService{}
  62. if err := c.ShouldBind(&service); err == nil {
  63. if res, err := service.List(); err != nil {
  64. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  65. } else {
  66. appG.Response(http.StatusOK, e.SUCCESS, res)
  67. }
  68. } else {
  69. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  70. }
  71. }
  72. func VersionCreate(c *gin.Context) {
  73. var appG = app.Gin{C: c}
  74. service := service.VersionCreateService{}
  75. if err := c.ShouldBind(&service); err == nil {
  76. res := service.Create()
  77. appG.Response(http.StatusOK, e.SUCCESS, res)
  78. } else {
  79. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  80. }
  81. }
  82. func VersionEdit(c *gin.Context) {
  83. var appG = app.Gin{C: c}
  84. service := service.VersionEditService{}
  85. if err := c.ShouldBind(&service); err == nil {
  86. res := service.Edit()
  87. appG.Response(http.StatusOK, e.SUCCESS, res)
  88. } else {
  89. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  90. }
  91. }
  92. func VersionProd(c *gin.Context) {
  93. var appG = app.Gin{C: c}
  94. service := service.VersionProdService{}
  95. if err := c.ShouldBind(&service); err == nil {
  96. res := service.Update()
  97. appG.Response(http.StatusOK, e.SUCCESS, res)
  98. } else {
  99. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  100. }
  101. }
  102. func VersionExternalConfig(c *gin.Context) {
  103. var appG = app.Gin{C: c}
  104. svc, ok := c.Get(versionExternalConfigKey)
  105. if !ok {
  106. appG.Response(http.StatusOK, e.INVALID_PARAMS, "missing version external auth")
  107. return
  108. }
  109. service, ok := svc.(*service.VersionExternalConfigService)
  110. if !ok {
  111. appG.Response(http.StatusOK, e.INVALID_PARAMS, "invalid version external auth")
  112. return
  113. }
  114. if res := service.Save(); res == nil {
  115. appG.Response(http.StatusOK, e.SUCCESS, res)
  116. } else {
  117. appG.Response(http.StatusOK, e.INVALID_PARAMS, res.Error())
  118. }
  119. }
  120. func VersionExternalAuth() gin.HandlerFunc {
  121. return func(c *gin.Context) {
  122. var appG = app.Gin{C: c}
  123. service := service.VersionExternalConfigService{}
  124. if err := c.ShouldBind(&service); err != nil {
  125. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  126. c.Abort()
  127. return
  128. }
  129. if err := service.ValidateAuth(); err != nil {
  130. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  131. c.Abort()
  132. return
  133. }
  134. c.Set(versionExternalConfigKey, &service)
  135. c.Next()
  136. }
  137. }
  138. func VersionDelete(c *gin.Context) {
  139. var appG = app.Gin{C: c}
  140. service := service.VersionDeleteService{}
  141. key := appG.ValidKey()
  142. service.Id = key
  143. if err := service.Delete(); err == nil {
  144. appG.Response(http.StatusOK, e.SUCCESS, nil)
  145. } else {
  146. appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error())
  147. }
  148. }