api_gateway_service.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package service
  2. import (
  3. "errors"
  4. "xps/cache"
  5. "xps/datasource"
  6. "xps/repositories"
  7. )
  8. type ApiGatewayService interface {
  9. Get(apiCode string, m map[string]interface{})([]map[string]interface{}, error)
  10. Create(apiCode string, m map[string]interface{})error
  11. Update(apiCode string, m map[string]interface{})error
  12. Patch(apiCode string, m map[string]interface{})error
  13. Delete(apiCode string, m map[string]interface{})error
  14. }
  15. type apiGatewayService struct {
  16. dataBus *repositories.DataBusRepo
  17. }
  18. func NewApiGatewayService() ApiGatewayService {
  19. return &apiGatewayService{
  20. dataBus: repositories.NewDataBusRepo(datasource.InstanceSlave()),
  21. }
  22. }
  23. func (a *apiGatewayService) Get(apiCode string, m map[string]interface{}) ([]map[string]interface{}, error) {
  24. apiInfo, err1 := cache.GetApiData(apiCode)
  25. if err1 != nil{
  26. return nil, err1
  27. }
  28. transUnits := apiInfo.TransUnits
  29. if len(transUnits) > 0 {
  30. trans := transUnits[0]
  31. oamType := trans.OamType
  32. sqlStatement := trans.SqlStatement
  33. sqlSelect := trans.SqlSelect
  34. sqlFrom := trans.SqlFrom
  35. sqlWhere := trans.SqlWhere
  36. sqlOrder := trans.SqlOrder
  37. if oamType == 1 {
  38. return a.dataBus.GetById(sqlStatement, m)
  39. }
  40. if oamType == 2 {
  41. return a.dataBus.GetList(sqlSelect, sqlFrom, sqlWhere, sqlOrder, m)
  42. }
  43. return a.dataBus.GetList(sqlSelect, sqlFrom, sqlWhere, sqlOrder, m)
  44. }
  45. return nil, errors.New("API交易数据不完整")
  46. }
  47. func (a *apiGatewayService) Handle(apiCode string, action int, m map[string]interface{}) error{
  48. apiInfo, err1 := cache.GetApiData(apiCode)
  49. if err1 == nil{
  50. return err1
  51. }
  52. transUnits := apiInfo.TransUnits
  53. for _, transUnit := range transUnits {
  54. objectCode := transUnit.ObjectCode
  55. objectInfo, err2 := cache.GetObjectData(objectCode)
  56. if err2 == nil {
  57. return err2
  58. }
  59. if action == 1 {
  60. err5 := a.dataBus.Create(objectInfo, m)
  61. if err5 == nil {
  62. return err5
  63. }
  64. }
  65. if action == 2 {
  66. err5 := a.dataBus.Update(objectInfo, m)
  67. if err5 == nil {
  68. return err5
  69. }
  70. }
  71. if action == 3 {
  72. err5 := a.dataBus.Patch(objectInfo, m)
  73. if err5 == nil {
  74. return err5
  75. }
  76. }
  77. if action == 4 {
  78. err5 := a.dataBus.Delete(objectInfo, m)
  79. if err5 == nil {
  80. return err5
  81. }
  82. }
  83. }
  84. return nil
  85. }
  86. func (a *apiGatewayService) Create(apiCode string, m map[string]interface{}) error {
  87. return a.Handle(apiCode, 1, m)
  88. }
  89. func (a *apiGatewayService) Update(apiCode string, m map[string]interface{}) error {
  90. return a.Handle(apiCode, 2, m)
  91. }
  92. func (a *apiGatewayService) Patch(apiCode string, m map[string]interface{}) error {
  93. return a.Handle(apiCode, 3, m)
  94. }
  95. func (a *apiGatewayService) Delete(apiCode string, m map[string]interface{}) error {
  96. return a.Handle(apiCode, 4, m)
  97. }