houyaf 3 tahun lalu
induk
melakukan
2d43df43bb

+ 4 - 4
cache/redis.go

@@ -134,13 +134,13 @@ func GetBizObjectOAMData(objectCode, oamCode string)(*viewmodels.BizObjectOAMInf
 	return oamData, nil
 }
 
-func SetApiData(objectCode, apiCode string, data *viewmodels.ApiInfo) error {
-	keyStr := fmt.Sprintf("api_%s_%s", objectCode, apiCode)
+func SetApiData(objectCode, oamCode string, data *viewmodels.ApiInfo) error {
+	keyStr := fmt.Sprintf("api_%s_%s", objectCode, oamCode)
 	return SetCache(keyStr, data, 0)
 }
 
-func GetApiData(objectCode, apiCode string)(*viewmodels.ApiInfo, error){
-	keyStr := fmt.Sprintf("api_%s_%s", objectCode, apiCode)
+func GetApiData(objectCode, oamCode string)(*viewmodels.ApiInfo, error){
+	keyStr := fmt.Sprintf("api_%s_%s", objectCode, oamCode)
 	apiData := &viewmodels.ApiInfo{}
 	err := Instance().Get(context.Background(), keyStr).Scan(apiData)
 	if err != nil {

+ 1 - 0
datamodels/api.go

@@ -4,6 +4,7 @@ import "time"
 
 type Api struct {
     ApiId           int64     `json:"apiId"           xorm:"'api_id'        bigint     pk comment('Api ID')    "`
+    ApiMethod       int64     `json:"apiMethod"       xorm:"'api_method'    bigint        comment('Api Method')"`
     ApiType         int64     `json:"apiType"         xorm:"'api_type'      bigint        comment('Api Type')  "`
     ApiTitle        string    `json:"apiTitle"        xorm:"'api_title'     varchar(127)  comment('名称')       "`
     ApiCode         string    `json:"apiCode"         xorm:"'api_code'      varchar(127)  comment('编码')       "`

+ 7 - 7
repositories/biz_object_oam_repo.go

@@ -24,8 +24,8 @@ func (d *BizObjectOAMRepo) GetList(m map[string]interface{}) ([]viewmodels.BizOb
                            B.object_title,
                            B.object_code,
                            B.object_type `
-    sqlFrom    := ` FROM  biz_object_oam  AS A
-                    LEFT JOIN biz_object  AS B ON(A.biz_id = B.biz_id AND A.object_id = B.object_id) `
+    sqlFrom    := ` FROM      biz_object_oam AS A
+                    LEFT JOIN biz_object     AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id) `
     
     sqlWhere   := ` WHERE A.deleted_flag = 0    `
     if bizId, ok := m["bizId"]; ok {
@@ -53,13 +53,13 @@ func (d *BizObjectOAMRepo) GetById(bizId, objectId, oamId int64) (*viewmodels.Bi
                            B.object_title,
                            B.object_code,
                            B.object_type `
-    sqlFrom    := ` FROM  biz_object_oam  AS A
-                    LEFT JOIN biz_object  AS B ON(A.biz_id = B.biz_id AND A.object_id = B.object_id) `
+    sqlFrom    := ` FROM      biz_object_oam AS A
+                    LEFT JOIN biz_object     AS B ON (A.biz_id = B.biz_id AND A.object_id = B.object_id)`
     
     sqlWhere   := ` WHERE A.deleted_flag = 0    `
-    sqlWhere   += fmt.Sprintf(" AND A.biz_id   = %d ", bizId)
-    sqlWhere   += fmt.Sprintf(" AND A.objectID = %d ", objectId)
-    sqlWhere   += fmt.Sprintf(" AND A.oam_id   = %d ", oamId)
+    sqlWhere   += fmt.Sprintf(" AND A.biz_id    = %d ", bizId)
+    sqlWhere   += fmt.Sprintf(" AND A.object_id = %d ", objectId)
+    sqlWhere   += fmt.Sprintf(" AND A.oam_id    = %d ", oamId)
     data    := &viewmodels.BizObjectOAMInfo{}
     has, err := d.engine.SQL(sqlSelect + sqlFrom + sqlWhere).Get(data)
     if !has || err != nil {

+ 4 - 5
repositories/data_bus_rebo.go

@@ -6,7 +6,6 @@ import (
     "time"
     "xorm.io/xorm"
     "xps/cache"
-    "xps/datamodels"
     "xps/viewmodels"
 )
 
@@ -24,22 +23,22 @@ func (d *DataBusRepo) GetPage(sqlStatement, sqlCount string, m map[string]interf
     limit := m["limit"].(int)
     page  := m["page"].(int)
     
-    _, err1 := d.engine.Exec(sqlCount)
+    res, err1 := d.engine.Exec(sqlCount)
     if err1 != nil {
         return nil, err1
     }
+    fmt.Print(res.LastInsertId())
     
     pageStart  := (page - 1) * limit
     sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
     
-    datalist := make([]datamodels.App, 0)
-    err2 := d.engine.SQL(sqlStatement + sqlLimit).Find(&datalist)
+    results, err2 := d.engine.QueryInterface(sqlStatement+ sqlLimit)
     if err2 != nil {
         return nil, err2
     }
     
     pageResult := &viewmodels.PageResult{}
-    pageResult.Data     = datalist
+    pageResult.Data     = results
     pageResult.Total    = 0
     pageResult.PageSize = limit
     pageResult.Page     = page

+ 94 - 3
service/api_gateway_service.go

@@ -1,6 +1,7 @@
 package service
 
 import (
+    "errors"
     "xps/cache"
     "xps/datasource"
     "xps/repositories"
@@ -40,7 +41,12 @@ func (a *apiGatewayService) Get(objectCode, oamCode string, m map[string]interfa
     }
     
     sqlStatement := oam.SqlStatement
-    return a.dataBus.GetById(sqlStatement, params)
+    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) {
@@ -54,7 +60,11 @@ func (a *apiGatewayService) GetList(objectCode, oamCode string, m map[string]int
         return nil, err2
     }
     sqlStatement := oam.SqlStatement
-    return a.dataBus.GetList(sqlStatement, params)
+    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) {
@@ -70,7 +80,12 @@ func (a *apiGatewayService) GetPage(objectCode, oamCode string, m map[string]int
     
     sqlStatement := oam.SqlStatement
     sqlCount     := oam.SqlCount
-    return a.dataBus.GetPage(sqlStatement, sqlCount, params)
+    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 {
@@ -126,3 +141,79 @@ func (a *apiGatewayService) Mapping2ModelObjectAttr(objectCode string, m map[str
     }
     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
+}

+ 1 - 1
service/api_service.go

@@ -87,7 +87,7 @@ func (s *apiService) CacheApiData(apiId int64) error {
     }
     
     // 缓存数据
-    err = cache.SetApiData(api.ObjectCode, api.ApiCode, api)
+    err = cache.SetApiData(api.ObjectCode, api.OamCode, api)
     if err != nil {
         return errors.New("Redis缓存Model数据失败")
     }

+ 23 - 8
service/biz_object_oam_service.go

@@ -11,7 +11,7 @@ import (
 
 type BizObjectOAMService interface {
     GetList(m map[string]interface{}) ([]viewmodels.BizObjectOAMInfo, error)
-    GetById(bizId, objectId, attrId int64) (*viewmodels.BizObjectOAMInfo, error)
+    GetById(bizId, objectId, oamId int64) (*viewmodels.BizObjectOAMInfo, error)
     Create(d *datamodels.BizObjectOAM) error
     Update(d *datamodels.BizObjectOAM) error
     Delete(m map[string]interface{}) error
@@ -34,17 +34,32 @@ func (s *bizObjectOAMService) GetList(m map[string]interface{}) ([]viewmodels.Bi
     return s.repo.GetList(m)
 }
 
-func (s *bizObjectOAMService) GetById(bizlId, objectId, oamId int64) (*viewmodels.BizObjectOAMInfo, error) {
-    return s.repo.GetById(bizlId, objectId, oamId)
+func (s *bizObjectOAMService) GetById(bizId, objectId, oamId int64) (*viewmodels.BizObjectOAMInfo, error) {
+    return s.repo.GetById(bizId, objectId, oamId)
 }
 
-func (s *bizObjectOAMService) Create(ObjectOAM *datamodels.BizObjectOAM) error {
-    ObjectOAM.OamId = NewID()
-    return s.repo.Create(ObjectOAM)
+func (s *bizObjectOAMService) Create(oam *datamodels.BizObjectOAM) error {
+    bizId    := oam.BizId
+    objectId := oam.ObjectId
+    oamId    := NewID()
+    
+    oam.OamId = oamId
+    err := s.repo.Create(oam)
+    if err != nil {
+        return err
+    }
+    return s.CacheObjectOAMData(bizId, objectId, oamId)
 }
 
-func (s *bizObjectOAMService) Update(ObjectOAM *datamodels.BizObjectOAM) error {
-    return s.repo.Update(ObjectOAM)
+func (s *bizObjectOAMService) Update(oam *datamodels.BizObjectOAM) error {
+    bizId    := oam.BizId
+    objectId := oam.ObjectId
+    oamId    := oam.OamId
+    err := s.repo.Update(oam)
+    if err != nil {
+        return err
+    }
+    return s.CacheObjectOAMData(bizId, objectId, oamId)
 }
 
 func (s *bizObjectOAMService) Delete(m map[string]interface{}) error {

+ 1 - 0
viewmodels/api_info.go

@@ -7,6 +7,7 @@ type ApiInfo struct {
     BizTitle        string    `json:"bizTitle"      xorm:"'biz_title'       varchar(127)   comment('Biz Title')    "`
     ApiId           int64     `json:"apiId"         xorm:"'api_id'          bigint     pk  comment('Api ID')       "`
     ApiType         int64     `json:"apiType"       xorm:"'api_type'        bigint         comment('Api Type')     "`
+    ApiMethod       int64     `json:"apiMethod"     xorm:"'api_method'      bigint         comment('Api Method')"`
     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')         "`

+ 14 - 1
viewmodels/biz_object_data.go

@@ -1,5 +1,9 @@
 package viewmodels
-import "time"
+
+import (
+    "encoding/json"
+    "time"
+)
 
 type BizObjectData struct {
     BizId       int64            `json:"bizId"           xorm:"'biz_id'          bigint      pk comment('主键ID')      "`
@@ -22,3 +26,12 @@ type BizObjectData struct {
 func (t *BizObjectData) TableName() string {
     return "biz_object"
 }
+
+func (t *BizObjectData) MarshalBinary() (data []byte, err error){
+    return json.Marshal(t)
+}
+
+func (t *BizObjectData) UnmarshalBinary(data []byte) (err error){
+    return json.Unmarshal(data, t)
+}
+

+ 13 - 1
viewmodels/biz_object_oam_info.go

@@ -1,5 +1,7 @@
 package viewmodels
 
+import "encoding/json"
+
 type BizObjectOAMInfo struct {
     BizId        int64     `json:"bizId"           xorm:"'biz_id'          bigint      pk comment('Biz ID')         "`
     ObjectId     int64     `json:"objectId"        xorm:"'object_id'       bigint      pk comment('Object ID')      "`
@@ -9,7 +11,8 @@ type BizObjectOAMInfo struct {
     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')        "`
-    OamType      int64     `json:"oamType"         xorm:"'oam_type'        bigint         comment('Type')           "`
+    OamType      int64     `json:"oamType"         xorm:"'oam_type'        bigint         comment('OAM Type')       "`
+    SqlType      int64     `json:"sqlType"         xorm:"'sql_type'        bigint         comment('SQL Type')       "`
     SqlStatement string    `json:"sqlStatement"    xorm:"'sql_statement'   varchar(1023)  comment('Statement')      "`
     SqlSelect    string    `json:"sqlSelect"       xorm:"'sql_select'      varchar(1023)  comment('Statement')      "`
     SqlFrom      string    `json:"sqlFrom"         xorm:"'sql_from'        varchar(1023)  comment('Statement')      "`
@@ -22,3 +25,12 @@ type BizObjectOAMInfo struct {
 func (t *BizObjectOAMInfo) TableName() string {
     return "biz_object_oam"
 }
+
+
+func (t *BizObjectOAMInfo) MarshalBinary() (data []byte, err error){
+    return json.Marshal(t)
+}
+
+func (t *BizObjectOAMInfo) UnmarshalBinary(data []byte) (err error){
+    return json.Unmarshal(data, t)
+}

+ 4 - 4
web/controllers/api_controller.go

@@ -22,8 +22,8 @@ func (c *ApiController) BeforeActivation(b mvc.BeforeActivation) {
 }
 
 func (c *ApiController) GetList() *JsonResult {
-    params   := c.buildParams()
-    bizId := c.Ctx.URLParamInt64Default("bizId", 0)
+    params := c.buildParams()
+    bizId  := c.Ctx.URLParamInt64Default("bizId", 0)
     if bizId > 0 {
         params["bizId"] = bizId
     }
@@ -42,8 +42,8 @@ func (c *ApiController) GetList() *JsonResult {
 }
 
 func (c *ApiController) GetPage() *JsonResult {
-    params   := c.buildParams()
-    bizId := c.Ctx.URLParamInt64Default("bizId", 0)
+    params := c.buildParams()
+    bizId  := c.Ctx.URLParamInt64Default("bizId", 0)
     if bizId <= 0 {
         return ResultErr("参数不完整", nil)
     }

+ 2 - 4
web/controllers/api_gateway_controller.go

@@ -23,10 +23,10 @@ func (c *ApiGatewayController) BeforeActivation(b mvc.BeforeActivation) {
 func (c *ApiGatewayController) Get(objectCode, oamCode string)*JsonResult {
     oamInfo, err := cache.GetApiData(objectCode, oamCode)
     if err != nil {
-        return nil
+        return ResultErr(err.Error(), nil)
     }
     
-    m := c.buildParams()
+    m       := c.buildParams()
     oamType := oamInfo.OamType
     if oamType == constant.OAM_GET_ONE {
         data, err := c.Service.Get(objectCode, oamCode, m)
@@ -37,14 +37,12 @@ func (c *ApiGatewayController) Get(objectCode, oamCode string)*JsonResult {
         }
     }
     if oamType == constant.OAM_GET_LIST{
-        
         data, err := c.Service.GetList(objectCode, oamCode, m)
         if err != nil {
             return ResultErr(err.Error(), nil)
         } else {
             return ResultOk("获取成功", data)
         }
-    
     }
     if oamType == constant.OAM_GET_PAGE {
         data, err := c.Service.GetPage(objectCode, oamCode, m)

+ 12 - 12
web/controllers/biz_object_oam_controller.go

@@ -12,12 +12,12 @@ type BizObjectOAMController struct {
 }
 
 func (c *BizObjectOAMController) BeforeActivation(b mvc.BeforeActivation) {
-    b.Handle("GET",     "/",                                                "GetList"       )
-    b.Handle("GET",     "/{modelId:int64}/{objectId:int64}",                "GetListById"   )
-    b.Handle("GET",     "/{modelId:int64}/{objectId:int64}/{oamId:int64}",  "GetById"       )
-    b.Handle("POST",    "/add",                                             "Create"        )
-    b.Handle("PUT",     "/update",                                          "Update"        )
-    b.Handle("DELETE",  "/{modelId:int64}/{objectId:int64}/{oamId:int64}", "DeleteByID"     )
+    b.Handle("GET",     "/",                                              "GetList"       )
+    b.Handle("GET",     "/{bizId:int64}/{objectId:int64}",                "GetListById"   )
+    b.Handle("GET",     "/{bizId:int64}/{objectId:int64}/{oamId:int64}",  "GetById"       )
+    b.Handle("POST",    "/add",                                           "Create"        )
+    b.Handle("PUT",     "/update",                                        "Update"        )
+    b.Handle("DELETE",  "/{bizId:int64}/{objectId:int64}/{oamId:int64}",  "DeleteByID"    )
 }
 
 func (c *BizObjectOAMController) GetList() *JsonResult {
@@ -42,8 +42,8 @@ func (c *BizObjectOAMController) GetListById(bizId, objectId int64) *JsonResult
     }
 }
 
-func (c *BizObjectOAMController) GetById(modelId, objectId, oamId int64) *JsonResult {
-    data, err := c.Service.GetById(modelId, objectId, oamId)
+func (c *BizObjectOAMController) GetById(bizId, objectId, oamId int64) *JsonResult {
+    data, err := c.Service.GetById(bizId, objectId, oamId)
     if err != nil {
         return ResultErr(err.Error(), nil)
     } else {
@@ -70,7 +70,7 @@ func (c *BizObjectOAMController) Create() *JsonResult {
 func (c *BizObjectOAMController) Update() *JsonResult {
     userId := c.GetCurUserId()
     
-    oam   := datamodels.BizObjectOAM{}
+    oam    := datamodels.BizObjectOAM{}
     if err := c.Ctx.ReadJSON(&oam); err != nil {
         return ResultErr("读取数据失败", nil)
     }
@@ -83,14 +83,14 @@ func (c *BizObjectOAMController) Update() *JsonResult {
     }
 }
 
-func (c *BizObjectOAMController) DeleteByID(modelId, objectId, oamId int64) *JsonResult {
+func (c *BizObjectOAMController) DeleteByID(bizId, objectId, oamId int64) *JsonResult {
     userId := c.GetCurUserId()
-    
     m := make(map[string]interface{})
-    m["modelId"]   = modelId
+    m["bizId"]     = bizId
     m["objectId"]  = objectId
     m["oamId"]     = oamId
     m["deletedBy"] = userId
+    
     if err := c.Service.Delete(m); err != nil {
         return ResultErr(err.Error(), nil)
     } else {

+ 1 - 1
web/controllers/model_object_controller.go

@@ -61,7 +61,7 @@ func (c *ModelObjectController) GetById(modelId, objectId int64) *JsonResult {
 }
 
 func (c *ModelObjectController) Create() *JsonResult {
-	userId     := c.GetCurUserId()
+	userId := c.GetCurUserId()
 	
 	objectData := viewmodels.ModelObjectData{}
 	if err := c.Ctx.ReadJSON(&objectData); err != nil {