Sfoglia il codice sorgente

1.查盘面goodscode改为非必填
2.查商品信息goodscode不区分大小写
3.查买卖大厅返回marketid

zou.yingbin 4 anni fa
parent
commit
6f27145a07
7 ha cambiato i file con 47 aggiunte e 22 eliminazioni
  1. 3 8
      controllers/quote/quote.go
  2. 6 3
      docs/docs.go
  3. 6 3
      docs/swagger.json
  4. 4 2
      docs/swagger.yaml
  5. 19 3
      models/quote.go
  6. 2 1
      models/wrTrade2.go
  7. 7 2
      mtpcache/goods.go

+ 3 - 8
controllers/quote/quote.go

@@ -1,7 +1,6 @@
 package quote
 
 import (
-	"fmt"
 	"mtp2_if/global/app"
 	"mtp2_if/global/e"
 	"mtp2_if/logger"
@@ -9,7 +8,6 @@ import (
 	"mtp2_if/mtpcache"
 	"mtp2_if/utils"
 	"net/http"
-	"strings"
 	"time"
 
 	"github.com/gin-gonic/gin"
@@ -17,7 +15,7 @@ import (
 
 // QueryQuoteDayReq 获取商品盘面信息请求参数
 type QueryQuoteDayReq struct {
-	GoodsCodes string `form:"goodsCodes" binding:"required"`
+	GoodsCodes string `form:"goodsCodes"`
 }
 
 // QueryQuoteDayRsp 获取商品盘面信息返回模型
@@ -151,7 +149,7 @@ type QueryQuoteDayRsp struct {
 // @Summary 获取商品盘面信息
 // @Produce json
 // @Security ApiKeyAuth
-// @Param goodsCodes query string true "商品代码列表,格式:CU2102,CU2103,AL2107"
+// @Param goodsCodes query string false "此参数不填则查所有;商品代码列表,格式:CU2102,CU2103,AL2107"
 // @Success 200 {object} QueryQuoteDayRsp
 // @Failure 500 {object} app.Response
 // @Router /Quote/QueryQuoteDay [get]
@@ -168,10 +166,7 @@ func QueryQuoteDay(c *gin.Context) {
 	}
 
 	rsp := make([]QueryQuoteDayRsp, 0)
-	// 构建查询GoodsCodes
-	goodsCodes := fmt.Sprintf("'%s'", req.GoodsCodes)
-	goodsCodes = strings.Replace(goodsCodes, ",", "','", -1)
-	quoteDays, err := models.GetQuoteDays(goodsCodes)
+	quoteDays, err := models.GetQuoteDays(req.GoodsCodes)
 	if err != nil {
 		logger.GetLogger().Errorf("QueryQuoteDay failed: %s", err.Error())
 		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)

+ 6 - 3
docs/docs.go

@@ -10545,10 +10545,9 @@ var doc = `{
                 "parameters": [
                     {
                         "type": "string",
-                        "description": "商品代码列表,格式:CU2102,CU2103,AL2107",
+                        "description": "此参数不填则查所有;商品代码列表,格式:CU2102,CU2103,AL2107",
                         "name": "goodsCodes",
-                        "in": "query",
-                        "required": true
+                        "in": "query"
                     }
                 ],
                 "responses": {
@@ -35579,6 +35578,10 @@ var doc = `{
                     "description": "买(卖)价",
                     "type": "number"
                 },
+                "marketid": {
+                    "description": "市场id",
+                    "type": "integer"
+                },
                 "minivalue": {
                     "description": "现货商品最小变动值",
                     "type": "integer"

+ 6 - 3
docs/swagger.json

@@ -10529,10 +10529,9 @@
                 "parameters": [
                     {
                         "type": "string",
-                        "description": "商品代码列表,格式:CU2102,CU2103,AL2107",
+                        "description": "此参数不填则查所有;商品代码列表,格式:CU2102,CU2103,AL2107",
                         "name": "goodsCodes",
-                        "in": "query",
-                        "required": true
+                        "in": "query"
                     }
                 ],
                 "responses": {
@@ -35563,6 +35562,10 @@
                     "description": "买(卖)价",
                     "type": "number"
                 },
+                "marketid": {
+                    "description": "市场id",
+                    "type": "integer"
+                },
                 "minivalue": {
                     "description": "现货商品最小变动值",
                     "type": "integer"

+ 4 - 2
docs/swagger.yaml

@@ -15884,6 +15884,9 @@ definitions:
       fixedprice:
         description: 买(卖)价
         type: number
+      marketid:
+        description: 市场id
+        type: integer
       minivalue:
         description: 现货商品最小变动值
         type: integer
@@ -25819,10 +25822,9 @@ paths:
   /Quote/QueryQuoteDay:
     get:
       parameters:
-      - description: 商品代码列表,格式:CU2102,CU2103,AL2107
+      - description: 此参数不填则查所有;商品代码列表,格式:CU2102,CU2103,AL2107
         in: query
         name: goodsCodes
-        required: true
         type: string
       produces:
       - application/json

+ 19 - 3
models/quote.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"mtp2_if/db"
+	"strings"
 	"time"
 
 	"gopkg.in/mgo.v2/bson"
@@ -325,10 +326,25 @@ func GetHistoryTikDatas(goodsCode string, startTime, endTime *time.Time, count i
 // 返回 error error
 func GetQuoteDays(goodsCodes string) ([]Quoteday, error) {
 	engine := db.GetMySQLEngine()
-
 	datas := make([]Quoteday, 0)
-	if err := engine.Where(fmt.Sprintf("goodscode in (%s)", goodsCodes)).Find(&datas); err != nil {
-		return nil, err
+
+	if len(goodsCodes) > 0 {
+		// 指定商品代码查询
+		// 处理商品代码, 让其可作为sql的in条件内容。 例如, 原字符串 ru2201,CU2406, => 处理成 'ru2201','CU2406'
+		goodsCodes = strings.Trim(goodsCodes, ",")
+		sCode := strings.Split(goodsCodes, ",")
+		for i := range sCode {
+			sCode[i] = "'" + sCode[i] + "'"
+		}
+		Instr := strings.Join(sCode, ",")
+		if err := engine.Where(fmt.Sprintf("goodscode in (%s)", Instr)).Find(&datas); err != nil {
+			return nil, err
+		}
+	} else {
+		// 不指定则查所有
+		if err := engine.Find(&datas); err != nil {
+			return nil, err
+		}
 	}
 
 	return datas, nil

+ 2 - 1
models/wrTrade2.go

@@ -296,12 +296,12 @@ type WrOrderQuoteDetail struct {
 	DELIVERYMONTH  string   `json:"deliverymonth"  xorm:"'DELIVERYMONTH'" form:"deliverymonth"` // 交收月
 	ORDERTIME      string   `json:"ordertime"  xorm:"'ORDERTIME'"`                              // 委托时间
 	DELISTMINQTY   SFLOAT64 `json:"delistminqty"  xorm:"'DELISTMINQTY'"`                        // 起摘数量
+	MarketId       int32    `json:"marketid"  xorm:"'MARKETID'" form:"marketid"`                // 市场id
 	PageEx         `xorm:"extends"`
 
 	WRFACTORTYPEID int64 `json:"-" form:"wrfactortypeid"` // 仓单要素id
 	HasWr          int32 `json:"-" form:"haswr"`          // 是否有仓单 0-没有 1-有
 	WrPriceType    int32 `json:"-" form:"wrpricetype"`    // 价格方式 - 1:固定价 2-浮动价 - [挂牌]
-	MarketId       int32 `json:"-" form:"marketid"`       // 市场id
 	GOODSID        int32 `json:"-" form:"goodsid"`        // 商品id
 }
 
@@ -320,6 +320,7 @@ func (r *WrOrderQuoteDetail) buildSql() string {
 		"       t.buyorsell," +
 		"       t.deliverymonth," +
 		"       t.delistminqty," +
+		"       t.marketid," +
 		"       to_char(t.ordertime, 'yyyy-mm-dd hh24:mi:ss') ordertime," +
 		"       u.accountname as username," +
 		"       c.goodsid," +

+ 7 - 2
mtpcache/goods.go

@@ -97,7 +97,10 @@ select t.goodsid,
  where 1=1
 `
 	sqlId.AndEx("t.goodsid", r.GOODSID, r.GOODSID > 0)
-	sqlId.AndEx("t.goodscode", r.GOODSCODE, r.GOODSCODE != "")
+	if r.GOODSCODE != "" {
+		// 不区分大小写加载商品
+		sqlId.JoinFormat(" and upper(t.goodscode) = '%v'", strings.ToUpper(r.GOODSCODE))
+	}
 	return sqlId.String()
 }
 
@@ -117,7 +120,9 @@ func (r *Goods) GetData() ([]Goods, error) {
 
 // GetGoods 获取商品信息
 func GetGoods(goodsCode string) (Goods, bool) {
-	if item, err := goodsCache.Value(goodsCode); err == nil {
+	// 缓存是用大写的goodscode, 查找也转成大写的来查找
+	goodsCode2 := strings.ToUpper(goodsCode)
+	if item, err := goodsCache.Value(goodsCode2); err == nil {
 		d := item.Data()
 		if v, ok := d.(Goods); ok {
 			return v, true