ai_summary.go 7.3 KB

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