Files.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. <?php
  2. /**
  3. +-----------------------------------------------------------------------------------------------
  4. * GouGuOPEN [ 左手研发,右手开源,未来可期!]
  5. +-----------------------------------------------------------------------------------------------
  6. * @Copyright (c) 2021~2024 http://www.gouguoa.com All rights reserved.
  7. +-----------------------------------------------------------------------------------------------
  8. * @Licensed 勾股OA,开源且可免费使用,但并不是自由软件,未经授权许可不能去除勾股OA的相关版权信息
  9. +-----------------------------------------------------------------------------------------------
  10. * @Author 勾股工作室 <hdm58@qq.com>
  11. +-----------------------------------------------------------------------------------------------
  12. */
  13. declare (strict_types = 1);
  14. namespace app\home\controller;
  15. use app\base\BaseController;
  16. use app\home\model\File;
  17. use think\exception\ValidateException;
  18. use think\facade\Db;
  19. use think\facade\View;
  20. class Files extends BaseController
  21. {
  22. public function index()
  23. {
  24. if (request()->isAjax()) {
  25. $param = get_params();
  26. $where = array();
  27. $fileext = ['','jpg,jpeg,png,gif','mpg,mp4,mpeg,avi,wmv,mov,flv,m4v','mp3,wav,wma,flac,midi','doc,docx,xls,xlsx,ppt,pptx,txt,pdf','zip,rar,7z,gz,tar'];
  28. if (!empty($param['keywords'])) {
  29. $where[] = ['f.name|g.title', 'like', '%' . $param['keywords'] . '%'];
  30. }
  31. if (isset($param['group_id']) && $param['group_id']!='') {
  32. $where[] = ['f.group_id','=',$param['group_id']];
  33. }
  34. if (!empty($param['tab'])) {
  35. $where[] = ['f.fileext','in',$fileext[$param['tab']]];
  36. }
  37. $where[] = ['f.delete_time','=',0];
  38. $rows = empty($param['limit']) ? get_config('app.page_size') : $param['limit'];
  39. $list = DB::name('File')
  40. ->field("f.*,a.name as admin_name,g.title as group_title")
  41. ->alias('f')
  42. ->join('Admin a', 'f.admin_id = a.id','left')
  43. ->join('FileGroup g', 'f.group_id = g.id','left')
  44. ->order('f.create_time desc')
  45. ->where($where)
  46. ->paginate(['list_rows'=> $rows])
  47. ->each(function($item, $key){
  48. if(empty($item['thumbpath'])){
  49. $item['thumbpath'] = $item['filepath'];
  50. }
  51. $item['create_time'] = date('Y-m-d H:i:s', $item['create_time']);
  52. return $item;
  53. });
  54. return table_assign(0, '', $list);
  55. } else {
  56. return view();
  57. }
  58. }
  59. //编辑
  60. public function edit()
  61. {
  62. if (request()->isAjax()) {
  63. $param = get_params();
  64. if (Db::name('File')->where('id',$param['id'])->update(['name'=>$param['title']]) !== false) {
  65. add_log('edit', $param['id'], []);
  66. return to_assign(0, "操作成功");
  67. } else {
  68. return to_assign(1, "操作失败");
  69. }
  70. }
  71. }
  72. //移动
  73. public function move()
  74. {
  75. if (request()->isAjax()) {
  76. $group_id = get_params("group_id");
  77. $ids = get_params("ids");
  78. $idArray = explode(',', strval($ids));
  79. $list = [];
  80. foreach ($idArray as $key => $val) {
  81. $list[] = [
  82. 'id' => $val,
  83. 'group_id' => $group_id,
  84. 'update_time' => time()
  85. ];
  86. }
  87. if(!empty($list)){
  88. $model = new File();
  89. foreach ($list as $item) {
  90. $model->update($item);
  91. }
  92. return to_assign();
  93. }
  94. else{
  95. return to_assign(1, "操作失败");
  96. }
  97. }
  98. }
  99. //删除
  100. public function delete()
  101. {
  102. if (request()->isDelete()) {
  103. $ids = get_params("ids");
  104. $idArray = explode(',', strval($ids));
  105. $list = [];
  106. foreach ($idArray as $key => $val) {
  107. $list[] = [
  108. 'id' => $val,
  109. 'delete_time' => time()
  110. ];
  111. }
  112. if(!empty($list)){
  113. $model = new File();
  114. foreach ($list as $item) {
  115. $model->update($item);
  116. }
  117. return to_assign();
  118. }
  119. else{
  120. return to_assign(1, "操作失败");
  121. }
  122. } else {
  123. return to_assign(1, "错误的请求");
  124. }
  125. }
  126. //获取分组
  127. public function get_group()
  128. {
  129. $list = Db::name('FileGroup')->where([['delete_time','=',0]])->select()->toArray();
  130. return to_assign(0, '',$list);
  131. }
  132. //添加&编辑
  133. public function add_group()
  134. {
  135. if (request()->isAjax()) {
  136. $param = get_params();
  137. if($param['title'] == '全部' || $param['title']=='未分组'){
  138. return to_assign(1, '该分组名称已经存在');
  139. }
  140. if (!empty($param['id']) && $param['id'] > 0) {
  141. $count = Db::name('FileGroup')->where([['id','<>',$param['id']],['delete_time','=',0],['title','=',$param['title']]])->count();
  142. if ($count > 0) {
  143. return to_assign(1, '该分组名称已经存在');
  144. }
  145. $res = Db::name('FileGroup')->where(['id' => $param['id']])->strict(false)->field(true)->update($param);
  146. if($res!=false){
  147. add_log('edit', $param['id'], $param);
  148. return to_assign(0,'编辑成功',$param['id']);
  149. }else{
  150. return to_assign(1,'操作失败');
  151. }
  152. } else {
  153. $count = Db::name('FileGroup')->where([['delete_time','=',0],['title','=',$param['title']]])->count();
  154. if ($count > 0) {
  155. return to_assign(1, '该分组名称已经存在');
  156. }
  157. $gid = Db::name('FileGroup')->strict(false)->field(true)->insertGetId($param);
  158. if($gid!=false){
  159. add_log('add', $gid, $param);
  160. return to_assign(0,'添加成功',$gid);
  161. }else{
  162. return to_assign(1,'操作失败');
  163. }
  164. }
  165. }
  166. }
  167. //删除
  168. public function del_group()
  169. {
  170. if (request()->isDelete()) {
  171. $param = get_params();
  172. $id = get_params("ids");
  173. $count = Db::name('File')->where(["group_id" => $id])->count();
  174. if ($count > 0) {
  175. return to_assign(1, "该分组还存在文件,请去除文件或者转移文件后再删除");
  176. }
  177. if (Db::name('FileGroup')->delete($id) !== false) {
  178. add_log('delete', $id, []);
  179. return to_assign(0, "删除成功");
  180. } else {
  181. return to_assign(1, "删除失败");
  182. }
  183. } else {
  184. return to_assign(1, "错误的请求");
  185. }
  186. }
  187. }