|
|
@@ -813,8 +813,8 @@ func GetRoleFuncMenuLists(loginID int, resourceCode string) ([]Funcmenulist, err
|
|
|
}
|
|
|
|
|
|
// GetErmcpRoleFuncMenuLists 获取终端权限(企业风管专用,区分企业和企业成员)
|
|
|
-func GetErmcpRoleFuncMenuLists(loginID int, resourceCode string) ([]NewFuncmenulist, error) {
|
|
|
- funcMenuLists := make([]NewFuncmenulist, 0)
|
|
|
+func GetErmcpRoleFuncMenuLists(loginID int, resourceCode string) ([]Funcmenulist, error) {
|
|
|
+ funcMenuLists := make([]Funcmenulist, 0)
|
|
|
|
|
|
// 获取对应的Loginaccount信息
|
|
|
var loginAccount Loginaccount
|
|
|
@@ -894,7 +894,7 @@ func GetErmcpRoleFuncMenuLists(loginID int, resourceCode string) ([]NewFuncmenul
|
|
|
}
|
|
|
if len(areaRoles) == 0 {
|
|
|
// 无角色,返回空数组s
|
|
|
- return make([]NewFuncmenulist, 0), nil
|
|
|
+ return make([]Funcmenulist, 0), nil
|
|
|
}
|
|
|
// 构建RoleID列表
|
|
|
roleIDs := ""
|
|
|
@@ -1036,3 +1036,105 @@ func (r *NewFuncmenulist) Delete() error {
|
|
|
_, err := db.GetEngine().Where("RESOURCECODE = ?", r.RESOURCECODE).Delete(r)
|
|
|
return err
|
|
|
}
|
|
|
+
|
|
|
+// GetNewErmcpRoleFuncMenuLists
|
|
|
+func GetNewErmcpRoleFuncMenuLists(loginID int, menuType int) ([]NewFuncmenulist, error) {
|
|
|
+ funcMenuLists := make([]NewFuncmenulist, 0)
|
|
|
+
|
|
|
+ // 获取对应的Loginaccount信息
|
|
|
+ var loginAccount Loginaccount
|
|
|
+ has, err := db.GetEngine().Where("LOGINID = ?", loginID).Get(&loginAccount)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if !has {
|
|
|
+ return nil, errors.New("没有对应的登录用户信息")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取对应的Useraccount信息
|
|
|
+ var userAccount Useraccount
|
|
|
+ has, err = db.GetEngine().Table("USERACCOUNT U").
|
|
|
+ Join("INNER", "LOGINACCOUNT L", "L.USERID = U.USERID").
|
|
|
+ Where("L.LOGINID = ?", loginID).Get(&userAccount)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ if !has {
|
|
|
+ return nil, errors.New("没有对应的用户信息")
|
|
|
+ }
|
|
|
+
|
|
|
+ // 是否企业
|
|
|
+ isEnterprise := false
|
|
|
+ // 是否自营会员
|
|
|
+ isTrader := false
|
|
|
+ // 查询机构角色表
|
|
|
+ var arearole Arearole
|
|
|
+ arearoles, err := arearole.GetAreaRoles(int(userAccount.Userid), 0)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ for _, v := range arearoles {
|
|
|
+ if v.Roletype == 6 {
|
|
|
+ isTrader = true
|
|
|
+ } else if v.Roletype == 20 {
|
|
|
+ arearole = arearoles[0]
|
|
|
+ if arearole.Suborgtype == 0 {
|
|
|
+ isEnterprise = true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if userAccount.Usertype == 5 || (userAccount.Usertype == 2 && isTrader) {
|
|
|
+ // 交易所,自营会员及投资者的权限不进行判断
|
|
|
+ sql := fmt.Sprintf("select F.* from FUNCMENULIST F where F.MENUTYPE = %d", menuType)
|
|
|
+ if err := db.GetEngine().SQL(sql).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 = %d
|
|
|
+ and
|
|
|
+ F.RESOURCECODE in
|
|
|
+ (select R.RESOURCECODE from ERMCP_MEMBERFUNCMENU R
|
|
|
+ where R.ISVALID = 1 and R.USERID = %d and R.ROLEID = %d)`, menuType, loginAccount.Userid, loginAccount.Clientroleid)
|
|
|
+ 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([]NewFuncmenulist, 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 = %d
|
|
|
+ and
|
|
|
+ F.RESOURCECODE in
|
|
|
+ (select R.RESOURCECODE from ERMCP_MEMBERFUNCMENU R
|
|
|
+ where R.ISVALID = 1 and R.USERID = %d and R.ROLEID in (%s))`, menuType, userAccount.Rootuserid, roleIDs)
|
|
|
+ if err := db.GetEngine().SQL(sql).Find(&funcMenuLists); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return nil, errors.New("错误的用户类型")
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return funcMenuLists, nil
|
|
|
+}
|