houyaf 3 年之前
父節點
當前提交
b98eaf0f0d

+ 16 - 0
cache/redis.go

@@ -132,6 +132,22 @@ func GetModelObjectAttrs(objectCode string)([]viewmodels.ModelObjectAttrInfo, er
 	return modelObjectAttrInfo, nil
 }
 
+// SetModelObjectOAM : Model Object OAM
+func SetModelObjectOAM(objectCode, oamCode string, data *viewmodels.ModelObjectOAMInfo) error {
+	keyStr := fmt.Sprintf("model_object_oam_%s_%s", objectCode, oamCode)
+	return SetCache(keyStr, data, 0)
+}
+
+// GetModelObjectOAM : Model Object OAM
+func GetModelObjectOAM(objectCode, oamCode string)(*viewmodels.ModelObjectOAMInfo, error){
+	keyStr := fmt.Sprintf("model_object_oam_%s_%s", objectCode, oamCode)
+	oamData := &viewmodels.ModelObjectOAMInfo{}
+	err := Instance().Get(context.Background(), keyStr).Scan(oamData)
+	if err != nil {
+		return nil, err
+	}
+	return oamData, nil
+}
 
 // SetBizObject : Biz Object
 func SetBizObject(objectCode string, data *viewmodels.BizObjectInfo) error {

+ 12 - 6
repositories/model_object_oam_repo.go

@@ -19,8 +19,10 @@ func NewModelObjectOAMRepo(engine *xorm.Engine) *ModelObjectOAMRepo {
 }
 
 func (d *ModelObjectOAMRepo) GetList(m map[string]interface{}) ([]viewmodels.ModelObjectOAMInfo, error) {
-    sqlSelect  := ` SELECT A.*                 `
-    sqlFrom    := ` FROM  ds_object_oam  AS A  `
+    sqlSelect  := ` SELECT    A.*,
+                              B.object_code `
+    sqlFrom    := ` FROM      ds_object_oam  AS A
+                    LEFT JOIN ds_object  AS B ON (A.model_id = B.model_id AND A.object_id = B.object_id)`
     sqlWhere   := ` WHERE A.deleted_flag = 0   `
     if keywords, ok := m["keywords"]; ok {
         sqlWhere += ` AND A.oam_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
@@ -38,8 +40,10 @@ func (d *ModelObjectOAMRepo) GetList(m map[string]interface{}) ([]viewmodels.Mod
 
 
 func (d *ModelObjectOAMRepo) GetListById(modelId, objectId int64) ([]viewmodels.ModelObjectOAMInfo, error) {
-    sqlSelect  := ` SELECT A.*                 `
-    sqlFrom    := ` FROM  ds_object_oam  AS A  `
+    sqlSelect  := ` SELECT    A.*,
+                              B.object_code `
+    sqlFrom    := ` FROM      ds_object_oam  AS A
+                    LEFT JOIN ds_object  AS B ON (A.model_id = B.model_id AND A.object_id = B.object_id)`
     sqlWhere   := ` WHERE A.deleted_flag = 0   `
     sqlWhere   += fmt.Sprintf(" AND A.model_id  = %d", modelId)
     sqlWhere   += fmt.Sprintf(" AND A.object_id = %d", objectId)
@@ -55,8 +59,10 @@ func (d *ModelObjectOAMRepo) GetListById(modelId, objectId int64) ([]viewmodels.
 }
 
 func (d *ModelObjectOAMRepo) GetById(modelId, objectId, oamId int64) (*viewmodels.ModelObjectOAMInfo, error) {
-    sqlSelect  := ` SELECT A.*                 `
-    sqlFrom    := ` FROM  ds_object_oam  AS A  `
+    sqlSelect  := ` SELECT    A.*,
+                              B.object_code `
+    sqlFrom    := ` FROM      ds_object_oam  AS A
+                    LEFT JOIN ds_object  AS B ON (A.model_id = B.model_id AND A.object_id = B.object_id)`
     sqlWhere   := ` WHERE A.deleted_flag = 0   `
     sqlWhere   += fmt.Sprintf(" AND A.model_id  = %d", modelId)
     sqlWhere   += fmt.Sprintf(" AND A.object_id = %d", objectId)

+ 20 - 5
service/model_object_attr_service.go

@@ -48,13 +48,28 @@ func (s *modelObjectAttrService) GetListById(modelId, objectId int64) ([]viewmod
 }
 
 
-func (s *modelObjectAttrService) Create(ObjectAttr *datamodels.ModelObjectAttr) error {
-	ObjectAttr.AttrId = NewID()
-	return s.repo.Create(ObjectAttr)
+func (s *modelObjectAttrService) Create(attr *datamodels.ModelObjectAttr) error {
+	attrId := NewID()
+	attr.AttrId = attrId
+	err := s.repo.Create(attr)
+	if err != nil {
+		return err
+	}
+	
+	modelId  := attr.ModelId
+	objectId := attr.ObjectId
+	return s.CacheModelObjectAttrs(modelId, objectId)
 }
 
-func (s *modelObjectAttrService) Update(ObjectAttr *datamodels.ModelObjectAttr) error {
-	return s.repo.Update(ObjectAttr)
+func (s *modelObjectAttrService) Update(attr *datamodels.ModelObjectAttr) error {
+	err := s.repo.Update(attr)
+	if err != nil {
+		return err
+	}
+	
+	modelId  := attr.ModelId
+	objectId := attr.ObjectId
+	return s.CacheModelObjectAttrs(modelId, objectId)
 }
 
 func (s *modelObjectAttrService) Delete(m map[string]interface{}) error {

+ 37 - 5
service/model_object_oam_service.go

@@ -1,6 +1,8 @@
 package service
 
 import (
+    "errors"
+    "xps/cache"
     "xps/datamodels"
     "xps/datasource"
     "xps/repositories"
@@ -38,15 +40,45 @@ func (s *modelObjectOAMService) GetById(modelId, objectId, oamId int64) (*viewmo
     return s.repo.GetById(modelId, objectId, oamId)
 }
 
-func (s *modelObjectOAMService) Create(ObjectOAM *datamodels.ModelObjectOAM) error {
-    ObjectOAM.OamId = NewID()
-    return s.repo.Create(ObjectOAM)
+func (s *modelObjectOAMService) Create(o *datamodels.ModelObjectOAM) error {
+    oamId := NewID()
+    
+    o.OamId = oamId
+    err := s.repo.Create(o)
+    if err != nil {
+        return err
+    }
+    
+    modelId  := o.ModelId
+    objectId := o.ObjectId
+    return s.CacheBizObjectOAM(modelId, objectId, oamId)
 }
 
-func (s *modelObjectOAMService) Update(ObjectOAM *datamodels.ModelObjectOAM) error {
-    return s.repo.Update(ObjectOAM)
+func (s *modelObjectOAMService) Update(o *datamodels.ModelObjectOAM) error {
+    err := s.repo.Update(o)
+    if err != nil {
+        return err
+    }
+    
+    modelId  := o.ModelId
+    objectId := o.ObjectId
+    oamId    := o.OamId
+    return s.CacheBizObjectOAM(modelId, objectId, oamId)
 }
 
 func (s *modelObjectOAMService) Delete(m map[string]interface{}) error {
     return s.repo.Delete(m)
 }
+
+func (s *modelObjectOAMService) CacheBizObjectOAM(modelId, objectId, oamId int64) error {
+    oam, err1 := s.repo.GetById(modelId, objectId, oamId)
+    if err1 != nil {
+        return err1
+    }
+    
+    err3 := cache.SetModelObjectOAM(oam.ObjectCode, oam.OamCode, oam)
+    if err3 != nil {
+        return errors.New("Redis缓存Model数据失败")
+    }
+    return nil
+}

+ 25 - 9
service/model_object_service.go

@@ -13,8 +13,8 @@ type ModelObjectService interface {
 	GetList(m map[string]interface{}) ([]viewmodels.ModelObjectInfo, error)
 	GetPage(m map[string]interface{}) (*viewmodels.PageResult, error)
 	GetById(modelId, objectId int64) (*viewmodels.ModelObjectInfo, error)
-	Create(d *datamodels.ModelObject) error
-	Update(d *datamodels.ModelObject) error
+	Create(o *datamodels.ModelObject) error
+	Update(o *datamodels.ModelObject) error
 	Delete(m map[string]interface{}) error
 	
 	CacheModelObject(modelId, objectId int64) error
@@ -44,13 +44,28 @@ func (s *modelObjectService) GetById(modelId, objectId int64) (*viewmodels.Model
 	return s.modelObjectRepo.GetById(modelId, objectId)
 }
 
-func (s *modelObjectService) Create(Object *datamodels.ModelObject) error {
-	Object.ObjectId = NewID()
-	return s.modelObjectRepo.Create(Object)
+func (s *modelObjectService) Create(o *datamodels.ModelObject) error {
+	objectId := NewID()
+	
+	o.ObjectId = objectId
+	err := s.modelObjectRepo.Create(o)
+	if err != nil {
+		return err
+	}
+	
+	modelId := o.ModelId
+	return s.CacheModelObject(modelId, objectId)
 }
 
-func (s *modelObjectService) Update(Object *datamodels.ModelObject) error {
-	return s.modelObjectRepo.Update(Object)
+func (s *modelObjectService) Update(o *datamodels.ModelObject) error {
+	err := s.modelObjectRepo.Update(o)
+	if err != nil {
+		return err
+	}
+	
+	modelId  := o.ModelId
+	objectId := o.ObjectId
+	return s.CacheModelObject(modelId, objectId)
 }
 
 func (s *modelObjectService) Delete(m map[string]interface{}) error {
@@ -68,8 +83,9 @@ func (s *modelObjectService) CacheModelObject(modelId, objectId int64) error {
 	if err1 != nil {
 		return err1
 	}
-	err3 := cache.SetModelObject(o.ObjectCode, o)
-	if err3 != nil {
+	
+	err2 := cache.SetModelObject(o.ObjectCode, o)
+	if err2 != nil {
 		return errors.New("Redis缓存Biz Object数据失败")
 	}
 	return nil

+ 1 - 0
viewmodels/model_object_oam_info.go

@@ -4,6 +4,7 @@ package viewmodels
 type ModelObjectOAMInfo struct {
     ModelId      int64     `json:"modelId"         xorm:"'model_id'        bigint      pk comment('Model ID')       "`
     ObjectId     int64     `json:"objectId"        xorm:"'object_id'       bigint      pk comment('Object ID')      "`
+    ObjectCode   string    `json:"objectCode"      xorm:"'object_code'     varchar(127)   comment('Object Code')    "`
     OamId        int64     `json:"oamId"           xorm:"'oam_id'          bigint      pk comment('OAM ID')         "`
     OamTitle     string    `json:"oamTitle"        xorm:"'oam_title'       varchar(127)   comment('OAMTitle')       "`
     OamCode      string    `json:"oamCode"         xorm:"'oam_code'        varchar(127)   comment('OAMCode')        "`