record.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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. }
  39. message := make(map[string]string)
  40. userName := c.PostForm("userName")
  41. fileType := c.PostForm("fileType")
  42. message["msg_type"] = fileType
  43. message["Sender"] = "server"
  44. message["Recipient"] = "client"
  45. //文件格式限制
  46. fileName := file.Filename
  47. fileExtendName := common.CheckFile(fileName)
  48. if len(fileExtendName) <= 0 {
  49. response.Failed(errmsg.FileExtendNameError, c)
  50. return
  51. }
  52. fmt.Printf("fileName====%s\n", fileName)
  53. fileName = common.GenerateUUID() + "." + fileExtendName
  54. fileLocation := global.Config.Upload
  55. //保存文件
  56. err = c.SaveUploadedFile(file, fileLocation.SavePath+fileName)
  57. if err != nil {
  58. return
  59. }
  60. //获取文件绝对路径
  61. fileAbsolutePath, err := filepath.Abs(fileLocation.SavePath + fileName)
  62. if err != nil {
  63. return
  64. }
  65. message["content"] = fileAbsolutePath
  66. fileURL := fileLocation.AccessUrl + fileName
  67. //添加记录
  68. var record models.Record
  69. record.FilePath = fileAbsolutePath
  70. record.CreateTime = common.NowTime()
  71. record.UserName = userName
  72. record.FileType = fileType
  73. record.Id = common.GenerateUUID()
  74. record.FileUrl = fileURL
  75. if count := f.CreateRecord(record); count <= 0 {
  76. response.Failed(errmsg.RecordSaveError, c)
  77. } else {
  78. response.Success(errmsg.SaveSuccess, record.Id, c)
  79. }
  80. message["id"] = 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. return
  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. }