package data_manage_permission import ( "eta/eta_api/models/data_manage" "eta/eta_api/models/data_manage/data_manage_permission" "eta/eta_api/models/data_manage/excel" "eta/eta_api/models/system" "eta/eta_api/utils" "fmt" "github.com/rdlucklib/rdluck_tools/uuid" "strings" ) // SetEdbChartPermission // @Description: 单独给资产(指标、图表、ETA表格)设置权限 // @author: Roc // @datetime 2024-03-27 10:52:32 // @param source int // @param subSource int // @param userId int // @param userList []int // @param isSelectAll bool // @param dataId []string // @param noDataId []string // @param keyword string // @param classify string // @param opUserId int 操作人 // @return err error // @return errMsg string func SetEdbChartPermission(source, subSource, userId int, userList []int, isSelectAll bool, dataIdList, noDataIdList []string, keyword, classify string, opUserId int) (err error, errMsg string) { // 如果勾选全部数据,那么 if isSelectAll { // 找出不要的指标ID列表 noDataIdMap := make(map[string]string, 0) for _, v := range noDataIdList { noDataIdMap[v] = v } // 需要转义的指标/图表ID列表 dataIdList = make([]string, 0) // 获取所有指标/图表 list, _, tmpErr := GetMoveEdbChartList(source, subSource, userId, keyword, classify, 0, 100000) if tmpErr != nil { err = tmpErr return } for _, v := range list { if _, ok := noDataIdMap[v.DataId]; !ok { dataIdList = append(dataIdList, v.DataId) } } } if len(userList) <= 0 { // 说明是取消权限管控 } uniqueCode := uuid.NewUUID().Hex32() content := `数据权限` dataList := make([]data_manage_permission.DataItem, 0) switch source { case 3, 4: //ETA指标库、ETA预测指标 if source == 3 { content += `(ETA指标库)` } else { content += `(ETA预测指标)` } tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataIdList) if tmpErr != nil { err = tmpErr return } dataIdList = make([]string, 0) if len(tmpList) > 0 { for _, v := range tmpList { dataList = append(dataList, data_manage_permission.DataItem{ DataId: fmt.Sprint(v.EdbInfoId), DataCode: v.EdbCode, DataName: v.EdbName, }) dataIdList = append(dataIdList, fmt.Sprint(v.EdbInfoId)) } // 重新设置权限 edbInfoType := 0 if source == 4 { edbInfoType = 1 } err = data_manage_permission.SetPermissionByEdbIdList(dataIdList, userList, edbInfoType) } case 5: //图库 content += `(ETA图库)` tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataIdList) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { dataIdList = make([]string, 0) for _, v := range tmpList { dataList = append(dataList, data_manage_permission.DataItem{ DataId: fmt.Sprint(v.ChartInfoId), DataCode: fmt.Sprint(v.ChartInfoId), DataName: v.ChartName, }) dataIdList = append(dataIdList, fmt.Sprint(v.ChartInfoId)) } // 重新设置权限 chartSource := utils.CHART_SOURCE_DEFAULT err = data_manage_permission.SetPermissionByChartIdList(dataIdList, userList, chartSource) } case 6: // ETA表格 content += `(ETA表格)` tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataIdList) if tmpErr != nil { err = tmpErr return } if len(tmpList) > 0 { dataIdList = make([]string, 0) for _, v := range tmpList { dataList = append(dataList, data_manage_permission.DataItem{ DataId: fmt.Sprint(v.ExcelInfoId), DataCode: fmt.Sprint(v.ExcelInfoId), DataName: v.ExcelName, }) dataIdList = append(dataIdList, fmt.Sprint(v.ExcelInfoId)) } // 重新设置权限 err = data_manage_permission.SetPermissionByExcelIdList(dataIdList, userList, subSource) } default: return } if err != nil { return } var authRecordErr error defer func() { if authRecordErr != nil { utils.FileLog.Error(fmt.Sprintf("记录未设置记录资产权限的记录失败:%s;source:%d;sub_source:%d;数据ID列表:%s;授权人列表:%v", authRecordErr.Error(), source, subSource, strings.Join(dataIdList, ","), userList)) } }() // 获取所有在用的用户 cond := ` AND enabled = 1` pars := make([]interface{}, 0) adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "") if authRecordErr != nil { return } // 如果没有授权人,那么就删除未授权记录 if len(userList) < 0 { authRecordErr = data_manage_permission.DeleteRecordBySourceAndDataIdList(source, subSource, dataIdList) return } userIdMap := make(map[int]int) for _, tmpUserId := range userIdMap { userIdMap[tmpUserId] = tmpUserId } addUserIdList := make([]int, 0) for _, v := range adminList { if _, ok := userIdMap[v.AdminId]; !ok { addUserIdList = append(addUserIdList, v.AdminId) } } authRecordErr = data_manage_permission.AddRecordBySourceAndDataIdList(source, subSource, dataIdList, dataList, addUserIdList, uniqueCode, content, opUserId) return } // SetDataIsPermission // @Description: 设置资产(指标、图表、ETA表格)分类是否涉密 // @author: Roc // @datetime 2024-03-27 10:52:32 // @param source int // @param subSource int // @param dataId []string // @return err error // @return errMsg string func SetDataIsPermission(source, subSource int, classifyIdList []int) (err error, errMsg string) { // TODO 消息通知 switch source { case 3, 4: //ETA指标库、ETA预测指标 //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) //if tmpErr != nil { // err = tmpErr // return //} //if len(tmpList) > 0 { //} // 重新设置权限 classifyType := 0 if source == 4 { classifyType = 1 } err = data_manage_permission.SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList, classifyType) case 5: //图库 // 重新设置权限 chartClassifySource := utils.CHART_SOURCE_DEFAULT err = data_manage_permission.SetIsPermissionByChartClassifyIdList(classifyIdList, chartClassifySource) case 6: // ETA表格 // 重新设置权限 err = data_manage_permission.SetIsPermissionByExcelClassifyIdList(classifyIdList, subSource) default: return } return } // SetEdbChartClassifyPermission // @Description: 给用户设置涉密分类的权限 // @author: Roc // @datetime 2024-03-28 14:22:30 // @param source int // @param subSource int // @param userList []int // @param classifyIdList []int // @return err error // @return errMsg string func SetEdbChartClassifyPermission(source, subSource int, userList []int, classifyIdList []int) (err error, errMsg string) { // TODO 消息通知 if len(classifyIdList) <= 0 { // 说明是取消权限管控 } switch source { case 3, 4: //ETA指标库、ETA预测指标 //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) //if tmpErr != nil { // err = tmpErr // return //} //if len(tmpList) > 0 { //} // 重新设置权限 classifyType := 0 if source == 4 { classifyType = 1 } err = data_manage_permission.SetPermissionByEdbClassifyIdList(classifyIdList, userList, classifyType) case 5: //图库 //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) //if tmpErr != nil { // err = tmpErr // return //} //if len(tmpList) > 0 { //} // 重新设置权限 chartClassifySource := utils.CHART_SOURCE_DEFAULT err = data_manage_permission.SetPermissionByChartClassifyIdList(classifyIdList, userList, chartClassifySource) case 6: // ETA表格 err = data_manage_permission.SetPermissionByExcelClassifyIdList(classifyIdList, userList, subSource) default: return } return } // GetEdbChartClassifyIdListPermissionByUserId // @Description: 根据用户id获取已经配置的分类id列表 // @author: Roc // @datetime 2024-03-29 16:26:10 // @param source int // @param subSource int // @param userId int // @return idList []int // @return err error func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int) (idList []int, err error) { switch source { case 3, 4: //ETA指标库、ETA预测指标 //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) //if tmpErr != nil { // err = tmpErr // return //} //if len(tmpList) > 0 { //} // 重新设置权限 classifyType := 0 if source == 4 { classifyType = 1 } idList, err = data_manage_permission.GetPermissionEdbClassifyIdListByUserId(userId, classifyType) case 5: //图库 chartClassifySource := utils.CHART_SOURCE_DEFAULT idList, err = data_manage_permission.GetPermissionChartClassifyIdListByUserId(userId, chartClassifySource) case 6: // ETA表格 idList, err = data_manage_permission.GetPermissionExcelClassifyIdListByUserId(userId, subSource) default: return } return } // GetEdbChartIdListPermissionByDataId // @Description: 根据用户id获取已经配置的资产(指标、图表、表格)id列表 // @author: Roc // @datetime 2024-03-29 16:26:10 // @param source int // @param subSource int // @param dataId int // @return idList []int // @return err error func GetEdbChartIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) { switch source { case 3, 4: //ETA指标库、ETA预测指标 //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId) //if tmpErr != nil { // err = tmpErr // return //} //if len(tmpList) > 0 { //} edbInfoType := 0 if source == 4 { edbInfoType = 1 } idList, err = data_manage_permission.GetPermissionEdbIdListByDataId(dataId, edbInfoType) case 5: //图库 chartClassifySource := utils.CHART_SOURCE_DEFAULT idList, err = data_manage_permission.GetPermissionChartIdListByDataId(dataId, chartClassifySource) case 6: // ETA表格 idList, err = data_manage_permission.GetPermissionExcelIdListByDataId(dataId, subSource) default: return } return }