edb_permission.go 20 KB

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