Images.php 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229
  1. <?php
  2. namespace app\admin\controller\widget;
  3. use think\Request;
  4. use think\Url;
  5. use app\admin\model\system\SystemAttachment as SystemAttachmentModel;
  6. use app\admin\model\system\SystemAttachmentCategory as Category;
  7. use app\admin\controller\AuthController;
  8. use service\UploadService as Upload;
  9. use service\JsonService as Json;
  10. use service\UtilService as Util;
  11. use service\FormBuilder as Form;
  12. /**
  13. * 文件校验控制器
  14. * Class SystemFile
  15. * @package app\admin\controller\system
  16. *
  17. */
  18. class Images extends AuthController
  19. {
  20. /**
  21. * 附件列表
  22. * @return \think\response\Json
  23. */
  24. public function index()
  25. {
  26. $pid = 0;
  27. if(input('pid') && is_numeric(input('pid'))){
  28. $pid = input('pid');
  29. session('pid',$pid);
  30. }else{
  31. $pid = session('pid')?session('pid'):0;
  32. }
  33. $this->assign('pid',$pid);
  34. //分类标题
  35. $typearray = Category::getAll();
  36. $this->assign(compact('typearray'));
  37. // $typearray = self::dir;
  38. // $this->assign(compact('typearray'));
  39. $this->assign(SystemAttachmentModel::getAll($pid));
  40. return $this->fetch('widget/images');
  41. }
  42. /**
  43. * 图片管理上传图片
  44. * @return \think\response\Json
  45. */
  46. public function upload()
  47. {
  48. $pid = input('pid')!= NULL ?input('pid'):session('pid');
  49. $res = Upload::image('file','attach'.DS.date('Y').DS.date('m').DS.date('d'));
  50. $thumbPath = Upload::thumb($res->dir);
  51. //产品图片上传记录
  52. $fileInfo = $res->fileInfo->getinfo();
  53. //入口是public需要替换图片路径
  54. if(strpos(PUBILC_PATH,'public') == false){
  55. $res->dir = str_replace('public/','',$res->dir);
  56. }
  57. SystemAttachmentModel::attachmentAdd($res->fileInfo->getSaveName(),$fileInfo['size'],$fileInfo['type'],$res->dir,$thumbPath,$pid);
  58. $info = array(
  59. // "originalName" => $fileInfo['name'],
  60. // "name" => $res->fileInfo->getSaveName(),
  61. // "url" => '.'.$res->dir,
  62. // "size" => $fileInfo['size'],
  63. // "type" => $fileInfo['type'],
  64. // "state" => "SUCCESS"
  65. 'code' =>200,
  66. 'msg' =>'上传成功',
  67. 'src' =>$res->dir
  68. );
  69. echo json_encode($info);
  70. }
  71. /**
  72. * ajax 提交删除
  73. */
  74. public function delete(){
  75. $request = Request::instance();
  76. $post = $request->post();
  77. if(empty($post['imageid'] ))
  78. Json::fail('还没选择要删除的图片呢?');
  79. foreach ($post['imageid'] as $v){
  80. self::deleteimganddata($v);
  81. }
  82. Json::successful('删除成功');
  83. }
  84. /**删除图片和数据记录
  85. * @param $att_id
  86. */
  87. public function deleteimganddata($att_id){
  88. $attinfo = SystemAttachmentModel::get($att_id)->toArray();
  89. if($attinfo){
  90. @unlink(ROOT_PATH.ltrim($attinfo['att_dir'],'.'));
  91. @unlink(ROOT_PATH.ltrim($attinfo['satt_dir'],'.'));
  92. SystemAttachmentModel::where(['att_id'=>$att_id])->delete();
  93. }
  94. }
  95. /**
  96. * 移动图片分类显示
  97. */
  98. public function moveimg($imgaes){
  99. $formbuider = [];
  100. $formbuider[] = Form::hidden('imgaes',$imgaes);
  101. $formbuider[] = Form::select('pid','选择分类')->setOptions(function (){
  102. $list = Category::getCateList();
  103. $options = [['value'=>0,'label'=>'所有分类']];
  104. foreach ($list as $id=>$cateName){
  105. $options[] = ['label'=>$cateName['html'].$cateName['name'],'value'=>$cateName['id']];
  106. }
  107. return $options;
  108. })->filterable(1);
  109. $form = Form::make_post_form('编辑分类',$formbuider,Url::build('moveImgCecate'));
  110. $this->assign(compact('form'));
  111. return $this->fetch('public/form-builder');
  112. }
  113. /**移动图片分类操作
  114. * @param Request $request
  115. * @param $id
  116. */
  117. public function moveImgCecate(Request $request)
  118. {
  119. $data = Util::postMore([
  120. 'pid',
  121. 'imgaes'
  122. ],$request);
  123. if($data['imgaes'] == '') return Json::fail('请选择图片');
  124. if(!$data['pid']) return Json::fail('请选择分类');
  125. $res = SystemAttachmentModel::where('att_id','in',$data['imgaes'])->update(['pid'=>$data['pid']]);
  126. if($res)
  127. Json::successful('移动成功');
  128. else
  129. Json::fail('移动失败!');
  130. }
  131. /**
  132. * ajax 添加分类
  133. */
  134. public function addcate($id){
  135. $id = $id || 0;
  136. $formbuider = [];
  137. $formbuider[] = Form::select('pid','上级分类','0')->setOptions(function (){
  138. $list = Category::getCateList(0);
  139. $options = [['value'=>0,'label'=>'所有分类']];
  140. foreach ($list as $id=>$cateName){
  141. $options[] = ['label'=>$cateName['html'].$cateName['name'],'value'=>$cateName['id']];
  142. }
  143. return $options;
  144. })->filterable(1);
  145. $formbuider[] = Form::input('name','分类名称');
  146. $form = Form::make_post_form('添加分类',$formbuider,Url::build('saveCate'));
  147. $this->assign(compact('form'));
  148. return $this->fetch('public/form-builder');
  149. }
  150. /**
  151. * 添加分类
  152. */
  153. public function saveCate(){
  154. $request = Request::instance();
  155. $post = $request->post();
  156. $data['pid'] = $post['pid'];
  157. $data['name'] = $post['name'];
  158. if(empty($post['name'] ))
  159. Json::fail('分类名称不能为空!');
  160. $res = Category::create($data);
  161. if($res)
  162. Json::successful('添加成功');
  163. else
  164. Json::fail('添加失败!');
  165. }
  166. /**
  167. * 编辑分类
  168. */
  169. public function editcate($id){
  170. $Category = Category::get($id);
  171. if(!$Category) return Json::fail('数据不存在!');
  172. $formbuider = [];
  173. $formbuider[] = Form::hidden('id',$id);
  174. $formbuider[] = Form::select('pid','上级分类',(string)$Category->getData('pid'))->setOptions(function ()use($id){
  175. $list = Category::getCateList();
  176. $options = [['value'=>0,'label'=>'所有分类']];
  177. foreach ($list as $id=>$cateName){
  178. $options[] = ['label'=>$cateName['html'].$cateName['name'],'value'=>$cateName['id']];
  179. }
  180. return $options;
  181. })->filterable(1);
  182. $formbuider[] = Form::input('name','分类名称',$Category->getData('name'));
  183. $form = Form::make_post_form('编辑分类',$formbuider,Url::build('updateCate'));
  184. $this->assign(compact('form'));
  185. return $this->fetch('public/form-builder');
  186. }
  187. /**
  188. * 更新分类
  189. *
  190. * @param \think\Request $request
  191. * @return \think\Response
  192. */
  193. public function updateCate(Request $request,$id)
  194. {
  195. $data = Util::postMore([
  196. 'pid',
  197. 'name'
  198. ],$request);
  199. if($data['pid'] == '') return Json::fail('请选择父类');
  200. if(!$data['name']) return Json::fail('请输入分类名称');
  201. Category::edit($data,$id);
  202. return Json::successful('分类编辑成功!');
  203. }
  204. /**
  205. * 删除分类
  206. */
  207. public function deletecate($id){
  208. $chdcount = Category::where('pid',$id)->count();
  209. if($chdcount) return Json::fail('有子栏目不能删除');
  210. $chdcount = SystemAttachmentModel::where('pid',$id)->count();
  211. if($chdcount) return Json::fail('栏目内有图片不能删除');
  212. if(Category::del($id))
  213. return Json::successful('删除成功!');
  214. else
  215. return Json::fail('删除失败');
  216. }
  217. }