Explorar o código

终端列头接口增加类型字段

zhou.xiaoning %!s(int64=4) %!d(string=hai) anos
pai
achega
d116b5e602
Modificáronse 8 ficheiros con 108 adicións e 12 borrados
  1. 5 3
      controllers/common/table.go
  2. 7 1
      docs/docs.go
  3. 7 1
      docs/swagger.json
  4. 5 1
      docs/swagger.yaml
  5. 5 3
      models/common.go
  6. 2 2
      models/delivery.go
  7. 1 1
      models/hsby.go
  8. 76 0
      models/market.go

+ 5 - 3
controllers/common/table.go

@@ -65,7 +65,8 @@ func QueryTraderMenu(c *gin.Context) {
 
 // QueryTableDefineReq 查询交易端列表头信息请求参数
 type QueryTableDefineReq struct {
-	TableKey string `json:"TableKey"` // 表key
+	TableKey  string `form:"tableKey"`
+	TableType int    `form:"tableType"`
 }
 
 // QueryTableDefineRsp 查询交易端列表头信息返回模型
@@ -77,7 +78,8 @@ type QueryTableDefineRsp struct {
 // QueryTableDefine 查询交易端列表头信息
 // @Summary 查询交易端列表头信息
 // @Produce json
-// @Param TableKey query string false "表key"
+// @Param tableKey query string false "表key"
+// @Param tableType query int false "列表类型 - 1:管理端 2:H5终端 3:移动终端"
 // @Success 200 {object} QueryTableDefineRsp
 // @Failure 500 {object} app.Response
 // @Router /Common/QueryTableDefine [get]
@@ -96,7 +98,7 @@ func QueryTableDefine(c *gin.Context) {
 	rst := make([]QueryTableDefineRsp, 0)
 
 	// 获取表定义
-	tableDefines, err := models.GetClientTableDefines(req.TableKey)
+	tableDefines, err := models.GetClientTableDefines(req.TableKey, req.TableType)
 	if err != nil {
 		logger.GetLogger().Errorf("QueryTableDefine failed: %s", err.Error())
 		appG.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)

+ 7 - 1
docs/docs.go

@@ -606,7 +606,13 @@ var doc = `{
                     {
                         "type": "string",
                         "description": "表key",
-                        "name": "TableKey",
+                        "name": "tableKey",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "列表类型 - 1:管理端 2:H5终端 3:移动终端",
+                        "name": "tableType",
                         "in": "query"
                     }
                 ],

+ 7 - 1
docs/swagger.json

@@ -590,7 +590,13 @@
                     {
                         "type": "string",
                         "description": "表key",
-                        "name": "TableKey",
+                        "name": "tableKey",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "列表类型 - 1:管理端 2:H5终端 3:移动终端",
+                        "name": "tableType",
                         "in": "query"
                     }
                 ],

+ 5 - 1
docs/swagger.yaml

@@ -6019,8 +6019,12 @@ paths:
       parameters:
       - description: 表key
         in: query
-        name: TableKey
+        name: tableKey
         type: string
+      - description: 列表类型 - 1:管理端 2:H5终端 3:移动终端
+        in: query
+        name: tableType
+        type: integer
       produces:
       - application/json
       responses:

+ 5 - 3
models/common.go

@@ -451,12 +451,14 @@ func GetOperationMenu() ([]OperationPrimaryMenu, error) {
 }
 
 // GetClientTableDefines 获取终端列表定义信息
-// tableKey 列表Key
-func GetClientTableDefines(tableKey string) ([]Tabledefine, error) {
+func GetClientTableDefines(tableKey string, tableType int) ([]Tabledefine, error) {
 	engine := db.GetEngine()
 
 	tableDefiles := make([]Tabledefine, 0)
-	s := engine.Where("TABLEDEFINE.TableType = 2") // TableType = 2 表示终端专用表定义
+	s := engine.Table("TABLEDEFINE")
+	if tableType != 0 {
+		s = s.Where("TABLEDEFINE.TableType = ?", tableType)
+	}
 	if len(tableKey) > 0 {
 		s = s.And("TABLEDEFINE.TableKey = ?", tableKey)
 	}

+ 2 - 2
models/delivery.go

@@ -61,7 +61,7 @@ func (Deliveryrelation) TableName() string {
 	return "DELIVERYRELATION"
 }
 
-// 获取交割商品
+// GetDeliverGoods 获取交割商品
 func GetDeliverGoods() ([]Deliverygoods, error) {
 	engine := db.GetEngine()
 	d := make([]Deliverygoods, 0)
@@ -70,4 +70,4 @@ func GetDeliverGoods() ([]Deliverygoods, error) {
 	}
 
 	return d, nil
-}
+}

+ 1 - 1
models/hsby.go

@@ -644,7 +644,7 @@ func GetHsbyMyGoods(accountIDs string) ([]HsbyMyGoods, error) {
 		Join("INNER", "HSBY_GOODSEX GX", "GX.GOODSID = G.GOODSID").
 		Join("LEFT", "ENUMDICITEM E", "G.CURRENCYID = E.ENUMITEMNAME and E.ENUMDICCODE = 'currency'").
 		Join("LEFT", "MARKET M", "M.MARKETID = G.MARKETID").
-		Where(fmt.Sprintf("TP.BUYCURPOSITIONQTY > 0 and TP.ACCOUNTID in (%s)", accountIDs)).Find(&hsbyMyGoodses); err != nil {
+		Where(fmt.Sprintf("G.GOODSSTATUS = 3 and TP.BUYCURPOSITIONQTY > 0 and TP.ACCOUNTID in (%s)", accountIDs)).Find(&hsbyMyGoodses); err != nil {
 		return nil, err
 	}
 

+ 76 - 0
models/market.go

@@ -3,6 +3,7 @@ package models
 import (
 	"errors"
 	"mtp2_if/db"
+	"strconv"
 	"time"
 )
 
@@ -298,3 +299,78 @@ func FindMarketRunStepDetails(marketID int) ([]Marketrunstepdetail, error) {
 
 	return runSteps, nil
 }
+
+// GetMarketIDsByLoginID 获取登录账号有权限的市场ID列表
+func GetMarketIDsByLoginID(loginID int) ([]int, error) {
+	engine := db.GetEngine()
+
+	// 账户下有权限的市场ID列表
+	var marketIDs []int
+
+	// 获取账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户  (目前可能登录交易端的账号类型为 2 5)
+	userAccount := new(Useraccount)
+	has, err := engine.Join("INNER", "LOGINACCOUNT", "USERACCOUNT.UserID = LOGINACCOUNT.UserID").
+		Where("LOGINACCOUNT.LoginID = ?", loginID).
+		Get(userAccount)
+	if err != nil || !has {
+		return nil, err
+	}
+	if userAccount.Usertype == 5 {
+		// 如果账户类型为5(投资者),则需要通过其所属经济会员来获取市场权限(表:AreaRoleMarket, 条件:对应市场状态为正常;角色类型:经济会员)
+		if err := engine.Table("AREAROLEMARKET A").
+			Cols("v.MARKETID").
+			Join("INNER", "MARKET M", "M.MARKETID = A.MARKETID").
+			Where("M.MARKETSTATUS = 2 and A.ROLETYPE = 7 and A.AREAUSERID = ?", userAccount.Memberuserid).Find(&marketIDs); err != nil {
+			return nil, err
+		}
+	} else {
+		// 非投资者账号直接通过资金账号获取市场权限(表:TAAccountMarket)
+		var taAccounts []string // 账户下所有资金账户
+
+		// 先要获取当前登录账户对应的资金账户;如果为外部子资金账号(TaAccount.TaAccountType = 1),则使用TaAccount.FromAccountID来获取市场权限
+		type taAccount struct {
+			AccountID     int `xorm:"ACCOUNTID"`
+			TaAccountType int `xorm:"TAACCOUNTTYPE"`
+			FromAccountID int `xorm:"FROMACCOUNTID"`
+		}
+		datas := make([]taAccount, 0)
+		if err := engine.Table("LOGINTAACCOUNT").
+			Join("INNER", "TAACCOUNT", "LOGINTAACCOUNT.ACCOUNTID = TAACCOUNT.ACCOUNTID").
+			Cols("TAACCOUNT.ACCOUNTID", "TAACCOUNT.TAACCOUNTTYPE", "TAACCOUNT.FROMACCOUNTID").
+			Where("LOGINTAACCOUNT.LOGINID = ?", loginID).Find(&datas); err != nil {
+			return nil, err
+		}
+		// 如果一条记录都没有(未配置自营会员资金账户)则直接通过资金账户表获取
+		if len(datas) == 0 {
+			// 这里要注意,TaAccount表与LoginAccount表关联时,要使用TaAccount.RelatedUserID
+			if err := engine.Table("TAACCOUNT").
+				Join("INNER", "LOGINACCOUNT", "TAACCOUNT.RELATEDUSERID = LOGINACCOUNT.USERID").
+				Cols("TAACCOUNT.ACCOUNTID", "TAACCOUNT.TAACCOUNTTYPE", "TAACCOUNT.FROMACCOUNTID").
+				Where("LOGINACCOUNT.LOGINID = ?", loginID).Find(&datas); err != nil {
+				return nil, err
+			}
+		}
+		for _, v := range datas {
+			if v.TaAccountType == 1 {
+				// 外部资金账户使用TaAccount.FromAccountID来获取市场权限
+				taAccounts = append(taAccounts, strconv.Itoa(v.FromAccountID))
+			} else {
+				taAccounts = append(taAccounts, strconv.Itoa(v.AccountID))
+			}
+		}
+
+		// 获取资金账户对应的市场权限(有权限的市场ID)
+		if len(taAccounts) > 0 {
+			// taAccountStr := strings.Join(taAccounts, ",")
+			if err := engine.Table("TAACCOUNTMARKET").
+				Join("INNER", "MARKET", "MARKET.MARKETID = TAACCOUNTMARKET.MARKETID").
+				Cols("TAACCOUNTMARKET.MARKETID").
+				In("TAACCOUNTMARKET.ACCOUNTID", taAccounts).
+				And("MARKET.MARKETSTATUS = 2").Find(&marketIDs); err != nil {
+				return nil, err
+			}
+		}
+	}
+
+	return marketIDs, nil
+}