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

错误 #3068
【企业风管-WebPC】期货市场商品应根据已设置的套保品种来显示,未设置套保品种的商品都不要显示出来

zou.yingbin 3 éve
szülő
commit
5a3c3750d1
5 módosított fájl, 65 hozzáadás és 9 törlés
  1. 3 1
      controllers/ermcp/qryGoods.go
  2. 6 0
      docs/docs.go
  3. 6 0
      docs/swagger.json
  4. 4 0
      docs/swagger.yaml
  5. 46 8
      models/ermcpGoods.go

+ 3 - 1
controllers/ermcp/qryGoods.go

@@ -13,12 +13,14 @@ import (
 // GetErmcpGoodsReq 查询企业风管期货商品信息请求参数
 type GetErmcpGoodsReq struct {
 	LastUpdateTime string `form:"lastUpdateTime"`
+	USERID         int64  `form:"userid"`
 }
 
 // GetErmcpGoods 查询企业风管期货商品信息
 // @Summary 查询企业风管期货商品信息
 // @Produce json
 // @Security ApiKeyAuth
+// @Param userid query int false "用户id(风管云平台版本传值, 只显示用户下设置了套保关联的品种)"
 // @Param lastUpdateTime query string false "最后修改时间 - 闭区间,格式:yyyy-MM-dd HH:mm:ss"
 // @Success 200 {object} models.ErmcpGoods
 // @Failure 500 {object} app.Response
@@ -36,7 +38,7 @@ func GetErmcpGoods(c *gin.Context) {
 	}
 
 	// 获取数据
-	goodses, err := models.GetErmcpGoodses(req.LastUpdateTime)
+	goodses, err := models.GetErmcpGoodses(req.USERID, req.LastUpdateTime)
 	if err != nil {
 		// 查询失败
 		logger.GetLogger().Errorf("GetErmcpGoods failed: %s", err.Error())

+ 6 - 0
docs/docs.go

@@ -914,6 +914,12 @@ var doc = `{
                 "summary": "查询企业风管期货商品信息",
                 "parameters": [
                     {
+                        "type": "integer",
+                        "description": "用户id(风管云平台版本传值, 只显示用户下设置了套保关联的品种)",
+                        "name": "userid",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "最后修改时间 - 闭区间,格式:yyyy-MM-dd HH:mm:ss",
                         "name": "lastUpdateTime",

+ 6 - 0
docs/swagger.json

@@ -898,6 +898,12 @@
                 "summary": "查询企业风管期货商品信息",
                 "parameters": [
                     {
+                        "type": "integer",
+                        "description": "用户id(风管云平台版本传值, 只显示用户下设置了套保关联的品种)",
+                        "name": "userid",
+                        "in": "query"
+                    },
+                    {
                         "type": "string",
                         "description": "最后修改时间 - 闭区间,格式:yyyy-MM-dd HH:mm:ss",
                         "name": "lastUpdateTime",

+ 4 - 0
docs/swagger.yaml

@@ -19754,6 +19754,10 @@ paths:
   /Ermcp/GetErmcpGoods:
     get:
       parameters:
+      - description: 用户id(风管云平台版本传值, 只显示用户下设置了套保关联的品种)
+        in: query
+        name: userid
+        type: integer
       - description: 最后修改时间 - 闭区间,格式:yyyy-MM-dd HH:mm:ss
         in: query
         name: lastUpdateTime

+ 46 - 8
models/ermcpGoods.go

@@ -81,7 +81,7 @@ type ErmcpGoods struct {
 }
 
 // GetErmcpGoodses 企业风管专用获取商品信息的方法
-func GetErmcpGoodses(lastUpdateTime string) ([]ErmcpGoods, error) {
+func GetErmcpGoodses(userid int64, lastUpdateTime string) ([]ErmcpGoods, error) {
 	engine := db.GetEngine()
 
 	// 对比数据库与终端的更新时间戳
@@ -98,16 +98,54 @@ func GetErmcpGoodses(lastUpdateTime string) ([]ErmcpGoods, error) {
 		Select("G.*, M.TRADEMODE").
 		Join("LEFT", "MARKET M", "M.MARKETID = G.MARKETID").
 		Where("G.GOODSSTATUS in (3, 7)")
-	// if lastID != 0 {
-	// 	session = session.And("GOODSID > ?", lastID)
-	// }
-	// session = session.Asc("GOODSID")
-	// if len(lastUpdateTime) != 0 {
-	// 	session = session.And(fmt.Sprintf("G.MODIFYTIME > to_date('%s','yyyy-MM-dd hh24:mi:ss')", lastUpdateTime))
-	// }
+
 	if err := session.Find(&goodses); err != nil {
 		return nil, err
 	}
+
+	// 错误 #3068
+	//【企业风管-WebPC】期货市场商品应根据已设置的套保品种来显示,未设置套保品种的商品都不要显示出来
+	if userid > 0 && len(goodses) > 0 {
+		areaUserId := mtpcache.GetAreaUserId(userid, 0)
+		sqlId := `
+				select t.goodsgroupid
+				  from goodsgroup t
+				 where t.groupcategroyid in (
+				   select g.groupcategroyid
+					 from erms_middlegoods t
+					 left join goodsgroup g
+					   on t.goodsgroupid = g.goodsgroupid
+					where t.areauserid = %v
+					  and t.isvalid = 1)
+				`
+		sqlId = fmt.Sprintf(sqlId, areaUserId)
+		type GoodsGroupId struct {
+			GoodsGroupId int64 `json:"goodsgroupid"  xorm:"'GoodsGroupId'"`
+		}
+		sGroupId := make([]GoodsGroupId, 0)
+		err := engine.SQL(sqlId).Find(&sGroupId)
+		if err != nil {
+			return nil, err
+		}
+
+		fIn := func(goodsgroupid int64) bool {
+			for i := range sGroupId {
+				if sGroupId[i].GoodsGroupId == goodsgroupid {
+					return true
+				}
+			}
+			return false
+		}
+
+		sGoods := make([]ErmcpGoods, 0)
+		for _, v := range goodses {
+			if fIn(v.Goodsgroupid) {
+				sGoods = append(sGoods, v)
+			}
+		}
+		goodses = sGoods[:]
+	}
+
 	for i := range goodses {
 		goodses[i].ENUMDICNAME = mtpcache.GetEnumDicitemName(int32(goodses[i].Goodunitid))
 	}