ai_summary.go 9.5 KB

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