edb.go 42 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231
  1. package data_manage_permission
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "strconv"
  7. "time"
  8. )
  9. // EdbInfoPermission
  10. // @Description: 指标权限表
  11. type EdbInfoPermission struct {
  12. EdbInfoPermissionId int64 `json:"edb_info_permission_id" orm:"column(edb_info_permission_id);pk" gorm:"primaryKey" `
  13. EdbInfoId int32 `json:"edb_info_id"` // 指标id
  14. EdbInfoType int32 `json:"edb_info_type"` // 指标类型,0:普通指标,1:预测指标
  15. SysUserId int32 `json:"sys_user_id"` // 系统用户id
  16. ModifyTime time.Time `json:"modify_time"` // 变更时间
  17. CreateTime time.Time `json:"create_time"` // 关系建立时间
  18. }
  19. // EdbClassifyPermission
  20. // @Description: 指标分类权限表
  21. type EdbClassifyPermission struct {
  22. EdbClassifyPermissionId int64 `json:"edb_classify_permission_id" orm:"column(edb_classify_permission_id);pk" gorm:"primaryKey" `
  23. EdbClassifyId int32 `json:"edb_classify_id"` // 分类id
  24. EdbClassifyType int32 `json:"edb_classify_type"` // 分类类型,0:普通指标分类,1:预测指标分类
  25. SysUserId int32 `json:"sys_user_id"` // 系统用户id
  26. ModifyTime time.Time `json:"modify_time"` // 变更时间
  27. CreateTime time.Time `json:"create_time"` // 关系建立时间
  28. }
  29. // SetIsPermissionEdbChartByEdbClassifyIdList
  30. // @Description: 设置指标分类是否涉密
  31. // @author: Roc
  32. // @datetime 2024-03-27 14:15:42
  33. // @param classifyIdList []int
  34. func SetIsPermissionEdbChartByEdbClassifyIdList(classifyIdList []int, classifyType int) (err error) {
  35. num := len(classifyIdList)
  36. //o, err := orm.NewOrmUsingDB("data").Begin()
  37. //if err != nil {
  38. // return
  39. //}
  40. //defer func() {
  41. // if err != nil {
  42. // _ = o.Rollback()
  43. // } else {
  44. // _ = o.Commit()
  45. // }
  46. //}()
  47. to := global.DmSQL["data"].Begin()
  48. defer func() {
  49. if err != nil {
  50. _ = to.Rollback()
  51. } else {
  52. _ = to.Commit()
  53. }
  54. }()
  55. //// 获取已经配置涉密的分类权限
  56. //edbClassifyList := make([]*EdbClassify, 0)
  57. //sql := `SELECT * FROM edb_classify WHERE is_join_permission = ? `
  58. //_, err = o.Raw(sql, 1).QueryRows(&edbClassifyList)
  59. //if err != nil {
  60. // return
  61. //}
  62. //edbClassifyMap := make(map[int]*EdbClassify)
  63. //for _, v := range edbClassifyList {
  64. // edbClassifyMap[v.ClassifyId] = v
  65. //}
  66. // 先将所有已经设置了涉密的分类设置为不涉密
  67. //sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE is_join_permission = 1 AND classify_type = ?`
  68. //_, err = o.Raw(sql, 0, classifyType).Exec()
  69. //if err != nil {
  70. // return
  71. //}
  72. sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE is_join_permission = 1 AND classify_type = ?`
  73. err = to.Exec(sql, 0, classifyType).Error
  74. if err != nil {
  75. return
  76. }
  77. if num > 0 {
  78. // 将对应的分类设置为涉密
  79. //sql = `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_type = ? AND classify_id in (` + utils.GetOrmInReplace(num) + `) `
  80. //_, err = o.Raw(sql, 1, classifyType, classifyIdList).Exec()
  81. //if err != nil {
  82. // return
  83. //}
  84. sql = `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_type = ? AND classify_id in (` + utils.GetOrmInReplace(num) + `) `
  85. err = to.Exec(sql, 1, classifyType, classifyIdList).Error
  86. if err != nil {
  87. return
  88. }
  89. }
  90. return
  91. }
  92. // SetPermissionByEdbIdList
  93. // @Description: 根据指标ID列表设置指标的用户权限
  94. // @author: Roc
  95. // @datetime 2024-03-27 14:03:42
  96. // @param edbIdList []string
  97. // @param userIdList []int
  98. // @param chartInfoType int
  99. // @return err error
  100. func SetPermissionByEdbIdList(edbIdList []string, userIdList []int, edbInfoType int) (err error) {
  101. edbNum := len(edbIdList)
  102. if edbNum <= 0 {
  103. return
  104. }
  105. //o, err := orm.NewOrmUsingDB("data").Begin()
  106. //if err != nil {
  107. // return
  108. //}
  109. //defer func() {
  110. // if err != nil {
  111. // _ = o.Rollback()
  112. // } else {
  113. // _ = o.Commit()
  114. // }
  115. //}()
  116. to := global.DmSQL["data"].Begin()
  117. defer func() {
  118. if err != nil {
  119. _ = to.Rollback()
  120. } else {
  121. _ = to.Commit()
  122. }
  123. }()
  124. // 获取已经配置的指标权限用户
  125. edbInfoPermissionList := make([]*EdbInfoPermission, 0)
  126. //sql := `SELECT * FROM edb_info_permission WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
  127. //_, err = o.Raw(sql, edbInfoType, edbIdList).QueryRows(&edbInfoPermissionList)
  128. //if err != nil {
  129. // return
  130. //}
  131. sql := `SELECT * FROM edb_info_permission WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
  132. err = to.Raw(sql, edbInfoType, edbIdList).Find(&edbInfoPermissionList).Error
  133. if err != nil {
  134. return
  135. }
  136. edbInfoPermissionMap := make(map[string]*EdbInfoPermission)
  137. for _, v := range edbInfoPermissionList {
  138. edbInfoPermissionMap[fmt.Sprint(v.EdbInfoId, "_", v.SysUserId)] = v
  139. }
  140. // 标记指标是否纳入权限管控
  141. {
  142. // 默认 标记指标为纳入权限管控
  143. isJoinPermission := 1
  144. // 用户不选的情况下,说明是要给这些指标移除权限管控
  145. if len(userIdList) <= 0 {
  146. // 标记指标为不纳入权限管控
  147. isJoinPermission = 0
  148. }
  149. //sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
  150. //_, err = o.Raw(sql, isJoinPermission, edbInfoType, edbIdList).Exec()
  151. //if err != nil {
  152. // return
  153. //}
  154. sql = `UPDATE edb_info SET is_join_permission=?,modify_time=now() WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(edbNum) + `) `
  155. err = to.Raw(sql, isJoinPermission, edbInfoType, edbIdList).Error
  156. if err != nil {
  157. return
  158. }
  159. }
  160. // 待添加的配置项
  161. addList := make([]*EdbInfoPermission, 0)
  162. // 遍历待配置的指标和用户,筛选出需要添加的配置项
  163. for _, edbInfoIdStr := range edbIdList {
  164. edbInfoId, tmpErr := strconv.ParseInt(edbInfoIdStr, 10, 64)
  165. if tmpErr != nil {
  166. err = tmpErr
  167. return
  168. }
  169. for _, userId := range userIdList {
  170. key := fmt.Sprint(edbInfoId, "_", userId)
  171. if _, ok := edbInfoPermissionMap[key]; ok {
  172. // 如果存在那么就移除,说明不需要处理了
  173. delete(edbInfoPermissionMap, key)
  174. } else {
  175. // 如果不存在,那么就添加
  176. addList = append(addList, &EdbInfoPermission{
  177. //PermissionId: 0,
  178. EdbInfoId: int32(edbInfoId),
  179. SysUserId: int32(userId),
  180. EdbInfoType: int32(edbInfoType),
  181. ModifyTime: time.Now(),
  182. CreateTime: time.Now(),
  183. })
  184. }
  185. }
  186. }
  187. // 添加待配置项
  188. if len(addList) > 0 {
  189. //_, err = o.InsertMulti(500, addList)
  190. //if err != nil {
  191. // return
  192. //}
  193. err = to.CreateInBatches(addList, utils.MultiAddNum).Error
  194. if err != nil {
  195. return
  196. }
  197. }
  198. // 移除废弃的配置项
  199. {
  200. // 待移除的配置项
  201. deletePermissionIdList := make([]int64, 0)
  202. for _, v := range edbInfoPermissionMap {
  203. deletePermissionIdList = append(deletePermissionIdList, v.EdbInfoPermissionId)
  204. }
  205. deletePermissionIdNum := len(deletePermissionIdList)
  206. if deletePermissionIdNum > 0 {
  207. //sql = "DELETE FROM edb_info_permission WHERE edb_info_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
  208. //_, err = o.Raw(sql, deletePermissionIdList).Exec()
  209. //if err != nil {
  210. // return
  211. //}
  212. sql = "DELETE FROM edb_info_permission WHERE edb_info_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
  213. err = to.Exec(sql, deletePermissionIdList).Error
  214. if err != nil {
  215. return
  216. }
  217. }
  218. }
  219. return
  220. }
  221. // SetPermissionByEdbClassifyIdList
  222. // @Description: 根据指标分类ID列表设置分类的用户权限
  223. // @author: Roc
  224. // @datetime 2024-03-28 14:53:04
  225. // @param classifyIdList []int
  226. // @param userIdList []int
  227. // @return err error
  228. func SetPermissionByEdbClassifyIdList(classifyIdList []int, userIdList []int, classifyType int) (err error) {
  229. userNum := len(userIdList)
  230. if userNum <= 0 {
  231. return
  232. }
  233. //o, err := orm.NewOrmUsingDB("data").Begin()
  234. //if err != nil {
  235. // return
  236. //}
  237. //defer func() {
  238. // if err != nil {
  239. // _ = o.Rollback()
  240. // } else {
  241. // _ = o.Commit()
  242. // }
  243. //}()
  244. to := global.DmSQL["data"].Begin()
  245. defer func() {
  246. if err != nil {
  247. _ = to.Rollback()
  248. } else {
  249. _ = to.Commit()
  250. }
  251. }()
  252. // 获取当前选择用户已经配置的指标分类权限
  253. classifyPermissionList := make([]*EdbClassifyPermission, 0)
  254. sql := `SELECT * FROM edb_classify_permission WHERE edb_classify_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(userNum) + `) `
  255. err = to.Raw(sql, classifyType, userIdList).Find(&classifyPermissionList).Error
  256. if err != nil {
  257. return
  258. }
  259. classifyPermissionMap := make(map[string]*EdbClassifyPermission)
  260. for _, v := range classifyPermissionList {
  261. classifyPermissionMap[fmt.Sprint(v.EdbClassifyId, "_", v.SysUserId)] = v
  262. }
  263. // 待添加的配置项
  264. addList := make([]*EdbClassifyPermission, 0)
  265. // 遍历待配置的指标和用户,筛选出需要添加的配置项
  266. for _, userId := range userIdList {
  267. for _, classifyId := range classifyIdList {
  268. key := fmt.Sprint(classifyId, "_", userId)
  269. if _, ok := classifyPermissionMap[key]; ok {
  270. // 如果存在那么就移除,说明不需要处理了
  271. delete(classifyPermissionMap, key)
  272. } else {
  273. // 如果不存在,那么就提那家
  274. addList = append(addList, &EdbClassifyPermission{
  275. //PermissionId: 0,
  276. EdbClassifyId: int32(classifyId),
  277. EdbClassifyType: int32(classifyType),
  278. SysUserId: int32(userId),
  279. ModifyTime: time.Now(),
  280. CreateTime: time.Now(),
  281. })
  282. }
  283. }
  284. }
  285. // 添加待配置项
  286. if len(addList) > 0 {
  287. //_, err = o.InsertMulti(500, addList)
  288. //if err != nil {
  289. // return
  290. //}
  291. err = to.CreateInBatches(addList, utils.MultiAddNum).Error
  292. if err != nil {
  293. return
  294. }
  295. }
  296. // 移除废弃的配置项
  297. {
  298. // 获取移除的配置项
  299. deletePermissionIdList := make([]int64, 0)
  300. for _, v := range classifyPermissionMap {
  301. deletePermissionIdList = append(deletePermissionIdList, v.EdbClassifyPermissionId)
  302. }
  303. deletePermissionIdNum := len(deletePermissionIdList)
  304. if deletePermissionIdNum > 0 {
  305. //sql = "DELETE FROM edb_classify_permission WHERE edb_classify_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
  306. //_, err = o.Raw(sql, deletePermissionIdList).Exec()
  307. //if err != nil {
  308. // return
  309. //}
  310. sql = "DELETE FROM edb_classify_permission WHERE edb_classify_permission_id in (" + utils.GetOrmInReplace(deletePermissionIdNum) + ")"
  311. err = to.Exec(sql, deletePermissionIdList).Error
  312. if err != nil {
  313. return
  314. }
  315. }
  316. }
  317. return
  318. }
  319. // GetPermissionEdbClassifyIdListByUserId
  320. // @Description: 根据用户ID获取已经配置的分类id列表
  321. // @author: Roc
  322. // @datetime 2024-03-29 16:24:46
  323. // @param userId int
  324. // @param classifyType int
  325. // @return edbClassifyIdList []int
  326. // @return err error
  327. func GetPermissionEdbClassifyIdListByUserId(userId int, classifyType int) (edbClassifyIdList []int, err error) {
  328. //o := orm.NewOrmUsingDB("data")
  329. //sql := `SELECT edb_classify_id FROM edb_classify_permission WHERE edb_classify_type = ? AND sys_user_id = ? `
  330. //_, err = o.Raw(sql, classifyType, userId).QueryRows(&edbClassifyIdList)
  331. sql := `SELECT edb_classify_id FROM edb_classify_permission WHERE edb_classify_type = ? AND sys_user_id = ? `
  332. err = global.DmSQL["data"].Raw(sql, classifyType, userId).Find(&edbClassifyIdList).Error
  333. return
  334. }
  335. // GetPermissionUserIdListByEdbId
  336. // @Description: 根据指标ID获取已经配置的用户id列表
  337. // @author: Roc
  338. // @datetime 2024-03-29 16:24:46
  339. // @param dataId int
  340. // @param edbInfoType int
  341. // @return userIdList []int
  342. // @return err error
  343. func GetPermissionUserIdListByEdbId(dataId int, edbInfoType int) (userIdList []int, err error) {
  344. //o := orm.NewOrmUsingDB("data")
  345. //sql := `SELECT sys_user_id FROM edb_info_permission WHERE edb_info_type = ? AND edb_info_id= ? `
  346. //_, err = o.Raw(sql, edbInfoType, dataId).QueryRows(&userIdList)
  347. sql := `SELECT sys_user_id FROM edb_info_permission WHERE edb_info_type = ? AND edb_info_id= ? `
  348. err = global.DmSQL["data"].Raw(sql, edbInfoType, dataId).Find(&userIdList).Error
  349. return
  350. }
  351. // GetPermissionUserIdListByEdbClassifyId
  352. // @Description: 根据指标分类ID获取已经配置的用户id列表
  353. // @author: Roc
  354. // @datetime 2024-03-29 16:24:46
  355. // @param classifyId int
  356. // @param edbClassifyType int
  357. // @return userIdList []int
  358. // @return err error
  359. func GetPermissionUserIdListByEdbClassifyId(classifyId int, edbClassifyType int) (userIdList []int, err error) {
  360. //o := orm.NewOrmUsingDB("data")
  361. //sql := `SELECT sys_user_id FROM edb_classify_permission WHERE edb_classify_type = ? AND edb_classify_id= ? `
  362. //_, err = o.Raw(sql, edbClassifyType, classifyId).QueryRows(&userIdList)
  363. sql := `SELECT sys_user_id FROM edb_classify_permission WHERE edb_classify_type = ? AND edb_classify_id= ? `
  364. err = global.DmSQL["data"].Raw(sql, edbClassifyType, classifyId).Find(&userIdList).Error
  365. return
  366. }
  367. // GetPermissionEdbIdList
  368. // @Description: 获取用户权限的指标列表
  369. // @author: Roc
  370. // @datetime 2024-03-28 16:50:47
  371. // @param userId int
  372. // @param edbInfoId int
  373. // @return idList []int
  374. // @return err error
  375. func GetPermissionEdbIdList(userId, edbInfoId int) (idList []int, err error) {
  376. pars := []interface{}{userId}
  377. //o := orm.NewOrmUsingDB("data")
  378. //sql := `SELECT edb_info_id FROM edb_info_permission WHERE sys_user_id = ? `
  379. //if edbInfoId > 0 {
  380. // sql += ` AND edb_info_id = ? `
  381. // pars = append(pars, edbInfoId)
  382. //}
  383. //_, err = o.Raw(sql, pars).QueryRows(&idList)
  384. sql := `SELECT edb_info_id FROM edb_info_permission WHERE sys_user_id = ? `
  385. if edbInfoId > 0 {
  386. sql += ` AND edb_info_id = ? `
  387. pars = append(pars, edbInfoId)
  388. }
  389. err = global.DmSQL["data"].Raw(sql, pars...).Find(&idList).Error
  390. return
  391. }
  392. // GetPermissionEdbClassifyIdList
  393. // @Description: 获取用户权限的指标分类列表
  394. // @author: Roc
  395. // @datetime 2024-03-28 16:50:47
  396. // @param userId int
  397. // @param classifyId int
  398. // @return idList []int
  399. // @return err error
  400. func GetPermissionEdbClassifyIdList(userId, classifyId int) (idList []int, err error) {
  401. pars := []interface{}{userId}
  402. //o := orm.NewOrmUsingDB("data")
  403. //sql := `SELECT edb_classify_id FROM edb_classify_permission WHERE sys_user_id = ? `
  404. //if classifyId > 0 {
  405. // sql += ` AND edb_classify_id = ? `
  406. // pars = append(pars, classifyId)
  407. //}
  408. //_, err = o.Raw(sql, pars).QueryRows(&idList)
  409. sql := `SELECT edb_classify_id FROM edb_classify_permission WHERE sys_user_id = ? `
  410. if classifyId > 0 {
  411. sql += ` AND edb_classify_id = ? `
  412. pars = append(pars, classifyId)
  413. }
  414. err = global.DmSQL["data"].Raw(sql, pars...).Find(&idList).Error
  415. return
  416. }
  417. // InheritParentClassifyByEdbClassifyId
  418. // @Description: 继承父级分类的指标权限信息
  419. // @author: Roc
  420. // @datetime 2024-04-07 21:02:51
  421. // @param source int
  422. // @param classifyType int
  423. // @param classifyId int
  424. // @param parentClassifyId int
  425. // @param classifyName string
  426. // @param uniqueCode string
  427. // @return err error
  428. func InheritParentClassifyByEdbClassifyId(source, classifyType, classifyId, parentClassifyId int, classifyName, uniqueCode string) (err error) {
  429. //o, err := orm.NewOrmUsingDB("data").Begin()
  430. //if err != nil {
  431. // return
  432. //}
  433. //defer func() {
  434. // if err != nil {
  435. // _ = o.Rollback()
  436. // } else {
  437. // _ = o.Commit()
  438. // }
  439. //}()
  440. to := global.DmSQL["data"].Begin()
  441. defer func() {
  442. if err != nil {
  443. _ = to.Rollback()
  444. } else {
  445. _ = to.Commit()
  446. }
  447. }()
  448. // 将对应的分类设置为涉密
  449. //sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_type = ? AND classify_id = ? `
  450. //_, err = o.Raw(sql, 1, classifyType, classifyId).Exec()
  451. //if err != nil {
  452. // return
  453. //}
  454. sql := `UPDATE edb_classify SET is_join_permission=?,modify_time=now() WHERE classify_type = ? AND classify_id = ? `
  455. err = to.Exec(sql, 1, classifyType, classifyId).Error
  456. if err != nil {
  457. return
  458. }
  459. // 添加未授权记录
  460. {
  461. // 获取父级未授权的用户记录
  462. var parentRecordItems []*EdbInfoClassifyPermissionNoAuthRecord
  463. //sql = `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE classify_id = ? AND edb_classify_type = ? ORDER BY edb_info_classify_permission_no_auth_record_id desc LIMIT ?,? `
  464. //_, err = o.Raw(sql, parentClassifyId, source, classifyType).QueryRows(&parentRecordItems)
  465. sql = `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE classify_id = ? AND edb_classify_type = ? ORDER BY edb_info_classify_permission_no_auth_record_id desc LIMIT ?,? `
  466. err = to.Raw(sql, parentClassifyId, source, classifyType).Find(&parentRecordItems).Error
  467. addNoAuthRecordItems := make([]*EdbInfoClassifyPermissionNoAuthRecord, 0)
  468. for _, v := range parentRecordItems {
  469. addNoAuthRecordItems = append(addNoAuthRecordItems, &EdbInfoClassifyPermissionNoAuthRecord{
  470. EdbInfoClassifyPermissionNoAuthRecordId: 0,
  471. EdbClassifyType: v.EdbClassifyType,
  472. OpUniqueCode: uniqueCode,
  473. ClassifyId: fmt.Sprint(classifyId),
  474. ClassifyName: classifyName,
  475. SysUserId: v.SysUserId,
  476. CreateTime: time.Now(),
  477. })
  478. }
  479. // 添加待配置项
  480. if len(addNoAuthRecordItems) > 0 {
  481. //_, err = o.InsertMulti(500, addNoAuthRecordItems)
  482. //if err != nil {
  483. // return
  484. //}
  485. err = to.CreateInBatches(addNoAuthRecordItems, utils.MultiAddNum).Error
  486. if err != nil {
  487. return
  488. }
  489. }
  490. }
  491. // 添加授权记录
  492. {
  493. // 获取父级分类已经授权的用户
  494. parentClassifyPermissionList := make([]*EdbClassifyPermission, 0)
  495. //sql = `SELECT * FROM edb_classify_permission WHERE edb_classify_type = ? AND edb_classify_id = ? `
  496. //_, err = o.Raw(sql, classifyType, parentClassifyId).QueryRows(&parentClassifyPermissionList)
  497. //if err != nil {
  498. // return
  499. //}
  500. sql = `SELECT * FROM edb_classify_permission WHERE edb_classify_type = ? AND edb_classify_id = ? `
  501. err = to.Raw(sql, classifyType, parentClassifyId).Find(&parentClassifyPermissionList).Error
  502. if err != nil {
  503. return
  504. }
  505. addList := make([]*EdbClassifyPermission, 0)
  506. for _, v := range parentClassifyPermissionList {
  507. // 如果不存在,那么就提那家
  508. addList = append(addList, &EdbClassifyPermission{
  509. //PermissionId: 0,
  510. EdbClassifyId: int32(classifyId),
  511. EdbClassifyType: int32(classifyType),
  512. SysUserId: v.SysUserId,
  513. ModifyTime: time.Now(),
  514. CreateTime: time.Now(),
  515. })
  516. }
  517. // 添加待配置项
  518. if len(addList) > 0 {
  519. //_, err = o.InsertMulti(500, addList)
  520. //if err != nil {
  521. // return
  522. //}
  523. err = to.CreateInBatches(addList, utils.MultiAddNum).Error
  524. if err != nil {
  525. return
  526. }
  527. }
  528. }
  529. return
  530. }
  531. // EdbInfoPermissionNoAuthRecord
  532. // @Description: 指标数据权限未授权记录表
  533. type EdbInfoPermissionNoAuthRecord struct {
  534. EdbInfoPermissionNoAuthRecordId int64 `json:"edb_info_permission_no_auth_record_id" orm:"column(edb_info_permission_no_auth_record_id);pk" gorm:"primaryKey" ` // 资产数据操作记录id
  535. OpUniqueCode string `json:"op_unique_code"` // 操作的唯一编码,主要是记录统一操作的日志
  536. EdbInfoType int32 `json:"edb_info_type"` // 指标类型,0:普通指标,1:预测指标
  537. EdbInfoId int32 `json:"edb_info_id"` // 指标id
  538. EdbCode string `json:"edb_code"` // 指标编码
  539. EdbName string `json:"edb_name"` // 指标名称
  540. SysUserId int32 `json:"sys_user_id"` // 系统用户id
  541. CreateTime time.Time `json:"create_time"` // 创建时间
  542. }
  543. // AddEdbInfoPermissionNoAuthRecordBySourceAndDataIdList
  544. // @Description: 添加未授权用户记录
  545. // @author: Roc
  546. // @datetime 2024-04-07 15:25:49
  547. // @param source int
  548. // @param edbInfoType int
  549. // @param dataList []DataItem
  550. // @param noAuthUserIdList []int 未授权用户
  551. // @param authUserIdList []int 已授权用户
  552. // @param uniqueCode
  553. // @param content string
  554. // @param opUserId int
  555. // @return err error
  556. func AddEdbInfoPermissionNoAuthRecordBySourceAndDataIdList(source, edbInfoType int, dataList []DataItem, noAuthUserIdList, authUserIdList []int, uniqueCode, title, content string, opUserId int) (err error) {
  557. num := len(dataList)
  558. if num <= 0 {
  559. return
  560. }
  561. dataIdList := make([]int, 0)
  562. for _, v := range dataList {
  563. dataIdList = append(dataIdList, v.DataId)
  564. }
  565. userNum := len(noAuthUserIdList)
  566. if userNum <= 0 {
  567. return
  568. }
  569. //o, err := orm.NewOrmUsingDB("data").Begin()
  570. //if err != nil {
  571. // return
  572. //}
  573. //defer func() {
  574. // if err != nil {
  575. // _ = o.Rollback()
  576. // } else {
  577. // _ = o.Commit()
  578. // }
  579. //}()
  580. to := global.DmSQL["data"].Begin()
  581. defer func() {
  582. if err != nil {
  583. _ = to.Rollback()
  584. } else {
  585. _ = to.Commit()
  586. }
  587. }()
  588. // 根据指标获取已经存在的未授权记录
  589. var existList []*EdbInfoPermissionNoAuthRecord
  590. //sql := `SELECT * FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  591. //_, err = o.Raw(sql, edbInfoType, dataIdList).QueryRows(&existList)
  592. //if err != nil {
  593. // return
  594. //}
  595. sql := `SELECT * FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  596. err = to.Raw(sql, edbInfoType, dataIdList).Find(&existList).Error
  597. if err != nil {
  598. return
  599. }
  600. // 已经标记了的数据
  601. existMap := make(map[int32]map[string]*EdbInfoPermissionNoAuthRecord)
  602. for _, v := range existList {
  603. tmpUserExistMap, ok := existMap[v.SysUserId]
  604. if !ok {
  605. tmpUserExistMap = make(map[string]*EdbInfoPermissionNoAuthRecord)
  606. }
  607. key := fmt.Sprint(v.EdbInfoType, "_", v.EdbInfoId)
  608. tmpUserExistMap[key] = v
  609. existMap[v.SysUserId] = tmpUserExistMap
  610. }
  611. addMessageList := make([]*DataPermissionMessage, 0)
  612. addRecordList := make([]*EdbInfoPermissionNoAuthRecord, 0)
  613. for _, userId := range noAuthUserIdList {
  614. isAdd := false
  615. tmpUserExistMap, userExistOk := existMap[int32(userId)]
  616. for _, dataItem := range dataList {
  617. // 判断是否已经存在,已经存在就过滤
  618. if userExistOk {
  619. key := fmt.Sprint(edbInfoType, "_", dataItem.DataId)
  620. _, ok := tmpUserExistMap[key]
  621. if ok {
  622. continue
  623. }
  624. }
  625. isAdd = true
  626. addRecordList = append(addRecordList, &EdbInfoPermissionNoAuthRecord{
  627. EdbInfoPermissionNoAuthRecordId: 0,
  628. OpUniqueCode: uniqueCode,
  629. EdbInfoType: int32(edbInfoType),
  630. EdbInfoId: int32(dataItem.DataId),
  631. EdbCode: dataItem.DataCode,
  632. EdbName: dataItem.DataName,
  633. SysUserId: int32(userId),
  634. CreateTime: time.Now(),
  635. })
  636. }
  637. // 有记录的话,需要添加消息
  638. if isAdd {
  639. addMessageList = append(addMessageList, &DataPermissionMessage{
  640. DataPermissionMessageId: 0,
  641. SendUserId: int32(opUserId),
  642. ReceiveUserId: int32(userId),
  643. Content: title,
  644. Remark: content,
  645. OpType: 3,
  646. Source: int32(source),
  647. SubSource: int32(edbInfoType),
  648. OpUniqueCode: uniqueCode,
  649. IsRead: 0,
  650. CreateTime: time.Now(),
  651. ModifyTime: time.Now(),
  652. })
  653. }
  654. }
  655. // 添加消息
  656. if len(addMessageList) > 0 {
  657. //_, err = o.InsertMulti(500, addMessageList)
  658. //if err != nil {
  659. // return
  660. //}
  661. err = to.CreateInBatches(addMessageList, utils.MultiAddNum).Error
  662. if err != nil {
  663. return
  664. }
  665. }
  666. // 添加记录
  667. if len(addRecordList) > 0 {
  668. //_, err = o.InsertMulti(500, addRecordList)
  669. //if err != nil {
  670. // return
  671. //}
  672. err = to.CreateInBatches(addRecordList, utils.MultiAddNum).Error
  673. if err != nil {
  674. return
  675. }
  676. }
  677. // 已经授权了的用户,需要删除未授权记录
  678. authUserIdNum := len(authUserIdList)
  679. if authUserIdNum > 0 {
  680. //sql = `DELETE FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(authUserIdNum) + `) AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  681. //_, err = o.Raw(sql, edbInfoType, authUserIdList, dataIdList).Exec()
  682. sql = `DELETE FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(authUserIdNum) + `) AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  683. err = to.Exec(sql, edbInfoType, authUserIdList, dataIdList).Error
  684. }
  685. return
  686. }
  687. // DeleteEdbInfoPermissionNoAuthRecordBySourceAndDataIdList
  688. // @Description: 根据来源和数据id列表删除记录
  689. // @author: Roc
  690. // @datetime 2024-04-07 14:47:37
  691. // @param source int
  692. // @param subSource int
  693. // @param dataIdList []string
  694. // @return err error
  695. func DeleteEdbInfoPermissionNoAuthRecordBySourceAndDataIdList(edbInfoType int, dataIdList []string) (err error) {
  696. num := len(dataIdList)
  697. if num <= 0 {
  698. return
  699. }
  700. //o := orm.NewOrmUsingDB("data")
  701. //
  702. //sql := `DELETE FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  703. //_, err = o.Raw(sql, edbInfoType, dataIdList).Exec()
  704. sql := `DELETE FROM edb_info_permission_no_auth_record WHERE edb_info_type = ? AND edb_info_id in (` + utils.GetOrmInReplace(num) + `)`
  705. err = global.DmSQL["data"].Exec(sql, edbInfoType, dataIdList).Error
  706. return
  707. }
  708. // GetEdbInfoDataPermissionNoAuthRecordListByUserId
  709. // @Description: 获取明细数据
  710. // @author: Roc
  711. // @datetime 2024-04-10 14:23:15
  712. // @param userId int32
  713. // @param edbInfoType int32
  714. // @param startSize int
  715. // @param pageSize int
  716. // @return total int
  717. // @return items []*DataPermissionNoAuthRecord
  718. // @return err error
  719. func GetEdbInfoDataPermissionNoAuthRecordListByUserId(userId int32, edbInfoType, startSize, pageSize int) (total int, items []*DataPermissionNoAuthRecord, err error) {
  720. //o := orm.NewOrmUsingDB("data")
  721. //
  722. //// 获取总数
  723. //sql := `SELECT count(1) AS total FROM edb_info_permission_no_auth_record WHERE sys_user_id = ? AND edb_info_type = ? `
  724. //err = o.Raw(sql, userId, edbInfoType).QueryRow(&total)
  725. //if err != nil {
  726. // return
  727. //}
  728. //
  729. //sql = `SELECT edb_info_permission_no_auth_record_id as data_permission_no_auth_record_id,op_unique_code,edb_info_type as sub_source,edb_info_id as data_id,edb_code as data_code,edb_name as data_name,sys_user_id,create_time FROM edb_info_permission_no_auth_record WHERE sys_user_id = ? AND edb_info_type = ? ORDER BY edb_info_permission_no_auth_record_id desc LIMIT ?,? `
  730. //_, err = o.Raw(sql, userId, edbInfoType, startSize, pageSize).QueryRows(&items)
  731. // 获取总数
  732. sql := `SELECT count(1) AS total FROM edb_info_permission_no_auth_record WHERE sys_user_id = ? AND edb_info_type = ? `
  733. err = global.DmSQL["data"].Raw(sql, userId, edbInfoType).First(&total).Error
  734. if err != nil {
  735. return
  736. }
  737. sql = `SELECT edb_info_permission_no_auth_record_id as data_permission_no_auth_record_id,op_unique_code,edb_info_type as sub_source,edb_info_id as data_id,edb_code as data_code,edb_name as data_name,sys_user_id,create_time FROM edb_info_permission_no_auth_record WHERE sys_user_id = ? AND edb_info_type = ? ORDER BY edb_info_permission_no_auth_record_id desc LIMIT ?,? `
  738. err = global.DmSQL["data"].Raw(sql, userId, edbInfoType, startSize, pageSize).Find(&items).Error
  739. return
  740. }
  741. type EdbInfoClassifyPermissionNoAuthRecord struct {
  742. EdbInfoClassifyPermissionNoAuthRecordId int64 `json:"edb_info_classify_permission_no_auth_record_id" orm:"column(edb_info_classify_permission_no_auth_record_id);pk" gorm:"primaryKey" ` // 资产分类数据操作记录id
  743. EdbClassifyType int32 `json:"edb_classify_type"` // 子来源 :ETA表格中的各种表格类型,以及图表的来源(这个是后续的扩展方向)
  744. OpUniqueCode string `json:"op_unique_code"` // 操作的唯一编码,主要是记录统一操作的日志
  745. ClassifyId string `json:"classify_id"` // 资产分类id(指标、图表、表格)
  746. ClassifyName string `json:"classify_name"` // 资产分类名称(指标、图表、表格)
  747. SysUserId int32 `json:"sys_user_id"` // 系统用户id
  748. CreateTime time.Time `json:"create_time"` // 创建时间
  749. }
  750. // AddEdbInfoClassifyNoAuthRecordBySourceAndClassifyIdList
  751. // @Description: 根据分类添加用户分类未授权记录
  752. // @author: Roc
  753. // @datetime 2024-04-07 16:44:21
  754. // @param source int
  755. // @param edbClassifyType int
  756. // @param classifyInfoList []ClassifyDataItem
  757. // @param noAuthUserIdList []int
  758. // @param uniqueCode string
  759. // @param content string
  760. // @param opUserId int
  761. // @return err error
  762. func AddEdbInfoClassifyNoAuthRecordBySourceAndClassifyIdList(source, edbClassifyType int, classifyInfoList []ClassifyDataItem, noAuthUserIdList []int, uniqueCode, title, content string, opUserId int) (err error) {
  763. num := len(classifyInfoList)
  764. if num <= 0 {
  765. return
  766. }
  767. // 分类id
  768. classifyIdList := make([]int, 0)
  769. for _, v := range classifyInfoList {
  770. classifyIdList = append(classifyIdList, v.ClassifyId)
  771. }
  772. userNum := len(noAuthUserIdList)
  773. if userNum <= 0 {
  774. return
  775. }
  776. //o, err := orm.NewOrmUsingDB("data").Begin()
  777. //if err != nil {
  778. // return
  779. //}
  780. //defer func() {
  781. // if err != nil {
  782. // _ = o.Rollback()
  783. // } else {
  784. // _ = o.Commit()
  785. // }
  786. //}()
  787. to := global.DmSQL["data"].Begin()
  788. defer func() {
  789. if err != nil {
  790. _ = to.Rollback()
  791. } else {
  792. _ = to.Commit()
  793. }
  794. }()
  795. // 根据分类获取已经存在的未授权记录
  796. var existList []*EdbInfoClassifyPermissionNoAuthRecord
  797. //sql := `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND classify_id in (` + utils.GetOrmInReplace(num) + `)`
  798. //_, err = o.Raw(sql, edbClassifyType, classifyIdList).QueryRows(&existList)
  799. //if err != nil {
  800. // return
  801. //}
  802. sql := `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND classify_id in (` + utils.GetOrmInReplace(num) + `)`
  803. err = to.Raw(sql, edbClassifyType, classifyIdList).Find(&existList).Error
  804. if err != nil {
  805. return
  806. }
  807. // 已经标记了的数据
  808. existMap := make(map[int32]map[string]*EdbInfoClassifyPermissionNoAuthRecord)
  809. for _, v := range existList {
  810. tmpUserExistMap, ok := existMap[v.SysUserId]
  811. if !ok {
  812. tmpUserExistMap = make(map[string]*EdbInfoClassifyPermissionNoAuthRecord)
  813. }
  814. key := fmt.Sprint(v.EdbClassifyType, "_", v.ClassifyId)
  815. tmpUserExistMap[key] = v
  816. existMap[v.SysUserId] = tmpUserExistMap
  817. }
  818. addMessageList := make([]*DataPermissionMessage, 0)
  819. addRecordList := make([]*EdbInfoClassifyPermissionNoAuthRecord, 0)
  820. for _, userId := range noAuthUserIdList {
  821. isAdd := false
  822. tmpUserExistMap, userExistOk := existMap[int32(userId)]
  823. for _, dataItem := range classifyInfoList {
  824. // 判断是否已经存在,已经存在就过滤
  825. if userExistOk {
  826. key := fmt.Sprint(edbClassifyType, "_", dataItem.ClassifyId)
  827. _, ok := tmpUserExistMap[key]
  828. if ok {
  829. continue
  830. }
  831. }
  832. isAdd = true
  833. addRecordList = append(addRecordList, &EdbInfoClassifyPermissionNoAuthRecord{
  834. EdbInfoClassifyPermissionNoAuthRecordId: 0,
  835. EdbClassifyType: int32(edbClassifyType),
  836. OpUniqueCode: uniqueCode,
  837. ClassifyId: fmt.Sprint(dataItem.ClassifyId),
  838. ClassifyName: dataItem.ClassifyName,
  839. SysUserId: int32(userId),
  840. CreateTime: time.Now(),
  841. })
  842. }
  843. // 有记录的话,需要添加消息
  844. if isAdd {
  845. addMessageList = append(addMessageList, &DataPermissionMessage{
  846. DataPermissionMessageId: 0,
  847. SendUserId: int32(opUserId),
  848. ReceiveUserId: int32(userId),
  849. Content: title,
  850. Remark: content,
  851. OpType: 4,
  852. Source: int32(source),
  853. SubSource: int32(edbClassifyType),
  854. OpUniqueCode: uniqueCode,
  855. IsRead: 0,
  856. CreateTime: time.Now(),
  857. ModifyTime: time.Now(),
  858. })
  859. }
  860. }
  861. // 添加消息
  862. if len(addMessageList) > 0 {
  863. //_, err = o.InsertMulti(500, addMessageList)
  864. //if err != nil {
  865. // return
  866. //}
  867. err = to.CreateInBatches(addMessageList, utils.MultiAddNum).Error
  868. if err != nil {
  869. return
  870. }
  871. }
  872. // 添加记录
  873. if len(addRecordList) > 0 {
  874. //_, err = o.InsertMulti(500, addRecordList)
  875. //if err != nil {
  876. // return
  877. //}
  878. err = to.CreateInBatches(addRecordList, utils.MultiAddNum).Error
  879. if err != nil {
  880. return
  881. }
  882. }
  883. // 移除已经公开了的分类权限,需要删除未授权记录
  884. authUserIdNum := len(classifyIdList)
  885. if authUserIdNum > 0 {
  886. //sql = `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND classify_id not in (` + utils.GetOrmInReplace(num) + `)`
  887. //_, err = o.Raw(sql, edbClassifyType, classifyIdList).Exec()
  888. sql = `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND classify_id not in (` + utils.GetOrmInReplace(num) + `)`
  889. err = to.Exec(sql, edbClassifyType, classifyIdList).Error
  890. }
  891. return
  892. }
  893. // AddEdbInfoClassifyNoAuthRecordBySourceAndUserIdList
  894. // @Description: 根据用户添加用户分类未授权记录
  895. // @author: Roc
  896. // @datetime 2024-04-07 20:12:44
  897. // @param source int
  898. // @param edbClassifyType int
  899. // @param noAuthClassifyMap map[int]ClassifyDataItem
  900. // @param configUserIdList []int
  901. // @param uniqueCode string
  902. // @param content string
  903. // @param opUserId int
  904. // @return err error
  905. func AddEdbInfoClassifyNoAuthRecordBySourceAndUserIdList(source, edbClassifyType int, noAuthClassifyMap map[int]ClassifyDataItem, configUserIdList []int, uniqueCode, title, content string, opUserId int) (err error) {
  906. // 当前配置用户
  907. configUserNum := len(configUserIdList)
  908. if configUserNum <= 0 {
  909. return
  910. }
  911. //// 总共的涉密分类
  912. //noAuthClassifyInfoNum := len(noAuthClassifyMap)
  913. //if noAuthClassifyInfoNum <= 0 {
  914. // return
  915. //}
  916. //o, err := orm.NewOrmUsingDB("data").Begin()
  917. //if err != nil {
  918. // return
  919. //}
  920. //defer func() {
  921. // if err != nil {
  922. // _ = o.Rollback()
  923. // } else {
  924. // _ = o.Commit()
  925. // }
  926. //}()
  927. to := global.DmSQL["data"].Begin()
  928. defer func() {
  929. if err != nil {
  930. _ = to.Rollback()
  931. } else {
  932. _ = to.Commit()
  933. }
  934. }()
  935. // 根据当前配置用户获取已经存在的未授权记录
  936. var existList []*EdbInfoClassifyPermissionNoAuthRecord
  937. //sql := `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(configUserNum) + `)`
  938. //_, err = o.Raw(sql, edbClassifyType, configUserIdList).QueryRows(&existList)
  939. //if err != nil {
  940. // return
  941. //}
  942. sql := `SELECT * FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ? AND sys_user_id in (` + utils.GetOrmInReplace(configUserNum) + `)`
  943. err = to.Raw(sql, edbClassifyType, configUserIdList).Find(&existList).Error
  944. if err != nil {
  945. return
  946. }
  947. // 已经标记了的数据
  948. existMap := make(map[int32]map[string]*EdbInfoClassifyPermissionNoAuthRecord)
  949. delRecordIdMap := make(map[int64]int64)
  950. for _, v := range existList {
  951. tmpUserExistMap, ok := existMap[v.SysUserId]
  952. if !ok {
  953. tmpUserExistMap = make(map[string]*EdbInfoClassifyPermissionNoAuthRecord)
  954. }
  955. tmpUserExistMap[v.ClassifyId] = v
  956. existMap[v.SysUserId] = tmpUserExistMap
  957. // 已经配置了的记录id
  958. delRecordIdMap[v.EdbInfoClassifyPermissionNoAuthRecordId] = v.EdbInfoClassifyPermissionNoAuthRecordId
  959. }
  960. addMessageList := make([]*DataPermissionMessage, 0)
  961. addRecordList := make([]*EdbInfoClassifyPermissionNoAuthRecord, 0)
  962. for _, userId := range configUserIdList {
  963. isAdd := false
  964. tmpUserExistMap, userExistOk := existMap[int32(userId)]
  965. for _, dataItem := range noAuthClassifyMap {
  966. // 判断是否已经存在,已经存在就过滤
  967. if userExistOk {
  968. key := fmt.Sprint(dataItem.ClassifyId)
  969. tmpUserRecord, ok := tmpUserExistMap[key]
  970. if ok {
  971. delete(delRecordIdMap, tmpUserRecord.EdbInfoClassifyPermissionNoAuthRecordId)
  972. continue
  973. }
  974. }
  975. isAdd = true
  976. addRecordList = append(addRecordList, &EdbInfoClassifyPermissionNoAuthRecord{
  977. EdbInfoClassifyPermissionNoAuthRecordId: 0,
  978. EdbClassifyType: int32(edbClassifyType),
  979. OpUniqueCode: uniqueCode,
  980. ClassifyId: fmt.Sprint(dataItem.ClassifyId),
  981. ClassifyName: dataItem.ClassifyName,
  982. SysUserId: int32(userId),
  983. CreateTime: time.Now(),
  984. })
  985. }
  986. // 有记录的话,需要添加消息
  987. if isAdd {
  988. addMessageList = append(addMessageList, &DataPermissionMessage{
  989. DataPermissionMessageId: 0,
  990. SendUserId: int32(opUserId),
  991. ReceiveUserId: int32(userId),
  992. Content: title,
  993. Remark: content,
  994. OpType: 4,
  995. Source: int32(source),
  996. SubSource: int32(edbClassifyType),
  997. OpUniqueCode: uniqueCode,
  998. IsRead: 0,
  999. CreateTime: time.Now(),
  1000. ModifyTime: time.Now(),
  1001. })
  1002. }
  1003. }
  1004. // 添加消息
  1005. if len(addMessageList) > 0 {
  1006. //_, err = o.InsertMulti(500, addMessageList)
  1007. //if err != nil {
  1008. // return
  1009. //}
  1010. err = to.CreateInBatches(addMessageList, utils.MultiAddNum).Error
  1011. if err != nil {
  1012. return
  1013. }
  1014. }
  1015. // 添加记录
  1016. if len(addRecordList) > 0 {
  1017. //_, err = o.InsertMulti(500, addRecordList)
  1018. //if err != nil {
  1019. // return
  1020. //}
  1021. err = to.CreateInBatches(addRecordList, utils.MultiAddNum).Error
  1022. if err != nil {
  1023. return
  1024. }
  1025. }
  1026. // 需要删除未授权记录
  1027. delRecordIdNum := len(delRecordIdMap)
  1028. if delRecordIdNum > 0 {
  1029. delRecordIdList := make([]int64, 0)
  1030. for _, v := range delRecordIdMap {
  1031. delRecordIdList = append(delRecordIdList, v)
  1032. }
  1033. //sql = `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_info_classify_permission_no_auth_record_id in (` + utils.GetOrmInReplace(delRecordIdNum) + `) `
  1034. //_, err = o.Raw(sql, delRecordIdList).Exec()
  1035. sql = `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_info_classify_permission_no_auth_record_id in (` + utils.GetOrmInReplace(delRecordIdNum) + `) `
  1036. err = to.Exec(sql, delRecordIdList).Error
  1037. }
  1038. return
  1039. }
  1040. // DeleteEdbInfoClassifyNoAuthRecordBySourceAndClassifyIdList
  1041. // @Description: 根据来源和删除分类授权记录
  1042. // @author: Roc
  1043. // @datetime 2024-04-07 14:47:37
  1044. // @param source int
  1045. // @param edbClassifyType int
  1046. // @return err error
  1047. func DeleteEdbInfoClassifyNoAuthRecordBySourceAndClassifyIdList(edbClassifyType int) (err error) {
  1048. //o := orm.NewOrmUsingDB("data")
  1049. //
  1050. //sql := `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ?`
  1051. //_, err = o.Raw(sql, edbClassifyType).Exec()
  1052. sql := `DELETE FROM edb_info_classify_permission_no_auth_record WHERE edb_classify_type = ?`
  1053. err = global.DmSQL["data"].Exec(sql, edbClassifyType).Error
  1054. return
  1055. }
  1056. // GetEdbInfoDataPermissionClassifyNoAuthRecordListByUserId
  1057. // @Description: 根据用户获取未授权的资产分类记录
  1058. // @author: Roc
  1059. // @datetime 2024-04-07 20:14:49
  1060. // @param userId int
  1061. // @param source int
  1062. // @param subSource int
  1063. // @param startSize int
  1064. // @param pageSize int
  1065. // @return total int
  1066. // @return items []*DataPermissionClassifyNoAuthRecord
  1067. // @return err error
  1068. func GetEdbInfoDataPermissionClassifyNoAuthRecordListByUserId(userId int32, edbClassifyType, startSize, pageSize int) (total int, items []*DataPermissionClassifyNoAuthRecord, err error) {
  1069. //o := orm.NewOrmUsingDB("data")
  1070. //
  1071. //// 获取总数
  1072. //sql := `SELECT count(1) AS total FROM edb_info_classify_permission_no_auth_record WHERE sys_user_id = ? AND edb_classify_type = ? `
  1073. //err = o.Raw(sql, userId, edbClassifyType).QueryRow(&total)
  1074. //if err != nil {
  1075. // return
  1076. //}
  1077. //
  1078. //sql = `SELECT edb_info_classify_permission_no_auth_record_id as data_permission_classify_no_auth_record_id,edb_classify_type as sub_source,op_unique_code,classify_id,classify_name,sys_user_id,create_time FROM edb_info_classify_permission_no_auth_record WHERE sys_user_id = ? AND edb_classify_type = ? ORDER BY edb_info_classify_permission_no_auth_record_id desc LIMIT ?,? `
  1079. //_, err = o.Raw(sql, userId, edbClassifyType, startSize, pageSize).QueryRows(&items)
  1080. // 获取总数
  1081. sql := `SELECT count(1) AS total FROM edb_info_classify_permission_no_auth_record WHERE sys_user_id = ? AND edb_classify_type = ? `
  1082. err = global.DmSQL["data"].Raw(sql, userId, edbClassifyType).Scan(&total).Error
  1083. if err != nil {
  1084. return
  1085. }
  1086. sql = `SELECT edb_info_classify_permission_no_auth_record_id as data_permission_classify_no_auth_record_id,edb_classify_type as sub_source,op_unique_code,classify_id,classify_name,sys_user_id,create_time FROM edb_info_classify_permission_no_auth_record WHERE sys_user_id = ? AND edb_classify_type = ? ORDER BY edb_info_classify_permission_no_auth_record_id desc LIMIT ?,? `
  1087. err = global.DmSQL["data"].Raw(sql, userId, edbClassifyType, startSize, pageSize).Find(&items).Error
  1088. return
  1089. }