206 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			206 lines
		
	
	
		
			5.4 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | |||
|  | 
 | |||
|  | declare (strict_types = 1); | |||
|  | 
 | |||
|  | namespace app\controller\manager; | |||
|  | 
 | |||
|  | use Exception; | |||
|  | use app\model\Log; | |||
|  | use think\Collection; | |||
|  | use think\response\View; | |||
|  | use think\response\Json; | |||
|  | use app\controller\manager\Base; | |||
|  | use think\db\exception\DbException; | |||
|  | use think\exception\ValidateException; | |||
|  | use think\db\exception\DataNotFoundException; | |||
|  | use think\db\exception\ModelNotFoundException; | |||
|  | 
 | |||
|  | 
 | |||
|  | class GoodsCategory extends Base | |||
|  | { | |||
|  |     protected $noNeedLogin = ['index', 'add', 'edit', 'del', 'modify']; | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 列表 | |||
|  |      * | |||
|  |      * @throws Exception | |||
|  |      */ | |||
|  |     public function index() | |||
|  |     { | |||
|  |         if ($this->request->isPost()) { | |||
|  |             $params = input('searchParams/a'); | |||
|  |             $page   = input('page/d', 1); | |||
|  |             $size   = input('size/d', 20); | |||
|  | 
 | |||
|  |             $where = []; | |||
|  |             if (!empty($params)) { | |||
|  |                 foreach ($params as $key => $param) { | |||
|  |                     $param = trim($param); | |||
|  |                     if ($key == 'keyword') { | |||
|  |                         $where[] = ['title', 'like', '%'.$param.'%']; | |||
|  |                         continue; | |||
|  |                     } | |||
|  |                     if ($param == '0' || !empty($param)) { | |||
|  |                         $where[] = [$key, 'like', '%'.$param.'%']; | |||
|  |                     } | |||
|  |                 } | |||
|  |             } | |||
|  | 
 | |||
|  |             $query = \app\model\GoodsCategory::where($where); | |||
|  |             $total = $query->count(); | |||
|  | 
 | |||
|  |             $res = [ | |||
|  |                 'total'   => $total, | |||
|  |                 'current' => $page ?: 1, | |||
|  |                 'size'    => $size ?: 20, | |||
|  |                 'list'    => new Collection(), | |||
|  |             ]; | |||
|  | 
 | |||
|  |             if ($total > 0) { | |||
|  |                 $res['list'] = $query->page($page, $size)->order('sort', 'desc')->order('id', 'desc')->select(); | |||
|  |             } | |||
|  | 
 | |||
|  |             return $this->json(0, 'success', $res); | |||
|  |         } | |||
|  | 
 | |||
|  |         return $this->view(); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 添加 | |||
|  |      * | |||
|  |      * @return Json|View | |||
|  |      */ | |||
|  |     public function add() | |||
|  |     { | |||
|  |         if ($this->request->isPost()) { | |||
|  |             try { | |||
|  |                 $input = input('post.'); | |||
|  |                 if (!isset($input['title'])) { | |||
|  |                     return $this->json(4000, '参数错误'); | |||
|  |                 } | |||
|  |                 \app\model\GoodsCategory::create([ | |||
|  |                     'title' => $input['title'] ?? '', | |||
|  |                 ]); | |||
|  | 
 | |||
|  |                 return $this->json(); | |||
|  |             } catch (Exception $e) { | |||
|  |                 return $this->json(4001, '添加失败'.$e->getMessage()); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         return $this->view(); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 编辑 | |||
|  |      * | |||
|  |      * @return \think\response\Json|\think\response\View | |||
|  |      */ | |||
|  |     public function edit() | |||
|  |     { | |||
|  |         $id = input('id'); | |||
|  | 
 | |||
|  |         //通过ID查询
 | |||
|  |         $item = \app\model\GoodsCategory::where('id', (int)$id)->find(); | |||
|  | 
 | |||
|  |         if (empty($item)) { | |||
|  |             return $this->json(4000, '没有相关记录!'); | |||
|  |         } | |||
|  | 
 | |||
|  |         if ($this->request->isPost()) { | |||
|  |             try { | |||
|  |                 $input = input('post.'); | |||
|  |                 if (!isset($input['title'])) { | |||
|  |                     return $this->json(4000, '参数错误'); | |||
|  |                 } | |||
|  | 
 | |||
|  |                 $item->save([ | |||
|  |                     'title' => $input['title'] ?? '', | |||
|  |                 ]); | |||
|  |                 return $this->json(); | |||
|  |             } catch (Exception $e) { | |||
|  |                 return $this->json(5000, $e->getMessage()); | |||
|  |             } | |||
|  |         } | |||
|  | 
 | |||
|  |         $this->data['item'] = $item; | |||
|  |         $this->data['id']   = $id; | |||
|  |         return $this->view(); | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 更新属性 | |||
|  |      * | |||
|  |      * @throws ModelNotFoundException | |||
|  |      * @throws DbException | |||
|  |      * @throws DataNotFoundException | |||
|  |      * @throws Exception | |||
|  |      */ | |||
|  |     public function modify() | |||
|  |     { | |||
|  |         if (!$this->request->isPost()) { | |||
|  |             return $this->json(4000, '非法请求'); | |||
|  |         } | |||
|  | 
 | |||
|  |         $item     = input('post.'); | |||
|  |         $validate = $this->validateByApi($item, [ | |||
|  |             'field' => 'require', | |||
|  |             'value' => 'require', | |||
|  |         ]); | |||
|  | 
 | |||
|  |         if ($validate !== true) { | |||
|  |             return $validate; | |||
|  |         } | |||
|  | 
 | |||
|  |         // 通过ID查询
 | |||
|  |         if (!$info = \app\model\GoodsCategory::where('id', (int)$item['id'])->find()) { | |||
|  |             return $this->json(4001, '记录不存在'); | |||
|  |         } | |||
|  | 
 | |||
|  |         $update = [$item['field'] => $item['value']]; | |||
|  | 
 | |||
|  |         try { | |||
|  |             $info->save($update); | |||
|  |             return $this->json(); | |||
|  |         } catch (ValidateException $e) { | |||
|  |             return $this->json(4001, $e->getError()); | |||
|  |         } catch (Exception $e) { | |||
|  |             return $this->json(5000, '修改失败'); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     /** | |||
|  |      * 删除 | |||
|  |      * | |||
|  |      * @return \think\response\Json | |||
|  |      */ | |||
|  |     public function del(): Json | |||
|  |     { | |||
|  |         if (!$this->request->isPost()) { | |||
|  |             return $this->json(4000, '非法请求'); | |||
|  |         } | |||
|  | 
 | |||
|  |         $ids = $this->request->param('ids/a', []); | |||
|  |         if (empty($ids)) { | |||
|  |             $ids[] = $this->request->param('id/d', 0); | |||
|  |             $ids   = array_filter($ids); | |||
|  |         } | |||
|  | 
 | |||
|  |         try { | |||
|  |             if (count($ids)) { | |||
|  |                 //删除逻辑
 | |||
|  |                 if (\app\model\Goods::whereIn('area_id', $ids)->count() > 0) { | |||
|  |                     return $this->json(4000, '所选分类下存在发布物品,请先移除物品后再删除'); | |||
|  |                 } | |||
|  |                 \app\model\GoodsCategory::whereIn('id', $ids)->delete(); | |||
|  | 
 | |||
|  |                 Log::write(get_class(), 'del', '删除操作,涉及到的ID为:'.implode(',', $ids)); | |||
|  |             } | |||
|  |         } catch (Exception $e) { | |||
|  |             return $this->json(5000, $e->getMessage()); | |||
|  |         } | |||
|  | 
 | |||
|  |         return $this->json(); | |||
|  |     } | |||
|  | } |