houyaf před 3 roky
rodič
revize
89a482515b

+ 31 - 0
cache/redis.go

@@ -89,6 +89,37 @@ 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)
+	return SetCache(keyStr, data, 0)
+}
+
+func GetModelData(objectTitle string)(*viewmodels.ObjectDataInfo, error){
+	keyStr := fmt.Sprintf("model_%s", objectTitle)
+	modelData := &viewmodels.ObjectDataInfo{}
+	err := Instance().Get(context.Background(), keyStr).Scan(modelData)
+	if err != nil {
+		return nil, err
+	}
+	return modelData, nil
+}
+
+func SetApiData(objectTitle string, data *viewmodels.ApiDataInfo) error {
+	keyStr := fmt.Sprintf("model_%s", objectTitle)
+	return SetCache(keyStr, data, 0)
+}
+
+func GetApiData(objectTitle string)(*viewmodels.ApiDataInfo, error){
+	keyStr := fmt.Sprintf("model_%s", objectTitle)
+	apiData := &viewmodels.ApiDataInfo{}
+	err := Instance().Get(context.Background(), keyStr).Scan(apiData)
+	if err != nil {
+		return nil, err
+	}
+	return apiData, nil
+}
+
+
 func GetUserData(userId int64) (*viewmodels.UserData, error) {
 	keyStr := fmt.Sprintf("user_%d", userId)
 	userData := &viewmodels.UserData{}

+ 21 - 6
repositories/object_attr_repo.go

@@ -34,8 +34,8 @@ func (d *ObjectAttrRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResu
 	if err1 != nil {
 		return nil, err1
 	}
-
-	sqlOrderBy := " ORDER BY A.object_id DESC "
+	sqlOrderBy := " ORDER BY A.sort_no "
+	
 	pageStart  := (page - 1) * limit
 	sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
 
@@ -55,12 +55,27 @@ func (d *ObjectAttrRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResu
 
 func (d *ObjectAttrRepo) GetList(m map[string]interface{}) ([]viewmodels.ObjectAttrInfo, error) {
 	sqlSelect  := ` SELECT A.*                 `
-	sqlFrom    := ` FROM  ds_object_attr AS A  `
-	sqlWhere   := ` WHERE A.deleted_flag = 0   `
+	sqlFrom    := ` FROM   ds_object_attr AS A  `
+	sqlWhere   := ` WHERE  A.deleted_flag = 0   `
 	if keywords, ok := m["keywords"]; ok {
 		sqlWhere += ` AND A.attr_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
 	}
-	sqlOrderBy := " ORDER BY A.model_id DESC "
+	sqlOrderBy := " ORDER BY A.sort_no "
+	
+	datalist   := make([]viewmodels.ObjectAttrInfo, 0)
+	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+	if err != nil {
+		return nil, err
+	} else {
+		return datalist, nil
+	}
+}
+
+func (d *ObjectAttrRepo) GetAll() ([]viewmodels.ObjectAttrInfo, error) {
+	sqlSelect  := ` SELECT A.*                  `
+	sqlFrom    := ` FROM   ds_object_attr AS A  `
+	sqlWhere   := ` WHERE  A.deleted_flag = 0   `
+	sqlOrderBy := ` ORDER BY A.sort_no          `
 	
 	datalist   := make([]viewmodels.ObjectAttrInfo, 0)
 	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
@@ -77,7 +92,7 @@ func (d *ObjectAttrRepo) GetListById(modelId, objectId int64) ([]viewmodels.Obje
 	sqlWhere   := ` WHERE A.deleted_flag = 0   `
 	sqlWhere   += fmt.Sprintf(" AND A.model_id  = %d", modelId)
 	sqlWhere   += fmt.Sprintf(" AND A.object_id = %d", objectId)
-	sqlOrderBy := " ORDER BY A.model_id DESC "
+	sqlOrderBy := " ORDER BY A.sort_no "
 	
 	datalist   := make([]viewmodels.ObjectAttrInfo, 0)
 	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)

+ 19 - 2
repositories/object_repo.go

@@ -36,7 +36,7 @@ func (d *ObjectRepo) GetPage(m map[string]interface{}) (*viewmodels.PageResult,
 	if err1 != nil {
 		return nil, err1
 	}
-	sqlOrderBy := " ORDER BY object_id DESC "
+	sqlOrderBy := " ORDER BY A.model_id, A.object_id "
 	
 	pageStart  := (page - 1) * limit
 	sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
@@ -66,7 +66,24 @@ func (d *ObjectRepo) GetList(m map[string]interface{}) ([]viewmodels.ObjectInfo,
 	if keywords, ok := m["keywords"]; ok {
 		sqlWhere += ` AND A.object_title like ` + "'%" + fmt.Sprintf("%s", keywords) + "%'"
 	}
-	sqlOrderBy := " ORDER BY model_id ASC "
+	sqlOrderBy := " ORDER BY A.model_id, A.object_id "
+	
+	datalist := make([]viewmodels.ObjectInfo, 0)
+	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)
+	if err != nil {
+		return nil, err
+	} else {
+		return datalist, nil
+	}
+}
+
+func (d *ObjectRepo) GetAll() ([]viewmodels.ObjectInfo, error) {
+	sqlSelect  := ` SELECT    A.*,
+                              B.model_title      `
+	sqlFrom    := ` FROM      ds_object  AS A
+                    LEFT JOIN ds_model   AS B ON (A.model_id = B.model_id)  `
+	sqlWhere   := ` WHERE A.deleted_flag = 0 `
+	sqlOrderBy := " ORDER BY A.model_id, A.object_id "
 	
 	datalist := make([]viewmodels.ObjectInfo, 0)
 	err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere + sqlOrderBy).Find(&datalist)

+ 0 - 1
service/api_gateway_service.go

@@ -14,7 +14,6 @@ type ApiGatewayService interface {
     Delete(apiCode string, m map[string]interface{})error
 }
 
-
 type apiGatewayService struct {
     apiRepo *repositories.ApiRepo
     apiTransUnitRepo *repositories.ApiTransUnitRepo

+ 46 - 9
service/api_service.go

@@ -1,6 +1,8 @@
 package service
 
 import (
+    "errors"
+    "xps/cache"
     "xps/datamodels"
     "xps/datasource"
     "xps/repositories"
@@ -15,37 +17,40 @@ type ApiService interface {
     Update(d *datamodels.Api) error
     ChangeStatus(modId, apiId, status int64) error
     Delete(m map[string]interface{}) error
+    CacheApiData(modId, apiId int64) error
 }
 
 type apiService struct {
-    repo *repositories.ApiRepo
+    apiRepo *repositories.ApiRepo
+    transRepo *repositories.ApiTransUnitRepo
 }
 
 func NewApiService() ApiService {
     return &apiService{
-        repo: repositories.NewApiRepo(datasource.InstanceMaster()),
+        apiRepo: repositories.NewApiRepo(datasource.InstanceMaster()),
+        transRepo: repositories.NewApiTransUnitRepo(datasource.InstanceMaster()),
     }
 }
 
 func (s *apiService) GetList(m map[string]interface{}) ([]viewmodels.ApiInfo, error) {
-    return s.repo.GetList(m)
+    return s.apiRepo.GetList(m)
 }
 
 func (s *apiService) GetPage(m map[string]interface{}) (*viewmodels.PageResult, error) {
-    return s.repo.GetPage(m)
+    return s.apiRepo.GetPage(m)
 }
 
 func (s *apiService) GetById(modId, apiId int64) (*viewmodels.ApiInfo, error) {
-    return s.repo.GetById(modId, apiId)
+    return s.apiRepo.GetById(modId, apiId)
 }
 
 func (s *apiService) Create(Api *datamodels.Api) error {
     Api.ApiId = NewID()
-    return s.repo.Create(Api)
+    return s.apiRepo.Create(Api)
 }
 
 func (s *apiService) Update(Api *datamodels.Api) error {
-    return s.repo.Update(Api)
+    return s.apiRepo.Update(Api)
 }
 
 func (s *apiService) ChangeStatus(modId, apiId, status int64) error {
@@ -54,9 +59,41 @@ func (s *apiService) ChangeStatus(modId, apiId, status int64) error {
         ApiId: apiId,
         Status: status,
     }
-    return s.repo.Update(data)
+    return s.apiRepo.Update(data)
 }
 
 func (s *apiService) Delete(m map[string]interface{}) error {
-    return s.repo.Delete(m)
+    return s.apiRepo.Delete(m)
 }
+
+func (s *apiService) 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,
+        TransUnits: trans,
+    }
+    
+    // 缓存数据
+    err = cache.SetApiData(api.ApiCode, cacheData)
+    if err != nil {
+        return errors.New("Redis缓存Model数据失败")
+    }
+    
+    return nil
+}

+ 81 - 6
service/object_service.go

@@ -1,8 +1,10 @@
 package service
 
 import (
-    "time"
-    "xps/datamodels"
+	"errors"
+	"time"
+	"xps/cache"
+	"xps/datamodels"
     "xps/datasource"
     "xps/repositories"
 	"xps/viewmodels"
@@ -108,7 +110,9 @@ func (s *objectService) CreateObjectData(o *viewmodels.ObjectData) error {
 	if err != nil {
 		return err
 	}
-
+	
+	// cache object
+	attrsCache := make([]viewmodels.ObjectAttrInfo, 0)
 	for _, a := range o.Attrs {
 		newId := NewID()
 		objectAttr := &datamodels.ObjectAttr{
@@ -132,8 +136,43 @@ func (s *objectService) CreateObjectData(o *viewmodels.ObjectData) error {
 		if err != nil {
 			return err
 		}
+		
+		attrCache := viewmodels.ObjectAttrInfo{
+			ModelId:      modelId,
+			ObjectId:     objectId,
+			AttrId:       newId,
+			AttrTitle:    a.AttrTitle,
+			AttrCode:     a.AttrCode,
+			AttrType:     a.AttrType,
+			AttrLength:   a.AttrLength,
+			AttrDecimals: a.AttrDecimals,
+			Comment:      a.Comment,
+			IsFixed:      a.IsFixed,
+			IsNotNull:    a.IsNotNull,
+			IsPKey:       a.IsPKey,
+		}
+		
+		attrsCache = append(attrsCache, attrCache)
 	}
-
+	
+	objectDataCache := &viewmodels.ObjectDataInfo{
+		ModelId:     o.ModelId,
+		ModelTitle:  o.ModelTitle,
+		ObjectId:    o.ObjectId,
+		ObjectType:  o.ObjectType,
+		ObjectTitle: o.ObjectTitle,
+		ObjectCode:  o.ObjectCode,
+		Comment:     o.Comment,
+		IsFixed:     o.IsFixed,
+		Attrs:       attrsCache,
+	}
+	
+	// 缓存数据
+	err = cache.SetModelData(o.ObjectCode, objectDataCache)
+	if err != nil {
+		return errors.New("Redis缓存Model数据失败")
+	}
+	
 	return nil
 }
 
@@ -161,7 +200,9 @@ func (s *objectService) UpdateObjectData(o *viewmodels.ObjectData) error {
 	if err != nil {
 		return err
 	}
-
+	
+	// cache object
+	attrsCache := make([]viewmodels.ObjectAttrInfo, 0)
 	for _, a := range o.Attrs {
 		newId := NewID()
 		objectAttr := &datamodels.ObjectAttr{
@@ -184,7 +225,41 @@ func (s *objectService) UpdateObjectData(o *viewmodels.ObjectData) error {
 		if err != nil {
 			return err
 		}
+		
+		attrCache := viewmodels.ObjectAttrInfo{
+			ModelId:      modelId,
+			ObjectId:     objectId,
+			AttrId:       newId,
+			AttrTitle:    a.AttrTitle,
+			AttrCode:     a.AttrCode,
+			AttrType:     a.AttrType,
+			AttrLength:   a.AttrLength,
+			AttrDecimals: a.AttrDecimals,
+			Comment:      a.Comment,
+			IsFixed:      a.IsFixed,
+			IsNotNull:    a.IsNotNull,
+			IsPKey:       a.IsPKey,
+		}
+		
+		attrsCache = append(attrsCache, attrCache)
 	}
-
+	
+	objectDataCache := &viewmodels.ObjectDataInfo{
+		ModelId:     o.ModelId,
+		ModelTitle:  o.ModelTitle,
+		ObjectId:    o.ObjectId,
+		ObjectType:  o.ObjectType,
+		ObjectTitle: o.ObjectTitle,
+		ObjectCode:  o.ObjectCode,
+		Comment:     o.Comment,
+		IsFixed:     o.IsFixed,
+		Attrs:       attrsCache,
+	}
+	
+	err = cache.SetModelData(o.ObjectCode, objectDataCache)
+	if err != nil {
+		return errors.New("Redis缓存Model数据失败")
+	}
+	
 	return nil
 }

+ 28 - 0
viewmodels/api_data_info.go

@@ -0,0 +1,28 @@
+package viewmodels
+
+import "encoding/json"
+
+type ApiDataInfo struct {
+    ModId       int64     `json:"modId"        xorm:"'mod_id'       bigint     pk comment('Module ID')"`
+    ModTitle    string    `json:"modTitle"     xorm:"'mod_title'    varchar(127)  comment('Module Title') "`
+    ApiId       int64     `json:"apiId"        xorm:"'api_id'       bigint     pk comment('Api ID')   "`
+    ApiType     int64     `json:"apiType"      xorm:"'api_type'     bigint     pk comment('Api Type') "`
+    ApiTitle    string    `json:"apiTitle"     xorm:"'api_title'    varchar(127)  comment('名称')      "`
+    ApiCode     string    `json:"apiCode"      xorm:"'api_code'     varchar(127)  comment('编码')      "`
+    ApiParams   string    `json:"apiParams"    xorm:"'api_params'   varchar(127)  comment('Param')    "`
+    Status      int64     `json:"status"       xorm:"'status'       bigint        comment('Status')   "`
+    ApiDesc     string    `json:"apiDesc"      xorm:"'api_desc'     varchar(50)   comment('描述')      "`
+    TransUnits  []ApiTransUnitInfo `json:"transUnits"`
+}
+
+func (t *ApiDataInfo) TableName() string {
+    return "ps_api"
+}
+
+func (g *ApiDataInfo) MarshalBinary() (data []byte, err error){
+    return json.Marshal(g)
+}
+
+func (g *ApiDataInfo) UnmarshalBinary(data []byte) (err error){
+    return json.Unmarshal(data, g)
+}