ai_summary.go 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. package ai_summary
  2. import (
  3. "fmt"
  4. "github.com/beego/beego/v2/client/orm"
  5. "time"
  6. )
  7. type AiSummary struct {
  8. AiSummaryId int `orm:"column(ai_summary_id);pk"` // ai纪要id
  9. SaDocId int // 文档ID
  10. OriginContent string // 原始内容
  11. SummaryContent string // 纪要内容
  12. ClassifyId int // 分类id
  13. SysUserId int // 创建人ID
  14. SysUserRealName string // 创建人姓名
  15. Title string // 文档标题
  16. CreateTime time.Time // 创建时间
  17. ModifyTime time.Time // 更新时间
  18. OpenaiFileName string // 文件名称
  19. OpenaiFilePath string // 文件路径
  20. Sort int // 排序字段,越小越靠前,默认值:10
  21. }
  22. type AiSummaryItems struct {
  23. AiSummaryId int `orm:"column(ai_summary_id);pk"` // ai纪要id
  24. SaDocId int // 文档ID
  25. OriginContent string // 原始内容
  26. SummaryContent string // 纪要内容
  27. ClassifyId int // 分类id
  28. SysUserId int // 创建人ID
  29. SysUserRealName string // 创建人姓名
  30. Title string // 文档标题
  31. CreateTime string // 创建时间
  32. ModifyTime string // 更新时间
  33. OpenaiFileName string // 文件名称
  34. OpenaiFilePath string // 文件路径
  35. Sort int // 排序字段,越小越靠前,默认值:10
  36. ParentIds string
  37. }
  38. func GetAiChatTopicList(sysUserId int) (item []*AiSummary, err error) {
  39. sql := ` SELECT * FROM ai_summary WHERE classify_id=? ORDER BY create_time DESC `
  40. o := orm.NewOrm()
  41. _, err = o.Raw(sql, sysUserId).QueryRows(&item)
  42. return
  43. }
  44. // GetAiSummaryById 根据纪要id获取沙盘详情
  45. func GetAiSummaryById(aiSummaryId int) (sandboxInfo *AiSummary, err error) {
  46. o := orm.NewOrm()
  47. sql := `select * from ai_summary where ai_summary_id = ? `
  48. err = o.Raw(sql, aiSummaryId).QueryRow(&sandboxInfo)
  49. return
  50. }
  51. // DelAiSummaryById 根据纪要id删除纪要
  52. func DelAiSummaryById(aiSummaryId int) (err error) {
  53. o := orm.NewOrm()
  54. sql := `delete from ai_summary where ai_summary_id = ? `
  55. _, err = o.Raw(sql, aiSummaryId).Exec()
  56. return
  57. }
  58. func MoveAiSummary(aiSummaryId, classifyId int) (err error) {
  59. o := orm.NewOrm()
  60. sql := ` UPDATE ai_summary
  61. SET
  62. classify_id = ?
  63. WHERE ai_summary_id = ?`
  64. _, err = o.Raw(sql, classifyId, aiSummaryId).Exec()
  65. return
  66. }
  67. // GetFirstAiSummaryByClassifyId 获取当前分类下,且排序数相同 的排序第一条的数据
  68. func GetFirstAiSummaryByClassifyId(classifyId int) (item *AiSummary, err error) {
  69. o := orm.NewOrm()
  70. sql := ` SELECT * FROM ai_summary WHERE classify_id=? order by sort asc,ai_summary_id asc limit 1`
  71. err = o.Raw(sql, classifyId).QueryRow(&item)
  72. return
  73. }
  74. // Update
  75. func (aiSummary *AiSummary) Update(cols []string) (err error) {
  76. o := orm.NewOrm()
  77. _, err = o.Update(aiSummary, cols...)
  78. return
  79. }
  80. // UpdateSandboxSortByClassifyId 根据纪要id更新排序
  81. func UpdateAiSummarySortByClassifyId(classifyId, nowSort, prevAiSummaryId int, updateSort string) (err error) {
  82. o := orm.NewOrm()
  83. sql := ` update ai_summary set sort = ` + updateSort + ` WHERE classify_id=? AND `
  84. if prevAiSummaryId > 0 {
  85. sql += ` (sort > ? or (ai_summary_id > ` + fmt.Sprint(prevAiSummaryId) + ` and sort = ` + fmt.Sprint(nowSort) + `))`
  86. }
  87. _, err = o.Raw(sql, classifyId, nowSort).Exec()
  88. return
  89. }
  90. func GetAiSummaryListByCondition(condition string, pars []interface{}, startSize, pageSize int) (item []*AiSummaryItems, err error) {
  91. o := orm.NewOrm()
  92. sql := ` SELECT * FROM ai_summary WHERE 1=1 `
  93. if condition != "" {
  94. sql += condition
  95. }
  96. sql += " ORDER BY create_time DESC LIMIT ?,? "
  97. _, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&item)
  98. return
  99. }
  100. func GetAiSummaryListCountByCondition(condition string, pars []interface{}) (count int, err error) {
  101. o := orm.NewOrm()
  102. sql := ` SELECT COUNT(1) AS count FROM ai_summary WHERE 1=1 `
  103. if condition != "" {
  104. sql += condition
  105. }
  106. err = o.Raw(sql, pars).QueryRow(&count)
  107. return
  108. }
  109. func AddAiSummary(item *AiSummary) (lastId int64, err error) {
  110. o := orm.NewOrm()
  111. lastId, err = o.Insert(item)
  112. return
  113. }
  114. type AddAiSummaryReq struct {
  115. SaDocId int // 文档ID
  116. OriginContent string // 原始内容
  117. SummaryContent string // 纪要内容
  118. ClassifyId int // 分类id
  119. Title string // 文档标题
  120. OpenaiFileName string // 文件名称
  121. OpenaiFilePath string // 文件路径
  122. }
  123. type GenerateAiSummaryReq struct {
  124. AiChatTopicId int `description:"主题id"`
  125. OriginContent string // 原始内容
  126. OpenaiFileId []string `description:"openai返回的文件id"`
  127. Ask string `description:"提问问题,如果是上传文件,则填入文件名称"`
  128. Model string `description:"模型名称"`
  129. Prompt string `description:"提示词"`
  130. }
  131. // GetAiSummaryMaxSort 获取ai纪要下最大的排序数
  132. func GetAiSummaryMaxSort(classifyId int) (sort int, err error) {
  133. o := orm.NewOrm()
  134. sql := `SELECT Max(sort) AS sort FROM ai_summary WHERE parent_id=? `
  135. err = o.Raw(sql, classifyId).QueryRow(&sort)
  136. return
  137. }