getSelect(array($this::PID => 0, $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc'); if (!$class_data) { return array(); } foreach ($class_data as &$val) { // 获取二级分类 $children1 = $this->getSelect(array($this::PID => $val[$this::ID], $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc'); if ($children1) { // 获取三级分类 foreach ($children1 as &$value) { $children2 = $this->getSelect(array($this::PID => $value[$this::ID], $this::STATUS => 0, $this::MERCHANT_ID => $merchant_id), $field, $this::ID . ' asc'); $value['children'] = $children2 ? $children2 : array(); } } $val['children'] = $children1 ? $children1 : array(); } return $class_data; } /** * 获取商品分类 一级 二级 三级 * @param $id 分类id * @return string */ public function getClassNamePath($id) { $data = $this->getFind(array('id' => $id), 'pid,class_name,type'); if (!$data) { return ''; } if ($data['type'] == 1) { return $data['class_name']; } else { $data_1 = $this->getFind(array('id' => $data['pid']), 'pid,class_name,type'); if ($data['type'] == 2) { return $data_1['class_name'] . '/' . $data['class_name']; } $data_2 = $this->getFind(array('id' => $data_1['pid']), 'class_name,type'); return $data_2['class_name'] . '/' . $data_1['class_name'] . '/' . $data['class_name']; } } /** * 根据二级分类id获取三级分类ID集合 * @param $person2 二级分类id * @return array */ public function basisTwoGetClassId($person2) { if (empty($person2)) { return []; } $list = $this->alias('c2') ->join('ls_retail_goods_class as c3 on c2.id=c3.pid') ->where(array('c2.id' => $person2, 'c3.status' => 0)) ->field('c3.id')->select(); return $list; } /** * 根据一级分类id获取三级分类ID集合 * @param $person1 一级分类id * @return array */ public function basisOneGetClassId($person1) { if (empty($person1)) { return []; } $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c1.id=c2.pid') ->join('ls_retail_goods_class as c3 on c2.id=c3.pid AND c3.status=0', 'LEFT') ->where(array('c1.id' => $person1, 'c2.status' => 0)) ->field('c2.id,c3.id as c3_id')->select(); return $list; } /** * 获取商户分类所有集合 * @param $where * @param $fields * @param string $order * @param $page * @return mixed */ public function ClassListAll($where, $fields = '*', $order = 'c1.id asc', $page = '') { if (!empty($page)) { $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT') ->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT') ->field($fields) ->where($where) ->order($order) ->page($page) ->select(); } else { $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT') ->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT') ->field($fields) ->where($where) ->order($order) ->select(); } return $list; } /** * 获取商户分类所有集合条数 * @param $where * @return mixed */ public function ClassListCount($where) { $count = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c1.pid=c2.id AND c2.status=0', 'LEFT') ->join('ls_retail_goods_class as c3 on c2.pid=c3.id AND c3.status=0', 'LEFT') ->where($where) ->count(); return $count; } /** * 获取商户分类所有集合 * @param $merchant_id * @return mixed */ public function getClassList($merchant_id) { $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c2.pid=c1.id AND c2.status=0', 'LEFT') ->join('ls_retail_goods_class as c3 on c3.pid=c2.id AND c3.status=0', 'LEFT') ->where(array('c1.merchantid' => $merchant_id, 'c1.type' => 1, 'c1.status' => 0)) ->field('c1.id as c1_id,c1.class_name as c1_class_name,c2.id as c2_id,c2.class_name as c2_class_name,c3.id as c3_id,c3.class_name as c3_class_name') ->select(); return $list; } /** * 根据一级分类id获取二级分类指定字段 * @param $where * @param $fields * @return mixed */ public function basisOneGetClassList($where,$fields) { $fields = $fields ? $fields : 'c2.*'; $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c1.id=c2.pid and c2.status=0') ->where($where) ->field($fields) ->order('c2.code asc') ->select(); return $list; } /** * 根据二级分类id获取三级分类指定字段 * @param $where * @param $fields * @return mixed */ public function basisTwoGetClassList($where, $fields) { $fields = $fields ? $fields : 'c2.*'; $list = $this->alias('c2') ->join('ls_retail_goods_class as c3 on c2.id=c3.pid and c3.status=0') ->where($where) ->field($fields) ->order('c3.code asc') ->select(); return $list; } /** * 根据二级分类id获取三级分类指定字段 * @param $id * @param $fields * @return mixed */ public function basisTwoGetClassListAll($id, $fields) { $fields = $fields ? $fields : 'c2.*'; $list = $this->alias('c2') ->join('ls_retail_goods_class as c3 on c2.id=c3.pid and c3.status=0', 'LEFT') ->where(array('c2.id' => $id)) ->field($fields) ->order('c3.code asc') ->select(); return $list; } /** * 获取指定一级分类下面所有分类 * @param $id * @param $fields * @return mixed */ public function basisOneGetClassListAll($id, $fields) { $list = $this->alias('c1') ->join('ls_retail_goods_class as c2 on c2.pid=c1.id AND c2.status=0', 'LEFT') ->join('ls_retail_goods_class as c3 on c3.pid=c2.id AND c3.status=0', 'LEFT') ->where(array('c1.id' => $id, 'c1.type' => 1, 'c1.status' => 0)) ->field($fields) ->select(); return $list; } /** * 获取指定分类id名称 * @param $id * @return mixed */ public function getClassName($id) { $name = $this->where(['id' => $id])->getField("class_name"); return $name; } /** * 分类关联 */ public function goodsClassLink($where, $field, $order, $page = '', $limit = '') { $store_id = $where['sclass.store_id']; unset($where['sclass.store_id']); if ($page && $limit) { $list = $this->alias('rclass') ->join('ls_store_goods_class as sclass on sclass.class_id = rclass.id AND sclass.store_id=' . $store_id, 'LEFT') ->where($where) ->field($field) ->order($order) ->page($page, $limit) ->select(); } else { $list = $this->alias('rclass') ->join('ls_store_goods_class as sclass on sclass.class_id = rclass.id AND sclass.store_id=' . $store_id, 'LEFT') ->where($where) ->field($field) ->order($order) ->select(); } return $list; } }