api_service.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package service
  2. import (
  3. "errors"
  4. "xps/cmd/cache"
  5. "xps/cmd/datasource"
  6. "xps/pkg/api/datamodel"
  7. "xps/pkg/api/repository"
  8. "xps/pkg/api/viewmodel"
  9. "xps/pkg/base"
  10. )
  11. type ApiService interface {
  12. GetList(m map[string]interface{}) ([]viewmodel.ApiInfo, error)
  13. GetPage(m map[string]interface{}) (*base.PageResult, error)
  14. GetById(apiId int64) (*viewmodel.ApiInfo, error)
  15. Create(d *datamodel.Api) error
  16. Update(d *datamodel.Api) error
  17. ChangeStatus(apiId, status int64) error
  18. Delete(m map[string]interface{}) error
  19. CacheApiData(apiId int64) error
  20. }
  21. type apiService struct {
  22. apiRepo *repository.ApiRepo
  23. }
  24. func NewApiService() ApiService {
  25. return &apiService{
  26. apiRepo: repository.NewApiRepo(datasource.InstanceMaster()),
  27. }
  28. }
  29. func (s *apiService) GetList(m map[string]interface{}) ([]viewmodel.ApiInfo, error) {
  30. return s.apiRepo.GetList(m)
  31. }
  32. func (s *apiService) GetPage(m map[string]interface{}) (*base.PageResult, error) {
  33. return s.apiRepo.GetPage(m)
  34. }
  35. func (s *apiService) GetById(apiId int64) (*viewmodel.ApiInfo, error) {
  36. return s.apiRepo.GetById(apiId)
  37. }
  38. func (s *apiService) Create(api *datamodel.Api) error {
  39. api.ApiId = NewID()
  40. err := s.apiRepo.Create(api)
  41. if err != nil {
  42. return err
  43. }
  44. apiId := api.ApiId
  45. return s.CacheApiData(apiId)
  46. }
  47. func (s *apiService) Update(api *datamodel.Api) error {
  48. err := s.apiRepo.Update(api)
  49. if err != nil {
  50. return err
  51. }
  52. apiId := api.ApiId
  53. return s.CacheApiData(apiId)
  54. }
  55. func (s *apiService) ChangeStatus(apiId, status int64) error {
  56. data := &datamodel.Api{
  57. ApiId: apiId,
  58. Status: status,
  59. }
  60. err := s.apiRepo.Update(data)
  61. if err != nil {
  62. return err
  63. }
  64. return s.CacheApiData(apiId)
  65. }
  66. func (s *apiService) Delete(m map[string]interface{}) error {
  67. return s.apiRepo.Delete(m)
  68. }
  69. func (s *apiService) CacheApiData(apiId int64) error {
  70. api, err := s.apiRepo.GetById(apiId)
  71. if err != nil {
  72. return nil
  73. }
  74. // 缓存数据
  75. err = cache.SetApiData(api.ObjectCode, api.OamCode, api)
  76. if err != nil {
  77. return errors.New("Redis缓存Model数据失败")
  78. }
  79. return nil
  80. }