Browse Source

feat:用户订阅菜单

wangshan 3 years ago
parent
commit
949795264e
2 changed files with 22 additions and 28 deletions
  1. 9 2
      entity/user.go
  2. 13 26
      entity/workDesktop.go

+ 9 - 2
entity/user.go

@@ -41,6 +41,7 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 	//查询用户信息
 	data, ok := Mgo.FindById("user", userId, `{"s_phone":1,"s_m_phone":1,i_member_status":1,"s_member_mainid":1,"i_member_sub_status":1,"i_vip_status":1,"o_vipjy":1,"o_jy":1,"l_registedate":1}`)
 	if ok && *data != nil && len(*data) > 0 {
+		var isFree = true
 		phone, _ := MC.If((*data)["s_phone"] != nil, (*data)["s_phone"], (*data)["s_m_phone"]).(string)
 		if phone != "" {
 			//商机管理用户
@@ -48,7 +49,9 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 			entNicheInfos := Mysql.SelectBySql(`SELECT i.isNew,r.role_id  FROM (entniche_user u LEFT JOIN entniche_user_role r ON r.user_id = u.id)  LEFT JOIN entniche_info i ON u.ent_id=i.id WHERE u.phone = ? and u.power=1 and i.status=1 ORDER BY r.role_id DESC`, phone)
 			//商机管理用户信息判断
 			if entNicheInfos != nil && len(*entNicheInfos) > 0 {
+				isFree = false
 				entNicheInfo := (*entNicheInfos)[0]
+				UserPowerMap["100"] = 1
 				if MC.ObjToString(entNicheInfo["isNew"]) != "" {
 					switch MC.ObjToString(entNicheInfo["isNew"]) {
 					case "1": //新版商机管理
@@ -60,7 +63,6 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 							UserPowerMap["112"] = 1
 						}
 					case "0": //老版商机管理
-						UserPowerMap["100"] = 1
 						switch MC.ObjToString(entNicheInfo["role_id"]) {
 						case "1": //部门管理员
 							UserPowerMap["101"] = 1
@@ -74,6 +76,7 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 			if memberStatus := MC.IntAll((*data)["i_member_status"]); memberStatus > 0 || bigMemberOff {
 				userId := userId
 				if memberStatus > 0 {
+					isFree = false
 					UserPowerMap["1"] = memberStatus
 					//是否是子账号 而且 子账号被启用
 					if (*data)["s_member_mainid"] != nil && MC.ObjToString((*data)["s_member_mainid"]) != "" && MC.IntAllDef((*data)["i_member_sub_status"], 0) > 0 {
@@ -90,6 +93,7 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 			}
 			//VIP用户
 			if vipStatus := MC.IntAll((*data)["i_vip_status"]); vipStatus > 0 {
+				isFree = false
 				UserPowerMap["200"] = vipStatus
 				if vipSet := MC.ObjToMap((*data)["o_vipjy"]); vipSet != nil {
 					if buySet := MC.ObjToMap((*vipSet)["o_buyset"]); buySet != nil {
@@ -101,10 +105,13 @@ func AutoUserPowerInfo(userId, appId string, internalTime int, bigMemberOff bool
 				}
 			}
 			//免费用户
+			if isFree {
+				UserPowerMap["300"] = 1
+			}
 			freeSet := MC.ObjToMap((*data)["o_jy"])
 			if MC.IntAll((*freeSet)["i_newfree"]) > 0 || IsNewFreeTimeCell < MC.IntAll((*data)["l_registedate"]) {
 				//新免费用户
-				UserPowerMap["300"] = 1
+				UserPowerMap["301"] = 1
 			}
 			//广东移动DICT
 			if Mysql.CountBySql(`select count(*) from privatedata where phone = ?`, phone) > 0 {

+ 13 - 26
entity/workDesktop.go

@@ -106,9 +106,9 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 		if len(mv.Children) > 0 {
 			for _, sv := range mv.Children {
 				//0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
-				usable := m.VerifyPermissions(mv.PowerIds)
+				usable := m.VerifyPermissions(sv.PowerIds)
 				//checkCode==1 验证权限结果 无权限不显示
-				if !usable && mv.CheckCode == 1 {
+				if !usable && sv.CheckCode == 1 {
 					continue
 				}
 				secondLevel := &pb.SecondLevelMenu{
@@ -116,7 +116,7 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 					Icon:     sv.Icon,
 					Url:      sv.Url,
 					Id:       encrypt.SE.EncodeString(strconv.Itoa(sv.Id)), //功能id加密
-					Usable:   MC.If(mv.PowerIds != "", usable && mv.CheckCode == 1, true).(bool),
+					Usable:   MC.If(sv.PowerIds != "", usable && sv.CheckCode == 1, true).(bool),
 					Child:    []*pb.ThreeLevelMenu{},
 					AppType:  sv.AppType,
 					OpenType: sv.OpenType,
@@ -133,9 +133,9 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 				if len(sv.Children) > 0 {
 					for _, tv := range sv.Children {
 						//0:默认展示;1:需验证权限,有权限展示;2:需验证权限,无权限也可展示(可用服务无权限不展示)
-						usable := m.VerifyPermissions(mv.PowerIds)
+						usable := m.VerifyPermissions(tv.PowerIds)
 						//checkCode==1 验证权限结果 无权限不显示
-						if !usable && mv.CheckCode == 1 {
+						if !usable && tv.CheckCode == 1 {
 							continue
 						}
 						threeLevel := &pb.ThreeLevelMenu{
@@ -143,7 +143,7 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 							Icon:     tv.Icon,
 							Url:      tv.Url,
 							Id:       encrypt.SE.EncodeString(strconv.Itoa(tv.Id)), //功能id加密
-							Usable:   MC.If(mv.PowerIds != "", usable && mv.CheckCode == 1, true).(bool),
+							Usable:   MC.If(tv.PowerIds != "", usable && tv.CheckCode == 1, true).(bool),
 							AppType:  tv.AppType,
 							OpenType: tv.OpenType,
 							TipInfo: &pb.TipInfo{
@@ -157,6 +157,7 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 							},
 						}
 						if len(tv.Children) > 0 {
+						L:
 							for _, fv := range tv.Children {
 								if fv.Name == "" {
 									continue
@@ -176,27 +177,13 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 										OpenType:     fv.OpenType,
 									}
 								}
-								//订阅是商机管理优先  其他功能是大会员优先(这样是有问题的  有些功能超级订阅用户可用 大会员用户权不可用)
-								//解决上面的问题:菜单只保留三级菜单;四级菜单信息不入库;判断三级菜单权限
 								switch {
-								case strings.Contains(tv.Name, "订阅"):
-									switch {
-									case strings.HasPrefix(fv.Name, "商机管理") && m.VerifyPermissions(verification["商机管理"]):
-										break
-									case strings.HasPrefix(fv.Name, "大会员") && m.VerifyPermissions(verification["大会员"]):
-										break
-									case strings.HasPrefix(fv.Name, "超级订阅") && m.VerifyPermissions(verification["超级订阅"]):
-										break
-									}
-								default:
-									switch {
-									case strings.HasPrefix(fv.Name, "大会员") && m.VerifyPermissions(verification["大会员"]):
-										break
-									case strings.HasPrefix(fv.Name, "商机管理") && m.VerifyPermissions(verification["商机管理"]):
-										break
-									case strings.HasPrefix(fv.Name, "超级订阅") && m.VerifyPermissions(verification["超级订阅"]):
-										break
-									}
+								case strings.HasPrefix(fv.Name, "大会员") && m.VerifyPermissions(verification["大会员"]):
+									break L
+								case strings.HasPrefix(fv.Name, "商机管理") && m.VerifyPermissions(verification["商机管理"]):
+									break L
+								case strings.HasPrefix(fv.Name, "超级订阅") && m.VerifyPermissions(verification["超级订阅"]):
+									break L
 								}
 							}
 						}