houyaf vor 3 Jahren
Ursprung
Commit
b8ac67314b

+ 8 - 9
cache/redis.go

@@ -89,13 +89,13 @@ func SetUserData(userId int64, userData *viewmodels.UserData) error {
 	return SetCache(keyStr, userData, 0)
 }
 
-func SetModelData(objectTitle string, data *viewmodels.ObjectDataInfo) error {
-	keyStr := fmt.Sprintf("model_%s", objectTitle)
+func SetObjectData(objectCode string, data *viewmodels.ObjectDataInfo) error {
+	keyStr := fmt.Sprintf("model_%s", objectCode)
 	return SetCache(keyStr, data, 0)
 }
 
-func GetModelData(objectTitle string)(*viewmodels.ObjectDataInfo, error){
-	keyStr := fmt.Sprintf("model_%s", objectTitle)
+func GetObjectData(objectCode string)(*viewmodels.ObjectDataInfo, error){
+	keyStr := fmt.Sprintf("model_%s", objectCode)
 	modelData := &viewmodels.ObjectDataInfo{}
 	err := Instance().Get(context.Background(), keyStr).Scan(modelData)
 	if err != nil {
@@ -104,13 +104,13 @@ func GetModelData(objectTitle string)(*viewmodels.ObjectDataInfo, error){
 	return modelData, nil
 }
 
-func SetApiData(objectTitle string, data *viewmodels.ApiDataInfo) error {
-	keyStr := fmt.Sprintf("model_%s", objectTitle)
+func SetApiData(apiCode string, data *viewmodels.ApiDataInfo) error {
+	keyStr := fmt.Sprintf("api_%s", apiCode)
 	return SetCache(keyStr, data, 0)
 }
 
-func GetApiData(objectTitle string)(*viewmodels.ApiDataInfo, error){
-	keyStr := fmt.Sprintf("model_%s", objectTitle)
+func GetApiData(apiCode string)(*viewmodels.ApiDataInfo, error){
+	keyStr := fmt.Sprintf("model_%s", apiCode)
 	apiData := &viewmodels.ApiDataInfo{}
 	err := Instance().Get(context.Background(), keyStr).Scan(apiData)
 	if err != nil {
@@ -119,7 +119,6 @@ func GetApiData(objectTitle string)(*viewmodels.ApiDataInfo, error){
 	return apiData, nil
 }
 
-
 func GetUserData(userId int64) (*viewmodels.UserData, error) {
 	keyStr := fmt.Sprintf("user_%d", userId)
 	userData := &viewmodels.UserData{}

+ 9 - 4
repositories/data_bus_rebo.go

@@ -74,8 +74,9 @@ func (d *DataBusRepo) GetById(statement string, fields map[string]interface{})(m
     return results[0], nil
 }
 
-func (d *DataBusRepo) Create(object *viewmodels.ObjectInfo, fields []viewmodels.ObjectAttrInfo, values map[string]interface{}) error {
+func (d *DataBusRepo) Create(object *viewmodels.ObjectDataInfo, values map[string]interface{}) error {
     tableName := object.ObjectCode
+    fields    := object.Attrs
     
     sql := "INSERT INTO" + fmt.Sprintf(" %s ", tableName)
     sqlFields := "( "
@@ -102,8 +103,9 @@ func (d *DataBusRepo) Create(object *viewmodels.ObjectInfo, fields []viewmodels.
     return err
 }
 
-func (d *DataBusRepo) Update(object *viewmodels.ObjectInfo, fields []viewmodels.ObjectAttrInfo, values map[string]interface{}) error {
+func (d *DataBusRepo) Update(object *viewmodels.ObjectDataInfo, values map[string]interface{}) error {
     tableName := object.ObjectCode
+    fields    := object.Attrs
     
     sql := fmt.Sprintf("UPDATE table %s ", tableName)
     
@@ -131,8 +133,9 @@ func (d *DataBusRepo) Update(object *viewmodels.ObjectInfo, fields []viewmodels.
     return err
 }
 
-func (d *DataBusRepo) Patch(object *viewmodels.ObjectInfo, fields []viewmodels.ObjectAttrInfo, values map[string]interface{}) error {
+func (d *DataBusRepo) Patch(object *viewmodels.ObjectDataInfo, values map[string]interface{}) error {
     tableName := object.ObjectCode
+    fields    := object.Attrs
     
     sql := fmt.Sprintf("UPDATE table %s ", tableName)
     
@@ -161,8 +164,10 @@ func (d *DataBusRepo) Patch(object *viewmodels.ObjectInfo, fields []viewmodels.O
 }
 
 
-func (d *DataBusRepo) Delete(object *viewmodels.ObjectInfo, fields []viewmodels.ObjectAttrInfo, values map[string]interface{}) error {
+func (d *DataBusRepo) Delete(object *viewmodels.ObjectDataInfo, values map[string]interface{}) error {
     tableName := object.ObjectCode
+    fields    := object.Attrs
+    
     deletedBy := values["deletedBy"].(int64)
     
     sql := fmt.Sprintf("UPDATE table %s ", tableName)

+ 12 - 30
service/api_gateway_service.go

@@ -2,6 +2,7 @@ package service
 
 import (
     "errors"
+    "xps/cache"
     "xps/datasource"
     "xps/repositories"
 )
@@ -15,19 +16,12 @@ type ApiGatewayService interface {
 }
 
 type apiGatewayService struct {
-    apiRepo *repositories.ApiRepo
-    apiTransUnitRepo *repositories.ApiTransUnitRepo
-    objectRepo *repositories.ObjectRepo
-    objectAttrRepo *repositories.ObjectAttrRepo
     dataBus *repositories.DataBusRepo
 }
 
 
 func NewApiGatewayService() ApiGatewayService {
     return &apiGatewayService{
-        apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()),
-        objectRepo: repositories.NewObjectRepo(datasource.InstanceMaster()),
-        objectAttrRepo: repositories.NewObjectAttrRepo(datasource.InstanceMaster()),
         dataBus: repositories.NewDataBusRepo(datasource.InstanceMaster()),
     }
 }
@@ -40,52 +34,40 @@ func (a apiGatewayService) Get(apiCode string, m map[string]interface{}) ([]map[
 }
 
 func (a apiGatewayService) Handle(apiCode string, action int, m map[string]interface{}) error{
-   apiInfo, err1 := a.apiRepo.GetByCode(apiCode)
+   apiInfo, err1 := cache.GetApiData(apiCode)
    if err1 == nil{
        return err1
    }
    
-   apiId := apiInfo.ApiId
-   atus, err2 := a.apiTransUnitRepo.GetListById(apiId)
-   if err2 == nil{
-       return err2
-   }
-   
-   for _, atu := range atus {
-       modelId  := atu.ModelId
-       objectId := atu.ObjectId
+   transUnits := apiInfo.TransUnits
+   for _, transUnit := range transUnits {
+       objectCode := transUnit.ObjectCode
        
-       objectInfo, err3 := a.objectRepo.GetById(modelId, objectId)
-       if err3 == nil {
-           return err3
+       objectInfo, err2 := cache.GetObjectData(objectCode)
+       if err2 == nil {
+           return err2
        }
        
-       attrs , err4 := a.objectAttrRepo.GetListById(modelId, objectId)
-       if err4 == nil {
-           return err4
-       }
-    
        if action == 1 {
-           err5 := a.dataBus.Create(objectInfo, attrs, m)
+           err5 := a.dataBus.Create(objectInfo, m)
            if err5 == nil {
                return err5
            }
        }
        if action == 2 {
-           err5 := a.dataBus.Update(objectInfo, attrs, m)
+           err5 := a.dataBus.Update(objectInfo, m)
            if err5 == nil {
                return err5
            }
        }
        if action == 3 {
-           err5 := a.dataBus.Patch(objectInfo, attrs, m)
+           err5 := a.dataBus.Patch(objectInfo, m)
            if err5 == nil {
                return err5
            }
        }
-    
        if action == 4 {
-           err5 := a.dataBus.Delete(objectInfo, attrs, m)
+           err5 := a.dataBus.Delete(objectInfo, m)
            if err5 == nil {
                return err5
            }

+ 26 - 6
service/api_service.go

@@ -44,13 +44,27 @@ func (s *apiService) GetById(modId, apiId int64) (*viewmodels.ApiInfo, error) {
     return s.apiRepo.GetById(modId, apiId)
 }
 
-func (s *apiService) Create(Api *datamodels.Api) error {
-    Api.ApiId = NewID()
-    return s.apiRepo.Create(Api)
+func (s *apiService) Create(api *datamodels.Api) error {
+    api.ApiId = NewID()
+    err := s.apiRepo.Create(api)
+    if err != nil {
+        return err
+    }
+    
+    modId := api.ModId
+    apiId := api.ApiId
+    return s.CacheApiData(modId, apiId)
 }
 
-func (s *apiService) Update(Api *datamodels.Api) error {
-    return s.apiRepo.Update(Api)
+func (s *apiService) Update(api *datamodels.Api) error {
+    err :=  s.apiRepo.Update(api)
+    if err != nil {
+        return err
+    }
+    
+    modId := api.ModId
+    apiId := api.ApiId
+    return s.CacheApiData(modId, apiId)
 }
 
 func (s *apiService) ChangeStatus(modId, apiId, status int64) error {
@@ -59,7 +73,12 @@ func (s *apiService) ChangeStatus(modId, apiId, status int64) error {
         ApiId: apiId,
         Status: status,
     }
-    return s.apiRepo.Update(data)
+    err := s.apiRepo.Update(data)
+    if err != nil {
+        return err
+    }
+    
+    return s.CacheApiData(modId, apiId)
 }
 
 func (s *apiService) Delete(m map[string]interface{}) error {
@@ -86,6 +105,7 @@ func (s *apiService) CacheApiData(modId, apiId int64) error {
         ApiType: api.ApiType,
         ApiParams: api.ApiParams,
         ApiDesc: api.ApiDesc,
+        Status: api.Status,
         TransUnits: trans,
     }
     

+ 59 - 9
service/api_trans_unit_service.go

@@ -1,6 +1,8 @@
 package service
 
 import (
+    "errors"
+    "xps/cache"
     "xps/datamodels"
     "xps/datasource"
     "xps/repositories"
@@ -17,37 +19,85 @@ type ApiTransUnitService interface {
 }
 
 type apiTransUnitService struct {
-    repo *repositories.ApiTransUnitRepo
+    apiRepo *repositories.ApiRepo
+    transRepo *repositories.ApiTransUnitRepo
 }
 
 func NewApiTransUnitService() ApiTransUnitService {
     return &apiTransUnitService{
-        repo: repositories.NewApiTransUnitRepo(datasource.InstanceMaster()),
+        apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()),
+        transRepo: repositories.NewApiTransUnitRepo(datasource.InstanceMaster()),
     }
 }
 
 func (s *apiTransUnitService) GetList(m map[string]interface{}) ([]viewmodels.ApiTransUnitInfo, error) {
-    return s.repo.GetList(m)
+    return s.transRepo.GetList(m)
 }
 
 func (s *apiTransUnitService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
-    return s.repo.GetPage(m)
+    return s.transRepo.GetPage(m)
 }
 
 func (s *apiTransUnitService) GetById(apiId, atuId int64) (*viewmodels.ApiTransUnitInfo, error) {
-    return s.repo.GetById(apiId, atuId)
+    return s.transRepo.GetById(apiId, atuId)
 }
 
 func (s *apiTransUnitService) Create(atu *datamodels.ApiTransUnit) error {
     atu.AtuId = NewID()
-    return s.repo.Create(atu)
+    err := s.transRepo.Create(atu)
+    if err != nil {
+        return err
+    }
+    
+    modId := atu.ModelId
+    apiId := atu.ApiId
+    return s.CacheApiData(modId, apiId)
 }
 
 func (s *apiTransUnitService) Update(atu *datamodels.ApiTransUnit) error {
-    return s.repo.Update(atu)
+    err := s.transRepo.Update(atu)
+    if err != nil {
+        return err
+    }
+    
+    modId := atu.ModelId
+    apiId := atu.ApiId
+    return s.CacheApiData(modId, apiId)
 }
 
-
 func (s *apiTransUnitService) Delete(m map[string]interface{}) error {
-    return s.repo.Delete(m)
+    return s.transRepo.Delete(m)
+}
+
+func (s *apiTransUnitService) CacheApiData(modId, apiId int64) error {
+    api, err := s.apiRepo.GetById(modId, apiId)
+    if err != nil {
+        return nil
+    }
+    
+    trans, err := s.transRepo.GetListById(apiId)
+    if err != nil {
+        return nil
+    }
+    
+    cacheData := &viewmodels.ApiDataInfo{
+        ModId: api.ModId,
+        ModTitle: api.ModTitle,
+        ApiId: api.ApiId,
+        ApiCode: api.ApiCode,
+        ApiTitle: api.ApiTitle,
+        ApiType: api.ApiType,
+        ApiParams: api.ApiParams,
+        ApiDesc: api.ApiDesc,
+        Status: api.Status,
+        TransUnits: trans,
+    }
+    
+    // 缓存数据
+    err = cache.SetApiData(api.ApiCode, cacheData)
+    if err != nil {
+        return errors.New("Redis缓存Api数据失败")
+    }
+    
+    return nil
 }

+ 2 - 2
service/object_service.go

@@ -168,7 +168,7 @@ func (s *objectService) CreateObjectData(o *viewmodels.ObjectData) error {
 	}
 	
 	// 缓存数据
-	err = cache.SetModelData(o.ObjectCode, objectDataCache)
+	err = cache.SetObjectData(o.ObjectCode, objectDataCache)
 	if err != nil {
 		return errors.New("Redis缓存Model数据失败")
 	}
@@ -256,7 +256,7 @@ func (s *objectService) UpdateObjectData(o *viewmodels.ObjectData) error {
 		Attrs:       attrsCache,
 	}
 	
-	err = cache.SetModelData(o.ObjectCode, objectDataCache)
+	err = cache.SetObjectData(o.ObjectCode, objectDataCache)
 	if err != nil {
 		return errors.New("Redis缓存Model数据失败")
 	}

+ 6 - 5
viewmodels/api_trans_unit_info.go

@@ -2,12 +2,13 @@ package viewmodels
 
 
 type ApiTransUnitInfo struct {
-    ApiId           int64       `json:"apiId"           xorm:"'api_id'              bigint pk     comment('ApiId')       "`
-    AtuId           int64       `json:"atuId"           xorm:"'atu_id'              bigint pk     comment('AtuId')       "`
-    ModelId         int64       `json:"modelId"         xorm:"'model_id'            bigint        comment('ModelId')     "`
-    ModelTitle      string      `json:"modelTitle"      xorm:"'model_title'         varchar(127)  comment('Model Title') "`
-    ObjectId        int64       `json:"objectId"        xorm:"'object_id'           bigint        comment('ObjectId')    "`
+    ApiId           int64       `json:"apiId"           xorm:"'api_id'              bigint pk     comment('ApiId')        "`
+    AtuId           int64       `json:"atuId"           xorm:"'atu_id'              bigint pk     comment('AtuId')        "`
+    ModelId         int64       `json:"modelId"         xorm:"'model_id'            bigint        comment('ModelId')      "`
+    ModelTitle      string      `json:"modelTitle"      xorm:"'model_title'         varchar(127)  comment('Model Title')  "`
+    ObjectId        int64       `json:"objectId"        xorm:"'object_id'           bigint        comment('ObjectId')     "`
     ObjectTitle     string      `json:"objectTitle"     xorm:"'object_title'        varchar(127)  comment('Object Title') "`
+    ObjectCode      string      `json:"objectCode"      xorm:"'object_code'         varchar(127)  comment('Object Code')  "`
     ObjectOamType   int64       `json:"objectOamType"   xorm:"'object_oam_type'     bigint        comment('ObjectOamType')"`
 }