fileService.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package service
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "io/ioutil"
  5. "iot_manager_service/app/file/dao"
  6. "iot_manager_service/app/file/model"
  7. userdao "iot_manager_service/app/user/dao"
  8. "iot_manager_service/util/common"
  9. "iot_manager_service/util/websocket"
  10. "net/http"
  11. "os"
  12. "path/filepath"
  13. "strconv"
  14. "time"
  15. )
  16. // 用户管理服务
  17. var FileService = new(fileService)
  18. type fileService struct{}
  19. func (f *fileService) Upload(file dao.File) *common.Errors {
  20. err := file.Create()
  21. if err != nil {
  22. return common.FailResponse(err.Error(), nil)
  23. }
  24. return common.SuccessResponse("上传成功", nil)
  25. }
  26. func (f *fileService) Distribute(requserfile *model.ReqSysUserFile, uid int) *common.Errors {
  27. //查询部门下对应的员工
  28. user := &userdao.SysUser{}
  29. users, err := user.GetDeptsSysUsers(requserfile.Depts)
  30. if err != nil {
  31. return common.FailResponse(err.Error(), nil)
  32. }
  33. var userfile []dao.SysUserFile
  34. for _, u := range users {
  35. userfile = append(userfile, dao.SysUserFile{
  36. Operator: uid,
  37. Receiver: u.ID,
  38. FileID: requserfile.ID,
  39. EffectiveDate: requserfile.EfectiveDate,
  40. OperationStatus: "下发",
  41. })
  42. }
  43. userfiledao := &dao.SysUserFile{}
  44. err = userfiledao.BatchUFRecords(userfile)
  45. if err != nil {
  46. return common.FailResponse(err.Error(), nil)
  47. }
  48. //下发消息
  49. for _, u := range users {
  50. websocket.SendMessage(strconv.Itoa(u.ID), "您有新的文件,请注意查收!")
  51. }
  52. return common.SuccessResponse("新增记录成功", nil)
  53. }
  54. func (f *fileService) GetSysUserFiles(id string, search model.SearchSysUserFiles) *common.Errors {
  55. filedao := &dao.File{}
  56. uid, _ := strconv.Atoi(id)
  57. files, total, err := filedao.GetSysUserFiles(uid, search)
  58. if err != nil {
  59. return common.FailResponse(err.Error(), nil)
  60. }
  61. return common.SuccessResponse("查询成功", gin.H{"files": files, "total": total})
  62. }
  63. func (f *fileService) GetFile(id string, c *gin.Context) {
  64. filedao := &dao.File{}
  65. file, err := filedao.GetFile(id)
  66. if err != nil {
  67. panic(err.Error())
  68. }
  69. currentDir, _ := os.Getwd()
  70. parentDir := filepath.Dir(currentDir)
  71. encryptedData, err := ioutil.ReadFile(parentDir + file.SavePath)
  72. if err != nil {
  73. panic(err.Error())
  74. }
  75. c.Data(http.StatusOK, "application/octet-stream", encryptedData)
  76. }
  77. func (f *fileService) GetMyUploadFiles(id string) *common.Errors {
  78. num, _ := strconv.Atoi(id)
  79. filedao := &dao.File{}
  80. files, err := filedao.GetMyUploadFiles(num)
  81. if err != nil {
  82. return common.FailResponse(err.Error(), nil)
  83. }
  84. return common.SuccessResponse("查询成功", gin.H{"MyUploadFiles": files})
  85. }
  86. // 转发
  87. func (f *fileService) ForwardingFile(uid int, filesid []int, users []int) *common.Errors {
  88. var userfile []dao.SysUserFile
  89. currentTime := time.Now()
  90. //对于转发的文件,三天后过期
  91. after := currentTime.AddDate(0, 0, 3)
  92. for _, fid := range filesid {
  93. for _, u := range users {
  94. userfile = append(userfile, dao.SysUserFile{
  95. Operator: uid,
  96. Receiver: u,
  97. FileID: fid,
  98. EffectiveDate: &after,
  99. OperationStatus: "转发",
  100. })
  101. }
  102. }
  103. userfiledao := &dao.SysUserFile{}
  104. err := userfiledao.BatchUFRecords(userfile)
  105. if err != nil {
  106. return common.FailResponse(err.Error(), nil)
  107. }
  108. for _, u := range users {
  109. websocket.SendMessage(strconv.Itoa(u), "您有新的文件,请注意查收!")
  110. }
  111. return common.SuccessResponse("新增记录成功", nil)
  112. }