knowledge_resource.go 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package models
  2. import (
  3. "eta_gn/eta_task/global"
  4. "eta_gn/eta_task/utils"
  5. "time"
  6. )
  7. const (
  8. // 事件类型-事件库
  9. KnowledgeResourceTypeEvent = iota
  10. // 事件-政策库
  11. KnowledgeResourceTypePolicy
  12. // 事件-报告库
  13. KnowledgeResourceTypeReport
  14. // 事件类型-知识库
  15. KnowledgeResourceTypeKnow
  16. // 事件-观点库
  17. KnowledgeResourceTypeOpinion
  18. )
  19. const (
  20. // 未发布
  21. KnowledgeResourceStateUnpublished = iota
  22. // 已发布
  23. KnowledgeResourceStatePublished
  24. // 待审批
  25. KnowledgeResourceStatePending
  26. // 已驳回
  27. KnowledgeResourceStateRejected
  28. // 已通过
  29. KnowledgeResourceStateApproved
  30. )
  31. type KnowledgeResourceFile struct {
  32. KnowledgeResourceFileId int `gorm:"column:knowledge_resource_file_id;primaryKey;autoIncrement"`
  33. KnowledgeResourceId int `gorm:"column:knowledge_resource_id"`
  34. FileUrl string `gorm:"column:file_url"`
  35. }
  36. func (k KnowledgeResourceFile) TableName() string {
  37. return "knowledge_resource_file"
  38. }
  39. type KnowledgeResource struct {
  40. KnowledgeResourceId int `gorm:"column:knowledge_resource_id;;primaryKey;autoIncrement"`
  41. ResourceType int `gorm:"column:resource_type;"`
  42. ClassifyId int `gorm:"column:classify_id"`
  43. Title string `gorm:"column:title;"`
  44. CreateTime time.Time `gorm:"column:create_time" description:"创建时间"`
  45. ModifyTime time.Time `gorm:"column:modify_time;autoUpdateTime" description:"修改时间"`
  46. State int `gorm:"column:state" description:"0:未发布;1:已发布;2:待审批;3:已驳回;4:已通过"`
  47. Content string `gorm:"column:content"`
  48. ResourceCode string `gorm:"column:resource_code"`
  49. AdminId int `gorm:"column:admin_id" description:"创建者账号"`
  50. AdminRealName string `gorm:"column:admin_real_name" description:"创建者姓名"`
  51. SourceFrom string `gorm:"column:source_from"`
  52. TagId int `gorm:"column:tag_id;default:0;NOT NULL"`
  53. StartTime *time.Time `gorm:"column:start_time"`
  54. EndTime *time.Time `gorm:"column:end_time"`
  55. IsFile int `gorm:"column:is_file;default:0;NOT NULL"`
  56. FileUrl string `gorm:"column:file_url"`
  57. OutId int `gorm:"column:out_id" description:"外部系统ID"`
  58. IsDelete int `gorm:"column:is_delete;default:0;NOT NULL"`
  59. }
  60. func (k KnowledgeResource) TableName() string {
  61. return "knowledge_resource"
  62. }
  63. func (k *KnowledgeResource) BatchCreate(item []*KnowledgeResource) (err error) {
  64. return global.DmSQL["rddp"].CreateInBatches(item, utils.MultiAddNum).Error
  65. }
  66. func (k *KnowledgeResource) Create(fileUrl []string) (err error) {
  67. tx := global.DmSQL["rddp"].Begin()
  68. defer func() {
  69. if err != nil {
  70. tx.Rollback()
  71. } else {
  72. tx.Commit()
  73. }
  74. }()
  75. err = tx.Create(k).Error
  76. if len(fileUrl) > 0 {
  77. addFile := make([]*KnowledgeResourceFile, 0, len(fileUrl))
  78. for _, url := range fileUrl {
  79. file := new(KnowledgeResourceFile)
  80. file.KnowledgeResourceId = k.KnowledgeResourceId
  81. file.FileUrl = url
  82. addFile = append(addFile, file)
  83. }
  84. err = tx.CreateInBatches(addFile, utils.MultiAddNum).Error
  85. }
  86. return
  87. }
  88. func (k *KnowledgeResource) Update(cols []string) error {
  89. return global.DmSQL["rddp"].Model(k).Select(cols).Updates(k).Error
  90. }
  91. func (k *KnowledgeResource) GetBatchKnowledgeResourceByOutIds(id []int, resourceType int) (item []*KnowledgeResource, err error) {
  92. if len(id) == 0 {
  93. return
  94. }
  95. sql := "SELECT * FROM knowledge_resource WHERE out_id IN (?) AND resource_type = ?"
  96. err = global.DmSQL["rddp"].Raw(sql, id, resourceType).Find(&item).Error
  97. return
  98. }
  99. // GetKnowledgeResourceByOutId 根据外部系统ID获取知识资源
  100. func (k *KnowledgeResource) GetKnowledgeResourceByOutId(outId int) (item *KnowledgeResource, err error) {
  101. sql := "SELECT * FROM knowledge_resource WHERE out_id = ?"
  102. err = global.DmSQL["rddp"].Raw(sql, outId).First(&item).Error
  103. return
  104. }
  105. func (k *KnowledgeResource) GetMaxTimeKnowledgeByCondition(condition string, pars []interface{}) (item *KnowledgeResource, err error) {
  106. sql := "SELECT * FROM knowledge_resource WHERE 1=1 "
  107. if condition != "" {
  108. sql += condition
  109. }
  110. sql += " ORDER BY modify_time DESC "
  111. err = global.DmSQL["rddp"].Raw(sql, pars...).First(&item).Error
  112. return
  113. }
  114. type KnowledgeClassify struct {
  115. ClassifyId int `gorm:"primaryKey;column:classify_id"`
  116. ClassifyName string `gorm:"column:classify_name;default:'';type:varchar(125);not null"` // 注意:varchar的默认长度可能需要根据实际情况调整
  117. Sort int `gorm:"column:sort;default:0;type:tinyint"`
  118. ParentId int `gorm:"column:parent_id;default:0;type:int"`
  119. CreateTime time.Time `gorm:"column:create_time;default:CURRENT_TIMESTAMP"`
  120. ModifyTime time.Time `gorm:"column:modify_time;default:CURRENT_TIMESTAMP"`
  121. Enabled int `gorm:"column:enabled;default:1;type:tinyint"`
  122. Level int `gorm:"column:level;default:0;type:bigint"`
  123. ResourceType int `gorm:"column:resource_type;default:0;not null;type:tinyint"`
  124. }
  125. func (k KnowledgeClassify) TableName() string {
  126. return "knowledge_classify"
  127. }
  128. func (k *KnowledgeClassify) Create() error {
  129. return global.DmSQL["rddp"].Create(k).Error
  130. }
  131. func (k *KnowledgeClassify) GetClassifyByNameTypeAndParentId(classifyName string, resourceType, parentId int) (items *KnowledgeClassify, err error) {
  132. sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ? AND parent_id = ?"
  133. err = global.DmSQL["rddp"].Raw(sql, classifyName, resourceType, parentId).First(&items).Error
  134. return
  135. }
  136. func (k *KnowledgeClassify) GetClassifysByNameAndType(classifyName string, resourceType int) (item *KnowledgeClassify, err error) {
  137. sql := "SELECT * FROM knowledge_classify WHERE classify_name = ? AND resource_type = ?"
  138. err = global.DmSQL["rddp"].Raw(sql, classifyName, resourceType).Find(&item).Error
  139. return
  140. }
  141. func (k *KnowledgeClassify) GetChildClassifyIdByNamePath(classifyNameFirst string, classifyNameSecond string, classifyNameThird string) (id int, err error) {
  142. sql := `SELECT
  143. c3.classify_id AS id
  144. FROM knowledge_classify c1
  145. JOIN knowledge_classify c2 ON c2.parent_id = c1.classify_id
  146. AND c2.classify_name = ?
  147. AND c2.level = 2
  148. JOIN knowledge_classify c3 ON c3.parent_id = c2.classify_id
  149. AND c3.classify_name = ?
  150. AND c3.level = 3
  151. WHERE c1.classify_name = ?
  152. AND c1.level = 1 `
  153. err = global.DmSQL["rddp"].Raw(sql, classifyNameSecond, classifyNameThird, classifyNameFirst).Scan(&id).Error
  154. return
  155. }
  156. type EtaBridgeKnowledgeResourceResp struct {
  157. Code int `json:"code" description:"状态码"`
  158. Msg string `json:"msg" description:"提示信息"`
  159. Data MarketOverviewResp `json:"data" description:"返回数据"`
  160. ErrMsg string `json:"-" description:"错误信息"`
  161. }
  162. type MarketOverviewResp struct {
  163. Code string `json:"code"`
  164. Mesg string `json:"mesg"`
  165. Time string `json:"time"`
  166. Data struct {
  167. Result bool `json:"result"`
  168. Total int `json:"total"`
  169. Records []MarketOverviewRecord `json:"records"`
  170. } `json:"data"`
  171. }
  172. type MarketOverviewRecord struct {
  173. Category string `json:"CATEGORY"`
  174. Content string `json:"CONTENT"`
  175. CreateOriginTime string `json:"CREATE_ORIGIN_TIME"`
  176. CreateTime string `json:"CREATE_TIME"`
  177. DataDate string `json:"DATA_DATE"`
  178. DataSource string `json:"DATA_SOURCE"`
  179. DataSourceCode string `json:"DATA_SOURCE_CODE"`
  180. Des string `json:"DES"`
  181. Id int `json:"ID"`
  182. IsValidData int `json:"IS_VALID_DATA"` // 1:未删除;0:已删除
  183. Person string `json:"PERSON"`
  184. Title string `json:"TITLE"`
  185. UpdateOriginTime string `json:"UPDATE_ORIGIN_TIME"`
  186. UpdateTime string `json:"UPDATE_TIME"`
  187. }