Material.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. <?php
  2. /**
  3. * User: nickbai
  4. * Date: 2017/10/23 13:33
  5. * Email: 1902822973@qq.com
  6. */
  7. namespace app\admin\controller;
  8. use think\Loader;
  9. use think\Controller;
  10. use think\Db;
  11. class Material extends Base
  12. {
  13. // 素材列表
  14. public function index()
  15. {
  16. $div = '<div>';
  17. if(request()->isAjax()){
  18. $param = input('param.');
  19. $limit = $param['pageSize'];
  20. $offset = (($param['pageNumber'] - 1) * $limit);
  21. $where = [];
  22. if (empty($param['searchText']) === false || intval($param['searchText']) == 0) {
  23. if($param['user'] == 'user_account'){
  24. $where['user_account'] = ['like', '%' . $param['searchText'] . '%'];
  25. }
  26. if($param['user'] == 'user_name'){
  27. $where['user_name'] = ['like', '%' . $param['searchText'] . '%'];
  28. }
  29. // $where['user_account|user_name|user_job_number|fullname'] = ['like', '%' . $param['searchText'] . '%'];
  30. }else{
  31. return 1;
  32. }
  33. $result = db('material')->where($where)->limit($offset, $limit)->order('id', 'desc')->select();
  34. foreach($result as $key=>$vo){
  35. // 优化显示头像
  36. $result[$key]['url'] = '<img src="' . $vo['url'] . '" height="40px">';
  37. $div .= $result[$key]['url'];
  38. // 生成操作按钮
  39. $result[$key]['operate'] = $this->makeBtn($vo['id']);
  40. }
  41. // $return['total'] = db('users')->where($where)->count(); //总数据
  42. // $return['rows'] = $result;
  43. // return json($return);
  44. }
  45. //所有素材
  46. $material = db('material')->order('name', 'asc')->select();
  47. $allmaterial = '';
  48. if(!empty($material)){
  49. $allmaterial = '<div style="margin-top: 20px;">';
  50. for($i=0;$i<count($material);$i++){
  51. $allmaterial .= '<div style="width: 33.3%;height:150px;float: left;border: 1px solid red;">';
  52. $allmaterial .= '<img src="' . $material[$i]['url'] . '" height="30%">';
  53. $allmaterial .= '</div>';
  54. }
  55. $allmaterial .= '</div>';
  56. }
  57. $this->assign([
  58. 'div' => $div,
  59. 'material' => $material,
  60. 'allmaterial' => $allmaterial
  61. ]);
  62. return $this->fetch();
  63. }
  64. // 添加素材
  65. public function add()
  66. {
  67. if(request()->isPost()){
  68. $param = input('post.');
  69. unset($param['file']); // 删除layui头像上传隐藏字段
  70. // 检测图片名称
  71. $res = db('material')->where('name',$param['name'])->select();
  72. if(!empty($res)){
  73. return json(['code' => -1, 'data' => '', 'msg' => '名称已存在']);
  74. }
  75. // 检测图片
  76. if(empty($param['material'])){
  77. return json(['code' => -2, 'data' => '', 'msg' => '请上传素材']);
  78. }
  79. $info =array();
  80. $info['url'] = $param['material'];
  81. $info['name'] = $param['name'];
  82. try{
  83. db('material')->insert($info);
  84. }catch(\Exception $e){
  85. return json(['code' => -5, 'data' => '', 'msg' => $e->getMessage()]);
  86. }
  87. return json(['code' => 1, 'data' => 'material/index', 'msg' => '添加素材成功']);
  88. }
  89. $this->assign([
  90. 'status' => config('kf_status')
  91. ]);
  92. return $this->fetch('add');
  93. }
  94. // 删除素材
  95. public function del()
  96. {
  97. if(request()->isAjax()){
  98. $id = input('param.id/d');
  99. $material = db('material')->where('id',$id)->find();
  100. $name = './'.$material['url'];
  101. // $name = iconv("UTF-8", "gbk",$name);
  102. try{
  103. if (file_exists($name)) {
  104. unlink($name);
  105. }
  106. db('material')->where('id', $id)->delete();
  107. }catch(\Exception $e){
  108. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  109. }
  110. return json(['code' => 1, 'data' => url('material/index'), 'msg' => '删除图片成功']);
  111. }
  112. }
  113. // 删除全部素材
  114. public function delAll()
  115. {
  116. if(request()->isAjax()){
  117. $material = db('material')->select();
  118. try{
  119. for($i=0;$i<count($material);$i++){
  120. $name = './'.$material[$i]['url'];
  121. if (file_exists($name)) {
  122. unlink($name);
  123. }
  124. }
  125. Db::execute("truncate table ws_material");
  126. }catch(\Exception $e){
  127. return json(['code' => -2, 'data' => '', 'msg' => $e->getMessage()]);
  128. }
  129. return json(['code' => 1, 'data' => url('material/index'), 'msg' => '删除全部图片成功']);
  130. }
  131. }
  132. // 上传图片(图片原名)
  133. // public function upMaterial()
  134. // {
  135. // if(request()->isAjax()) {
  136. // $file = request()->file('file');
  137. // if (!empty($file)) {
  138. // // 移动到框架应用根目录/public/static/material/ 目录下
  139. // $name = $_FILES['file']['name'];
  140. // $res = db('material')->where('url','/static/material/'.$name)->find();
  141. // if(!empty($res)){
  142. // return json(['code' => -1, 'data' => '', 'msg' => '素材已存在']);
  143. // }
  144. // //中文乱码问题
  145. // $name = iconv("UTF-8", "gbk",$name);
  146. // $info = $file->move(ROOT_PATH . 'public' . DS . 'static/material/',$savename = $name,$replace = true);
  147. // $name = iconv("gbk","UTF-8",$name);
  148. // if ($info) {
  149. // $src = '/static/material' . '/' . $name;
  150. // return json(['code' => 0, 'data' => ['src' => $src,'name' => $name], 'msg' => 'ok']);
  151. // } else {
  152. // // 上传失败获取错误信息
  153. // return json(['code' => -1, 'data' => '', 'msg' => $file->getError()]);
  154. // }
  155. // }
  156. // }
  157. // }
  158. // 上传图片
  159. public function upMaterial()
  160. {
  161. if(request()->isAjax()) {
  162. $file = request()->file('file');
  163. if (!empty($file)) {
  164. $fileInfo = $file->getInfo();
  165. //return $fileInfo;
  166. if ($fileInfo['size'] > 1024 * 512 * 2) {
  167. // 上传失败获取错误信息.
  168. return json(['code' => -2, 'data' => '', 'msg' => '文件超过0.5M'] );
  169. }
  170. //检测图片格式
  171. $ext = explode('/', $fileInfo['type']);
  172. $ext = array_pop($ext);
  173. $extArr = explode('|', 'jpg|png|gif|jpeg');
  174. if(!in_array($ext, $extArr)){
  175. return json(['code' => -3, 'data' => '', 'msg' => '只能上传jpg|png|gif|jpeg的文件']);
  176. }
  177. // 移动到框架应用根目录/public/uploads/ 目录下
  178. $info = $file->move(ROOT_PATH . 'public' . DS . 'static/material/');
  179. if ($info) {
  180. $src = '/static/material' . '/' . date('Ymd') . '/' . $info->getFilename();
  181. return json(['code' => 0, 'data' => ['src' => $src], 'msg' => 'ok']);
  182. } else {
  183. // 上传失败获取错误信息
  184. return json(['code' => -1, 'data' => '', 'msg' => $file->getError()]);
  185. }
  186. } else {
  187. return json(['code' => -2, 'data' => '', 'msg' => '文件超过0.5M'] );
  188. }
  189. }
  190. }
  191. // 生成按钮
  192. private function makeBtn($id)
  193. {
  194. // $operate = '<a href="' . url('users/edituser', ['id' => $id]) . '">';
  195. // $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  196. $operate = '<a href="javascript:resetPwd(' . $id . ')"><button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 重置密码</button></a>';
  197. $operate .= '<a style="margin-left:5px;" href="' . url('users/editUser', ['id' => $id]) . '">';
  198. $operate .= '<button type="button" class="btn btn-primary btn-sm"><i class="fa fa-paste"></i> 编辑</button></a> ';
  199. $operate .= '<a style="margin-left:5px;" href="javascript:userDel(' . $id . ')"><button type="button" class="btn btn-danger btn-sm">';
  200. $operate .= '<i class="fa fa-trash-o"></i> 删除</button></a> ';
  201. //$operate .= '<a href="javascript:;">';
  202. //$operate .= '<button type="button" class="btn btn-info btn-sm"><i class="fa fa-institution"></i> 详情</button></a>';
  203. return $operate;
  204. }
  205. }