| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- package service
- import (
- "errors"
- "xps/cache"
- "xps/datasource"
- "xps/repositories"
- "xps/viewmodels"
- )
- type ApiGatewayService interface {
- Get(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error)
- GetPage(objectCode, oamCode string, m map[string]interface{})(*viewmodels.PageResult, error)
- GetList(objectCode, oamCode string, m map[string]interface{})([]map[string]interface{}, error)
-
- Create(objectCode, oamCode string, m map[string]interface{})error
- Update(objectCode, oamCode string, m map[string]interface{})error
- Patch(objectCode, oamCode string, m map[string]interface{})error
- Delete(objectCode, oamCode 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(objectCode, oamCode string, m map[string]interface{})(map[string]interface{}, error) {
- params, err1 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err1 != nil {
- return nil, err1
- }
-
- oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
- if err2 != nil {
- return nil, err2
- }
-
- sqlStatement := oam.SqlStatement
- data, err3 := a.dataBus.GetById(sqlStatement, params)
- if err3 != nil {
- return nil, err3
- }
-
- return a.Mapping2BizObjectAttr(objectCode, data)
- }
- func (a *apiGatewayService) GetList(objectCode, oamCode string, m map[string]interface{})([]map[string]interface{}, error) {
- params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err2 != nil {
- return nil, err2
- }
-
- oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
- if err2 != nil {
- return nil, err2
- }
- sqlStatement := oam.SqlStatement
- dataList, err3 := a.dataBus.GetList(sqlStatement, params)
- if err3 != nil {
- return nil, err3
- }
- return a.Mapping2BizObjectList(objectCode, dataList)
- }
- func (a *apiGatewayService) GetPage(objectCode, oamCode string, m map[string]interface{}) (*viewmodels.PageResult, error) {
- params, err1 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err1 != nil {
- return nil, err1
- }
-
- oam , err2:= cache.GetBizObjectOAMData(objectCode, oamCode)
- if err2 != nil {
- return nil, err2
- }
-
- sqlStatement := oam.SqlStatement
- sqlCount := oam.SqlCount
- pageData, err3 := a.dataBus.GetPage(sqlStatement, sqlCount, params)
- if err3 != nil {
- return nil, err3
- }
-
- return a.Mapping2BizPageObject(objectCode, pageData)
- }
- func (a *apiGatewayService) Create(objectCode, oamCode string, m map[string]interface{}) error {
- params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err2 != nil {
- return err2
- }
-
- return a.dataBus.Create(objectCode, params)
- }
- func (a *apiGatewayService) Update(objectCode, oamCode string, m map[string]interface{}) error {
- params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err2 != nil {
- return err2
- }
-
- return a.dataBus.Update(objectCode, params)
- }
- func (a *apiGatewayService) Patch(objectCode, oamCode string, m map[string]interface{}) error {
- params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err2 != nil {
- return err2
- }
-
- return a.dataBus.Patch(objectCode, params)
- }
- func (a *apiGatewayService) Delete(objectCode, oamCode string, m map[string]interface{}) error {
- params, err2 := a.Mapping2ModelObjectAttr(objectCode, m)
- if err2 != nil {
- return err2
- }
-
- return a.dataBus.Delete(objectCode, params)
- }
- func (a *apiGatewayService) Mapping2ModelObjectAttr(objectCode string, m map[string]interface{})(map[string]interface{}, error) {
- bzObject, err := cache.GetBizObjectData(objectCode)
- if err != nil {
- return nil, err
- }
-
- bizObjectAttrs := bzObject.Attrs
- params := make(map[string]interface{}, 0)
- for _, bzAttr := range bizObjectAttrs {
- bzAttrCode := bzAttr.AttrCode
- bzMappingCode := bzAttr.MappingCode
- if bzAttrValue, ok := m[bzAttrCode]; ok {
- params[bzMappingCode] = bzAttrValue
- }
- }
- return params, nil
- }
- func (a *apiGatewayService) Mapping2BizObjectAttr(objectCode string, m map[string]interface{})(map[string]interface{}, error) {
- bzObject, err := cache.GetBizObjectData(objectCode)
- if err != nil {
- return nil, err
- }
-
- bizObjectAttrs := bzObject.Attrs
- params := make(map[string]interface{}, 0)
- for _, bzAttr := range bizObjectAttrs {
- bzAttrCode := bzAttr.AttrCode
- bzMappingCode := bzAttr.MappingCode
- if bzAttrValue, ok := m[bzMappingCode]; ok {
- params[bzAttrCode] = bzAttrValue
- }
- }
- return params, nil
- }
- func (a *apiGatewayService) Mapping2BizObjectList(objectCode string, dataList []map[string]interface{})([]map[string]interface{}, error) {
- bzObject, err := cache.GetBizObjectData(objectCode)
- if err != nil {
- return nil, err
- }
- targetDataList := make([]map[string]interface{}, 0)
- for _, data := range dataList {
- bizObjectAttrs := bzObject.Attrs
- targetData := make(map[string]interface{}, 0)
- for _, bzAttr := range bizObjectAttrs {
- bzAttrCode := bzAttr.AttrCode
- bzMappingCode := bzAttr.MappingCode
- if bzAttrValue, ok := data[bzMappingCode]; ok {
- targetData[bzAttrCode] = bzAttrValue
- }
- }
- targetDataList = append(targetDataList, targetData)
- }
- return targetDataList, nil
- }
- func (a *apiGatewayService) Mapping2BizPageObject(objectCode string, pageData *viewmodels.PageResult)(*viewmodels.PageResult, error) {
- bzObject, err := cache.GetBizObjectData(objectCode)
- if err != nil {
- return nil, err
- }
-
- dataList,ok := pageData.Data.([]map[string]interface{})
- if !ok {
- return nil, errors.New("类型转换错误")
- }
-
- targetDataList := make([]map[string]interface{}, 0)
- for _, data := range dataList {
- bizObjectAttrs := bzObject.Attrs
- targetData := make(map[string]interface{}, 0)
- for _, bzAttr := range bizObjectAttrs {
- bzAttrCode := bzAttr.AttrCode
- bzMappingCode := bzAttr.MappingCode
- if bzAttrValue, ok := data[bzMappingCode]; ok {
- targetData[bzAttrCode] = bzAttrValue
- }
- }
- targetDataList = append(targetDataList, targetData)
- }
-
- targetPageData := &viewmodels.PageResult{
- Total: pageData.Total,
- PageSize: pageData.PageSize,
- Page: pageData.Page,
- TotalPage: pageData.TotalPage,
- Data: targetDataList,
- }
-
- return targetPageData, nil
- }
|