Pārlūkot izejas kodu

增加查询角色菜单等接口

zou.yingbin 4 gadi atpakaļ
vecāks
revīzija
085edb6081
7 mainītis faili ar 1753 papildinājumiem un 62 dzēšanām
  1. 70 5
      controllers/ermcp/qryAccMgr.go
  2. 488 0
      docs/docs.go
  3. 488 0
      docs/swagger.json
  4. 331 0
      docs/swagger.yaml
  5. 25 8
      global/app/ginUtils.go
  6. 346 49
      models/ermcpAccMgr.go
  7. 5 0
      routers/router.go

+ 70 - 5
controllers/ermcp/qryAccMgr.go

@@ -23,7 +23,7 @@ type QryLoginUserReq struct {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Success 200 {array} models.ErmcpLoginUser
+// @Success 200 {array} models.ErmcpLoginUserEx
 // @Failure 500 {object} app.Response
 // @Router /Ermcp/QueryAccMgrLoginUser [get]
 // @Tags 企业风险管理(app)
@@ -31,8 +31,8 @@ func QueryAccMgrLoginUser(c *gin.Context) {
 	a := app.GinUtils{Gin: app.Gin{C: c}}
 	req := QryLoginUserReq{}
 	a.DoBindReq(&req)
-	m := models.ErmcpLoginUser{MEMBERUSERID: req.UserId}
-	a.DoGetDataEx(&m)
+	m := models.ErmcpLoginUser{MEMBERUSERID: req.UserId, USERID: req.UserId}
+	a.DoGetDataI(&m)
 }
 
 // QueryAccMgrTaaccount
@@ -40,7 +40,7 @@ func QueryAccMgrLoginUser(c *gin.Context) {
 // @Produce json
 // @Security ApiKeyAuth
 // @Param userid query int true "用户ID"
-// @Success 200 {array} models.ErmcpTaAccount
+// @Success 200 {array} models.ErmcpTaAccountEx
 // @Failure 500 {object} app.Response
 // @Router /Ermcp/QueryAccMgrTaaccount [get]
 // @Tags 企业风险管理(app)
@@ -49,5 +49,70 @@ func QueryAccMgrTaaccount(c *gin.Context) {
 	req := QryLoginUserReq{}
 	a.DoBindReq(&req)
 	m := models.ErmcpTaAccount{RELATEDUSERID: req.UserId}
-	a.DoGetDataEx(&m)
+	a.DoGetDataI(&m)
+}
+
+// QueryAccountReq 查主账号请求
+type QueryAccountReq struct {
+	UserId    int64  `form:"userid"`    // 用户id
+	AccountId string `form:"accountid"` // 主账号id
+}
+
+// QueryAccMgrMainAccountInfo
+// @Summary 查询账户管理主账号详情(账户管理/期货主账号详情)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param userid query int false "用户ID"
+// @Param accountid query int false "主账号id"
+// @Success 200 {array} models.MainAccountInfo
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryAccMgrMainAccountInfo [get]
+// @Tags 企业风险管理(app)
+func QueryAccMgrMainAccountInfo(c *gin.Context) {
+	a := app.GinUtils{Gin: app.Gin{C: c}}
+	req := QueryAccountReq{}
+	a.DoBindReq(&req)
+	m := models.MainAccountInfo{RELATEDUSERID: req.UserId, ACCOUNTID: req.AccountId}
+	a.DoGetDataI(&m)
+}
+
+// QueryAccMgrRole
+// @Summary 查询账户管理角色设置(账户管理/角色设置)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param userid query int true "用户ID"
+// @Success 200 {array} models.ErmcpRole
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryAccMgrRole [get]
+// @Tags 企业风险管理(app)
+func QueryAccMgrRole(c *gin.Context) {
+	a := app.GinUtils{Gin: app.Gin{C: c}}
+	req := QryLoginUserReq{}
+	a.DoBindReq(&req)
+	m := models.ErmcpRole{AREAUSERID: req.UserId}
+	a.DoGetDataI(&m)
+}
+
+// QryRoleMenuReq
+type QryRoleMenuReq struct {
+	UserId int64  `form:"userid" binding:"required"` // 用户id
+	RoleId string `form:"roleid"`                    // 角色id(可多个,逗号隔开)
+}
+
+// QueryAccMgrRoleMenu
+// @Summary 查询账户管理角色详情(账户管理/角色设置/角色详情)
+// @Produce json
+// @Security ApiKeyAuth
+// @Param userid query int true "用户ID"
+// @Param roleid query string false "角色id(可多个,逗号隔开)"
+// @Success 200 {array} models.ErmcpRoleMenuEx
+// @Failure 500 {object} app.Response
+// @Router /Ermcp/QueryAccMgrRoleMenu [get]
+// @Tags 企业风险管理(app)
+func QueryAccMgrRoleMenu(c *gin.Context) {
+	a := app.GinUtils{Gin: app.Gin{C: c}}
+	req := QryRoleMenuReq{}
+	a.DoBindReq(&req)
+	m := models.ErmcpRoleMenu{USERID: req.UserId, FilterRoleId: req.RoleId}
+	a.DoGetDataI(&m)
 }

+ 488 - 0
docs/docs.go

@@ -1361,6 +1361,227 @@ var doc = `{
                 }
             }
         },
+        "/Ermcp/QueryAccMgrLoginUser": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理登录账号(账户管理/登录账号)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpLoginUserEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrMainAccountInfo": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理主账号详情(账户管理/期货主账号详情)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "主账号id",
+                        "name": "accountid",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.MainAccountInfo"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrRole": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理角色设置(账户管理/角色设置)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpRole"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrRoleMenu": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理角色详情(账户管理/角色设置/角色详情)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "角色id(可多个,逗号隔开)",
+                        "name": "roleid",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpRoleMenuEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrTaaccount": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理期货账号(账户管理/期货账号)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpTaAccountEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp/QueryAreaStock": {
             "get": {
                 "security": [
@@ -12036,6 +12257,75 @@ var doc = `{
                 }
             }
         },
