edb_info_share.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package data_manage
  2. import (
  3. "eta_gn/eta_api/global"
  4. "eta_gn/eta_api/utils"
  5. "fmt"
  6. "time"
  7. )
  8. // EdbInfoShare
  9. // @Description: 指标分享表
  10. type EdbInfoShare struct {
  11. EdbInfoShareId int `gorm:"primaryKey" `
  12. EdbInfoId int `description:"指标id"`
  13. SysUserId int `description:"sys_user_id"`
  14. ShareType int8 `description:"分享类型,1:仅查看;2:可编辑"`
  15. CreateTime time.Time `description:"创建时间"`
  16. }
  17. // TableName
  18. // @Description: 表名
  19. // @author: Roc
  20. // @receiver m
  21. // @datetime 2024-11-27 14:04:14
  22. // @return string
  23. func (m EdbInfoShare) TableName() string {
  24. return `edb_info_share`
  25. }
  26. // GetListByEdbInfoId
  27. // @Description: 根据指标id获取分享用户列表
  28. // @author: Roc
  29. // @receiver m
  30. // @datetime 2024-11-27 15:39:17
  31. // @param edbInfoId int
  32. // @return items []*EdbInfoShare
  33. // @return err error
  34. func (m EdbInfoShare) GetListByEdbInfoId(edbInfoId int) (items []*EdbInfoShare, err error) {
  35. sql := ` SELECT * FROM edb_info_share WHERE edb_info_id = ? ORDER BY edb_info_share_id ASC `
  36. err = global.DmSQL["data"].Raw(sql, edbInfoId).Find(&items).Error
  37. return
  38. }
  39. // SaveEdbInfoShare
  40. // @Description: 保存配置
  41. // @author: Roc
  42. // @receiver m
  43. // @datetime 2024-11-27 15:54:07
  44. // @param edbInfoIdList []int
  45. // @param userIdList []int
  46. // @param shareType int8
  47. // @return err error
  48. func (m EdbInfoShare) SaveEdbInfoShare(edbInfoIdList, userIdList []int, shareType int8) (err error) {
  49. addList := make([]*EdbInfoShare, 0)
  50. for _, edbInfoId := range edbInfoIdList {
  51. for _, userId := range userIdList {
  52. addList = append(addList, &EdbInfoShare{
  53. EdbInfoShareId: 0,
  54. EdbInfoId: edbInfoId,
  55. SysUserId: userId,
  56. ShareType: shareType,
  57. CreateTime: time.Now(),
  58. })
  59. }
  60. }
  61. tx := global.DmSQL["data"].Begin()
  62. defer func() {
  63. if err != nil {
  64. _ = tx.Rollback()
  65. return
  66. }
  67. _ = tx.Commit()
  68. }()
  69. // 先删除原来的配置,新增最新的配置
  70. sql := fmt.Sprintf("DELETE FROM %s WHERE edb_info_id IN (?) ", m.TableName())
  71. err = tx.Exec(sql, edbInfoIdList).Error
  72. if err != nil {
  73. return
  74. }
  75. // 批量添加新的配置
  76. if len(addList) > 0 {
  77. err = tx.CreateInBatches(addList, utils.MultiAddNum).Error
  78. if err != nil {
  79. return
  80. }
  81. }
  82. return
  83. }