Kaynağa Gözat

修改获取市场权限相当BUG

Simon Zhou 5 yıl önce
ebeveyn
işleme
b16a0bea19

+ 2 - 2
config/config.xml

@@ -16,12 +16,12 @@
         <DbAddress value="192.168.31.117"/>
         <DbName    value="orcl"/>
         <DbPort    value="1521"/>
-        <DbUser    value="mtp2_test16"/>
+        <DbUser    value="mtp2_test82"/>
         <DbPwd     value="muchinfo"/>
     </DbSetting>
 
     <RedisSetting>
-        <Address   value="192.168.30.213"/>
+        <Address   value="192.168.30.182"/>
         <Port      value="5007"/>
         <Timeout   value="3"/>
         <ConnNum   value="1"/>

+ 33 - 16
controllers/common/table.go

@@ -114,28 +114,45 @@ func getQuoteMenu(loginID int) ([]QuotePrimaryMenu, error) {
 	engine := db.GetEngine()
 	rst := make([]QuotePrimaryMenu, 0)
 
-	// ********************* 准备数据 *********************
-	var taAccounts []string // 账户下所有资金账户
-	var marketIDs []int     // 资金账户下有权限的市场ID列表
-	// 先要获取当前登录账户对应的资金账户
-	if err := engine.SQL(fmt.Sprintf(`select to_char(AccountID) from LoginTAAccount where LoginID = %d`, loginID)).Find(&taAccounts); err != nil {
+	// 账户下有权限的市场ID列表
+	var marketIDs []int
+
+	// 获取账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户  (目前可能登录交易端的账号类型为 2 5)
+	userAccount := new(models.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 len(taAccounts) == 0 {
-		sql := fmt.Sprintf(`select to_char(ta.accountid) from taaccount ta
-							inner join loginaccount l on ta.userid = l.userid
-							where l.loginid = %d`, loginID)
-		if err := engine.SQL(sql).Find(&taAccounts); err != nil {
+	if userAccount.Usertype == 5 {
+		// 如果账户类型为5(投资者),则需要通过其所属经济会员来获取市场权限(表:AreaRoleMarket, 条件:对应市场状态为正常;角色类型:经济会员)
+		if err := engine.Table("AREAROLEMARKET").Cols("AREAROLEMARKET.MARKETID").Join("INNER", "MARKET", "MARKET.MARKETID = AREAROLEMARKET.MARKETID").Where("MARKET.MARKETSTATUS = 2 and AREAROLEMARKET.ROLETYPE = 7 and AREAROLEMARKET.AREAUSERID = ?", userAccount.Memberuserid).Find(&marketIDs); err != nil {
 			return nil, err
 		}
-	}
-	// 获取资金账户对应的市场权限(有权限的市场ID)
-	if len(taAccounts) > 0 {
-		taAccountStr := strings.Join(taAccounts, ",")
-		if err := engine.SQL(fmt.Sprintf(`select MarketID from TAAccountMarket where AccountID in (%s)`, taAccountStr)).Find(&marketIDs); err != nil {
+	} else {
+		// 非投资者账号直接通过资金账号获取市场权限(表:TAAccountMarket)
+		var taAccounts []string // 账户下所有资金账户
+
+		// 先要获取当前登录账户对应的资金账户
+		if err := engine.SQL(fmt.Sprintf(`select to_char(AccountID) from LoginTAAccount where LoginID = %d`, loginID)).Find(&taAccounts); err != nil {
 			return nil, err
 		}
+
+		// 如果一条记录都没有则直接通过资金账户表获取
+		if len(taAccounts) == 0 {
+			sql := fmt.Sprintf(`select to_char(ta.accountid) from taaccount ta
+								inner join loginaccount l on ta.userid = l.userid
+								where l.loginid = %d`, loginID)
+			if err := engine.SQL(sql).Find(&taAccounts); err != nil {
+				return nil, err
+			}
+		}
+		// 获取资金账户对应的市场权限(有权限的市场ID)
+		if len(taAccounts) > 0 {
+			taAccountStr := strings.Join(taAccounts, ",")
+			if err := engine.SQL(fmt.Sprintf(`select MarketID from TAAccountMarket where AccountID in (%s)`, taAccountStr)).Find(&marketIDs); err != nil {
+				return nil, err
+			}
+		}
 	}
 
 	// ********************* 构建行情报价牌菜单 *********************

+ 1 - 0
controllers/user/user.go

@@ -20,6 +20,7 @@ type QueryUserReferNumReq struct {
 // QueryUserReferNum 获取用户邀请码
 // @Summary 获取用户邀请码
 // @Produce json
+// @Security ApiKeyAuth
 // @Param username query string true "登录代码"
 // @Success 200 {object} app.Response
 // @Failure 500 {object} app.Response

+ 5 - 0
docs/docs.go

@@ -651,6 +651,11 @@ var doc = `{
         },
         "/User/QueryUserReferNum": {
             "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
                 "produces": [
                     "application/json"
                 ],

+ 5 - 0
docs/swagger.json

@@ -635,6 +635,11 @@
         },
         "/User/QueryUserReferNum": {
             "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
                 "produces": [
                     "application/json"
                 ],

+ 2 - 0
docs/swagger.yaml

@@ -1643,6 +1643,8 @@ paths:
           description: Internal Server Error
           schema:
             $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
       summary: 获取用户邀请码
       tags:
       - 用户信息

+ 16 - 0
models/accountModels.go

@@ -103,6 +103,22 @@ func (Logintaaccount) TableName() string {
 	return "LOGINTAACCOUNT"
 }
 
+// Arearolemarket 机构角色市场权限表
+type Arearolemarket struct {
+	Areauserid       uint64    `json:"areauserid"  xorm:"'AREAUSERID'" binding:"required"` // 机构用户ID
+	Roletype         uint32    `json:"roletype"  xorm:"'ROLETYPE'" binding:"required"`     // 角色类型 -  6:自营会员 7:经纪会员
+	Marketid         uint32    `json:"marketid"  xorm:"'MARKETID'" binding:"required"`     // 市场ID
+	Modifytime       time.Time `json:"modifytime"  xorm:"'MODIFYTIME'"`                    // 修改时间
+	Modifierid       uint64    `json:"modifierid"  xorm:"'MODIFIERID'"`                    // 修改人ID
+	Spotrighttype    uint32    `json:"spotrighttype"  xorm:"'SPOTRIGHTTYPE'"`              // 现货权限类型 - 0:无 1:可挂可摘 2:可挂 3:可摘 [现货类](卖大厅)
+	Buyspotrighttype uint32    `json:"buyspotrighttype"  xorm:"'BUYSPOTRIGHTTYPE'"`        // 现货权限类型 - 0:无 1:可挂可摘 2:可挂 3:可摘 [现货类](买大厅)
+}
+
+// TableName is AREAROLEMARKET
+func (Arearolemarket) TableName() string {
+	return "AREAROLEMARKET"
+}
+
 // Taaccountmarket 资金账号市场权限表
 type Taaccountmarket struct {
 	Accountid        uint64    `json:"accountid"  xorm:"'ACCOUNTID'" binding:"required"` // 资金账号ID