You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

119 lines
3.4 KiB

  1. <?php
  2. namespace backend\logic\file;
  3. use backend\models\ars\File;
  4. use backend\models\ars\TemFile;
  5. class FileManager
  6. {
  7. //数据表ats_file和ats_tem_file的类型字段type
  8. const TYPE_IMAGE = 1;//图片
  9. const TYPE_VIDEO = 2;//影视
  10. const TYPE_EXCEL = 3;//excel表单
  11. const TYPE_WORD = 4;//word文本
  12. const TYPE_TXT = 5;//txt文本
  13. public static $extension = [
  14. self::TYPE_IMAGE => ['jpg', 'png', 'jpeg'],
  15. self::TYPE_VIDEO => ['mp4'],
  16. self::TYPE_EXCEL => [],
  17. self::TYPE_WORD => ['docx'],
  18. self::TYPE_TXT => ['txt'],
  19. ];
  20. /**
  21. * @param $array
  22. * @param $keyword
  23. * @return array
  24. * 根据文件拓展名在$extension中查找对应的文件类型,若不存在则返回false
  25. */
  26. public function searchType($array, $keyword)
  27. {
  28. foreach($array as $key => $value){
  29. foreach ($value as $k => $v) {
  30. if($v == $keyword){
  31. return ['status' => true, 'info' => '操作成功', 'type' => $key];
  32. }
  33. }
  34. }
  35. return ['status' => false, 'info' => '操作失败'];
  36. }
  37. /**
  38. * @param $temFIleIdArr
  39. * @param $ownId
  40. * @param $ownType
  41. * @return array
  42. * 根据临时文件id将临时文件保存在文件中
  43. */
  44. public function saveTemFileToFile($temFIleIdArr, $ownId, $ownType)
  45. {
  46. if(!$temFIleIdArr || !$ownId) {
  47. return ['status' => false, 'info' => '参数错误'];
  48. }
  49. $firstFileId = 0;
  50. foreach ($temFIleIdArr as $key => $value) {
  51. $temFile = TemFile::findOne($value);
  52. if(!$temFile) {
  53. return ['status' => false, 'info' => '存在查找不到的文件'];
  54. }
  55. $res = self::saveNewFile($temFile, $ownId, $ownType);
  56. if(!$res['status']) {
  57. return ['status' => false, 'info' => '存在文件保存失败'];
  58. }
  59. if($key == 0) {
  60. $firstFileId = $res['file_id'];
  61. }
  62. }
  63. return ['status' => true, 'info' => '保存成功', 'first_file_id' => $firstFileId];
  64. }
  65. /**
  66. * @param $temFile
  67. * @param $ownId
  68. * @param $ownType
  69. * @return array
  70. * 创建新的文件
  71. */
  72. private function saveNewFile($temFile, $ownId, $ownType)
  73. {
  74. $newFile = new File();
  75. $newFile->name = $temFile->name;
  76. $newFile->type = $temFile->type;
  77. $newFile->own_id = $ownId;
  78. $newFile->own_type = $ownType;
  79. $newFile->alias = $temFile->alias;
  80. $newFile->path = $temFile->path;
  81. if($newFile->save()) {
  82. return ['status' => true, 'info' => '操作成功', 'file_id' => $newFile->id];
  83. } else {
  84. return ['status' => false, 'info' => '操作失败'];
  85. }
  86. }
  87. /**
  88. * @param $fileIdArr
  89. * @return array
  90. * 删除file表中的文件
  91. */
  92. public function deleteFile($fileIdArr)
  93. {
  94. if($fileIdArr){
  95. foreach ($fileIdArr as $key => $value) {
  96. $fileModel = File::findOne($value);
  97. if($fileModel){
  98. $fileModel->is_delete = File::IS_DELETE_YES;
  99. if($fileModel->save()){
  100. return ['status' => false, 'info' => '操作失败'];
  101. }
  102. }
  103. }
  104. }
  105. return ['status' => true, 'info' => '操作成功'];
  106. }
  107. }