houyaf 3 年之前
父節點
當前提交
fbdb1a6cca
共有 3 個文件被更改,包括 29 次插入47 次删除
  1. 15 43
      repositories/x_bus_rebo.go
  2. 3 3
      service/x_gateway_service.go
  3. 11 1
      web/controllers/api_gateway_controller.go

+ 15 - 43
repositories/x_bus_rebo.go

@@ -22,48 +22,28 @@ func NewXBusRepo(engine *xorm.Engine) *XBusRepo {
     }
 }
 
-func (d *XBusRepo) BuildPageQueryParam(params []viewmodels.QueryParam)(string, int, int, error) {
+func (d *XBusRepo) BuildQueryParam(params []viewmodels.QueryParam) string {
     sqlWhere := " WHERE 1 = 1 "
-    limit    := int(0)
-    page     := int(0)
-    ok       := false
     for _, param := range params {
-        if param.Name == "limit" {
-            limit, ok = param.Value.(int)
-            if !ok {
-                return sqlWhere, limit, page, errors.New("limit值不正确")
-            }
-        } else if param.Name == "page" {
-            page, ok = param.Value.(int)
-            if !ok {
-                return sqlWhere, limit, page, errors.New("page值不正确")
-            }
+        paramType := param.Type
+        if paramType == constant.DATA_TYPE_DATE ||
+            paramType == constant.DATA_TYPE_DATETIME ||
+            paramType == constant.DATA_TYPE_VARCHAR {
+            sqlWhere += fmt.Sprintf(" %s %v %s '%v'", param.LogicalOperator, param.Name, param.CompareOperator, param.Value )
         } else {
             sqlWhere += fmt.Sprintf(" %s %v %s %v", param.LogicalOperator, param.Name, param.CompareOperator, param.Value )
         }
     }
-    return sqlWhere, limit, page, nil
+    return sqlWhere
 }
 
-func (d *XBusRepo) BuildQueryParam(params []viewmodels.QueryParam)(string, error) {
-    sqlWhere := " WHERE 1 = 1 "
-    for _, param := range params {
-        sqlWhere += fmt.Sprintf(" %s %v %s %v", param.LogicalOperator, param.Name, param.CompareOperator, param.Value )
-    }
-    return sqlWhere, nil
-}
-
-func (d *XBusRepo) GetPage(sqlStatement, sqlCount string, params []viewmodels.QueryParam) (*viewmodels.PageResult, error) {
-    sqlWhere, limit, page, err1 := d.BuildPageQueryParam(params)
+func (d *XBusRepo) GetPage(sqlStatement, sqlCount string, params []viewmodels.QueryParam, page int, limit int) (*viewmodels.PageResult, error) {
+    sqlWhere  := d.BuildQueryParam(params)
+    res, err1 := d.engine.Query(sqlCount + sqlWhere)
     if err1 != nil {
         return nil, err1
     }
     
-    res, err2 := d.engine.Query(sqlCount + sqlWhere)
-    if err2 != nil {
-        return nil, err2
-    }
-    
     total := int64(0)
     for _, v := range res[0] {
         total, _ = strconv.ParseInt(string(v), 10, 64)
@@ -72,9 +52,9 @@ func (d *XBusRepo) GetPage(sqlStatement, sqlCount string, params []viewmodels.Qu
     pageStart  := (page - 1) * limit
     sqlLimit   := fmt.Sprintf(" LIMIT %d OFFSET %d ", limit, pageStart)
     
-    results, err4 := d.engine.QueryInterface(sqlStatement + sqlWhere + sqlLimit)
-    if err4 != nil {
-        return nil, err4
+    results, err2 := d.engine.QueryInterface(sqlStatement + sqlWhere + sqlLimit)
+    if err2 != nil {
+        return nil, err2
     }
     
     pageResult := &viewmodels.PageResult{}
@@ -87,11 +67,7 @@ func (d *XBusRepo) GetPage(sqlStatement, sqlCount string, params []viewmodels.Qu
 }
 
 func (d *XBusRepo) GetList(sqlStatement string, params []viewmodels.QueryParam) ([]map[string]interface{}, error) {
-    sqlWhere, err1 := d.BuildQueryParam(params)
-    if err1 != nil {
-        return nil, err1
-    }
-    
+    sqlWhere := d.BuildQueryParam(params)
     results, err := d.engine.QueryInterface(sqlStatement + sqlWhere)
     if err != nil {
         return nil, err
@@ -100,11 +76,7 @@ func (d *XBusRepo) GetList(sqlStatement string, params []viewmodels.QueryParam)
 }
 
 func (d *XBusRepo) GetById(sqlStatement string, params []viewmodels.QueryParam)(map[string]interface{}, error){
-    sqlWhere, err1 := d.BuildQueryParam(params)
-    if err1 != nil {
-        return nil, err1
-    }
-    
+    sqlWhere := d.BuildQueryParam(params)
     results, err   := d.engine.QueryInterface(sqlStatement + sqlWhere)
     if err != nil {
         return nil, err

+ 3 - 3
service/x_gateway_service.go

@@ -12,7 +12,7 @@ import (
 
 type XGatewayService interface {
     Get(objectCode, oamCode string, params []viewmodels.QueryParam)(map[string]interface{}, error)
-    GetPage(objectCode, oamCode string, params []viewmodels.QueryParam)(*viewmodels.PageResult, error)
+    GetPage(objectCode, oamCode string, params []viewmodels.QueryParam, page int, limit int)(*viewmodels.PageResult, error)
     GetList(objectCode, oamCode string, params []viewmodels.QueryParam)([]map[string]interface{}, error)
     
     GenerateParams(objectCode, oamCode string)(map[string]interface{}, error)
@@ -86,7 +86,7 @@ func (a *xGatewayService) GetList(objectCode, oamCode string, params []viewmodel
     return a.Mapping2BizObjectList(objectCode, dataList)
 }
 
-func (a *xGatewayService) GetPage(objectCode, oamCode string, params []viewmodels.QueryParam) (*viewmodels.PageResult, error) {
+func (a *xGatewayService) GetPage(objectCode, oamCode string, params []viewmodels.QueryParam, page int, limit int) (*viewmodels.PageResult, error) {
     oam , err1:= cache.GetBizObjectOAM(objectCode, oamCode)
     if err1 != nil {
         return nil, err1
@@ -94,7 +94,7 @@ func (a *xGatewayService) GetPage(objectCode, oamCode string, params []viewmodel
     
     sqlStatement := oam.SqlStatement
     sqlCount     := oam.SqlCount
-    pageData, err2 := a.xBus.GetPage(sqlStatement, sqlCount, params)
+    pageData, err2 := a.xBus.GetPage(sqlStatement, sqlCount, params, page, limit)
     if err2 != nil {
         return nil, err2
     }

+ 11 - 1
web/controllers/api_gateway_controller.go

@@ -144,7 +144,17 @@ func (c *ApiGatewayController) Get(objectCode, oamCode string)*JsonResult {
         }
     }
     if oamType == constant.OAM_GET_PAGE {
-        data, err := c.Service.GetPage(objectCode, oamCode, params)
+        page := c.Ctx.URLParamIntDefault("page", 0)
+        if page <= 0 {
+            page = 1
+        }
+        
+        limit := c.Ctx.URLParamIntDefault("limit", 0)
+        if limit <= 0 {
+            limit = 10
+        }
+        
+        data, err := c.Service.GetPage(objectCode, oamCode, params, page, limit)
         if err != nil {
             return ResultErr(err.Error(), nil)
         } else {