Forráskód Böngészése

feat:权限逻辑判断

wangshan 2 éve
szülő
commit
914518f72d
2 módosított fájl, 60 hozzáadás és 65 törlés
  1. 59 63
      entity/user.go
  2. 1 2
      entity/workDesktop.go

+ 59 - 63
entity/user.go

@@ -279,41 +279,49 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
 	userInfo.Lock.Lock()
 	defer userInfo.Lock.Unlock()
 	var (
-		capitalBool    = true  //是否留资
-		permissionBool = true  //是否有功能权限
-		customPopup    = true  //自定义弹窗
-		defaultPopup   = false //默认弹窗
+		capitalBool    = true //是否留资
+		permissionBool = true //是否有功能权限
+		//customPopup    = true  //自定义弹窗
+		defaultPopup = false //默认弹窗
 	)
-	//无权限(医械通-:1:免费用户;2:超级订阅、大会员到期时间不在规定范围内)
-	if b {
-		//大会员超级订阅用户 才有权限去验证是否有医疗权限
-		//用户是否需要留资
-		if menu.CapitalCode != "" {
-			capitalBool = false
-			for _, cv := range strings.Split(menu.CapitalCode, ",") {
-				if userInfo.Capitals[cv] == 0 {
-					if c := BaseMysql.CountBySql(`SELECT COUNT(id) FROM `+CapitalRetention+` WHERE  source = ? AND user_id = ? AND appid = ?`, cv, wd.NewUserId, wd.AppId); c > 0 {
-						userInfo.Capitals[cv] = 1
-					} else {
-						userInfo.Capitals[cv] = -1
-					}
-				}
-				if userInfo.Capitals[cv] < 0 {
-					customPopup = false
-					//留资弹窗信息
-					title = menu.CapitalInfo.Title
-					content = menu.CapitalInfo.Content
-					confirmUrl = menu.CapitalInfo.ConfirmUrl
-					confirmText = menu.CapitalInfo.ConfirmText
-					isShowCancel = menu.CapitalInfo.IsShowCancel
-					appType = menu.CapitalInfo.AppType
-					openType = menu.CapitalInfo.OpenType
+	//大会员超级订阅用户 才有权限去验证是否有医疗权限
+	//用户是否需要留资
+	if menu.CapitalCode != "" {
+		capitalBool = false
+		for _, cv := range strings.Split(menu.CapitalCode, ",") {
+			if userInfo.Capitals[cv] == 0 {
+				if c := BaseMysql.CountBySql(`SELECT COUNT(id) FROM `+CapitalRetention+` WHERE  source = ? AND user_id = ? AND appid = ?`, cv, wd.NewUserId, wd.AppId); c > 0 {
+					userInfo.Capitals[cv] = 1
 				} else {
-					capitalBool = true
-					break
+					userInfo.Capitals[cv] = -1
 				}
 			}
+			if userInfo.Capitals[cv] < 0 {
+				//customPopup = false
+				//留资弹窗信息
+				title = menu.CapitalInfo.Title
+				content = menu.CapitalInfo.Content
+				confirmUrl = menu.CapitalInfo.ConfirmUrl
+				confirmText = menu.CapitalInfo.ConfirmText
+				isShowCancel = menu.CapitalInfo.IsShowCancel
+				appType = menu.CapitalInfo.AppType
+				openType = menu.CapitalInfo.OpenType
+			} else {
+				capitalBool = true
+				//无权限(有权限未留资|留资了未开通权限) --》 没有配置弹窗信息  --》自定义弹窗
+				title = menu.AdditionalInfo.Title
+				content = menu.AdditionalInfo.Content
+				confirmUrl = menu.AdditionalInfo.ConfirmUrl
+				confirmText = menu.AdditionalInfo.ConfirmText
+				isShowCancel = menu.AdditionalInfo.IsShowCancel
+				appType = menu.AdditionalInfo.AppType
+				openType = menu.AdditionalInfo.OpenType
+				break
+			}
 		}
+	}
+	//无权限(医械通-:1:免费用户;2:超级订阅、大会员到期时间不在规定范围内)
+	if b {
 		//资源中台--- 无权限弹窗信息为默认信息(先留资)
 		if menu.PermissionCode != "" {
 			permissionBool = false
@@ -321,29 +329,12 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
 				if p {
 					title = ""
 					permissionBool = true
-					customPopup = false
+					//customPopup = false
 				}
-				//for _, pv := range strings.Split(menu.PermissionCode, ",") {
-				//	if userInfo.Permissions[pv] == 0 {
-				//		userInfo.Permissions[pv] = -1
-				//		powerList := GetResources(wd.AppId, wd.NewUserId, wd.EntId, wd.EntUserId)
-				//		if len(powerList) > 0 {
-				//			for _, plv := range powerList {
-				//				userInfo.Permissions[plv] = 1
-				//			}
-				//		}
-				//	}
-				//	if userInfo.Permissions[pv] >= 0 {
-				//		title = ""
-				//		permissionBool = true
-				//		customPopup = false
-				//		break
-				//	}
-				//}
 			}
 		}
-		//有用户权限 查看功能权限
-		//医械通---用户没有功能权限 也没有留资 查看
+		//有剑鱼用户权限 查看资源中台功能权限
+		//医械通---用户没有资源中台功能权限 也没有留资 查看
 		if !permissionBool {
 			switch menu.PowerIds {
 			case "500":
@@ -355,14 +346,29 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
 				}
 			}
 		}
-		//
-		usable = capitalBool && permissionBool
 	}
+	//
+	usable = func() bool {
+		switch menu.Authority {
+		case 0:
+			return b && permissionBool && capitalBool
+		case 1:
+			return b || permissionBool || capitalBool
+		case 2:
+			return b || permissionBool && capitalBool
+		case 3:
+			return b && permissionBool || capitalBool
+		case 4:
+			return b && capitalBool || permissionBool
+		default:
+			return false
+		}
+	}()
 	//无权限--免费用户||不符合条件的付费用户
 	if !b || defaultPopup {
 		//配置弹窗信息
 		if ConfigJson.DefaultPopup[menu.PowerIds].Title != "" {
-			customPopup = false
+			//customPopup = false
 			title = ConfigJson.DefaultPopup[menu.PowerIds].Title
 			content = ConfigJson.DefaultPopup[menu.PowerIds].Content
 			confirmUrl = ConfigJson.DefaultPopup[menu.PowerIds].ConfirmUrl
@@ -372,15 +378,5 @@ func CheckCapitalResources(menu *JYMenu, wd *WorkDesktopMenu, b, p bool) (title,
 			openType = ConfigJson.DefaultPopup[menu.PowerIds].OpenType
 		}
 	}
-	//无权限(有权限未留资|留资了未开通权限) --》 没有配置弹窗信息  --》自定义弹窗
-	if customPopup {
-		title = menu.AdditionalInfo.Title
-		content = menu.AdditionalInfo.Content
-		confirmUrl = menu.AdditionalInfo.ConfirmUrl
-		confirmText = menu.AdditionalInfo.ConfirmText
-		isShowCancel = menu.AdditionalInfo.IsShowCancel
-		appType = menu.AdditionalInfo.AppType
-		openType = menu.AdditionalInfo.OpenType
-	}
 	return
 }

+ 1 - 2
entity/workDesktop.go

@@ -44,6 +44,7 @@ type JYMenu struct {
 	CapitalCode    string     //留资代码
 	CapitalInfo    Additional //留资弹窗
 	Children       []*JYMenu  //菜单s
+	Authority      int        //权限逻辑备注 默认0:功能权限、资源权限、留资权限必须全部满足;1:功能权限或资源权限或留资权限满足其一就行;
 }
 
 type Additional struct {
@@ -246,9 +247,7 @@ func (m *WorkDesktopMenu) WorkMenuFormat() ([]*pb.MenuList, error) {
 									//资源中台获取用户权限--没有权限:title等置空
 									//ResourceLib.PowerHandle()
 									//判断资源中台权限
-
 									title, content, confirmUrl, confirmText, appType, openType, isShowCancel, feasibility = CheckCapitalResources(fv, m, usable, m.VerifyPermissions(fv.PermissionCode))
-
 								}
 								threeLevel.Url = MC.If(fv.Url != "", fv.Url, tv.Url).(string)
 								threeLevel.Icon = MC.If(fv.Icon != "", fv.Icon, tv.Icon).(string)