research_group.go 4.4 KB

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