record.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  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. var record models.Record
  52. //文件格式限制
  53. fileName := file.Filename
  54. record.FileName = fileName
  55. fileExtendName := common.CheckFile(fileName)
  56. if len(fileExtendName) <= 0 {
  57. response.Failed(errmsg.FileExtendNameError, c)
  58. return
  59. }
  60. //fmt.Printf("fileName====%s\n", fileName)
  61. fileName = common.GenerateUUID() + "." + fileExtendName
  62. fileLocation := global.Config.Upload
  63. //保存文件
  64. err = c.SaveUploadedFile(file, fileLocation.SavePath+fileName)
  65. if err != nil {
  66. return
  67. }
  68. //获取文件绝对路径
  69. fileAbsolutePath, err := filepath.Abs(fileLocation.SavePath + fileName)
  70. if err != nil {
  71. return
  72. }
  73. message["content"] = fileAbsolutePath
  74. fileURL := fileLocation.AccessUrl + fileName
  75. record.FilePath = fileAbsolutePath
  76. record.CreateTime = common.NowTime()
  77. record.UserName = userName
  78. record.FileType = fileType
  79. record.Id = common.GenerateUUID()
  80. record.FileUrl = fileURL
  81. message["recordId"] = record.Id
  82. //invoke AI
  83. ws, _, err := websocket.DefaultDialer.Dial(global.Config.Websocket.WSUrl, nil)
  84. if err != nil {
  85. fmt.Println("Websocket client init error" + err.Error())
  86. return
  87. }
  88. //defer func(ws *websocket.Conn) {
  89. // err := ws.Close()
  90. // if err != nil {
  91. // fmt.Printf("socket关闭异常:%s", err.Error())
  92. // response.Failed(errmsg.SocketCloseError, c)
  93. // }
  94. //}(ws)
  95. //发送消息
  96. bytes, err := json.Marshal(message)
  97. if err != nil {
  98. fmt.Printf("json异常:%s", err.Error())
  99. response.Failed(errmsg.JSONParseError, c)
  100. return
  101. }
  102. err = ws.WriteMessage(websocket.TextMessage, bytes)
  103. if err != nil {
  104. fmt.Printf("json异常:%s", err.Error())
  105. response.Failed(errmsg.SendMessageError, c)
  106. return
  107. }
  108. if count := f.CreateRecord(record); count <= 0 {
  109. response.Failed(errmsg.RecordSaveError, c)
  110. } else {
  111. response.Success(errmsg.RecordSaveSuccess, record.Id, c)
  112. }
  113. }
  114. // RecordList
  115. // @Summary 记录列表查询
  116. // @Description 记录列表查询
  117. // @Tags 测试记录
  118. // @Param r body string true "role:角色;userName:用户名;pageNum:页数;pageSize:每页记录数"
  119. // @Accept json
  120. // @Produce json
  121. // @Success 200 {string} string "ok"
  122. // @Router /v1/record/find [get]
  123. func (f *RecordService) RecordList(c *gin.Context) {
  124. var param models.RecordListParam
  125. if err := c.ShouldBindJSON(&param); err != nil {
  126. fmt.Printf(errmsg.ParamInvalid+"%s", err.Error())
  127. response.Failed(errmsg.ParamInvalid, c)
  128. return
  129. }
  130. recordList, rows := f.GetRecordList(param)
  131. response.SuccessPage(errmsg.FindSuccess, recordList, rows, c)
  132. }
  133. // GetRecordById
  134. // @Summary 记录详情查询
  135. // @Description 记录详情查询
  136. // @Tags 测试记录
  137. // @Param r path string true "测试记录Id"
  138. // @Accept json
  139. // @Produce json
  140. // @Success 200 {string} string "ok"
  141. // @Router /v1/record/:recordId/find [get]
  142. func (f *RecordService) GetRecordById(c *gin.Context) {
  143. recordId := c.Param("recordId")
  144. record, count := f.FindById(recordId)
  145. if count > 0 {
  146. response.Success(errmsg.FindSuccess, record, c)
  147. } else {
  148. response.Failed(errmsg.RecordNotFoundError, c)
  149. }
  150. }