version.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. package service
  2. import (
  3. "context"
  4. "dsbqj-admin/app/task"
  5. "dsbqj-admin/model/mongo/version"
  6. "github.com/kamva/mgm/v3"
  7. "go.mongodb.org/mongo-driver/bson"
  8. "go.mongodb.org/mongo-driver/bson/primitive"
  9. )
  10. type VersionReloadService struct {
  11. }
  12. func (service *VersionReloadService) Reload() error {
  13. task.VersionTask.Exec()
  14. return nil
  15. }
  16. type VersionServerService struct {
  17. Channel string `json:"channel" binding:"required"`
  18. }
  19. func (service *VersionServerService) Servers() ([]*version.Version, error) {
  20. return task.VersionTask.Servers(service.Channel), nil
  21. }
  22. type VersionCheckService struct {
  23. Version string `json:"version" binding:"required"`
  24. Channel string `json:"channel" binding:"required"`
  25. EnvVersion string `json:"envVersion"`
  26. }
  27. func (service *VersionCheckService) Check() (*version.Version, error) {
  28. return task.VersionTask.Check(service.Version, service.Channel, service.EnvVersion), nil
  29. }
  30. type VersionShowService struct {
  31. CondPage
  32. Channel string `form:"channel" json:"channel"`
  33. EnvVersion string `form:"envVersion" json:"envVersion"`
  34. }
  35. func (service *VersionShowService) List() ([]version.Version, error) {
  36. versions := make([]version.Version, 0)
  37. var queryDoc = bson.M{}
  38. if service.Channel != "" {
  39. queryDoc["channel"] = service.Channel
  40. }
  41. if service.EnvVersion != "" {
  42. envVersion := task.NormalizeEnvVersion(service.EnvVersion)
  43. if envVersion == "release" {
  44. queryDoc["$or"] = []bson.M{
  45. {"envVersion": envVersion},
  46. {"envVersion": ""},
  47. {"envVersion": bson.M{"$exists": false}},
  48. }
  49. } else {
  50. queryDoc["envVersion"] = envVersion
  51. }
  52. }
  53. err := mgm.Coll(&version.Version{}).SimpleFind(&versions, queryDoc)
  54. return versions, err
  55. }
  56. type VersionCreateService struct {
  57. Channel string `json:"channel" binding:"required"`
  58. EnvVersion string `json:"envVersion"`
  59. Version string `json:"version" binding:"required"`
  60. Name string `json:"name" binding:"required"`
  61. CDN string `json:"cdn" binding:"required"`
  62. Url string `json:"url" binding:"required"`
  63. }
  64. func (service *VersionCreateService) Create() error {
  65. version := new(version.Version)
  66. version.Channel = service.Channel
  67. version.EnvVersion = task.NormalizeEnvVersion(service.EnvVersion)
  68. version.Name = service.Name
  69. version.Version = service.Version
  70. version.CDN = service.CDN
  71. version.Url = service.Url
  72. return mgm.Coll(version).Create(version)
  73. }
  74. type VersionEditService struct {
  75. Id string `json:"id" binding:"required"`
  76. Channel *string `json:"channel"`
  77. EnvVersion *string `json:"envVersion"`
  78. Version *string `json:"version"`
  79. Name *string `json:"name"`
  80. CDN *string `json:"cdn"`
  81. Url *string `json:"url"`
  82. Default *bool `json:"default"`
  83. }
  84. func (service *VersionEditService) Edit() error {
  85. version := new(version.Version)
  86. objectId, _ := primitive.ObjectIDFromHex(service.Id)
  87. filterDoc := bson.M{"_id": objectId}
  88. updateDoc := bson.M{}
  89. if service.Channel != nil {
  90. updateDoc["channel"] = service.Channel
  91. }
  92. if service.EnvVersion != nil {
  93. updateDoc["envVersion"] = task.NormalizeEnvVersion(*service.EnvVersion)
  94. }
  95. if service.Name != nil {
  96. updateDoc["name"] = service.Name
  97. }
  98. if service.Version != nil {
  99. updateDoc["version"] = service.Version
  100. }
  101. if service.CDN != nil {
  102. updateDoc["cdn"] = service.CDN
  103. }
  104. if service.Url != nil {
  105. updateDoc["url"] = service.Url
  106. }
  107. if service.Default != nil {
  108. updateDoc["default"] = service.Default
  109. }
  110. _, err := mgm.Coll(version).UpdateOne(context.Background(), filterDoc, bson.M{"$set": updateDoc})
  111. return err
  112. }
  113. type VersionDeleteService struct {
  114. Id string `json:"id" binding:"required"`
  115. }
  116. func (service *VersionDeleteService) Delete() error {
  117. version := new(version.Version)
  118. objectId, _ := primitive.ObjectIDFromHex(service.Id)
  119. filterDoc := bson.M{"_id": objectId}
  120. _, err := mgm.Coll(version).DeleteOne(context.Background(), filterDoc)
  121. return err
  122. }