|
|
@@ -828,12 +828,20 @@ func GetErmcpRoleFuncMenuLists(loginID int, resourceCode string) ([]Funcmenulist
|
|
|
|
|
|
// 是否企业
|
|
|
isEnterprise := false
|
|
|
+ // 是否自营会员
|
|
|
+ isTrader := false
|
|
|
// 查询机构角色表
|
|
|
var arearole Arearole
|
|
|
arearoles, err := arearole.GetAreaRoles(int(userAccount.Userid))
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
+ for _, v := range arearoles {
|
|
|
+ if v.Roletype == 6 {
|
|
|
+ isTrader = true
|
|
|
+ break
|
|
|
+ }
|
|
|
+ }
|
|
|
if len(arearoles) > 0 {
|
|
|
arearole = arearoles[0]
|
|
|
if arearole.Suborgtype == 0 {
|
|
|
@@ -841,53 +849,61 @@ func GetErmcpRoleFuncMenuLists(loginID int, resourceCode string) ([]Funcmenulist
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 判断是企业还是企业成员
|
|
|
- if userAccount.Usertype == 2 && isEnterprise {
|
|
|
- // UserType=2:企业。原逻辑:根据LoginAccount表"ClientRoleID"查询”ERMCP_MemberFuncMenu“表中该用户对应角色的菜单权限
|
|
|
- sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3
|
|
|
+ if userAccount.Usertype == 5 || (userAccount.Usertype == 2 && isTrader) {
|
|
|
+ // 交易所,自营会员及投资者的权限不进行判断
|
|
|
+ if err := db.GetEngine().SQL("select F.* from FUNCMENULIST F where F.MENUTYPE = 4").Find(&funcMenuLists); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 判断是企业还是企业成员
|
|
|
+ // 账户类型 - 1:交易所 2:机构 3:会员子机构 4:经纪人 5:投资者 6:客户 7:企业成员(云平台)
|
|
|
+ if userAccount.Usertype == 2 && isEnterprise {
|
|
|
+ // UserType=2:企业。原逻辑:根据LoginAccount表"ClientRoleID"查询”ERMCP_MemberFuncMenu“表中该用户对应角色的菜单权限
|
|
|
+ sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3
|
|
|
and
|
|
|
F.RESOURCECODE in
|
|
|
(select R.RESOURCECODE from ERMCP_MEMBERFUNCMENU R
|
|
|
where R.ISVALID = 1 and R.USERID = %d and R.ROLEID = %d)`, loginAccount.Userid, loginAccount.Clientroleid)
|
|
|
- if len(resourceCode) != 0 {
|
|
|
- sql += fmt.Sprintf(" and F.RESOURCECODE = '%s'", resourceCode)
|
|
|
- }
|
|
|
- if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- } else if userAccount.Usertype == 6 || userAccount.Usertype == 7 || (userAccount.Usertype == 2 && !isEnterprise) {
|
|
|
- // UserType=7:企业成员
|
|
|
- // 查询本用户的角色ID - AreaRole表
|
|
|
- // 根据 Rootuserid 和 自己的角色查询 ERMCP_MemberFuncMenu 表中的菜单权限
|
|
|
- areaRoles := make([]Arearole, 0)
|
|
|
- if err := db.GetEngine().Where("USERID = ?", loginAccount.Userid).Find(&areaRoles); err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- if len(areaRoles) == 0 {
|
|
|
- // 无角色,返回空数组s
|
|
|
- return make([]Funcmenulist, 0), nil
|
|
|
- }
|
|
|
- // 构建RoleID列表
|
|
|
- roleIDs := ""
|
|
|
- for _, areaRole := range areaRoles {
|
|
|
- roleIDs += "," + strconv.Itoa(int(areaRole.Roletype))
|
|
|
- }
|
|
|
- if len(roleIDs) > 0 {
|
|
|
- roleIDs = roleIDs[1:]
|
|
|
- }
|
|
|
- sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3
|
|
|
+ if len(resourceCode) != 0 {
|
|
|
+ sql += fmt.Sprintf(" and F.RESOURCECODE = '%s'", resourceCode)
|
|
|
+ }
|
|
|
+ if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ } else if userAccount.Usertype == 6 || userAccount.Usertype == 7 || (userAccount.Usertype == 2 && !isEnterprise) {
|
|
|
+ // UserType=7:企业成员
|
|
|
+ // 查询本用户的角色ID - AreaRole表
|
|
|
+ // 根据 Rootuserid 和 自己的角色查询 ERMCP_MemberFuncMenu 表中的菜单权限
|
|
|
+ areaRoles := make([]Arearole, 0)
|
|
|
+ if err := db.GetEngine().Where("USERID = ?", loginAccount.Userid).Find(&areaRoles); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if len(areaRoles) == 0 {
|
|
|
+ // 无角色,返回空数组s
|
|
|
+ return make([]Funcmenulist, 0), nil
|
|
|
+ }
|
|
|
+ // 构建RoleID列表
|
|
|
+ roleIDs := ""
|
|
|
+ for _, areaRole := range areaRoles {
|
|
|
+ roleIDs += "," + strconv.Itoa(int(areaRole.Roletype))
|
|
|
+ }
|
|
|
+ if len(roleIDs) > 0 {
|
|
|
+ roleIDs = roleIDs[1:]
|
|
|
+ }
|
|
|
+ sql := fmt.Sprintf(`select F.* from FUNCMENULIST F where F.MENUTYPE = 3
|
|
|
and
|
|
|
F.RESOURCECODE in
|
|
|
(select R.RESOURCECODE from ERMCP_MEMBERFUNCMENU R
|
|
|
where R.ISVALID = 1 and R.USERID = %d and R.ROLEID in (%s))`, userAccount.Rootuserid, roleIDs)
|
|
|
- if len(resourceCode) != 0 {
|
|
|
- sql += fmt.Sprintf(" and F.RESOURCECODE = '%s'", resourceCode)
|
|
|
- }
|
|
|
- if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
|
|
|
- return nil, err
|
|
|
+ if len(resourceCode) != 0 {
|
|
|
+ sql += fmt.Sprintf(" and F.RESOURCECODE = '%s'", resourceCode)
|
|
|
+ }
|
|
|
+ if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return nil, errors.New("错误的用户类型")
|
|
|
}
|
|
|
- } else {
|
|
|
- return nil, errors.New("错误的用户类型")
|
|
|
}
|
|
|
|
|
|
return funcMenuLists, nil
|