knowledge_resource.go 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package models
  2. import (
  3. "eta_gn/eta_report/global"
  4. "time"
  5. )
  6. const (
  7. // 事件类型-事件库
  8. KnowledgeResourceTypeEvent = iota
  9. // 事件-政策库
  10. KnowledgeResourceTypePolicy
  11. // 事件-观点库
  12. KnowledgeResourceTypeOpinion
  13. // 事件类型-知识库
  14. KnowledgeResourceTypeKnow
  15. // 事件-报告库
  16. KnowledgeResourceTypeReport
  17. )
  18. const (
  19. // 未发布
  20. KnowledgeResourceStateUnpublished = iota
  21. // 已发布
  22. KnowledgeResourceStatePublished
  23. // 待审批
  24. KnowledgeResourceStatePending
  25. // 已驳回
  26. KnowledgeResourceStateRejected
  27. // 已通过
  28. KnowledgeResourceStateApproved
  29. )
  30. type KnowledgeResourceFile struct {
  31. KnowledgeResourceFileId int `gorm:"column:knowledge_resource_file_id;primaryKey;autoIncrement"`
  32. KnowledgeResourceId int `gorm:"column:knowledge_resource_id"`
  33. FileUrl string `gorm:"column:file_url"`
  34. }
  35. func (k KnowledgeResourceFile) TableName() string {
  36. return "knowledge_resource_file"
  37. }
  38. type KnowledgeResource struct {
  39. KnowledgeResourceId int `gorm:"column:knowledge_resource_id;;primaryKey;autoIncrement"`
  40. ResourceType int `gorm:"column:resource_type;"`
  41. ClassifyId int `gorm:"column:classify_id"`
  42. Title string `gorm:"column:title;"`
  43. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  44. ModifyTime time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
  45. State int `gorm:"column:state" description:"0:未发布;1:已发布;2:待审批;3:已驳回;4:已通过"`
  46. Content string `gorm:"column:content"`
  47. ResourceCode string `gorm:"column:resource_code"`
  48. AdminId int `gorm:"column:admin_id" description:"创建者账号"`
  49. AdminRealName string `gorm:"column:admin_real_name" description:"创建者姓名"`
  50. SourceFrom string `gorm:"column:source_from"`
  51. TagId int `gorm:"column:tag_id;default:0;NOT NULL"`
  52. StartTime *time.Time `gorm:"column:start_time"`
  53. EndTime *time.Time `gorm:"column:end_time"`
  54. IsFile int `gorm:"column:is_file;default:0;NOT NULL"`
  55. FileUrl string `gorm:"column:file_url"`
  56. OutId int `gorm:"column:out_id" description:"外部系统ID"`
  57. }
  58. func (k KnowledgeResource) TableName() string {
  59. return "knowledge_resource"
  60. }
  61. func (k *KnowledgeResource) Create() (err error) {
  62. tx := global.DEFAULT_DmSQL.Begin()
  63. defer func() {
  64. if err != nil {
  65. tx.Rollback()
  66. } else {
  67. tx.Commit()
  68. }
  69. }()
  70. fileUrl := k.FileUrl
  71. k.FileUrl = ""
  72. err = tx.Create(k).Error
  73. file := new(KnowledgeResourceFile)
  74. file.KnowledgeResourceId = k.KnowledgeResourceId
  75. file.FileUrl = fileUrl
  76. err = tx.Create(file).Error
  77. return
  78. }
  79. func (k *KnowledgeResource) Update(cols []string) error {
  80. return global.DEFAULT_DmSQL.Model(k).Select(cols).Updates(k).Error
  81. }
  82. // GetKnowledgeResourceByOutId 根据外部系统ID获取知识资源
  83. func (k *KnowledgeResource) GetKnowledgeResourceByOutId(outId int) (item *KnowledgeResource, err error) {
  84. sql := "SELECT * FROM knowledge_resource WHERE out_id = ?"
  85. err = global.DEFAULT_DmSQL.Raw(sql, outId).First(&item).Error
  86. return
  87. }
  88. type KnowledgeClassify struct {
  89. ClassifyId int `gorm:"primaryKey;column:classify_id"`
  90. ClassifyName string `gorm:"column:classify_name;default:'';type:varchar(125);not null"` // 注意:varchar的默认长度可能需要根据实际情况调整
  91. Sort int `gorm:"column:sort;default:0;type:tinyint"`
  92. ParentId int `gorm:"column:parent_id;default:0;type:int"`
  93. CreateTime time.Time `gorm:"column:create_time;default:CURRENT_TIMESTAMP"`
  94. ModifyTime time.Time `gorm:"column:modify_time;default:CURRENT_TIMESTAMP"`
  95. Enabled int `gorm:"column:enabled;default:1;type:tinyint"`
  96. Level int `gorm:"column:level;default:0;type:bigint"`
  97. ResourceType int `gorm:"column:resource_type;default:0;not null;type:tinyint"`
  98. }
  99. func (k KnowledgeClassify) TableName() string {
  100. return "knowledge_classify"
  101. }
  102. func (k *KnowledgeClassify) Create() error {
  103. return global.DEFAULT_DmSQL.Create(k).Error
  104. }
  105. func (k *KnowledgeClassify) GetClassifyByNameAndType(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) {
  106. sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ? AND parent_id = ?"
  107. err = global.DEFAULT_DmSQL.Raw(sql, classifyName, resourceType, parentId).First(&items).Error
  108. return
  109. }
  110. func (k *KnowledgeClassify) GetClassifysByNamesAndType(classifyNames []string, resourceType int) (items []*KnowledgeClassify, err error) {
  111. sql := "SELECT * FROM knowledge_classify WHERE classify_name IN (?) AND resource_type = ?"
  112. err = global.DEFAULT_DmSQL.Raw(sql, classifyNames, resourceType).Find(&items).Error
  113. return
  114. }