ai_summary.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package ai_summary
  2. import (
  3. "eta/eta_api/global"
  4. "eta/eta_api/utils"
  5. "fmt"
  6. "time"
  7. )
  8. type AiSummary struct {
  9. AiSummaryId int `orm:"column(ai_summary_id);pk" gorm:"primaryKey"` // ai纪要id
  10. SaDocId int // 文档ID
  11. OriginContent string // 原始内容
  12. SummaryContent string // 纪要内容
  13. ClassifyId int // 分类id
  14. SysUserId int // 创建人ID
  15. SysUserRealName string // 创建人姓名
  16. Title string // 文档标题
  17. CreateTime time.Time // 创建时间
  18. ModifyTime time.Time // 更新时间
  19. OpenaiFileName string // 文件名称
  20. OpenaiFilePath string // 文件路径
  21. OriginTitle string // 原文标题
  22. Sort int // 排序字段,越小越靠前,默认值:10
  23. }
  24. type AiSummaryItems struct {
  25. AiSummaryId int `orm:"column(ai_summary_id);pk" gorm:"primaryKey"` // ai纪要id
  26. SaDocId int // 文档ID
  27. OriginContent string // 原始内容
  28. OriginTitle string // 原文标题
  29. SummaryContent string // 纪要内容
  30. ClassifyId int // 分类id
  31. SysUserId int // 创建人ID
  32. SysUserRealName string // 创建人姓名
  33. Title string // 文档标题
  34. CreateTime string // 创建时间
  35. ModifyTime string // 更新时间
  36. OpenaiFileName string // 文件名称
  37. OpenaiFilePath string // 文件路径
  38. Sort int // 排序字段,越小越靠前,默认值:10
  39. ParentIds string `gorm:"-"`
  40. }
  41. func GetAiChatTopicList(sysUserId int) (item []*AiSummary, err error) {
  42. sql := ` SELECT * FROM ai_summary WHERE classify_id=? ORDER BY create_time DESC `
  43. o := global.DbMap[utils.DbNameMaster]
  44. err = o.Raw(sql, sysUserId).Find(&item).Error
  45. return
  46. }
  47. // GetAiSummaryById 根据纪要id获取详情
  48. func GetAiSummaryById(aiSummaryId int) (sandboxInfo *AiSummary, err error) {
  49. o := global.DbMap[utils.DbNameMaster]
  50. sql := `select * from ai_summary where ai_summary_id = ? `
  51. err = o.Raw(sql, aiSummaryId).First(&sandboxInfo).Error
  52. return
  53. }
  54. // GetAiSummaryById 根据纪要id获取详情
  55. func GetAiSummaryItemById(aiSummaryId int) (sandboxInfo *AiSummaryItems, err error) {
  56. o := global.DbMap[utils.DbNameMaster]
  57. sql := `select * from ai_summary where ai_summary_id = ? `
  58. err = o.Raw(sql, aiSummaryId).First(&sandboxInfo).Error
  59. return
  60. }
  61. // DelAiSummaryById 根据纪要id删除纪要
  62. func DelAiSummaryById(aiSummaryId int) (err error) {
  63. o := global.DbMap[utils.DbNameMaster]
  64. sql := `delete from ai_summary where ai_summary_id = ? `
  65. err = o.Exec(sql, aiSummaryId).Error
  66. return
  67. }
  68. func MoveAiSummary(aiSummaryId, classifyId int) (err error) {
  69. o := global.DbMap[utils.DbNameMaster]
  70. sql := ` UPDATE ai_summary
  71. SET
  72. classify_id = ?
  73. WHERE ai_summary_id = ?`
  74. err = o.Exec(sql, classifyId, aiSummaryId).Error
  75. return
  76. }
  77. // GetFirstAiSummaryByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  78. func GetFirstAiSummaryByClassifyId(classifyId int) (item *AiSummary, err error) {
  79. o := global.DbMap[utils.DbNameMaster]
  80. sql := ` SELECT * FROM ai_summary WHERE classify_id=? order by sort asc,ai_summary_id asc limit 1`
  81. err = o.Raw(sql, classifyId).First(&item).Error
  82. return
  83. }
  84. // Update
  85. func (aiSummary *AiSummary) Update(cols []string) (err error) {
  86. o := global.DbMap[utils.DbNameMaster]
  87. err = o.Select(cols).Updates(aiSummary).Error
  88. return
  89. }
  90. // UpdateSandboxSortByClassifyId 根据纪要id更新排序
  91. func UpdateAiSummarySortByClassifyId(classifyId, nowSort, prevAiSummaryId int, updateSort string) (err error) {
  92. o := global.DbMap[utils.DbNameMaster]
  93. sql := ` update ai_summary set sort = ` + updateSort + ` WHERE classify_id=? AND `
  94. if prevAiSummaryId > 0 {
  95. sql += ` (sort > ? or (ai_summary_id > ` + fmt.Sprint(prevAiSummaryId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  96. }
  97. err = o.Exec(sql, classifyId, nowSort).Error
  98. return
  99. }
  100. func GetAiSummaryListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*AiSummaryItems, err error) {
  101. o := global.DbMap[utils.DbNameMaster]
  102. sql := ` SELECT * FROM ai_summary WHERE 1=1 `
  103. if condition != "" {
  104. sql += condition
  105. }
  106. sql += " ORDER BY create_time DESC LIMIT ?,? "
  107. pars = append(pars, startSize, pageSize)
  108. err = o.Raw(sql, pars...).Find(&item).Error
  109. return
  110. }
  111. func GetAiSummaryListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  112. o := global.DbMap[utils.DbNameMaster]
  113. sql := ` SELECT COUNT(1) AS count FROM ai_summary WHERE 1=1 `
  114. if condition != "" {
  115. sql += condition
  116. }
  117. err = o.Raw(sql, pars...).Scan(&count).Error
  118. return
  119. }
  120. func AddAiSummary(item *AiSummary) (lastId int64, err error) {
  121. o := global.DbMap[utils.DbNameMaster]
  122. err = o.Create(item).Error
  123. if err != nil {
  124. return
  125. }
  126. lastId = int64(item.AiSummaryId)
  127. return
  128. }
  129. type AddAiSummaryReq struct {
  130. SaDocId int // 文档ID
  131. OriginContent string // 原始内容
  132. SummaryContent string // 纪要内容
  133. ClassifyId int // 分类id
  134. Title string // 文档标题
  135. OpenaiFileName string // 文件名称
  136. OpenaiFilePath string // 文件路径
  137. OriginTitle string // 原文标题
  138. }
  139. type GenerateAiSummaryReq struct {
  140. AiChatTopicId int `description:"主题id"`
  141. OriginContent string // 原始内容
  142. OpenaiFileId []string `description:"openai返回的文件id"`
  143. Model string `description:"模型名称"`
  144. Prompt string `description:"提示词"`
  145. SaDocId int // 文档ID
  146. }
  147. // GetAiSummaryMaxSort 获取ai纪要下最大的排序数
  148. func GetAiSummaryMaxSort(classifyId int) (sort int, err error) {
  149. o := global.DbMap[utils.DbNameMaster]
  150. sql := `SELECT COALESCE(MAX(sort), 0) AS sort FROM ai_summary WHERE parent_id=? `
  151. err = o.Raw(sql, classifyId).Scan(&sort).Error
  152. return
  153. }
  154. type AiSummaryAddResp struct {
  155. AiSummaryId int
  156. UniqueCode string // 唯一编码
  157. ParentId int
  158. }
  159. type AiSummaryDetailResp struct {
  160. *AiSummaryItems
  161. SaDocTitle string `description:"文档库标题"`
  162. SaDocClassifyId int `description:"文档库分类id"`
  163. }