user_chat_controller.go 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package rag
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/controllers"
  5. "eta/eta_api/controllers/rag/llm_http"
  6. "eta/eta_api/models"
  7. "eta/eta_api/models/llm"
  8. "eta/eta_api/utils"
  9. "time"
  10. )
  11. type UserChatController struct {
  12. controllers.BaseAuthController
  13. }
  14. // NewChat @Title 新建对话框
  15. // @Description 新建对话框
  16. // @Success 101 {object} response.ListResp
  17. // @router /chat/new_chat [post]
  18. func (ucCtrl *UserChatController) NewChat() {
  19. br := new(models.BaseResponse).Init()
  20. defer func() {
  21. ucCtrl.Data["json"] = br
  22. ucCtrl.ServeJSON()
  23. }()
  24. var req llm_http.UserChatReq
  25. err := json.Unmarshal(ucCtrl.Ctx.Input.RequestBody, &req)
  26. if err != nil {
  27. br.Msg = "参数解析异常!"
  28. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  29. return
  30. }
  31. sysUser := ucCtrl.SysUser
  32. if sysUser == nil {
  33. br.Msg = "请登录"
  34. br.ErrMsg = "请登录,SysUser Is Empty"
  35. br.Ret = 408
  36. return
  37. }
  38. if req.ChatTitle == "" {
  39. req.ChatTitle = "新会话"
  40. }
  41. session := llm.UserLlmChat{
  42. UserId: sysUser.AdminId,
  43. CreatedTime: time.Now(),
  44. ChatTitle: req.ChatTitle,
  45. }
  46. err = session.CreateChatSession()
  47. if err != nil {
  48. br.Msg = "创建失败"
  49. br.ErrMsg = "创建失败,Err:" + err.Error()
  50. return
  51. }
  52. br.Ret = 200
  53. br.Success = true
  54. br.Msg = "创建成功"
  55. }
  56. // RenameChat @Title 新建对话框
  57. // @Description 新建对话框
  58. // @Success 101 {object} response.ListResp
  59. // @router /chat/rename_chat [post]
  60. func (ucCtrl *UserChatController) RenameChat() {
  61. br := new(models.BaseResponse).Init()
  62. defer func() {
  63. ucCtrl.Data["json"] = br
  64. ucCtrl.ServeJSON()
  65. }()
  66. var req llm_http.UserChatReq
  67. err := json.Unmarshal(ucCtrl.Ctx.Input.RequestBody, &req)
  68. if err != nil {
  69. br.Msg = "参数解析异常!"
  70. br.ErrMsg = "参数解析失败,Err:" + err.Error()
  71. return
  72. }
  73. sysUser := ucCtrl.SysUser
  74. if sysUser == nil {
  75. br.Msg = "请登录"
  76. br.ErrMsg = "请登录,SysUser Is Empty"
  77. br.Ret = 408
  78. return
  79. }
  80. if req.ChatId <= 0 {
  81. br.Msg = "非法的对话框Id"
  82. br.ErrMsg = "非法的对话框Id"
  83. return
  84. }
  85. if req.ChatTitle == "" {
  86. br.Msg = "重命名不能为空"
  87. br.ErrMsg = "重命名不能为空"
  88. return
  89. }
  90. session := llm.UserLlmChat{
  91. Id: req.ChatId,
  92. UpdateTime: time.Now(),
  93. UserId: sysUser.AdminId,
  94. ChatTitle: req.ChatTitle,
  95. }
  96. err = session.RenameChatSession()
  97. if err != nil {
  98. br.Msg = "重命名失败"
  99. br.ErrMsg = "重命名失败,Err:" + err.Error()
  100. return
  101. }
  102. br.Ret = 200
  103. br.Success = true
  104. br.Msg = "重命名成功"
  105. }
  106. // GetUserChatList @Title 获取用户对话框列表
  107. // @Description 获取用户对话框列表
  108. // @Success 101 {object} response.ListResp
  109. // @router /chat/user_chat_list [get]
  110. func (ucCtrl *UserChatController) GetUserChatList() {
  111. br := new(models.BaseResponse).Init()
  112. defer func() {
  113. ucCtrl.Data["json"] = br
  114. ucCtrl.ServeJSON()
  115. }()
  116. sysUser := ucCtrl.SysUser
  117. if sysUser == nil {
  118. br.Msg = "请登录"
  119. br.ErrMsg = "请登录,SysUser Is Empty"
  120. br.Ret = 408
  121. return
  122. }
  123. //周日是0,周六是6
  124. toDay := time.Now().Weekday()
  125. offset := int(time.Monday - toDay)
  126. if offset > 0 {
  127. offset -= 7
  128. }
  129. monDay := time.Now().AddDate(0, 0, offset).Format(utils.FormatDate)
  130. chatList, err := llm.GetUserChatList(sysUser.AdminId, monDay, time.Now().Format(utils.FormatDate))
  131. if err != nil {
  132. br.Msg = "重命名失败"
  133. br.ErrMsg = "重命名失败,Err:" + err.Error()
  134. return
  135. }
  136. br.Data = chatList
  137. br.Ret = 200
  138. br.Success = true
  139. br.Msg = "重命名成功"
  140. }