edb_permission.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  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 userList []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, userList []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. if len(userList) <= 0 {
  51. // 说明是取消权限管控
  52. }
  53. uniqueCode := uuid.NewUUID().Hex32()
  54. content := `数据权限`
  55. dataList := make([]data_manage_permission.DataItem, 0)
  56. switch source {
  57. case 3, 4: //ETA指标库、ETA预测指标
  58. if source == 3 {
  59. content += `(ETA指标库)`
  60. } else {
  61. content += `(ETA预测指标)`
  62. }
  63. tmpList, tmpErr := data_manage.GetEdbInfoListByEdbInfoId(dataIdList)
  64. if tmpErr != nil {
  65. err = tmpErr
  66. return
  67. }
  68. dataIdList = make([]string, 0)
  69. if len(tmpList) > 0 {
  70. for _, v := range tmpList {
  71. dataList = append(dataList, data_manage_permission.DataItem{
  72. DataId: fmt.Sprint(v.EdbInfoId),
  73. DataCode: v.EdbCode,
  74. DataName: v.EdbName,
  75. })
  76. dataIdList = append(dataIdList, fmt.Sprint(v.EdbInfoId))
  77. }
  78. // 重新设置权限
  79. edbInfoType := 0
  80. if source == 4 {
  81. edbInfoType = 1
  82. }
  83. err = data_manage_permission.SetPermissionByEdbIdList(dataIdList, userList, edbInfoType)
  84. }
  85. case 5: //图库
  86. content += `(ETA图库)`
  87. tmpList, tmpErr := data_manage.GetChartInfoListByChartIdList(dataIdList)
  88. if tmpErr != nil {
  89. err = tmpErr
  90. return
  91. }
  92. if len(tmpList) > 0 {
  93. dataIdList = make([]string, 0)
  94. for _, v := range tmpList {
  95. dataList = append(dataList, data_manage_permission.DataItem{
  96. DataId: fmt.Sprint(v.ChartInfoId),
  97. DataCode: fmt.Sprint(v.ChartInfoId),
  98. DataName: v.ChartName,
  99. })
  100. dataIdList = append(dataIdList, fmt.Sprint(v.ChartInfoId))
  101. }
  102. // 重新设置权限
  103. chartSource := utils.CHART_SOURCE_DEFAULT
  104. err = data_manage_permission.SetPermissionByChartIdList(dataIdList, userList, chartSource)
  105. }
  106. case 6: // ETA表格
  107. content += `(ETA表格)`
  108. tmpList, tmpErr := excel.GetNoContentExcelListByExcelInfoIdList(dataIdList)
  109. if tmpErr != nil {
  110. err = tmpErr
  111. return
  112. }
  113. if len(tmpList) > 0 {
  114. dataIdList = make([]string, 0)
  115. for _, v := range tmpList {
  116. dataList = append(dataList, data_manage_permission.DataItem{
  117. DataId: fmt.Sprint(v.ExcelInfoId),
  118. DataCode: fmt.Sprint(v.ExcelInfoId),
  119. DataName: v.ExcelName,
  120. })
  121. dataIdList = append(dataIdList, fmt.Sprint(v.ExcelInfoId))
  122. }
  123. // 重新设置权限
  124. err = data_manage_permission.SetPermissionByExcelIdList(dataIdList, userList, subSource)
  125. }
  126. default:
  127. return
  128. }
  129. if err != nil {
  130. return
  131. }
  132. var authRecordErr error
  133. defer func() {
  134. if authRecordErr != nil {
  135. utils.FileLog.Error(fmt.Sprintf("记录未设置记录资产权限的记录失败:%s;source:%d;sub_source:%d;数据ID列表:%s;授权人列表:%v", authRecordErr.Error(), source, subSource, strings.Join(dataIdList, ","), userList))
  136. }
  137. }()
  138. // 获取所有在用的用户
  139. cond := ` AND enabled = 1`
  140. pars := make([]interface{}, 0)
  141. adminList, authRecordErr := system.GetSysAdminList(cond, pars, []string{}, "")
  142. if authRecordErr != nil {
  143. return
  144. }
  145. // 如果没有授权人,那么就删除未授权记录
  146. if len(userList) < 0 {
  147. authRecordErr = data_manage_permission.DeleteRecordBySourceAndDataIdList(source, subSource, dataIdList)
  148. return
  149. }
  150. userIdMap := make(map[int]int)
  151. for _, tmpUserId := range userIdMap {
  152. userIdMap[tmpUserId] = tmpUserId
  153. }
  154. addUserIdList := make([]int, 0)
  155. for _, v := range adminList {
  156. if _, ok := userIdMap[v.AdminId]; !ok {
  157. addUserIdList = append(addUserIdList, v.AdminId)
  158. }
  159. }
  160. authRecordErr = data_manage_permission.AddRecordBySourceAndDataIdList(source, subSource, dataIdList, dataList, addUserIdList, uniqueCode, content, opUserId)
  161. return
  162. }
  163. // SetDataIsPermission
  164. // @Description: 设置资产(指标、图表、ETA表格)分类是否涉密
  165. // @author: Roc
  166. // @datetime 2024-03-27 10:52:32
  167. // @param source int
  168. // @param subSource int
  169. // @param dataId []string
  170. // @return err error
  171. // @return errMsg string
  172. func SetDataIsPermission(source, subSource int, classifyIdList []int) (err error, errMsg string) {
  173. // TODO 消息通知
  174. switch source {
  175. case 3, 4: //ETA指标库、ETA预测指标
  176. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  177. //if tmpErr != nil {
  178. // err = tmpErr
  179. // return
  180. //}
  181. //if len(tmpList) > 0 {
  182. //}
  183. // 重新设置权限
  184. classifyType := 0
  185. if source == 4 {
  186. classifyType = 1
  187. }
  188. err = data_manage_permission.SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList, classifyType)
  189. case 5: //图库
  190. // 重新设置权限
  191. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  192. err = data_manage_permission.SetIsPermissionByChartClassifyIdList(classifyIdList, chartClassifySource)
  193. case 6:
  194. // ETA表格
  195. // 重新设置权限
  196. err = data_manage_permission.SetIsPermissionByExcelClassifyIdList(classifyIdList, subSource)
  197. default:
  198. return
  199. }
  200. return
  201. }
  202. // SetEdbChartClassifyPermission
  203. // @Description: 给用户设置涉密分类的权限
  204. // @author: Roc
  205. // @datetime 2024-03-28 14:22:30
  206. // @param source int
  207. // @param subSource int
  208. // @param userList []int
  209. // @param classifyIdList []int
  210. // @return err error
  211. // @return errMsg string
  212. func SetEdbChartClassifyPermission(source, subSource int, userList []int, classifyIdList []int) (err error, errMsg string) {
  213. // TODO 消息通知
  214. if len(classifyIdList) <= 0 {
  215. // 说明是取消权限管控
  216. }
  217. switch source {
  218. case 3, 4: //ETA指标库、ETA预测指标
  219. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  220. //if tmpErr != nil {
  221. // err = tmpErr
  222. // return
  223. //}
  224. //if len(tmpList) > 0 {
  225. //}
  226. // 重新设置权限
  227. classifyType := 0
  228. if source == 4 {
  229. classifyType = 1
  230. }
  231. err = data_manage_permission.SetPermissionByEdbClassifyIdList(classifyIdList, userList, classifyType)
  232. case 5: //图库
  233. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  234. //if tmpErr != nil {
  235. // err = tmpErr
  236. // return
  237. //}
  238. //if len(tmpList) > 0 {
  239. //}
  240. // 重新设置权限
  241. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  242. err = data_manage_permission.SetPermissionByChartClassifyIdList(classifyIdList, userList, chartClassifySource)
  243. case 6:
  244. // ETA表格
  245. err = data_manage_permission.SetPermissionByExcelClassifyIdList(classifyIdList, userList, subSource)
  246. default:
  247. return
  248. }
  249. return
  250. }
  251. // GetEdbChartClassifyIdListPermissionByUserId
  252. // @Description: 根据用户id获取已经配置的分类id列表
  253. // @author: Roc
  254. // @datetime 2024-03-29 16:26:10
  255. // @param source int
  256. // @param subSource int
  257. // @param userId int
  258. // @return idList []int
  259. // @return err error
  260. func GetEdbChartClassifyIdListPermissionByUserId(source, subSource, userId int) (idList []int, err error) {
  261. switch source {
  262. case 3, 4: //ETA指标库、ETA预测指标
  263. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  264. //if tmpErr != nil {
  265. // err = tmpErr
  266. // return
  267. //}
  268. //if len(tmpList) > 0 {
  269. //}
  270. // 重新设置权限
  271. classifyType := 0
  272. if source == 4 {
  273. classifyType = 1
  274. }
  275. idList, err = data_manage_permission.GetPermissionEdbClassifyIdListByUserId(userId, classifyType)
  276. case 5:
  277. //图库
  278. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  279. idList, err = data_manage_permission.GetPermissionChartClassifyIdListByUserId(userId, chartClassifySource)
  280. case 6:
  281. // ETA表格
  282. idList, err = data_manage_permission.GetPermissionExcelClassifyIdListByUserId(userId, subSource)
  283. default:
  284. return
  285. }
  286. return
  287. }
  288. // GetEdbChartIdListPermissionByDataId
  289. // @Description: 根据用户id获取已经配置的资产(指标、图表、表格)id列表
  290. // @author: Roc
  291. // @datetime 2024-03-29 16:26:10
  292. // @param source int
  293. // @param subSource int
  294. // @param dataId int
  295. // @return idList []int
  296. // @return err error
  297. func GetEdbChartIdListPermissionByDataId(source, subSource, dataId int) (idList []int, err error) {
  298. switch source {
  299. case 3, 4: //ETA指标库、ETA预测指标
  300. //tmpList, tmpErr := data_manage.GetEdbInfoListGroupByUserId(dataId)
  301. //if tmpErr != nil {
  302. // err = tmpErr
  303. // return
  304. //}
  305. //if len(tmpList) > 0 {
  306. //}
  307. edbInfoType := 0
  308. if source == 4 {
  309. edbInfoType = 1
  310. }
  311. idList, err = data_manage_permission.GetPermissionEdbIdListByDataId(dataId, edbInfoType)
  312. case 5:
  313. //图库
  314. chartClassifySource := utils.CHART_SOURCE_DEFAULT
  315. idList, err = data_manage_permission.GetPermissionChartIdListByDataId(dataId, chartClassifySource)
  316. case 6:
  317. // ETA表格
  318. idList, err = data_manage_permission.GetPermissionExcelIdListByDataId(dataId, subSource)
  319. default:
  320. return
  321. }
  322. return
  323. }