record.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package api
  2. import (
  3. "AIT/common"
  4. "AIT/exception/errmsg"
  5. "AIT/global"
  6. "AIT/models"
  7. "AIT/response"
  8. "AIT/service"
  9. "encoding/json"
  10. "fmt"
  11. "github.com/gin-gonic/gin"
  12. "github.com/gorilla/websocket"
  13. "path/filepath"
  14. )
  15. type RecordService struct {
  16. service.RecordService
  17. }
  18. func GetRecord() *RecordService {
  19. return &RecordService{}
  20. }
  21. // SaveRecord
  22. // @Summary 新增测试
  23. // @Description 新增测试
  24. // @Tags 测试记录
  25. // @Param recordFile formData file true "文件"
  26. // @Param userName formData string true "用户名"
  27. // @Param fileType formData string true "文件类型"
  28. // @Accept json
  29. // @Produce json
  30. // @Success 200 {string} string "ok"
  31. // @Router /v1/record/create [post]
  32. // @Security ApiKeyAuth
  33. func (f *RecordService) SaveRecord(c *gin.Context) {
  34. file, err := c.FormFile("file")
  35. if err != nil {
  36. fmt.Printf(errmsg.FileUploadError+"%s", err.Error())
  37. response.Failed(errmsg.FileUploadError, c)
  38. return
  39. }
  40. message := make(map[string]string)
  41. userName := c.PostForm("userName")
  42. if len(userName) <= 0 {
  43. response.Failed(errmsg.ParamInvalid+",用户名为空", c)
  44. return
  45. }
  46. fileType := c.PostForm("fileType")
  47. message["msg_type"] = fileType
  48. message["Sender"] = "server"
  49. message["Recipient"] = "client"
  50. //文件格式限制
  51. fileName := file.Filename
  52. fileExtendName := common.CheckFile(fileName)
  53. if len(fileExtendName) <= 0 {
  54. response.Failed(errmsg.FileExtendNameError, c)
  55. return
  56. }
  57. //fmt.Printf("fileName====%s\n", fileName)
  58. fileName = common.GenerateUUID() + "." + fileExtendName
  59. fileLocation := global.Config.Upload
  60. //保存文件
  61. err = c.SaveUploadedFile(file, fileLocation.SavePath+fileName)
  62. if err != nil {
  63. return
  64. }
  65. //获取文件绝对路径
  66. fileAbsolutePath, err := filepath.Abs(fileLocation.SavePath + fileName)
  67. if err != nil {
  68. return
  69. }
  70. message["content"] = fileAbsolutePath
  71. fileURL := fileLocation.AccessUrl + fileName
  72. //添加记录
  73. var record models.Record
  74. record.FilePath = fileAbsolutePath
  75. record.CreateTime = common.NowTime()
  76. record.UserName = userName
  77. record.FileType = fileType
  78. record.Id = common.GenerateUUID()
  79. record.FileUrl = fileURL
  80. message["recordId"] = record.Id
  81. //invoke AI
  82. ws, _, err := websocket.DefaultDialer.Dial(global.Config.Websocket.WSUrl, nil)
  83. if err != nil {
  84. fmt.Println("Websocket client init error" + err.Error())
  85. return
  86. }
  87. //defer func(ws *websocket.Conn) {
  88. // err := ws.Close()
  89. // if err != nil {
  90. // fmt.Printf("socket关闭异常:%s", err.Error())
  91. // response.Failed(errmsg.SocketCloseError, c)
  92. // }
  93. //}(ws)
  94. //发送消息
  95. bytes, err := json.Marshal(message)
  96. if err != nil {
  97. fmt.Printf("json异常:%s", err.Error())
  98. response.Failed(errmsg.JSONParseError, c)
  99. return
  100. }
  101. err = ws.WriteMessage(websocket.TextMessage, bytes)
  102. if err != nil {
  103. fmt.Printf("json异常:%s", err.Error())
  104. response.Failed(errmsg.SendMessageError, c)
  105. return
  106. }
  107. if count := f.CreateRecord(record); count <= 0 {
  108. response.Failed(errmsg.RecordSaveError, c)
  109. } else {
  110. response.Success(errmsg.SaveSuccess, record.Id, c)
  111. }
  112. }
  113. // RecordList
  114. // @Summary 记录列表查询
  115. // @Description 记录列表查询
  116. // @Tags 测试记录
  117. // @Param r body string true "role:角色;userName:用户名;pageNum:页数;pageSize:每页记录数"
  118. // @Accept json
  119. // @Produce json
  120. // @Success 200 {string} string "ok"
  121. // @Router /v1/record/find [get]
  122. func (f *RecordService) RecordList(c *gin.Context) {
  123. var param models.RecordListParam
  124. if err := c.ShouldBindJSON(&param); err != nil {
  125. fmt.Printf(errmsg.ParamInvalid+"%s", err.Error())
  126. response.Failed(errmsg.ParamInvalid, c)
  127. return
  128. }
  129. recordList, rows := f.GetRecordList(param)
  130. response.SuccessPage(errmsg.FindSuccess, recordList, rows, c)
  131. }