record.go 3.5 KB

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