+        "models.ErmcpLoginUser": {
+            "type": "object",
+            "properties": {
+                "accountname": {
+                    "description": "用户名称",
+                    "type": "string"
+                },
+                "clientroleid": {
+                    "description": "角色id(usertype=2)",
+                    "type": "integer"
+                },
+                "createtime": {
+                    "description": "创建时间",
+                    "type": "string"
+                },
+                "loginstatus": {
+                    "description": "登录账户状态 - 1:正常 2:冻结 3:无效",
+                    "type": "integer"
+                },
+                "memberuserid": {
+                    "description": "所属会员id",
+                    "type": "integer"
+                },
+                "modifytime": {
+                    "description": "修改时间",
+                    "type": "string"
+                },
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "rolestatus": {
+                    "description": "角色状态 1-启用 2-停用",
+                    "type": "integer"
+                },
+                "roletype": {
+                    "description": "角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员",
+                    "type": "string"
+                },
+                "userid": {
+                    "description": "用户id",
+                    "type": "integer"
+                },
+                "usertype": {
+                    "description": "用户类型 -  1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpLoginUserEx": {
+            "type": "object",
+            "properties": {
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "userlist": {
+                    "description": "用户列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpLoginUser"
+                    }
+                },
+                "usertype": {
+                    "description": "用户类型 2-机构 7-企业成员(云平台)",
+                    "type": "integer"
+                }
+            }
+        },
         "models.ErmcpMiddleGoodsChangeLog": {
             "type": "object",
             "properties": {
@@ -13032,6 +13322,109 @@ var doc = `{
                 }
             }
         },
+        "models.ErmcpRole": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "所属机构",
+                    "type": "integer"
+                },
+                "autoid": {
+                    "description": "角色ID(自增ID)",
+                    "type": "integer"
+                },
+                "modifierid": {
+                    "description": "修改人(创建人)",
+                    "type": "integer"
+                },
+                "modifiername": {
+                    "description": "修改人名称",
+                    "type": "string"
+                },
+                "modifytime": {
+                    "description": "修改时间(创建时间)",
+                    "type": "string"
+                },
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "rolestatus": {
+                    "description": "角色状态 - 1:启用  2:停用",
+                    "type": "integer"
+                },
+                "roletype": {
+                    "description": "角色类型 - 1- 管理端   2-  交易端",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpRoleMenu": {
+            "type": "object",
+            "properties": {
+                "iconame": {
+                    "description": "菜单图标",
+                    "type": "string"
+                },
+                "menutype": {
+                    "description": "菜单类型 1:管理端 2:交易端 3:终端(企业云平台)",
+                    "type": "integer"
+                },
+                "parentcode": {
+                    "description": "上级资源代码",
+                    "type": "string"
+                },
+                "remark": {
+                    "description": "菜单备注",
+                    "type": "string"
+                },
+                "resourcecode": {
+                    "description": "菜单代码",
+                    "type": "string"
+                },
+                "resourcelevel": {
+                    "description": "级别",
+                    "type": "integer"
+                },
+                "resourcename": {
+                    "description": "菜单名称",
+                    "type": "string"
+                },
+                "roleid": {
+                    "description": "角色id",
+                    "type": "integer"
+                },
+                "sort": {
+                    "description": "排序",
+                    "type": "integer"
+                },
+                "url": {
+                    "description": "URL",
+                    "type": "string"
+                },
+                "userid": {
+                    "description": "用户id",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpRoleMenuEx": {
+            "type": "object",
+            "properties": {
+                "menu": {
+                    "description": "父级菜单",
+                    "type": "object",
+                    "$ref": "#/definitions/models.ErmcpRoleMenu"
+                },
+                "subMenu": {
+                    "description": "子级菜单",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpRoleMenu"
+                    }
+                }
+            }
+        },
         "models.ErmcpSpotContractModel": {
             "type": "object",
             "properties": {
@@ -13209,6 +13602,56 @@ var doc = `{
                 }
             }
         },
+        "models.ErmcpTaAccount": {
+            "type": "object",
+            "properties": {
+                "accountid": {
+                    "description": "账户id",
+                    "type": "integer"
+                },
+                "accountname": {
+                    "description": "账户名称",
+                    "type": "string"
+                },
+                "currencyid": {
+                    "description": "币种id",
+                    "type": "integer"
+                },
+                "ismain": {
+                    "description": "是否主账户 0-否 1-是",
+                    "type": "integer"
+                },
+                "parentaccountid": {
+                    "description": "父账户id",
+                    "type": "integer"
+                },
+                "relateduserid": {
+                    "description": "关联userid",
+                    "type": "integer"
+                },
+                "tradestatus": {
+                    "description": "交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpTaAccountEx": {
+            "type": "object",
+            "properties": {
+                "mainAcc": {
+                    "description": "主账号",
+                    "type": "object",
+                    "$ref": "#/definitions/models.ErmcpTaAccount"
+                },
+                "subacclist": {
+                    "description": "子账号列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpTaAccount"
+                    }
+                }
+            }
+        },
         "models.ErmcpUserModel": {
             "type": "object",
             "properties": {
@@ -15602,6 +16045,51 @@ var doc = `{
                 }
             }
         },
+        "models.MainAccountInfo": {
+            "type": "object",
+            "properties": {
+                "accountid": {
+                    "description": "账号id",
+                    "type": "string"
+                },
+                "appid": {
+                    "description": "AppID",
+                    "type": "string"
+                },
+                "authcode": {
+                    "description": "授权码",
+                    "type": "string"
+                },
+                "brokerid": {
+                    "description": "经纪商id",
+                    "type": "string"
+                },
+                "fcid": {
+                    "description": "期货公司id",
+                    "type": "integer"
+                },
+                "fcname": {
+                    "description": "期货公司代码",
+                    "type": "string"
+                },
+                "hedgeaccountcode": {
+                    "description": "外部账号代码",
+                    "type": "string"
+                },
+                "hedgeaccountpwd": {
+                    "description": "密码",
+                    "type": "string"
+                },
+                "ismain": {
+                    "description": "是否主账号",
+                    "type": "integer"
+                },
+                "relateduserid": {
+                    "description": "关联用户id",
+                    "type": "integer"
+                }
+            }
+        },
         "models.Market": {
             "type": "object",
             "required": [

+ 488 - 0
docs/swagger.json

@@ -1345,6 +1345,227 @@
                 }
             }
         },
+        "/Ermcp/QueryAccMgrLoginUser": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理登录账号(账户管理/登录账号)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpLoginUserEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrMainAccountInfo": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理主账号详情(账户管理/期货主账号详情)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query"
+                    },
+                    {
+                        "type": "integer",
+                        "description": "主账号id",
+                        "name": "accountid",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.MainAccountInfo"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrRole": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理角色设置(账户管理/角色设置)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpRole"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrRoleMenu": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理角色详情(账户管理/角色设置/角色详情)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "角色id(可多个,逗号隔开)",
+                        "name": "roleid",
+                        "in": "query"
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpRoleMenuEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
+        "/Ermcp/QueryAccMgrTaaccount": {
+            "get": {
+                "security": [
+                    {
+                        "ApiKeyAuth": []
+                    }
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "企业风险管理(app)"
+                ],
+                "summary": "查询账户管理期货账号(账户管理/期货账号)",
+                "parameters": [
+                    {
+                        "type": "integer",
+                        "description": "用户ID",
+                        "name": "userid",
+                        "in": "query",
+                        "required": true
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "type": "array",
+                            "items": {
+                                "$ref": "#/definitions/models.ErmcpTaAccountEx"
+                            }
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/app.Response"
+                        }
+                    }
+                }
+            }
+        },
         "/Ermcp/QueryAreaStock": {
             "get": {
                 "security": [
@@ -12020,6 +12241,75 @@
                 }
             }
         },
+        "models.ErmcpLoginUser": {
+            "type": "object",
+            "properties": {
+                "accountname": {
+                    "description": "用户名称",
+                    "type": "string"
+                },
+                "clientroleid": {
+                    "description": "角色id(usertype=2)",
+                    "type": "integer"
+                },
+                "createtime": {
+                    "description": "创建时间",
+                    "type": "string"
+                },
+                "loginstatus": {
+                    "description": "登录账户状态 - 1:正常 2:冻结 3:无效",
+                    "type": "integer"
+                },
+                "memberuserid": {
+                    "description": "所属会员id",
+                    "type": "integer"
+                },
+                "modifytime": {
+                    "description": "修改时间",
+                    "type": "string"
+                },
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "rolestatus": {
+                    "description": "角色状态 1-启用 2-停用",
+                    "type": "integer"
+                },
+                "roletype": {
+                    "description": "角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员",
+                    "type": "string"
+                },
+                "userid": {
+                    "description": "用户id",
+                    "type": "integer"
+                },
+                "usertype": {
+                    "description": "用户类型 -  1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpLoginUserEx": {
+            "type": "object",
+            "properties": {
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "userlist": {
+                    "description": "用户列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpLoginUser"
+                    }
+                },
+                "usertype": {
+                    "description": "用户类型 2-机构 7-企业成员(云平台)",
+                    "type": "integer"
+                }
+            }
+        },
         "models.ErmcpMiddleGoodsChangeLog": {
             "type": "object",
             "properties": {
@@ -13016,6 +13306,109 @@
                 }
             }
         },
+        "models.ErmcpRole": {
+            "type": "object",
+            "properties": {
+                "areauserid": {
+                    "description": "所属机构",
+                    "type": "integer"
+                },
+                "autoid": {
+                    "description": "角色ID(自增ID)",
+                    "type": "integer"
+                },
+                "modifierid": {
+                    "description": "修改人(创建人)",
+                    "type": "integer"
+                },
+                "modifiername": {
+                    "description": "修改人名称",
+                    "type": "string"
+                },
+                "modifytime": {
+                    "description": "修改时间(创建时间)",
+                    "type": "string"
+                },
+                "rolename": {
+                    "description": "角色名称",
+                    "type": "string"
+                },
+                "rolestatus": {
+                    "description": "角色状态 - 1:启用  2:停用",
+                    "type": "integer"
+                },
+                "roletype": {
+                    "description": "角色类型 - 1- 管理端   2-  交易端",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpRoleMenu": {
+            "type": "object",
+            "properties": {
+                "iconame": {
+                    "description": "菜单图标",
+                    "type": "string"
+                },
+                "menutype": {
+                    "description": "菜单类型 1:管理端 2:交易端 3:终端(企业云平台)",
+                    "type": "integer"
+                },
+                "parentcode": {
+                    "description": "上级资源代码",
+                    "type": "string"
+                },
+                "remark": {
+                    "description": "菜单备注",
+                    "type": "string"
+                },
+                "resourcecode": {
+                    "description": "菜单代码",
+                    "type": "string"
+                },
+                "resourcelevel": {
+                    "description": "级别",
+                    "type": "integer"
+                },
+                "resourcename": {
+                    "description": "菜单名称",
+                    "type": "string"
+                },
+                "roleid": {
+                    "description": "角色id",
+                    "type": "integer"
+                },
+                "sort": {
+                    "description": "排序",
+                    "type": "integer"
+                },
+                "url": {
+                    "description": "URL",
+                    "type": "string"
+                },
+                "userid": {
+                    "description": "用户id",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpRoleMenuEx": {
+            "type": "object",
+            "properties": {
+                "menu": {
+                    "description": "父级菜单",
+                    "type": "object",
+                    "$ref": "#/definitions/models.ErmcpRoleMenu"
+                },
+                "subMenu": {
+                    "description": "子级菜单",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpRoleMenu"
+                    }
+                }
+            }
+        },
         "models.ErmcpSpotContractModel": {
             "type": "object",
             "properties": {
@@ -13193,6 +13586,56 @@
                 }
             }
         },
+        "models.ErmcpTaAccount": {
+            "type": "object",
+            "properties": {
+                "accountid": {
+                    "description": "账户id",
+                    "type": "integer"
+                },
+                "accountname": {
+                    "description": "账户名称",
+                    "type": "string"
+                },
+                "currencyid": {
+                    "description": "币种id",
+                    "type": "integer"
+                },
+                "ismain": {
+                    "description": "是否主账户 0-否 1-是",
+                    "type": "integer"
+                },
+                "parentaccountid": {
+                    "description": "父账户id",
+                    "type": "integer"
+                },
+                "relateduserid": {
+                    "description": "关联userid",
+                    "type": "integer"
+                },
+                "tradestatus": {
+                    "description": "交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销",
+                    "type": "integer"
+                }
+            }
+        },
+        "models.ErmcpTaAccountEx": {
+            "type": "object",
+            "properties": {
+                "mainAcc": {
+                    "description": "主账号",
+                    "type": "object",
+                    "$ref": "#/definitions/models.ErmcpTaAccount"
+                },
+                "subacclist": {
+                    "description": "子账号列表",
+                    "type": "array",
+                    "items": {
+                        "$ref": "#/definitions/models.ErmcpTaAccount"
+                    }
+                }
+            }
+        },
         "models.ErmcpUserModel": {
             "type": "object",
             "properties": {
@@ -15586,6 +16029,51 @@
                 }
             }
         },
+        "models.MainAccountInfo": {
+            "type": "object",
+            "properties": {
+                "accountid": {
+                    "description": "账号id",
+                    "type": "string"
+                },
+                "appid": {
+                    "description": "AppID",
+                    "type": "string"
+                },
+                "authcode": {
+                    "description": "授权码",
+                    "type": "string"
+                },
+                "brokerid": {
+                    "description": "经纪商id",
+                    "type": "string"
+                },
+                "fcid": {
+                    "description": "期货公司id",
+                    "type": "integer"
+                },
+                "fcname": {
+                    "description": "期货公司代码",
+                    "type": "string"
+                },
+                "hedgeaccountcode": {
+                    "description": "外部账号代码",
+                    "type": "string"
+                },
+                "hedgeaccountpwd": {
+                    "description": "密码",
+                    "type": "string"
+                },
+                "ismain": {
+                    "description": "是否主账号",
+                    "type": "integer"
+                },
+                "relateduserid": {
+                    "description": "关联用户id",
+                    "type": "integer"
+                }
+            }
+        },
         "models.Market": {
             "type": "object",
             "required": [

+ 331 - 0
docs/swagger.yaml

@@ -3750,6 +3750,56 @@ definitions:
         description: 套保品种名称
         type: string
     type: object
+  models.ErmcpLoginUser:
+    properties:
+      accountname:
+        description: 用户名称
+        type: string
+      clientroleid:
+        description: 角色id(usertype=2)
+        type: integer
+      createtime:
+        description: 创建时间
+        type: string
+      loginstatus:
+        description: 登录账户状态 - 1:正常 2:冻结 3:无效
+        type: integer
+      memberuserid:
+        description: 所属会员id
+        type: integer
+      modifytime:
+        description: 修改时间
+        type: string
+      rolename:
+        description: 角色名称
+        type: string
+      rolestatus:
+        description: 角色状态 1-启用 2-停用
+        type: integer
+      roletype:
+        description: 角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员
+        type: string
+      userid:
+        description: 用户id
+        type: integer
+      usertype:
+        description: 用户类型 -  1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
+        type: integer
+    type: object
+  models.ErmcpLoginUserEx:
+    properties:
+      rolename:
+        description: 角色名称
+        type: string
+      userlist:
+        description: 用户列表
+        items:
+          $ref: '#/definitions/models.ErmcpLoginUser'
+        type: array
+      usertype:
+        description: 用户类型 2-机构 7-企业成员(云平台)
+        type: integer
+    type: object
   models.ErmcpMiddleGoodsChangeLog:
     properties:
       aftervalue:
@@ -4487,6 +4537,81 @@ definitions:
         description: 现货商品名称
         type: string
     type: object
+  models.ErmcpRole:
+    properties:
+      areauserid:
+        description: 所属机构
+        type: integer
+      autoid:
+        description: 角色ID(自增ID)
+        type: integer
+      modifierid:
+        description: 修改人(创建人)
+        type: integer
+      modifiername:
+        description: 修改人名称
+        type: string
+      modifytime:
+        description: 修改时间(创建时间)
+        type: string
+      rolename:
+        description: 角色名称
+        type: string
+      rolestatus:
+        description: 角色状态 - 1:启用  2:停用
+        type: integer
+      roletype:
+        description: 角色类型 - 1- 管理端   2-  交易端
+        type: integer
+    type: object
+  models.ErmcpRoleMenu:
+    properties:
+      iconame:
+        description: 菜单图标
+        type: string
+      menutype:
+        description: 菜单类型 1:管理端 2:交易端 3:终端(企业云平台)
+        type: integer
+      parentcode:
+        description: 上级资源代码
+        type: string
+      remark:
+        description: 菜单备注
+        type: string
+      resourcecode:
+        description: 菜单代码
+        type: string
+      resourcelevel:
+        description: 级别
+        type: integer
+      resourcename:
+        description: 菜单名称
+        type: string
+      roleid:
+        description: 角色id
+        type: integer
+      sort:
+        description: 排序
+        type: integer
+      url:
+        description: URL
+        type: string
+      userid:
+        description: 用户id
+        type: integer
+    type: object
+  models.ErmcpRoleMenuEx:
+    properties:
+      menu:
+        $ref: '#/definitions/models.ErmcpRoleMenu'
+        description: 父级菜单
+        type: object
+      subMenu:
+        description: 子级菜单
+        items:
+          $ref: '#/definitions/models.ErmcpRoleMenu'
+        type: array
+    type: object
   models.ErmcpSpotContractModel:
     properties:
       amount:
@@ -4619,6 +4744,42 @@ definitions:
         description: 现货商品名称
         type: string
     type: object
+  models.ErmcpTaAccount:
+    properties:
+      accountid:
+        description: 账户id
+        type: integer
+      accountname:
+        description: 账户名称
+        type: string
+      currencyid:
+        description: 币种id
+        type: integer
+      ismain:
+        description: 是否主账户 0-否 1-是
+        type: integer
+      parentaccountid:
+        description: 父账户id
+        type: integer
+      relateduserid:
+        description: 关联userid
+        type: integer
+      tradestatus:
+        description: 交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销
+        type: integer
+    type: object
+  models.ErmcpTaAccountEx:
+    properties:
+      mainAcc:
+        $ref: '#/definitions/models.ErmcpTaAccount'
+        description: 主账号
+        type: object
+      subacclist:
+        description: 子账号列表
+        items:
+          $ref: '#/definitions/models.ErmcpTaAccount'
+        type: array
+    type: object
   models.ErmcpUserModel:
     properties:
       address:
@@ -6429,6 +6590,39 @@ definitions:
     required:
     - loginid
     type: object
+  models.MainAccountInfo:
+    properties:
+      accountid:
+        description: 账号id
+        type: string
+      appid:
+        description: AppID
+        type: string
+      authcode:
+        description: 授权码
+        type: string
+      brokerid:
+        description: 经纪商id
+        type: string
+      fcid:
+        description: 期货公司id
+        type: integer
+      fcname:
+        description: 期货公司代码
+        type: string
+      hedgeaccountcode:
+        description: 外部账号代码
+        type: string
+      hedgeaccountpwd:
+        description: 密码
+        type: string
+      ismain:
+        description: 是否主账号
+        type: integer
+      relateduserid:
+        description: 关联用户id
+        type: integer
+    type: object
   models.Market:
     properties:
       auctionwrtype:
@@ -10563,6 +10757,143 @@ paths:
       summary: 查询现货月报表详情(菜单:报表查询/现货月报表/现货月报表详情)
       tags:
       - 企业风险管理(app)
+  /Ermcp/QueryAccMgrLoginUser:
+    get:
+      parameters:
+      - description: 用户ID
+        in: query
+        name: userid
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.ErmcpLoginUserEx'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询账户管理登录账号(账户管理/登录账号)
+      tags:
+      - 企业风险管理(app)
+  /Ermcp/QueryAccMgrMainAccountInfo:
+    get:
+      parameters:
+      - description: 用户ID
+        in: query
+        name: userid
+        type: integer
+      - description: 主账号id
+        in: query
+        name: accountid
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.MainAccountInfo'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询账户管理主账号详情(账户管理/期货主账号详情)
+      tags:
+      - 企业风险管理(app)
+  /Ermcp/QueryAccMgrRole:
+    get:
+      parameters:
+      - description: 用户ID
+        in: query
+        name: userid
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.ErmcpRole'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询账户管理角色设置(账户管理/角色设置)
+      tags:
+      - 企业风险管理(app)
+  /Ermcp/QueryAccMgrRoleMenu:
+    get:
+      parameters:
+      - description: 用户ID
+        in: query
+        name: userid
+        required: true
+        type: integer
+      - description: 角色id(可多个,逗号隔开)
+        in: query
+        name: roleid
+        type: string
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.ErmcpRoleMenuEx'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询账户管理角色详情(账户管理/角色设置/角色详情)
+      tags:
+      - 企业风险管理(app)
+  /Ermcp/QueryAccMgrTaaccount:
+    get:
+      parameters:
+      - description: 用户ID
+        in: query
+        name: userid
+        required: true
+        type: integer
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: OK
+          schema:
+            items:
+              $ref: '#/definitions/models.ErmcpTaAccountEx'
+            type: array
+        "500":
+          description: Internal Server Error
+          schema:
+            $ref: '#/definitions/app.Response'
+      security:
+      - ApiKeyAuth: []
+      summary: 查询账户管理期货账号(账户管理/期货账号)
+      tags:
+      - 企业风险管理(app)
   /Ermcp/QueryAreaStock:
     get:
       parameters:

+ 25 - 8
global/app/ginUtils.go

@@ -13,35 +13,36 @@ import (
 	"net/http"
 )
 
-// 获取数据接口
+// GetData 获取数据接口
 type IGetData interface {
 	GetData() ([]interface{}, error)
 }
 
-// 获取数据接口
+// IGetDataEx 获取数据接口
 type IGetDataEx interface {
 	GetDataEx() (interface{}, error)
 }
 
-// 数据处理接口
+// ICalc 数据处理接口
 type ICalc interface {
 	Calc()
 }
 
-// 封装绑定和数据获取处理
+// GinUtils 封装绑定和数据获取处理
 type GinUtils struct {
 	Gin
 	err error
 }
 
-// 处理参数绑定
+// DoBindReq 处理参数绑定
 func (r *GinUtils) DoBindReq(req interface{}) {
 	if r.err = r.C.ShouldBind(req); r.err != nil {
 		r.Gin.Response(http.StatusBadRequest, e.INVALID_PARAMS, nil)
 	}
 }
 
-// 处理数据获取, 参数obj为models结构体
+// DoGetData 处理数据获取, 参数obj为models结构体
+// Deprecated
 func (r *GinUtils) DoGetData(obj interface{}) {
 	// 如果在参数绑定阶段有错误, 则不执行数据获取
 	if r.err != nil {
@@ -65,7 +66,8 @@ func (r *GinUtils) DoGetData(obj interface{}) {
 	}
 }
 
-// 处理数据获取, 参数obj为models结构体
+// DoGetDataEx 处理数据获取, 参数obj为models结构体
+// Deprecated
 func (r *GinUtils) DoGetDataEx(modelObj interface{}) {
 	// 如果在参数绑定阶段有错误, 则不执行数据获取
 	if r.err != nil {
@@ -81,7 +83,22 @@ func (r *GinUtils) DoGetDataEx(modelObj interface{}) {
 	}
 }
 
-// 生成处理GinUtils实例
+// DoGetDataI 获取数据
+func (r *GinUtils) DoGetDataI(iObj IGetDataEx) {
+	// 如果在参数绑定阶段有错误, 则不执行数据获取
+	if r.err != nil {
+		return
+	}
+
+	if d, err := iObj.GetDataEx(); err == nil {
+		r.Gin.Response(http.StatusOK, e.SUCCESS, d)
+	} else {
+		logger.GetLogger().Errorf("query fail, %v", err)
+		r.Gin.Response(http.StatusBadRequest, e.ERROR_QUERY_FAIL, nil)
+	}
+}
+
+// NewGinUtils 生成处理GinUtils实例
 func NewGinUtils(c *gin.Context) *GinUtils {
 	return &GinUtils{Gin: Gin{C: c}}
 }

+ 346 - 49
models/ermcpAccMgr.go

@@ -8,36 +8,38 @@
 package models
 
 import (
+	"fmt"
 	"mtp2_if/db"
+	"mtp2_if/mtpcache"
 	"mtp2_if/utils"
+	"strings"
 )
 
-// ErmcpLoginUser 企业成员登录账户
+// ErmcpLoginUserEx 登录账号(按角色)
+type ErmcpLoginUserEx struct {
+	ROLENAME string           `json:"rolename"` // 角色名称
+	USERTYPE int32            `json:"usertype"` // 用户类型 2-机构 7-企业成员(云平台)
+	UserList []ErmcpLoginUser `json:"userlist"` // 用户列表
+	RoleId   int32            `json:"-"`        // 角色id
+}
+
+// ErmcpLoginUser 查询登录账户
 type ErmcpLoginUser struct {
-	USERID        int64  // 用户id
-	MEMBERUSERID  int64  //所属会员id
-	ACCOUNTNAME   string // 用户名称
-	USERTYPE      int32  // 用户类型 -  1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
-	ACCOUNTSTATUS int32  // 账户状态 - 1:待激活 2:待审核 3:待复审 4:正常 5:审核拒绝 6:注销
-	CREATETIME    string // 创建时间
-	MODIFYTIME    string // 修改时间
-	TELPHONE      string // 电话
-	MOBILE        string // 移动电话
-	ADDRESS       string // 地址
-	PROVINCEID    int32  // 省id
-	CITYID        int32  // 市id
-	COUNTRYID     int32  // 国家id
-	DISTRICTID    int32  // 地区id
-	SEX           int32  // 性别
-	CARDTYPEID    int32  // 证件类型id
-	CARDNUM       string // 证件号码
-	ROLETYPE      string // 角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员
+	USERID       int64  `json:"userid"  xorm:"'USERID'"`             // 用户id
+	MEMBERUSERID int64  `json:"memberuserid"  xorm:"'MEMBERUSERID'"` // 所属会员id
+	ACCOUNTNAME  string `json:"accountname"  xorm:"'ACCOUNTNAME'"`   // 用户名称
+	USERTYPE     int32  `json:"usertype"  xorm:"'USERTYPE'"`         // 用户类型 -  1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
+	LOGINSTATUS  int32  `json:"loginstatus"  xorm:"'LOGINSTATUS'"`   // 登录账户状态 - 1:正常 2:冻结 3:无效
+	CREATETIME   string `json:"createtime"  xorm:"'CREATETIME'"`     // 创建时间
+	MODIFYTIME   string `json:"modifytime"  xorm:"'MODIFYTIME'"`     // 修改时间
+	ROLETYPE     string `json:"roletype"  xorm:"'ROLETYPE'"`         // 角色类型(逗号隔开,如22,23), 22:业务员 23:跟单员 24:交易员
+	CLIENTROLEID int32  `json:"clientroleid"  xorm:"'CLIENTROLEID'"` // 角色id(usertype=2)
+	ROLENAME     string `json:"rolename"  xorm:"'ROLENAME'"`         // 角色名称
+	ROLESTATUS   int32  `json:"rolestatus"  xorm:"'ROLESTATUS'"`     // 角色状态 1-启用 2-停用
 }
 
 func (r *ErmcpLoginUser) calc() {
-	r.TELPHONE = DecryptField(r.TELPHONE)
-	r.MOBILE = DecryptField(r.MOBILE)
-	r.CARDNUM = DecryptField(r.CARDNUM)
+
 }
 
 func (r *ErmcpLoginUser) buildSql() string {
@@ -45,49 +47,118 @@ func (r *ErmcpLoginUser) buildSql() string {
 		" (select userid, wm_concat(roletype) roletype from arearole group by userid)" +
 		"select t.userid," +
 		"       t.memberuserid," +
-		"       t.accountname," +
 		"       t.usertype," +
-		"       t.accountstatus," +
+		"       t.accountname," +
 		"       to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
 		"       to_char(t.modifytime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
-		"       u.telphone," +
-		"       u.mobile," +
-		"       u.address," +
-		"       u.provinceid," +
-		"       u.cityid," +
-		"       u.countryid," +
-		"       u.districtid," +
-		"       u.sex," +
-		"       u.cardtypeid," +
-		"       u.cardnum," +
-		"       r.roletype" +
+		"       r.roletype," +
+		"       1 as rolestatus," +
+		"       l.logincode," +
+		"       l.loginid," +
+		"       l.clientroleid," +
+		"       'name(22,23,24)' rolename," +
+		"       l.loginstatus" +
 		"  from useraccount t" +
-		"  left join userinfo u" +
-		"    on t.userid = u.userid" +
+		"  left join loginaccount l" +
+		"    on t.userid = l.userid" +
 		"  left join tmp r" +
 		"    on t.userid = r.userid" +
-		" where 1=1"
-	sqlId.And("t.memberuserid", r.MEMBERUSERID)
-	sqlId.And("t.usertype", 7)
+		" where 1=1" +
+		"   and t.memberuserid = %v" +
+		"   and t.usertype = 7" +
+		" union all " +
+		"select t.userid," +
+		"       t.memberuserid," +
+		"       t.usertype," +
+		"       t.accountname," +
+		"       to_char(t.createtime, 'yyyy-mm-dd hh24:mi:ss') createtime," +
+		"       to_char(t.modifytime, 'yyyy-mm-dd hh24:mi:ss') modifytime," +
+		"       to_char(r.roletype) roletype," +
+		"       r.rolestatus," +
+		"       l.logincode," +
+		"       l.loginid," +
+		"       l.clientroleid," +
+		"       Nvl(r.rolename, l.clientroleid) rolename," +
+		"       l.loginstatus" +
+		"  from useraccount t" +
+		"  left join loginaccount l" +
+		"    on t.userid = l.userid" +
+		"  left join systemmanagerrole r on l.clientroleid=r.autoid and r.areauserid=l.userid" +
+		" where 1=1" +
+		"   and t.userid = %v" +
+		"   and t.usertype = 2"
+	sqlId.FormatParam(r.USERID, r.USERID)
 	return sqlId.String()
 }
 
-// GetDataEx 查询企业成员
+// hasRoletype 是否拥用某种角色
+func (r *ErmcpLoginUser) hasRoletype(nType int32) bool {
+	sType := strings.Split(r.ROLETYPE, ",")
+	strType := fmt.Sprintf("%v", nType)
+	for i := range sType {
+		if sType[i] == strType {
+			return true
+		}
+	}
+	return false
+}
+
+// GetDataEx 查询登录用户
 func (r *ErmcpLoginUser) GetDataEx() (interface{}, error) {
 	sData := make([]ErmcpLoginUser, 0)
 	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
-	return sData, err
+	sDataEx := make([]ErmcpLoginUserEx, 0)
+	// 初始化固定三种企业成员角色
+	sDataEx = append(sDataEx, ErmcpLoginUserEx{ROLENAME: "业务员", USERTYPE: 7, RoleId: 22, UserList: make([]ErmcpLoginUser, 0)})
+	sDataEx = append(sDataEx, ErmcpLoginUserEx{ROLENAME: "跟单员", USERTYPE: 7, RoleId: 23, UserList: make([]ErmcpLoginUser, 0)})
+	sDataEx = append(sDataEx, ErmcpLoginUserEx{ROLENAME: "交易员", USERTYPE: 7, RoleId: 24, UserList: make([]ErmcpLoginUser, 0)})
+	for _, v := range sData {
+		if v.USERTYPE == 7 {
+			if len(sDataEx) >= 3 {
+				if v.hasRoletype(22) {
+					sDataEx[0].UserList = append(sDataEx[0].UserList, v)
+				} else if v.hasRoletype(23) {
+					sDataEx[1].UserList = append(sDataEx[1].UserList, v)
+				} else if v.hasRoletype(24) {
+					sDataEx[2].UserList = append(sDataEx[2].UserList, v)
+				}
+			}
+		} else if v.USERTYPE == 2 {
+			var bAdd bool = false
+			for i := range sDataEx {
+				if sDataEx[i].USERTYPE == 2 && sDataEx[i].RoleId == v.CLIENTROLEID {
+					sDataEx[i].UserList = append(sDataEx[i].UserList, v)
+					bAdd = true
+					break
+				}
+			}
+			// 不存在的新类别
+			if !bAdd {
+				val := ErmcpLoginUserEx{ROLENAME: v.ROLENAME, USERTYPE: 2, RoleId: v.CLIENTROLEID, UserList: make([]ErmcpLoginUser, 0)}
+				val.UserList = append(val.UserList, v)
+				sDataEx = append(sDataEx, val)
+			}
+		}
+	}
+
+	return sDataEx, err
+}
+
+// ErmcpTaAccount 期货账户(分组)
+type ErmcpTaAccountEx struct {
+	MainAcc    ErmcpTaAccount   `json:"mainAcc"`    // 主账号
+	SubAccList []ErmcpTaAccount `json:"subacclist"` // 子账号列表
 }
 
 // ErmcpTaAccount 期货账户
 type ErmcpTaAccount struct {
-	ACCOUNTID       int64  // 账户id
-	CURRENCYID      int32  // 币种id
-	TRADESTATUS     int32  // 交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销
-	ISMAIN          int32  // 是否主账户 0-否 1-是
-	RELATEDUSERID   int64  // 关联userid
-	ACCOUNTNAME     string // 账户名称
-	PARENTACCOUNTID int64  // 父账户id
+	ACCOUNTID       int64  `json:"accountid"  xorm:"'ACCOUNTID'"`             // 账户id
+	CURRENCYID      int32  `json:"currencyid"  xorm:"'CURRENCYID'"`           // 币种id
+	TRADESTATUS     int32  `json:"tradestatus"  xorm:"'TRADESTATUS'"`         // 交易状态 - 1:正常 2:受限 3:冻结 4:禁止建仓(人工受限) 5:禁止交易(人工冻结) 6:待激活 7:已注销
+	ISMAIN          int32  `json:"ismain"  xorm:"'ISMAIN'"`                   // 是否主账户 0-否 1-是
+	RELATEDUSERID   int64  `json:"relateduserid"  xorm:"'RELATEDUSERID'"`     // 关联userid
+	ACCOUNTNAME     string `json:"accountname"  xorm:"'ACCOUNTNAME'"`         // 账户名称
+	PARENTACCOUNTID int64  `json:"parentaccountid"  xorm:"'PARENTACCOUNTID'"` // 父账户id
 }
 
 func (r *ErmcpTaAccount) calc() {
@@ -112,5 +183,231 @@ func (r *ErmcpTaAccount) buildSql() string {
 func (r *ErmcpTaAccount) GetDataEx() (interface{}, error) {
 	sData := make([]ErmcpTaAccount, 0)
 	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	sDataEx := make([]ErmcpTaAccountEx, 0)
+	// 主账号
+	for i := range sData {
+		if sData[i].ISMAIN == 1 {
+			val := ErmcpTaAccountEx{MainAcc: sData[i], SubAccList: make([]ErmcpTaAccount, 0)}
+			sDataEx = append(sDataEx, val)
+		}
+	}
+	// 子账号
+	for i := range sData {
+		if sData[i].ISMAIN == 0 {
+			for k := range sDataEx {
+				if sDataEx[k].MainAcc.ACCOUNTID == sData[i].PARENTACCOUNTID {
+					sDataEx[k].SubAccList = append(sDataEx[k].SubAccList, sData[i])
+				}
+			}
+		}
+	}
+
+	return sDataEx, err
+}
+
+// MainAccountInfo 主账号详情
+type MainAccountInfo struct {
+	ACCOUNTID        string `json:"accountid"  xorm:"'ACCOUNTID'"`               // 账号id
+	HEDGEACCOUNTCODE string `json:"hedgeaccountcode"  xorm:"'HEDGEACCOUNTCODE'"` // 外部账号代码
+	HEDGEACCOUNTPWD  string `json:"hedgeaccountpwd"  xorm:"'HEDGEACCOUNTPWD'"`   // 密码
+	AUTHCODE         string `json:"authcode"  xorm:"'AUTHCODE'"`                 // 授权码
+	APPID            string `json:"appid"  xorm:"'APPID'"`                       // AppID
+	BROKERID         string `json:"brokerid"  xorm:"'BROKERID'"`                 // 经纪商id
+	FCID             int32  `json:"fcid"  xorm:"'FCID'"`                         // 期货公司id
+	FCNAME           string `json:"fcname"  xorm:"'FCNAME'"`                     // 期货公司代码
+	ISMAIN           int32  `json:"ismain"  xorm:"'ISMAIN'"`                     // 是否主账号
+	RELATEDUSERID    int64  `json:"relateduserid"  xorm:"'RELATEDUSERID'"`       // 关联用户id
+}
+
+func (r *MainAccountInfo) calc() {
+	r.HEDGEACCOUNTPWD = DecryptField(r.HEDGEACCOUNTPWD)
+}
+
+func (r *MainAccountInfo) buildSql() string {
+	var sqlId utils.SQLVal = "select t.accountid," +
+		"       t.hedgeaccountcode," +
+		"       c.hedgeaccountpwd," +
+		"       c.authcode," +
+		"       c.appid," +
+		"       c.brokerid," +
+		"       c.fcid," +
+		"       f.fcname," +
+		"       ta.ismain," +
+		"       ta.relateduserid" +
+		"  from hedge_outtaaccount t" +
+		"  left join hedge_outmainconfig c" +
+		"    on t.accountid = c.accountid" +
+		"  left join ERMCP_FuturesCompany f" +
+		"    on c.fcid = f.fcid" +
+		"  left join taaccount ta on t.accountid=ta.accountid" +
+		" where 1 = 1"
+	if r.RELATEDUSERID > 0 {
+		sqlId.And("ta.relateduserid", r.RELATEDUSERID)
+	}
+	if len(r.ACCOUNTID) > 0 {
+		sqlId.And("t.ACCOUNTID", r.ACCOUNTID)
+	}
+	return sqlId.String()
+}
+
+// GetDataEx 查询主账号信息
+func (r *MainAccountInfo) GetDataEx() (interface{}, error) {
+	sData := make([]MainAccountInfo, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
 	return sData, err
 }
+
+// ErmcpRole 角色
+type ErmcpRole struct {
+	AUTOID     int32  `json:"autoid"  xorm:"'AUTOID'"`         // 角色ID(自增ID)
+	ROLENAME   string `json:"rolename"  xorm:"'ROLENAME'"`     // 角色名称
+	AREAUSERID int64  `json:"areauserid"  xorm:"'AREAUSERID'"` // 所属机构
+	ROLESTATUS int32  `json:"rolestatus"  xorm:"'ROLESTATUS'"` // 角色状态 - 1:启用  2:停用
+	ROLETYPE   int32  `json:"roletype"  xorm:"'ROLETYPE'"`     // 角色类型 - 1- 管理端   2-  交易端
+	MODIFYTIME string `json:"modifytime"  xorm:"'MODIFYTIME'"` // 修改时间(创建时间)
+	MODIFIERID int64  `json:"modifierid"  xorm:"'MODIFIERID'"` // 修改人(创建人)
+
+	MODIFIERNAME string `json:"modifiername"` // 修改人名称
+}
+
+func (r *ErmcpRole) calc() {
+	if r.MODIFIERID > 0 {
+		r.MODIFIERNAME = mtpcache.GetSystemmangerLoginCode(r.MODIFIERID)
+		// 目前看表里修改人id存的是管理员id,为防止以后终端操作存的是登录id,多做一层判断
+		// 如果按管理员id找不到,则按登录id试试
+		if r.MODIFIERID > 1e8 && len(r.MODIFIERNAME) == 0 {
+			r.MODIFIERNAME = mtpcache.GetLoginCodeByLoginId(r.MODIFIERID)
+		}
+	}
+}
+
+func (r *ErmcpRole) buildSql() string {
+	var sqlId utils.SQLVal = "SELECT t.AUTOID," +
+		"       t.ROLENAME," +
+		"       t.AREAUSERID," +
+		"       t.ROLESTATUS," +
+		"       t.ROLETYPE," +
+		"       t.SENSITIVEFIELDS," +
+		"       to_char(t.MODIFYTIME, 'yyyy-mm-dd hh24:mi:ss') MODIFYTIME," +
+		"       to_char(t.MODIFIERID) MODIFIERID" +
+		"  FROM SYSTEMMANAGERROLE t" +
+		" WHERE 1 = 1"
+	if r.AREAUSERID > 0 {
+		sqlId.And("t.AREAUSERID", r.AREAUSERID)
+	}
+	return sqlId.String()
+}
+
+// GetDataEx 查询角色
+func (r *ErmcpRole) GetDataEx() (interface{}, error) {
+	sData := make([]ErmcpRole, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	sDataEx := make([]ErmcpRole, 0)
+	// 添加固定角色22,23,24
+	sDataEx = append(sDataEx, ErmcpRole{AREAUSERID: r.AREAUSERID, ROLENAME: "业务员", AUTOID: 22,
+		ROLESTATUS: 1, ROLETYPE: 2, MODIFYTIME: "-", MODIFIERID: 1, MODIFIERNAME: "平台"})
+	sDataEx = append(sDataEx, ErmcpRole{AREAUSERID: r.AREAUSERID, ROLENAME: "跟单员", AUTOID: 23,
+		ROLESTATUS: 1, ROLETYPE: 2, MODIFYTIME: "-", MODIFIERID: 1, MODIFIERNAME: "平台"})
+	sDataEx = append(sDataEx, ErmcpRole{AREAUSERID: r.AREAUSERID, ROLENAME: "交易员", AUTOID: 24,
+		ROLESTATUS: 1, ROLETYPE: 2, MODIFYTIME: "-", MODIFIERID: 1, MODIFIERNAME: "平台"})
+	sDataEx = append(sDataEx, sData...)
+	return sDataEx, err
+}
+
+// ErmcpRoleMenuEx 角色菜单(分层级)
+type ErmcpRoleMenuEx struct {
+	Menu    ErmcpRoleMenu   // 父级菜单
+	SubMenu []ErmcpRoleMenu // 子级菜单
+}
+
+// add 添加子级菜单
+func (r *ErmcpRoleMenuEx) add(menu ErmcpRoleMenu) {
+	if menu.PARENTCODE == r.Menu.RESOURCECODE {
+		r.SubMenu = append(r.SubMenu, menu)
+	}
+}
+
+// ErmcpRoleMenu 角色菜单
+type ErmcpRoleMenu struct {
+	USERID        int64  `json:"userid"  xorm:"'USERID'"`               // 用户id
+	ROLEID        int32  `json:"roleid"  xorm:"'ROLEID'"`               // 角色id
+	RESOURCECODE  string `json:"resourcecode"  xorm:"'RESOURCECODE'"`   // 菜单代码
+	RESOURCENAME  string `json:"resourcename"  xorm:"'RESOURCENAME'"`   // 菜单名称
+	RESOURCELEVEL int32  `json:"resourcelevel"  xorm:"'RESOURCELEVEL'"` // 级别
+	MENUTYPE      int32  `json:"menutype"  xorm:"'MENUTYPE'"`           // 菜单类型 1:管理端 2:交易端 3:终端(企业云平台)
+	PARENTCODE    string `json:"parentcode"  xorm:"'PARENTCODE'"`       // 上级资源代码
+	URL           string `json:"url"  xorm:"'URL'"`                     // URL
+	SORT          int32  `json:"sort"  xorm:"'SORT'"`                   // 排序
+	ICONAME       string `json:"iconame"  xorm:"'ICONAME'"`             // 菜单图标
+	REMARK        string `json:"remark"  xorm:"'REMARK'"`               // 菜单备注
+
+	FilterRoleId string `json:"-"` // 查询过滤条件, 角色 - 逗号隔开
+}
+
+func (r *ErmcpRoleMenu) calc() {
+}
+
+func (r *ErmcpRoleMenu) buildSql() string {
+	var sqlId utils.SQLVal = "select distinct t.userid," +
+		"       t.roleid," +
+		"       t.resourcecode," +
+		"       f.resourcename," +
+		"       f.resourcelevel," +
+		"       f.menutype," +
+		"       f.parentcode," +
+		"       f.url," +
+		"       f.sort," +
+		"       f.iconame," +
+		"       f.remark" +
+		"  from ermcp_memberfuncmenu t" +
+		" inner join funcmenulist f" +
+		"    on t.resourcecode = f.resourcecode" +
+		" where t.isvalid = 1"
+	if r.USERID > 0 {
+		sqlId.And("t.userid", r.USERID)
+	}
+	if len(r.FilterRoleId) > 0 {
+		sqlId.Join(fmt.Sprintf(" and t.roleid in(%v)", r.FilterRoleId))
+	}
+	sqlId.Join(" order by f.resourcelevel, f.sort")
+	return sqlId.String()
+}
+
+// GetDataEx 查询角色菜单
+func (r *ErmcpRoleMenu) GetDataEx() (interface{}, error) {
+	sData := make([]ErmcpRoleMenu, 0)
+	err := db.GetEngine().SQL(r.buildSql()).Find(&sData)
+	for i := range sData {
+		sData[i].calc()
+	}
+	// 构建层级树
+	sDataEx := make([]ErmcpRoleMenuEx, 0)
+	// 最多构建4层
+	for level := int32(1); level <= 4; level++ {
+		for _, v := range sData {
+			if v.RESOURCELEVEL == level {
+				val := ErmcpRoleMenuEx{Menu: v, SubMenu: make([]ErmcpRoleMenu, 0)}
+				for _, v2 := range sData {
+					// 获取子菜单
+					if v2.ROLEID == v.ROLEID && v2.PARENTCODE == v.RESOURCECODE {
+						val.SubMenu = append(val.SubMenu, v2)
+					}
+				}
+				// 第一层固定要, 不管有没有子菜单
+				if val.Menu.RESOURCELEVEL == 1 {
+					sDataEx = append(sDataEx, val)
+				} else if val.Menu.RESOURCELEVEL > 1 && len(val.SubMenu) > 0 {
+					// 第二层开始,有子菜单内容的才要
+					sDataEx = append(sDataEx, val)
+				}
+			}
+		}
+	}
+	return sDataEx, err
+}

+ 5 - 0
routers/router.go

@@ -369,6 +369,11 @@ func InitRouter() *gin.Engine {
 		ermcpR.GET("/QueryAreaStockReportDetail", ermcp.QueryAreaStockReportDetail)
 		ermcpR.GET("/QueryGoodsBrand", ermcp.QueryGoodsBrand)
 		ermcpR.GET("/QueryGoodsModel", ermcp.QueryGoodsModel)
+		ermcpR.GET("/QueryAccMgrLoginUser", ermcp.QueryAccMgrLoginUser)
+		ermcpR.GET("/QueryAccMgrTaaccount", ermcp.QueryAccMgrTaaccount)
+		ermcpR.GET("/QueryAccMgrMainAccountInfo", ermcp.QueryAccMgrMainAccountInfo)
+		ermcpR.GET("/QueryAccMgrRole", ermcp.QueryAccMgrRole)
+		ermcpR.GET("/QueryAccMgrRoleMenu", ermcp.QueryAccMgrRoleMenu)
 
 		// 期货相关
 		// 查询企业风管期货商品信息