version.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package service
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/binding"
  4. "git.sxidc.com/go-framework/baize/framework/core/api"
  5. "git.sxidc.com/go-framework/baize/framework/core/api/request"
  6. "git.sxidc.com/go-framework/baize/framework/core/api/response"
  7. "git.sxidc.com/go-framework/baize/framework/core/application"
  8. "git.sxidc.com/go-framework/baize/framework/core/domain"
  9. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  10. "git.sxidc.com/service-supports/fserr"
  11. )
  12. var versionService = &VersionService{}
  13. type VersionService struct{}
  14. func (svc *VersionService) Init(appInstance *application.App) error {
  15. svc.prefixRoot(appInstance)
  16. return nil
  17. }
  18. func (svc *VersionService) Destroy() error {
  19. return nil
  20. }
  21. func (svc *VersionService) prefixRoot(appInstance *application.App) {
  22. prefixRootBinder := binding.NewBinder(appInstance.ChooseRouter(api.RouterPrefix, ""), appInstance.Infrastructure())
  23. binding.GetBind(prefixRootBinder, &binding.SimpleBindItem[map[string]any]{
  24. Path: "/version",
  25. SendResponseFunc: response.SendMapResponse,
  26. ServiceFunc: func(c *api.Context, params request.Params, objects []domain.Object, i *infrastructure.Infrastructure) (map[string]any, error) {
  27. localCacheVersion, err := i.LocalCache().Get("version")
  28. if err != nil {
  29. return nil, err
  30. }
  31. redisCacheVersion, err := i.RedisCache().Get("version")
  32. if err != nil {
  33. return nil, err
  34. }
  35. if localCacheVersion != redisCacheVersion {
  36. return nil, fserr.New("版本不一致")
  37. }
  38. return map[string]any{
  39. "version": localCacheVersion,
  40. }, nil
  41. },
  42. })
  43. }