research_group.go 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package system
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "time"
  6. )
  7. // ResearchGroup 研究方向分组表
  8. type ResearchGroup struct {
  9. ResearchGroupId int `orm:"column(research_group_id);pk" gorm:"primaryKey" description:"研究方向分组ID"`
  10. ResearchGroupName string `json:"research_group_name" description:"研究方向分组名称"`
  11. ParentId int `json:"parent_id" description:"父类ID"`
  12. ChartPermissionId int `json:"chart_permission_id" description:"品种权限ID"`
  13. Sort int `json:"sort" description:"排序"`
  14. State int `json:"state" description:"显示状态 0-不显示 1-显示"`
  15. CreateTime time.Time `json:"create_time" description:"创建时间"`
  16. ModifyTime time.Time `json:"modify_time" description:"更新时间"`
  17. }
  18. // GetResearchGroupList 获取研究方向分组列表
  19. func GetResearchGroupList() (list []*ResearchGroup, err error) {
  20. o := global.DbMap[utils.DbNameWeekly]
  21. sql := `SELECT * FROM research_group WHERE state = 1 ORDER BY sort`
  22. err = o.Raw(sql).Find(&list).Error
  23. return
  24. }
  25. // GetResearchGroupById 主键获取分组
  26. func GetResearchGroupById(groupId int) (item *ResearchGroup, err error) {
  27. o := global.DbMap[utils.DbNameMaster]
  28. sql := `SELECT * FROM research_group WHERE research_group_id = ? LIMIT 1`
  29. err = o.Raw(sql, groupId).First(&item).Error
  30. return
  31. }
  32. // ResearchGroupRelation 研究方向关系表
  33. type ResearchGroupRelation struct {
  34. Id int `orm:"column(id);pk" gorm:"primaryKey"`
  35. ResearchGroupId int `json:"research_group_id" description:"分组ID"`
  36. AdminId int `json:"admin_id" description:"研究员ID"`
  37. }
  38. // ResearchGroupRelationListByAdminId 根据研究员ID获取研究方向分组关系列表
  39. func ResearchGroupRelationListByAdminId(adminId int) (list []*ResearchGroupRelation, err error) {
  40. o := global.DbMap[utils.DbNameMaster]
  41. sql := `SELECT * FROM research_group_relation WHERE admin_id = ?`
  42. err = o.Raw(sql, adminId).Find(&list).Error
  43. return
  44. }
  45. // ResearchGroupRelation 研究方向分组关系表
  46. type ResearchGroupRelationItem struct {
  47. ResearchGroupId int `json:"research_group_id" description:"研究方向分组ID"`
  48. AdminId int `json:"admin_id" description:"研究员ID"`
  49. AdminName string `json:"admin_name" description:"研究员姓名"`
  50. }
  51. // GetResearchGroupRelationList 获取研究方向分组关系列表
  52. func GetResearchGroupRelationList(include int) (list []*ResearchGroupRelationItem, err error) {
  53. // 是否包含已禁止的研究员, 默认不包含
  54. condition := ` WHERE b.enabled = 1 `
  55. if include == 1 {
  56. condition = ` WHERE 1=1 `
  57. }
  58. o := global.DbMap[utils.DbNameMaster]
  59. sql := `SELECT
  60. a.research_group_id,
  61. a.admin_id,
  62. b.real_name AS admin_name
  63. FROM
  64. research_group_relation AS a
  65. INNER JOIN "admin" AS b ON a.admin_id = b.admin_id `
  66. sql += condition
  67. sql += ` ORDER BY
  68. a.research_group_id ASC,
  69. a.admin_id ASC`
  70. err = o.Raw(sql).Find(&list).Error
  71. return
  72. }
  73. // UpdateAdminResearchGroup 更新研究员研究方向分组
  74. func UpdateAdminResearchGroup(adminId int, items []*ResearchGroupRelation) (err error) {
  75. o := global.DbMap[utils.DbNameMaster]
  76. to := o.Begin()
  77. defer func() {
  78. if err != nil {
  79. _ = to.Rollback()
  80. } else {
  81. _ = to.Commit()
  82. }
  83. }()
  84. sql := `DELETE FROM research_group_relation WHERE admin_id = ?`
  85. if err = o.Exec(sql, adminId).Error; err != nil {
  86. return
  87. }
  88. itemsLen := len(items)
  89. if itemsLen > 0 {
  90. err = o.CreateInBatches(items, utils.MultiAddNum).Error
  91. }
  92. return
  93. }
  94. // AdminResearchGroupList 研究员研究方向分组列表
  95. type AdminResearchGroupList struct {
  96. AdminId int `json:"admin_id"`
  97. GroupNameStr string `json:"group_name_str"`
  98. }
  99. // GetAdminResearchGroupListByAdminId 获取研究员研究方向分组列表
  100. func GetAdminResearchGroupListByAdminId(adminIds []int) (list []*AdminResearchGroupList, err error) {
  101. if len(adminIds) == 0 {
  102. return
  103. }
  104. o := global.DbMap[utils.DbNameMaster]
  105. sql := `SELECT
  106. a.admin_id,
  107. GROUP_CONCAT(b.research_group_name) AS group_name_str
  108. FROM
  109. research_group_relation AS a
  110. INNER JOIN research_group AS b ON a.research_group_id = b.research_group_id
  111. WHERE
  112. a.admin_id IN (` + utils.GetOrmInReplace(len(adminIds)) + `)
  113. GROUP BY
  114. a.admin_id`
  115. err = o.Raw(sql, adminIds).Find(&list).Error
  116. return
  117. }