Forráskód Böngészése

增加“检索商品信息”接口

zhou.xiaoning 5 éve
szülő
commit
60529c40be
7 módosított fájl, 280 hozzáadás és 0 törlés
  1. 49 0
      controllers/search/goodsSearch.go
  2. 71 0
      docs/docs.go
  3. 71 0
      docs/swagger.json
  4. 51 0
      docs/swagger.yaml
  5. 1 0
      models/account.go
  6. 29 0
      models/goods.go
  7. 8 0
      routers/router.go

+ 49 - 0
controllers/search/goodsSearch.go

@@ -0,0 +1,49 @@
+package search
+
+import (
+	"mtp2_if/global/app"
+	"mtp2_if/global/e"
+	"mtp2_if/logger"
+	"mtp2_if/models"
+	"net/http"
+
+	"github.com/gin-gonic/gin"
+)
+
+// GoodsesReq 检索商品信息请求参数
+type GoodsesReq struct {
+	Content string `form:"content" binding:"required"`
+}
+
+// Goodses 检索商品信息
+// @Summary 检索商品信息
+// @Description 说明:使用检索内容模糊匹配商品代码和商品名称
+// @Produce json
+// @Param content query string true "检索内容"
+// @Success 200 {object} models.SearchGoods
+// @Failure 500 {object} app.Response
+// @Router /Search/SearchGoodses [get]
+// @Tags 检索服务
+func Goodses(c *gin.Context) {
+	appG := app.Gin{C: c}
+
+	// 获取请求参数
+	var req GoodsesReq
+	if err := appG.C.ShouldBindQuery(&req); err != nil {
+		logger.GetLogger().Errorf("Goodses failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
+		return
+	}
+
+	searchGoodses, err := models.SearchGoodses(req.Content)
+	if err != nil {
+		// 查询失败
+		logger.GetLogger().Errorf("Goodses failed: %s", err.Error())
+		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
+		return
+	}
+
+	// 查询成功返回
+	logger.GetLogger().Debugln("Goodses successed: %v", searchGoodses)
+	appG.Response(http.StatusOK, e.SUCCESS, searchGoodses)
+}

+ 71 - 0
docs/docs.go

@@ -1928,6 +1928,41 @@ var doc = `{
                 }
             }
         },
+        "/Search/SearchGoodses": {
+            "get": {
+                "description": "说明:使用检索内容模糊匹配商品代码和商品名称",
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "检索服务"
+                ],
+                "summary": "检索商品信息",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "检索内容",
+                        "name": "content",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/models.SearchGoods"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/TaAccount/QueryAmountLog": {
             "get": {
                 "security": [
@@ -5051,6 +5086,42 @@ var doc = `{
                 }
             }
         },
+        "models.SearchGoods": {
+            "type": "object",
+            "required": [
+                "goodscode",
+                "goodsid",
+                "goodsname",
+                "marketid",
+                "trademode"
+            ],
+            "properties": {
+                "goodscode": {
+                    "description": "商品代码(内部)",
+                    "type": "string"
+                },
+                "goodsid": {
+                    "description": "商品ID(自增ID SEQ_GOODS)",
+                    "type": "integer"
+                },
+                "goodsname": {
+                    "description": "商品名称",
+                    "type": "string"
+                },
+                "marketid": {
+                    "description": "所属市场ID",
+                    "type": "integer"
+                },
+                "marketname": {
+                    "description": "市场名称",
+                    "type": "string"
+                },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                }
+            }
+        },
         "models.Szdz3convertconfig": {
             "type": "object",
             "required": [

+ 71 - 0
docs/swagger.json

@@ -1912,6 +1912,41 @@
                 }
             }
         },
