api_gateway_service.go 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package service
  2. import (
  3. "xps/cache"
  4. "xps/datasource"
  5. "xps/repositories"
  6. "xps/viewmodels"
  7. )
  8. type ApiGatewayService interface {
  9. Get(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error)
  10. GetPage(objectCode, oamCode string, m map[string]interface{})(*viewmodels.PageResult, error)
  11. GetList(objectCode, oamCode string, m map[string]interface{})([]map[string]interface{}, error)
  12. Create(objectCode, oamCode string, m map[string]interface{})error
  13. Update(objectCode, oamCode string, m map[string]interface{})error
  14. Patch(objectCode, oamCode string, m map[string]interface{})error
  15. Delete(objectCode, oamCode string, m map[string]interface{})error
  16. }
  17. type apiGatewayService struct {
  18. dataBus *repositories.DataBusRepo
  19. }
  20. func NewApiGatewayService() ApiGatewayService {
  21. return &apiGatewayService{
  22. dataBus: repositories.NewDataBusRepo(datasource.InstanceSlave()),
  23. }
  24. }
  25. func (a *apiGatewayService) Get(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error) {
  26. params, err1 := a.Mapping2ModelObjectAttr(objectCode, m)
  27. if err1 != nil {
  28. return nil, err1
  29. }
  30. oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
  31. if err2 != nil {
  32. return nil, err2
  33. }
  34. sqlStatement := oam.SqlStatement
  35. return a.dataBus.GetById(sqlStatement, params)
  36. }
  37. func (a *apiGatewayService) GetList(objectCode, oamCode string, m map[string]interface{})([]map[string]interface{}, error) {
  38. params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
  39. if err2 != nil {
  40. return nil, err2
  41. }
  42. oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
  43. if err2 != nil {
  44. return nil, err2
  45. }
  46. sqlStatement := oam.SqlStatement
  47. return a.dataBus.GetList(sqlStatement, params)
  48. }
  49. func (a *apiGatewayService) GetPage(objectCode, oamCode string, m map[string]interface{}) (*viewmodels.PageResult, error) {
  50. params, err1 := a.Mapping2ModelObjectAttr(objectCode, m)
  51. if err1 != nil {
  52. return nil, err1
  53. }
  54. oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
  55. if err2 != nil {
  56. return nil, err2
  57. }
  58. sqlStatement := oam.SqlStatement
  59. sqlCount := oam.SqlCount
  60. return a.dataBus.GetPage(sqlStatement, sqlCount, params)
  61. }
  62. func (a *apiGatewayService) Create(objectCode, oamCode string, m map[string]interface{}) error {
  63. params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
  64. if err2 != nil {
  65. return err2
  66. }
  67. return a.dataBus.Create(objectCode, params)
  68. }
  69. func (a *apiGatewayService) Update(objectCode, oamCode string, m map[string]interface{}) error {
  70. params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
  71. if err2 != nil {
  72. return err2
  73. }
  74. return a.dataBus.Update(objectCode, params)
  75. }
  76. func (a *apiGatewayService) Patch(objectCode, oamCode string, m map[string]interface{}) error {
  77. params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
  78. if err2 != nil {
  79. return err2
  80. }
  81. return a.dataBus.Patch(objectCode, params)
  82. }
  83. func (a *apiGatewayService) Delete(objectCode, oamCode string, m map[string]interface{}) error {
  84. params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
  85. if err2 != nil {
  86. return err2
  87. }
  88. return a.dataBus.Delete(objectCode, params)
  89. }
  90. func (a *apiGatewayService) Mapping2ModelObjectAttr(objectCode string, m map[string]interface{})(map[string]interface{}, error) {
  91. bzObject, err := cache.GetBizObjectData(objectCode)
  92. if err != nil {
  93. return nil, err
  94. }
  95. bizObjectAttrs := bzObject.Attrs
  96. params := make(map[string]interface{}, 0)
  97. for _, bzAttr := range bizObjectAttrs {
  98. bzAttrCode := bzAttr.AttrCode
  99. bzMappingCode := bzAttr.MappingCode
  100. if bzAttrValue, ok := m[bzAttrCode]; ok {
  101. params[bzMappingCode] = bzAttrValue
  102. }
  103. }
  104. return params, nil
  105. }