package v1 import ( "dsbqj-admin/app/service" "dsbqj-admin/pkg/app" "dsbqj-admin/pkg/e" "dsbqj-admin/pkg/serializer" "net/http" "github.com/gin-gonic/gin" ) const versionExternalConfigKey = "version_external_config" func isOldVersion(v string) bool { // 比如 < 1.2.0 都算老版本 return v <= "1.0.67" } func CheckVersion(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionCheckService{} err := c.ShouldBind(&service) if err != nil { if isOldVersion(service.Version) { service.Channel = "wx" } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) return } } if res, err := service.Check(); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } else { appG.Response(http.StatusOK, e.SUCCESS, serializer.BuildVersion(res)) } } func ServerVersion(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionServerService{} if err := c.ShouldBind(&service); err == nil { if res, err := service.Servers(); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } else { appG.Response(http.StatusOK, e.SUCCESS, serializer.BuildVersions(res)) } } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func ReloadVersion(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionReloadService{} if err := c.ShouldBind(&service); err == nil { if err := service.Reload(); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } else { appG.Response(http.StatusOK, e.SUCCESS, nil) } } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func ShowVersions(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionShowService{} if err := c.ShouldBind(&service); err == nil { if res, err := service.List(); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } else { appG.Response(http.StatusOK, e.SUCCESS, res) } } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func VersionCreate(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionCreateService{} if err := c.ShouldBind(&service); err == nil { res := service.Create() appG.Response(http.StatusOK, e.SUCCESS, res) } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func VersionEdit(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionEditService{} if err := c.ShouldBind(&service); err == nil { res := service.Edit() appG.Response(http.StatusOK, e.SUCCESS, res) } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func VersionProd(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionProdService{} if err := c.ShouldBind(&service); err == nil { res := service.Update() appG.Response(http.StatusOK, e.SUCCESS, res) } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } } func VersionExternalConfig(c *gin.Context) { var appG = app.Gin{C: c} svc, ok := c.Get(versionExternalConfigKey) if !ok { appG.Response(http.StatusOK, e.INVALID_PARAMS, "missing version external auth") return } service, ok := svc.(*service.VersionExternalConfigService) if !ok { appG.Response(http.StatusOK, e.INVALID_PARAMS, "invalid version external auth") return } if res := service.Save(); res == nil { appG.Response(http.StatusOK, e.SUCCESS, res) } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, res.Error()) } } func VersionExternalAuth() gin.HandlerFunc { return func(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionExternalConfigService{} if err := c.ShouldBind(&service); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) c.Abort() return } if err := service.ValidateAuth(); err != nil { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) c.Abort() return } c.Set(versionExternalConfigKey, &service) c.Next() } } func VersionDelete(c *gin.Context) { var appG = app.Gin{C: c} service := service.VersionDeleteService{} key := appG.ValidKey() service.Id = key if err := service.Delete(); err == nil { appG.Response(http.StatusOK, e.SUCCESS, nil) } else { appG.Response(http.StatusOK, e.INVALID_PARAMS, err.Error()) } }