+        "/Search/SearchGoodses": {
+            "get": {
+                "description": "说明:使用检索内容模糊匹配商品代码和商品名称",
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "检索服务"
+                ],
+                "summary": "检索商品信息",
+                "parameters": [
+                    {
+                        "type": "string",
+                        "description": "检索内容",
+                        "name": "content",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/models.SearchGoods"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/TaAccount/QueryAmountLog": {
             "get": {
                 "security": [
@@ -5035,6 +5070,42 @@
                 }
             }
         },
+        "models.SearchGoods": {
+            "type": "object",
+            "required": [
+                "goodscode",
+                "goodsid",
+                "goodsname",
+                "marketid",
+                "trademode"
+            ],
+            "properties": {
+                "goodscode": {
+                    "description": "商品代码(内部)",
+                    "type": "string"
+                },
+                "goodsid": {
+                    "description": "商品ID(自增ID SEQ_GOODS)",
+                    "type": "integer"
+                },
+                "goodsname": {
+                    "description": "商品名称",
+                    "type": "string"
+                },
+                "marketid": {
+                    "description": "所属市场ID",
+                    "type": "integer"
+                },
+                "marketname": {
+                    "description": "市场名称",
+                    "type": "string"
+                },
+                "trademode": {
+                    "description": "交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价",
+                    "type": "integer"
+                }
+            }
+        },
         "models.Szdz3convertconfig": {
             "type": "object",
             "required": [

+ 51 - 0
docs/swagger.yaml

@@ -1952,6 +1952,34 @@ definitions:
         description: 交易模式
         type: integer
     type: object
+  models.SearchGoods:
+    properties:
+      goodscode:
+        description: 商品代码(内部)
+        type: string
+      goodsid:
+        description: 商品ID(自增ID SEQ_GOODS)
+        type: integer
+      goodsname:
+        description: 商品名称
+        type: string
+      marketid:
+        description: 所属市场ID
+        type: integer
+      marketname:
+        description: 市场名称
+        type: string
+      trademode:
+        description: 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式
+          21:竞拍-大宗式 22:受托竞价
+        type: integer
+    required:
+    - goodscode
+    - goodsid
+    - goodsname
+    - marketid
+    - trademode
+    type: object
   models.Szdz3convertconfig:
     properties:
       canin:
@@ -4772,6 +4800,29 @@ paths:
       summary: 搜索白名单
       tags:
       - 定制【尚志大宗】
+  /Search/SearchGoodses:
+    get:
+      description: 说明:使用检索内容模糊匹配商品代码和商品名称
+      parameters:
+      - description: 检索内容
+        in: query
+        name: content
+        required: true
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            $ref: '#/definitions/models.SearchGoods'
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      summary: 检索商品信息
+      tags:
+      - 检索服务
   /TaAccount/QueryAmountLog:
     get:
       parameters:

+ 1 - 0
models/account.go

@@ -501,6 +501,7 @@ func InsertMessageBoard(userID int, message string) int {
 		return e.ERROR_ADD_MAX_3
 	}
 
+	// 由于XORM对ORACLE支持不行,有时间字段更新的直接使用SQL语句执行
 	sql := fmt.Sprintf("insert into MESSAGEBOARD (MESSAGEBOARDID, USERID, MESSAGE, CREATETIME) values (SEQ_MessageBoard.nextval, %d, '%s', (select sysdate from dual))", userID, message)
 	if _, err := engine.Exec(sql); err != nil {
 		return e.ERROR_OPERATION_FAILED

+ 29 - 0
models/goods.go

@@ -2,6 +2,7 @@
 package models
 
 import (
+	"fmt"
 	"mtp2_if/db"
 	"time"
 )
@@ -88,3 +89,31 @@ func GetGoods(goodsID int) (*Goods, error) {
 
 	return &goods, nil
 }
+
+// SearchGoods 检索商品信息
+type SearchGoods struct {
+	Goodsid   int64  `json:"goodsid"  xorm:"'GOODSID'" binding:"required"`     // 商品ID(自增ID SEQ_GOODS)
+	Goodscode string `json:"goodscode"  xorm:"'GOODSCODE'" binding:"required"` // 商品代码(内部)
+	Goodsname string `json:"goodsname"  xorm:"'GOODSNAME'" binding:"required"` // 商品名称
+	Marketid  int64  `json:"marketid"  xorm:"'MARKETID'" binding:"required"`   // 所属市场ID
+
+	Marketname string `json:"marketname"  xorm:"'MARKETNAME'"`                  // 市场名称
+	Trademode  int32  `json:"trademode"  xorm:"'TRADEMODE'" binding:"required"` // 交易模式 - 10:做市 13:竞价 15:通道交易 16:挂牌点选 17:仓单贸易 18:期权 19:竞拍-降价式 20:竞拍-竞价式 21:竞拍-大宗式 22:受托竞价
+}
+
+// SearchGoodses 检索商品信息的方法
+func SearchGoodses(content string) ([]SearchGoods, error) {
+	engine := db.GetEngine()
+
+	searchGoodses := make([]SearchGoods, 0)
+	if err := engine.Table("GOODS").
+		Select(`GOODS.*, 
+				MARKET.MARKETNAME, MARKET.TRADEMODE`).
+		Join("INNER", "MARKET", "MARKET.MARKETID = GOODS.MARKETID").
+		Where(fmt.Sprintf("GOODS.GOODSCODE like '%%%s%%' or GOODS.GOODSNAME like '%%%s%%'", content, content)).
+		Find(&searchGoodses); err != nil {
+		return nil, err
+	}
+
+	return searchGoodses, nil
+}

+ 8 - 0
routers/router.go

@@ -10,6 +10,7 @@ import (
 	"mtp2_if/controllers/hsby"
 	"mtp2_if/controllers/order"
 	"mtp2_if/controllers/quote"
+	"mtp2_if/controllers/search"
 	"mtp2_if/controllers/szdz"
 	"mtp2_if/controllers/taaccount"
 	"mtp2_if/controllers/user"
@@ -117,6 +118,13 @@ func InitRouter() *gin.Engine {
 		// 历史成交单查询(合约市场)
 		orderR.GET("/QueryHisTradeDetail", order.QueryHisTradeDetail)
 	}
+	// ************************ 检索服务 ************************
+	searchR := apiR.Group("Search")
+	searchR.Use()
+	{
+		// 检索商品信息
+		searchR.GET("/SearchGoodses", search.Goodses)
+	}
 	// ************************ 仓单贸易 ************************
 	wrTradeR := apiR.Group("WRTrade")
 	wrTradeR.Use(token.Auth())