package service import ( "xps/cache" "xps/datasource" "xps/repositories" "xps/viewmodels" ) type ApiGatewayService interface { Get(apiCode string, m map[string]interface{})(map[string]interface{}, error) GetPage(apiCode string, m map[string]interface{})(*viewmodels.PageResult, error) GetList(apiCode string, m map[string]interface{})([]map[string]interface{}, error) Create(apiCode string, m map[string]interface{})error Update(apiCode string, m map[string]interface{})error Patch(apiCode string, m map[string]interface{})error Delete(apiCode string, m map[string]interface{})error } type apiGatewayService struct { dataBus *repositories.DataBusRepo } func NewApiGatewayService() ApiGatewayService { return &apiGatewayService{ dataBus: repositories.NewDataBusRepo(datasource.InstanceSlave()), } } func (a *apiGatewayService) Get(apiCode string, m map[string]interface{}) (map[string]interface{}, error) { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return nil, err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return nil, err2 } sqlStatement := apiDef.SqlStatement return a.dataBus.GetById(sqlStatement, m) } func (a *apiGatewayService) GetList(apiCode string, m map[string]interface{}) ([]map[string]interface{}, error) { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return nil, err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return nil, err2 } sqlStatement := apiDef.SqlStatement return a.dataBus.GetList(sqlStatement, m) } func (a *apiGatewayService) GetPage(apiCode string, m map[string]interface{}) (*viewmodels.PageResult, error) { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return nil, err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return nil, err2 } sqlStatement := apiDef.SqlStatement sqlCount := apiDef.SqlCount return a.dataBus.GetPage(sqlStatement, sqlCount, m) } func (a *apiGatewayService) Create(apiCode string, m map[string]interface{}) error { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return err2 } err3 := a.dataBus.Create(objectCode, m) if err3 != nil { return err3 } return nil } func (a *apiGatewayService) Update(apiCode string, m map[string]interface{}) error { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return err2 } err3 := a.dataBus.Update(objectCode, m) if err3 != nil { return err3 } return nil } func (a *apiGatewayService) Patch(apiCode string, m map[string]interface{}) error { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return err2 } err3 := a.dataBus.Patch(objectCode, m) if err3 != nil { return err3 } return nil } func (a *apiGatewayService) Delete(apiCode string, m map[string]interface{}) error { apiDef, err1 := cache.GetApiData(apiCode) if err1 != nil{ return err1 } objectCode := apiDef.ObjectCode _, err2 := cache.GetBizObjectData(objectCode) if err2 != nil { return err2 } err3 := a.dataBus.Delete(objectCode, m) if err3 != nil { return err3 } return nil }