Browse Source

优化代码以提高执行效率和可维护性

- 重构获取不可见指标和分类ID的逻辑,提高代码复用性
-将原有多处查询不可见指标的代码替换为统一函数调用
- 优化SQL查询条件,减少不必要的查询和过滤操作
- 删除冗余的中间变量和复杂逻辑,简化代码结构
Roc 6 months ago
parent
commit
ba435e98dd

+ 16 - 2
controllers/data_manage/edb_classify.go

@@ -855,8 +855,15 @@ func (this *EdbClassifyController) ClassifyEdbInfoList() {
 	case utils.EdbClassifyTypeCalculate:
 		edbType = 2
 	}
+	// 无权限指标 和 无权限指标分类id
+	noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(this.SysUser.AdminId, utils.EDB_INFO_TYPE, edbType)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
+		return
+	}
 
-	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, utils.EDB_INFO_TYPE, edbType, 0)
+	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, utils.EDB_INFO_TYPE, edbType, 0, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -1102,7 +1109,14 @@ func (this *EdbClassifyController) SimpleList() {
 			edbType = 2
 		}
 
-		allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(parentId, 0, edbType, sysUserId)
+		// 无权限指标 和 无权限指标分类id
+		noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(this.SysUser.AdminId, utils.EDB_INFO_TYPE, edbType)
+		if err != nil {
+			br.Msg = "获取失败"
+			br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
+			return
+		}
+		allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(parentId, 0, edbType, sysUserId, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList)
 		if err != nil {
 			br.Msg = "获取指标数据失败"
 			br.ErrMsg = "获取指标数据失败,Err:" + err.Error()

+ 9 - 9
controllers/data_manage/edb_info.go

@@ -5508,23 +5508,23 @@ func (this *EdbInfoController) EdbChartList() {
 		pars = append(pars, sysUser.AdminId)
 	}
 
-	// 获取当前账号的不可见指标
-	obj := data_manage.EdbInfoNoPermissionAdmin{}
-	confList, e := obj.GetAllListByAdminId(this.SysUser.AdminId)
-	if e != nil {
+	// 无权限指标 和 无权限指标分类id
+	noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(this.SysUser.AdminId, utils.EDB_INFO_TYPE, edbType)
+	if err != nil {
 		br.Msg = "获取失败"
-		br.ErrMsg = "获取不可见指标配置数据失败,Err:" + e.Error()
+		br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
 		return
 	}
-	noPermissionEdbInfoIdList := make([]int, 0)
-	for _, v := range confList {
-		noPermissionEdbInfoIdList = append(noPermissionEdbInfoIdList, v.EdbInfoId)
-	}
 	noPermissionEdbInfoIdNum := len(noPermissionEdbInfoIdList)
 	if noPermissionEdbInfoIdNum > 0 {
 		condition += ` AND edb_info_id NOT IN (` + utils.GetOrmInReplace(noPermissionEdbInfoIdNum) + `) `
 		pars = append(pars, noPermissionEdbInfoIdList)
 	}
+	noPermissionClassifyInfoIdNum := len(noPermissionEdbClassifyIdList)
+	if noPermissionClassifyInfoIdNum > 0 {
+		condition += ` AND classify_id NOT IN (` + utils.GetOrmInReplace(noPermissionClassifyInfoIdNum) + `) `
+		pars = append(pars, noPermissionEdbClassifyIdList)
+	}
 
 	// 获取指标信息
 	dataCount, list, e := data_manage.GetEdbInfoFilterList(condition, pars, startSize, pageSize)

+ 5 - 13
controllers/data_manage/predict_edb_classify.go

@@ -712,19 +712,15 @@ func (this *PredictEdbClassifyController) SimpleList() {
 	var sortList data_manage.EdbClassifyItemList
 	if parentId > 0 {
 		// 查询挂在当前分类上的指标列表
-		// 获取当前账号的不可见指标
-		obj := data_manage.EdbInfoNoPermissionAdmin{}
-		confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
-		if err != nil && !utils.IsErrNoRow(err) {
+
+		// 无权限指标 和 无权限指标分类id
+		noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(this.SysUser.AdminId, utils.PREDICT_EDB_INFO_TYPE, 0)
+		if err != nil {
 			br.Msg = "获取失败"
 			br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
 			return
 		}
-		noPermissionEdbInfoIdMap := make(map[int]bool)
-		for _, v := range confList {
-			noPermissionEdbInfoIdMap[v.EdbInfoId] = true
-		}
-		allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(parentId, 1, 0, sysUserId)
+		allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(parentId, utils.PREDICT_EDB_INFO_TYPE, 0, sysUserId, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList)
 		if err != nil {
 			br.Msg = "获取指标数据失败"
 			br.ErrMsg = "获取指标数据失败,Err:" + err.Error()
@@ -748,10 +744,6 @@ func (this *PredictEdbClassifyController) SimpleList() {
 			}
 
 			for _, v := range allEdbInfo {
-				// 如果指标不可见,那么就不返回该指标
-				if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
-					continue
-				}
 				// 数据权限
 				v.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(v.IsJoinPermission, currClassify.IsJoinPermission, v.EdbInfoId, v.ClassifyId, permissionEdbIdList, permissionClassifyIdList)
 				// 按钮权限

+ 8 - 19
controllers/data_manage/predict_edb_info.go

@@ -2028,26 +2028,20 @@ func (this *PredictEdbInfoController) ClassifyEdbInfoItems() {
 	// 是否只看我的
 	isShowMe, _ := this.GetBool("IsShowMe")
 
-	// 获取当前账号的不可见指标
-	obj := data_manage.EdbInfoNoPermissionAdmin{}
-	confList, err := obj.GetAllListByAdminId(this.SysUser.AdminId)
-	if err != nil && !utils.IsErrNoRow(err) {
-		br.Msg = "获取失败"
-		br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
-		return
-	}
-	noPermissionEdbInfoIdMap := make(map[int]bool)
-	for _, v := range confList {
-		noPermissionEdbInfoIdMap[v.EdbInfoId] = true
-	}
-
 	// 如果选择了只看我的,那么只查询归属于我的账号
 	sysUserId := 0
 	if isShowMe {
 		sysUserId = this.SysUser.AdminId
 	}
+	// 无权限指标 和 无权限指标分类id
+	noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList, err := data_manage_permission.GetUserAllEdbAndClassifyNoPermissionList(this.SysUser.AdminId, utils.PREDICT_EDB_INFO_TYPE, 0)
+	if err != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取不可见指标配置数据失败,Err:" + err.Error()
+		return
+	}
 
-	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, 1, 0, sysUserId)
+	allEdbInfo, err := data_manage.GetEdbInfoByClassifyId(classifyId, utils.PREDICT_EDB_INFO_TYPE, 0, sysUserId, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList)
 	if err != nil && !utils.IsErrNoRow(err) {
 		br.Msg = "获取失败"
 		br.ErrMsg = "获取数据失败,Err:" + err.Error()
@@ -2085,11 +2079,6 @@ func (this *PredictEdbInfoController) ClassifyEdbInfoItems() {
 		}
 
 		for _, v := range allEdbInfo {
-			// 如果指标不可见,那么就不返回该指标
-			if _, ok := noPermissionEdbInfoIdMap[v.EdbInfoId]; ok {
-				continue
-			}
-
 			// 数据权限
 			if classifyInfo, ok := classifyMap[v.ClassifyId]; ok {
 				v.HaveOperaAuth = data_manage_permission.CheckEdbPermissionByPermissionIdList(v.IsJoinPermission, classifyInfo.IsJoinPermission, v.EdbInfoId, v.ClassifyId, permissionEdbIdList, permissionClassifyIdList)

+ 13 - 1
models/data_manage/edb_info.go

@@ -1514,7 +1514,7 @@ type SetEdbDataInsertConfigReq struct {
 }
 
 // GetEdbInfoByClassifyId 用于分类展示
-func GetEdbInfoByClassifyId(classifyId, edbInfoType, edbType, adminId int) (items []*EdbClassifyItems, err error) {
+func GetEdbInfoByClassifyId(classifyId, edbInfoType, edbType, adminId int, noPermissionEdbInfoIdList, noPermissionEdbClassifyIdList []int) (items []*EdbClassifyItems, err error) {
 	o := global.DmSQL["data"]
 	sql := ` SELECT edb_info_id,classify_id,edb_name AS classify_name,edb_name_en AS classify_name_en,unique_code,source_name,source,sys_user_id,sys_user_real_name,start_date,edb_code,edb_type, sort,is_join_permission FROM edb_info WHERE classify_id = ? AND edb_info_type = ?`
 
@@ -1531,6 +1531,18 @@ func GetEdbInfoByClassifyId(classifyId, edbInfoType, edbType, adminId int) (item
 		sql += ` AND sys_user_id = ? `
 		pars = append(pars, adminId)
 	}
+
+	noPermissionEdbInfoIdNum := len(noPermissionEdbInfoIdList)
+	if noPermissionEdbInfoIdNum > 0 {
+		sql += ` AND edb_info_id NOT IN (` + utils.GetOrmInReplace(noPermissionEdbInfoIdNum) + `) `
+		pars = append(pars, noPermissionEdbInfoIdList)
+	}
+	noPermissionClassifyInfoIdNum := len(noPermissionEdbClassifyIdList)
+	if noPermissionClassifyInfoIdNum > 0 {
+		sql += ` AND classify_id NOT IN (` + utils.GetOrmInReplace(noPermissionClassifyInfoIdNum) + `) `
+		pars = append(pars, noPermissionEdbClassifyIdList)
+	}
+
 	sql += ` order by sort asc,edb_info_id asc `
 	err = o.Raw(sql, pars...).Scan(&items).Error