edb_permission.go 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769
  1. package data_manage_permission
  2. import (
  3. "eta_gn/eta_api/models/data_manage"
  4. "eta_gn/eta_api/models/data_manage/data_manage_permission"
  5. "eta_gn/eta_api/models/data_manage/excel"
  6. "eta_gn/eta_api/models/system"
  7. "eta_gn/eta_api/utils"
  8. "fmt"
  9. "github.com/rdlucklib/rdluck_tools/uuid"
  10. "strconv"
  11. "strings"
  12. )
  13. // SetEdbChartPermission
  14. // @Description: 单独给资产(指标、图表、ETA表格)设置权限
  15. // @author: Roc
  16. // @datetime 2024-03-27 10:52:32
  17. // @param source int
  18. // @param subSource int
  19. // @param userId int
  20. // @param authUserList []int
  21. // @param isSelectAll bool
  22. // @param dataId []string
  23. // @param noDataId []string
  24. // @param keyword string
  25. // @param classify string
  26. // @param opUserId int 操作人
  27. // @return err error
  28. // @return errMsg string
  29. func SetEdbChartPermission(source, subSource, userId int, authUserList []int, isSelectAll bool, dataIdList, noDataIdList []string, keyword, classify string, opUserId int) (err error, errMsg string) {
  30. // 如果勾选全部数据,那么
  31. if isSelectAll {
  32. // 找出不要的指标ID列表
  33. noDataIdMap := make(map[string]string, 0)
  34. for _, v := range noDataIdList {
  35. noDataIdMap[v] = v
  36. }
  37. // 需要转义的指标/图表ID列表
  38. dataIdList = make([]string, 0)
  39. // 获取所有指标/图表
  40. list, _, tmpErr := GetMoveEdbChartList(source, subSource, userId, keyword, classify, 0, 100000)
  41. if tmpErr != nil {
  42. err = tmpErr
  43. return
  44. }
  45. for _, v := range list {
  46. if _, ok := noDataIdMap[v.DataId]; !ok {
  47. dataIdList = append(dataIdList, v.DataId)
  48. }
  49. }
  50. }
  51. if len(authUserList) <= 0 {
  52. // 说明是取消权限管控
  53. }
  54. uniqueCode := uuid.NewUUID().Hex32()
  55. title := `数据权限变更`
  56. content := `数据权限`
  57. dataList := make([]data_manage_permission.DataItem, 0)
  58. switch source {
  59. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate:
  60. //ETA指标库、ETA预测指标
  61. if source == utils.EdbPermissionSourceBase {
  62. content += `(数据查看)`
  63. }
  64. if source == utils.EdbPermissionSourcePredict {
  65. content += `(衍生指标)`
  66. }
  67. if source == utils.EdbPermissionSourceCalculate {
  68. content += `(指标加工)`
  69. }
  70. edbInfoIdList := make([]int, 0)
  71. for _, dataId := range dataIdList {
  72. edbInfoId, tmpErr := strconv.Atoi(dataId)
  73. if tmpErr != nil {
  74. err = tmpErr
  75. return
  76. }
  77. edbInfoIdList = append(edbInfoIdList, edbInfoId)
  78. }
  79. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(edbInfoIdList)
  80. if tmpErr != nil {
  81. err = tmpErr
  82. return
  83. }
  84. dataIdList = make([]string, 0)
  85. if len(tmpList) > 0 {
  86. for _, v := range tmpList {
  87. dataList = append(dataList, data_manage_permission.DataItem{
  88. DataId: v.EdbInfoId,
  89. DataCode: v.EdbCode,
  90. DataName: v.EdbName,
  91. })
  92. dataIdList = append(dataIdList, fmt.Sprint(v.EdbInfoId))
  93. }
  94. // 重新设置权限
  95. edbInfoType := 0
  96. if source == utils.EdbPermissionSourcePredict {
  97. edbInfoType = 1
  98. }
  99. err = data_manage_permission.SetPermissionByEdbIdList(dataIdList, authUserList, edbInfoType)
  100. }
  101. case utils.ChartPermissionSource:
  102. //图库
  103. content += `(图库)`
  104. chartInfoIdList := make([]int, 0)
  105. for _, id := range dataIdList {
  106. edbInfoId, tmpErr := strconv.Atoi(id)
  107. if tmpErr != nil {
  108. err = tmpErr
  109. return
  110. }
  111. chartInfoIdList = append(chartInfoIdList, edbInfoId)
  112. }
  113. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(chartInfoIdList)
  114. if tmpErr != nil {
  115. err = tmpErr
  116. return
  117. }
  118. if len(tmpList) > 0 {
  119. dataIdList = make([]string, 0)
  120. for _, v := range tmpList {
  121. dataList = append(dataList, data_manage_permission.DataItem{
  122. DataId: v.ChartInfoId,
  123. DataCode: fmt.Sprint(v.ChartInfoId),
  124. DataName: v.ChartName,
  125. })
  126. dataIdList = append(dataIdList, fmt.Sprint(v.ChartInfoId))
  127. }
  128. // 重新设置权限
  129. chartSource := utils.CHART_SOURCE_DEFAULT
  130. err = data_manage_permission.SetPermissionByChartIdList(dataIdList, authUserList, chartSource)
  131. }
  132. case utils.TablePermissionSource:
  133. // ETA表格
  134. content += `(表格)`
  135. tmpList := make([]*excel.MyExcelInfoList, 0)
  136. var tmpErr error
  137. if subSource == utils.BALANCE_TABLE {
  138. tmpList, tmpErr = excel.GetNoContentExcelListByExcelInfoIdAndParentId(dataIdList)
  139. } else {
  140. tmpList, tmpErr = excel.GetNoContentExcelListByExcelInfoIdList(dataIdList)
  141. }
  142. if tmpErr != nil {
  143. err = tmpErr
  144. return
  145. }
  146. if len(tmpList) > 0 {
  147. dataIdList = make([]string, 0)
  148. for _, v := range tmpList {
  149. dataList = append(dataList, data_manage_permission.DataItem{
  150. DataId: v.ExcelInfoId,
  151. DataCode: fmt.Sprint(v.ExcelInfoId),
  152. DataName: v.ExcelName,
  153. })
  154. dataIdList = append(dataIdList, fmt.Sprint(v.ExcelInfoId))
  155. }
  156. // 重新设置权限
  157. err = data_manage_permission.SetPermissionByExcelIdList(dataIdList, authUserList, subSource)
  158. }
  159. default:
  160. return
  161. }
  162. if err != nil {
  163. return
  164. }
  165. var authRecordErr error
  166. defer func() {
  167. if authRecordErr != nil {
  168. utils.FileLog.Error(fmt.Sprintf("记录未设置记录资产权限的记录失败:%s;source:%d;sub_source:%d;数据ID列表:%s;授权人列表:%v", authRecordErr.Error(), source, subSource, strings.Join(dataIdList, ","), authUserList))
  169. }
  170. }()
  171. // 获取所有在用的用户
  172. cond := ` AND enabled = 1`
  173. pars := make([]interface{}, 0)
  174. adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "")
  175. if authRecordErr != nil {
  176. return
  177. }
  178. // 如果没有授权人,那么就删除未授权记录
  179. if len(authUserList) < 0 {
  180. authRecordErr = data_manage_permission.DeleteRecordBySourceAndDataIdList(source, subSource, dataIdList)
  181. return
  182. }
  183. userIdMap := make(map[int]int)
  184. for _, tmpUserId := range authUserList {
  185. userIdMap[tmpUserId] = tmpUserId
  186. }
  187. noAuthUserIdList := make([]int, 0)
  188. for _, v := range adminList {
  189. if _, ok := userIdMap[v.AdminId]; !ok {
  190. noAuthUserIdList = append(noAuthUserIdList, v.AdminId)
  191. }
  192. }
  193. content += "已关闭"
  194. // 添加未授权记录
  195. authRecordErr = data_manage_permission.AddRecordBySourceAndDataIdList(source, subSource, dataList, noAuthUserIdList, authUserList, uniqueCode, title, content, opUserId)
  196. return
  197. }
  198. // SetDataClassifyIsPermission
  199. // @Description: 设置资产(指标、图表、ETA表格)分类是否涉密
  200. // @author: Roc
  201. // @datetime 2024-03-27 10:52:32
  202. // @param source int
  203. // @param subSource int
  204. // @param dataId []string
  205. // @param opUserId int 操作人id
  206. // @return err error
  207. // @return errMsg string
  208. func SetDataClassifyIsPermission(source, subSource int, classifyIdList []int, opUserId int) (err error, errMsg string) {
  209. uniqueCode := uuid.NewUUID().Hex32()
  210. title := `数据权限变更`
  211. content := `分类权限`
  212. classifyDataList := make([]data_manage_permission.ClassifyDataItem, 0)
  213. switch source {
  214. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate:
  215. //ETA指标库、ETA预测指标
  216. if source == utils.EdbPermissionSourceBase {
  217. content += `(数据查看)`
  218. }
  219. if source == utils.EdbPermissionSourcePredict {
  220. content += `(衍生指标)`
  221. }
  222. if source == utils.EdbPermissionSourceCalculate {
  223. content += `(指标加工)`
  224. }
  225. {
  226. // 分类信息
  227. classifyInfoList, tmpErr := data_manage.GetEdbClassifyByIdList(classifyIdList)
  228. if tmpErr != nil {
  229. err = tmpErr
  230. return
  231. }
  232. for _, v := range classifyInfoList {
  233. classifyDataList = append(classifyDataList, data_manage_permission.ClassifyDataItem{
  234. ClassifyId: v.ClassifyId,
  235. ClassifyName: v.ClassifyName,
  236. })
  237. }
  238. }
  239. // 重新设置权限
  240. classifyType := 0
  241. if source == utils.EdbPermissionSourcePredict {
  242. classifyType = 1
  243. }
  244. if source == utils.EdbPermissionSourceCalculate {
  245. classifyType = utils.EdbClassifyTypeCalculate
  246. }
  247. err = data_manage_permission.SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList, classifyType)
  248. case utils.ChartPermissionSource:
  249. //图库
  250. content += `(图库)`
  251. {
  252. // 分类信息
  253. classifyInfoList, tmpErr := data_manage.GetChartClassifyByIdList(classifyIdList)
  254. if tmpErr != nil {
  255. err = tmpErr
  256. return
  257. }
  258. for _, v := range classifyInfoList {
  259. classifyDataList = append(classifyDataList, data_manage_permission.ClassifyDataItem{
  260. ClassifyId: v.ChartClassifyId,
  261. ClassifyName: v.ChartClassifyName,
  262. })
  263. }
  264. }
  265. // 重新设置权限
  266. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  267. err = data_manage_permission.SetIsPermissionByChartClassifyIdList(classifyIdList, chartClassifySource)
  268. case utils.TablePermissionSource:
  269. // ETA表格
  270. content += `(表格)`
  271. {
  272. // 分类信息
  273. classifyInfoList, tmpErr := excel.GetExcelClassifyByIdList(classifyIdList)
  274. if tmpErr != nil {
  275. err = tmpErr
  276. return
  277. }
  278. for _, v := range classifyInfoList {
  279. classifyDataList = append(classifyDataList, data_manage_permission.ClassifyDataItem{
  280. ClassifyId: v.ExcelClassifyId,
  281. ClassifyName: v.ExcelClassifyName,
  282. })
  283. }
  284. }
  285. // 重新设置权限
  286. err = data_manage_permission.SetIsPermissionByExcelClassifyIdList(classifyIdList, subSource)
  287. default:
  288. return
  289. }
  290. if err != nil {
  291. return
  292. }
  293. var authRecordErr error
  294. defer func() {
  295. if authRecordErr != nil {
  296. utils.FileLog.Error(fmt.Sprintf("记录未设置记录资产权限的记录失败:%s;source:%d;sub_source:%d;分类ID列表:%v", authRecordErr.Error(), source, subSource, classifyIdList))
  297. }
  298. }()
  299. // 如果没有涉密的分类,那么就移除所有删除未授权记录
  300. if len(classifyIdList) <= 0 {
  301. authRecordErr = data_manage_permission.DeleteClassifyNoAuthRecordBySourceAndClassifyIdList(source, subSource)
  302. return
  303. }
  304. // 获取所有在用的用户
  305. cond := ` AND enabled = 1`
  306. pars := make([]interface{}, 0)
  307. adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "")
  308. if authRecordErr != nil {
  309. return
  310. }
  311. noAuthUserIdList := make([]int, 0)
  312. for _, v := range adminList {
  313. noAuthUserIdList = append(noAuthUserIdList, v.AdminId)
  314. }
  315. content += "已关闭"
  316. // 添加未授权记录
  317. authRecordErr = data_manage_permission.AddClassifyNoAuthRecordBySourceAndClassifyIdList(source, subSource, classifyDataList, noAuthUserIdList, uniqueCode, title, content, opUserId)
  318. return
  319. }
  320. // SetEdbChartClassifyPermission
  321. // @Description: 给用户设置涉密分类的权限
  322. // @author: Roc
  323. // @datetime 2024-03-28 14:22:30
  324. // @param source int
  325. // @param subSource int
  326. // @param authUserList []int
  327. // @param classifyIdList []int
  328. // @param opUserId int 操作人id
  329. // @return err error
  330. // @return errMsg string
  331. func SetEdbChartClassifyPermission(source, subSource int, authUserList []int, classifyIdList []int, opUserId int) (err error, errMsg string) {
  332. uniqueCode := uuid.NewUUID().Hex32()
  333. title := `数据权限变更`
  334. content := `分类权限`
  335. secretClassifyInfoList := make([]data_manage_permission.ClassifyDataItem, 0)
  336. if len(classifyIdList) <= 0 {
  337. // 说明是取消权限管控
  338. }
  339. // 先获取所有的涉密分类,然后根据用户去判断那些分类给权限了
  340. switch source {
  341. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate: //ETA指标库、ETA预测指标
  342. //ETA指标库、ETA预测指标
  343. if source == utils.EdbPermissionSourceBase {
  344. content += `(数据查看)`
  345. }
  346. if source == utils.EdbPermissionSourcePredict {
  347. content += `(衍生指标)`
  348. }
  349. if source == utils.EdbPermissionSourceCalculate {
  350. content += `(指标加工)`
  351. }
  352. classifyType := 0
  353. if source == utils.EdbPermissionSourcePredict {
  354. classifyType = 1
  355. }
  356. if source == utils.EdbPermissionSourceCalculate {
  357. classifyType = utils.EdbClassifyTypeCalculate
  358. }
  359. {
  360. // 获取已经设置加密的分类信息
  361. classifyInfoList, tmpErr := data_manage.GetEdbClassifyByClassifyTypeAndIsJoinPermission(classifyType, 1)
  362. if tmpErr != nil {
  363. err = tmpErr
  364. return
  365. }
  366. for _, v := range classifyInfoList {
  367. secretClassifyInfoList = append(secretClassifyInfoList, data_manage_permission.ClassifyDataItem{
  368. ClassifyId: v.ClassifyId,
  369. ClassifyName: v.ClassifyName,
  370. })
  371. }
  372. }
  373. // 重新设置权限
  374. err = data_manage_permission.SetPermissionByEdbClassifyIdList(classifyIdList, authUserList, classifyType)
  375. case utils.ChartPermissionSource:
  376. subSource = utils.CHART_SOURCE_DEFAULT
  377. //图库
  378. content += `(图库)`
  379. {
  380. // 分类信息
  381. classifyInfoList, tmpErr := data_manage.GetChartClassifyBySourceAndIsJoinPermission(subSource, 1)
  382. if tmpErr != nil {
  383. err = tmpErr
  384. return
  385. }
  386. for _, v := range classifyInfoList {
  387. secretClassifyInfoList = append(secretClassifyInfoList, data_manage_permission.ClassifyDataItem{
  388. ClassifyId: v.ChartClassifyId,
  389. ClassifyName: v.ChartClassifyName,
  390. })
  391. }
  392. }
  393. // 重新设置权限
  394. err = data_manage_permission.SetPermissionByChartClassifyIdList(classifyIdList, authUserList, subSource)
  395. case utils.TablePermissionSource:
  396. // ETA表格
  397. content += `(表格)`
  398. {
  399. // 分类信息
  400. classifyInfoList, tmpErr := excel.GetExcelClassifyBySourceAndIsJoinPermission(subSource, 1)
  401. if tmpErr != nil {
  402. err = tmpErr
  403. return
  404. }
  405. for _, v := range classifyInfoList {
  406. secretClassifyInfoList = append(secretClassifyInfoList, data_manage_permission.ClassifyDataItem{
  407. ClassifyId: v.ExcelClassifyId,
  408. ClassifyName: v.ExcelClassifyName,
  409. })
  410. }
  411. }
  412. err = data_manage_permission.SetPermissionByExcelClassifyIdList(classifyIdList, authUserList, subSource)
  413. default:
  414. return
  415. }
  416. if err != nil {
  417. return
  418. }
  419. var authRecordErr error
  420. defer func() {
  421. if authRecordErr != nil {
  422. utils.FileLog.Error(fmt.Sprintf("记录未设置记录资产权限的记录失败:%s;source:%d;sub_source:%d;分类ID列表:%v", authRecordErr.Error(), source, subSource, classifyIdList))
  423. }
  424. }()
  425. content += "已关闭"
  426. authClassifyIdMap := make(map[int]int)
  427. for _, v := range classifyIdList {
  428. authClassifyIdMap[v] = v
  429. }
  430. noAuthClassifyMap := make(map[int]data_manage_permission.ClassifyDataItem)
  431. for _, classifyInfo := range secretClassifyInfoList {
  432. if _, ok := authClassifyIdMap[classifyInfo.ClassifyId]; !ok {
  433. noAuthClassifyMap[classifyInfo.ClassifyId] = classifyInfo
  434. }
  435. }
  436. // 添加未授权记录
  437. authRecordErr = data_manage_permission.AddClassifyNoAuthRecordBySourceAndUserIdList(source, subSource, noAuthClassifyMap, authUserList, uniqueCode, title, content, opUserId)
  438. return
  439. }
  440. // GetEdbChartClassifyIdListPermissionByUserId
  441. // @Description: 根据用户id获取已经配置的分类id列表
  442. // @author: Roc
  443. // @datetime 2024-03-29 16:26:10
  444. // @param source int
  445. // @param subSource int
  446. // @param userId int
  447. // @return idList []int
  448. // @return err error
  449. func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int) (idList []int, err error) {
  450. switch source {
  451. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate: //ETA指标库、ETA预测指标
  452. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  453. //if tmpErr != nil {
  454. // err = tmpErr
  455. // return
  456. //}
  457. //if len(tmpList) > 0 {
  458. //}
  459. // 重新设置权限
  460. classifyType := 0
  461. if source == utils.EdbPermissionSourcePredict {
  462. classifyType = 1
  463. }
  464. if source == utils.EdbPermissionSourceCalculate {
  465. classifyType = utils.EdbClassifyTypeCalculate
  466. }
  467. idList, err = data_manage_permission.GetPermissionEdbClassifyIdListByUserId(userId, classifyType)
  468. case utils.ChartPermissionSource:
  469. //图库
  470. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  471. idList, err = data_manage_permission.GetPermissionChartClassifyIdListByUserId(userId, chartClassifySource)
  472. case utils.TablePermissionSource:
  473. // ETA表格
  474. idList, err = data_manage_permission.GetPermissionExcelClassifyIdListByUserId(userId, subSource)
  475. default:
  476. return
  477. }
  478. return
  479. }
  480. // GetUserIdListPermissionByDataId
  481. // @Description: 根据资产(指标、图表、表格)id获取已经配置的用户id
  482. // @author: Roc
  483. // @datetime 2024-03-29 16:26:10
  484. // @param source int
  485. // @param subSource int
  486. // @param dataId int
  487. // @return idList []int
  488. // @return err error
  489. func GetUserIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
  490. switch source {
  491. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate:
  492. // ETA指标库、ETA预测指标
  493. edbInfoType := 0
  494. if source == utils.EdbPermissionSourcePredict {
  495. edbInfoType = 1
  496. }
  497. //edbType := 1
  498. //if source == 7 {
  499. // edbType = 2
  500. //}
  501. idList, err = data_manage_permission.GetPermissionUserIdListByEdbId(dataId, edbInfoType)
  502. case utils.ChartPermissionSource:
  503. // 图库
  504. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  505. idList, err = data_manage_permission.GetPermissionUserIdListByChartId(dataId, chartClassifySource)
  506. case utils.TablePermissionSource:
  507. // ETA表格
  508. idList, err = data_manage_permission.GetPermissionUserIdListByExcelId(dataId, subSource)
  509. default:
  510. return
  511. }
  512. return
  513. }
  514. // GetUserIdListNoPermissionByDataId
  515. // @Description: 根据资产(指标、图表、表格)id获取没有该资产分类权限的用户id
  516. // @author: Roc
  517. // @datetime 2024-03-29 16:26:10
  518. // @param source int
  519. // @param subSource int
  520. // @param dataId int
  521. // @return idList []int
  522. // @return err error
  523. func GetUserIdListNoPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
  524. // 已经授权的用户map
  525. authIdList := make([]int, 0)
  526. switch source {
  527. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate:
  528. // ETA指标库、ETA预测指标
  529. edbInfoType := 0
  530. if source == utils.EdbPermissionSourcePredict {
  531. edbInfoType = 1
  532. }
  533. // 获取指标
  534. edbInfoItem, tmpErr := data_manage.GetEdbInfoById(dataId)
  535. if tmpErr != nil {
  536. err = tmpErr
  537. return
  538. }
  539. // 获取分类
  540. classifyItem, tmpErr := data_manage.GetEdbClassifyById(edbInfoItem.ClassifyId)
  541. if tmpErr != nil {
  542. err = tmpErr
  543. return
  544. }
  545. // 判断分类是否涉密,不涉密就直接返回
  546. if classifyItem.IsJoinPermission == 0 {
  547. return
  548. }
  549. // 获取已经配置分类权限的用户ID列表
  550. authIdList, err = data_manage_permission.GetPermissionUserIdListByEdbClassifyId(dataId, edbInfoType)
  551. case utils.ChartPermissionSource:
  552. // 图库
  553. // 获取图表
  554. chartInfoItem, tmpErr := data_manage.GetChartInfoById(dataId)
  555. if tmpErr != nil {
  556. err = tmpErr
  557. return
  558. }
  559. // 获取分类
  560. classifyItem, tmpErr := data_manage.GetChartClassifyById(chartInfoItem.ChartClassifyId)
  561. if tmpErr != nil {
  562. err = tmpErr
  563. return
  564. }
  565. // 判断分类是否涉密,不涉密就直接返回
  566. if classifyItem.IsJoinPermission == 0 {
  567. return
  568. }
  569. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  570. authIdList, err = data_manage_permission.GetPermissionUserIdListByChartClassifyId(dataId, chartClassifySource)
  571. case utils.TablePermissionSource:
  572. // ETA表格
  573. // 获取图表
  574. excelInfoItem, tmpErr := excel.GetNoContentExcelInfoByExcelId(dataId)
  575. if tmpErr != nil {
  576. err = tmpErr
  577. return
  578. }
  579. // 获取分类
  580. classifyItem, tmpErr := excel.GetExcelClassifyById(excelInfoItem.ExcelClassifyId)
  581. if tmpErr != nil {
  582. err = tmpErr
  583. return
  584. }
  585. // 判断分类是否涉密,不涉密就直接返回
  586. if classifyItem.IsJoinPermission == 0 {
  587. return
  588. }
  589. authIdList, err = data_manage_permission.GetPermissionUserIdListByExcelClassifyId(dataId, subSource)
  590. default:
  591. return
  592. }
  593. // 已经授权的用户map
  594. authUserIdMap := make(map[int]int)
  595. for _, v := range authIdList {
  596. authUserIdMap[v] = v
  597. }
  598. // 获取所有在用的用户
  599. cond := ` AND enabled = 1`
  600. pars := make([]interface{}, 0)
  601. adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "")
  602. if authRecordErr != nil {
  603. return
  604. }
  605. for _, v := range adminList {
  606. if _, ok := authUserIdMap[v.AdminId]; !ok {
  607. idList = append(idList, v.AdminId)
  608. }
  609. }
  610. return
  611. }
  612. // InheritParentClassify
  613. // @Description: 继承父级分类的涉密权限
  614. // @author: Roc
  615. // @datetime 2024-04-07 21:09:16
  616. // @param source int
  617. // @param subSource int
  618. // @param classifyId int
  619. // @param parentClassifyId int
  620. // @param classifyName string
  621. func InheritParentClassify(source, subSource, classifyId, parentClassifyId int, classifyName string) {
  622. var err error
  623. defer func() {
  624. if err != nil {
  625. fmt.Println(fmt.Sprintf("继承父级分类失败:%s;source:%d;sub_source:%d;分类ID列表:%v", err.Error(), source, subSource, classifyId))
  626. utils.FileLog.Error(fmt.Sprintf("继承父级分类失败:%s;source:%d;sub_source:%d;分类ID列表:%v", err.Error(), source, subSource, classifyId))
  627. }
  628. }()
  629. // 一级分类不用继承
  630. if parentClassifyId <= 0 {
  631. return
  632. }
  633. uniqueCode := uuid.NewUUID().Hex32()
  634. switch source {
  635. case utils.EdbPermissionSourceBase, utils.EdbPermissionSourcePredict, utils.EdbPermissionSourceCalculate:
  636. //ETA指标库、ETA预测指标
  637. // 分类信息
  638. parentClassifyInfo, tmpErr := data_manage.GetEdbClassifyById(parentClassifyId)
  639. if tmpErr != nil {
  640. err = tmpErr
  641. return
  642. }
  643. // 没有标记涉密那么就忽略
  644. if parentClassifyInfo.IsJoinPermission == 0 {
  645. return
  646. }
  647. // 重新设置权限
  648. classifyType := utils.EdbClassifyTypeBase
  649. switch source {
  650. case utils.EdbPermissionSourcePredict:
  651. classifyType = utils.EdbClassifyTypePredict
  652. case utils.EdbPermissionSourceCalculate:
  653. classifyType = utils.EdbClassifyTypeCalculate
  654. }
  655. err = data_manage_permission.InheritParentClassifyByEdbClassifyId(source, classifyType, classifyId, parentClassifyId, classifyName, uniqueCode)
  656. case utils.ChartPermissionSource:
  657. //图库
  658. // 分类信息
  659. parentClassifyInfo, tmpErr := data_manage.GetChartClassifyById(parentClassifyId)
  660. if tmpErr != nil {
  661. err = tmpErr
  662. return
  663. }
  664. // 没有标记涉密那么就忽略
  665. if parentClassifyInfo.IsJoinPermission == 0 {
  666. return
  667. }
  668. // 重新设置权限
  669. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  670. err = data_manage_permission.InheritParentClassifyByChartClassifyId(source, chartClassifySource, classifyId, parentClassifyId, classifyName, uniqueCode)
  671. case utils.TablePermissionSource:
  672. // ETA表格
  673. // 分类信息
  674. parentClassifyInfo, tmpErr := excel.GetExcelClassifyById(parentClassifyId)
  675. if tmpErr != nil {
  676. err = tmpErr
  677. return
  678. }
  679. // 没有标记涉密那么就忽略
  680. if parentClassifyInfo.IsJoinPermission == 0 {
  681. return
  682. }
  683. // 重新设置权限
  684. err = data_manage_permission.InheritParentClassifyByExcelClassifyId(source, subSource, classifyId, parentClassifyId, classifyName, uniqueCode)
  685. default:
  686. return
  687. }
  688. }