123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- <?php
- namespace app\common\model;
- use think\facade\Db;
- /**
-
- *
-
- *
- * ----------------------------------------------------------------------------
- *
-
- * 数据层模型
- */
- class Storegoodsclass extends BaseModel
- {
- /**
- * 单个类别内容提取
- * @access public
- * @author csdeshang
- * @param array $condition 条件
- * @param string $field 字段
- * @return array|bool
- */
- public function getStoregoodsclassInfo($condition, $field = '*')
- {
- if (empty($condition)) {
- return false;
- }
- return Db::name('storegoodsclass')->where($condition)->field($field)->find();
- }
- /**
- * 类别添加
- * @access public
- * @author csdeshang
- * @param array $data 分类数据
- * @return bool
- */
- public function addStoregoodsclass($data)
- {
- if (empty($data)) {
- return false;
- }
- $result = Db::name('storegoodsclass')->insertGetId($data);
- if ($result) {
- $this->_dStoregoodsclassCache($data['store_id']);
- }
- return $result;
- }
- /**
- * 类别修改
- * @access public
- * @author csdeshang
- * @param type $data
- * @param type $where
- * @param type $store_id
- * @return boolean
- */
- public function editStoregoodsclass($data, $where, $store_id)
- {
- if (empty($data)) {
- return false;
- }
- $result = Db::name('storegoodsclass')->where($where)->update($data);
- if ($result) {
- $this->_dStoregoodsclassCache($store_id);
- }
- return $result;
- }
- /**
- * 店铺商品分类删除
- * @access public
- * @author csdeshang
- * @param type $where 条件
- * @return boolean
- */
- public function delStoregoodsclass($where, $store_id)
- {
- if (empty($where)) {
- return false;
- }
- $result = Db::name('storegoodsclass')->where($where)->delete();
- if ($result) {
- $this->_dStoregoodsclassCache($store_id);
- }
- return $result;
- }
- /**
- * 类别列表
- * @access public
- * @author csdeshang
- * @param array $condition 条件
- * @param string $order 排序
- * @return array
- */
- public function getStoregoodsclassList($condition, $order = 'storegc_parent_id asc,storegc_sort asc,storegc_id asc')
- {
- $result = Db::name('storegoodsclass')->where($condition)->order($order)->select()->toArray();
- return $result;
- }
- /**
- * 取分类列表(前台店铺页左侧用到)
- * @access public
- * @author csdeshang
- * @param type $store_id 店铺id
- * @return type
- */
- public function getShowTreeList($store_id)
- {
- $info = $this->_rStoregoodsclassCache($store_id);
- if (empty($info)) {
- $show_class = array();
- $class_list = $this->getStoregoodsclassList(array('store_id' => $store_id, 'storegc_state' => '1'));
- if (is_array($class_list) && !empty($class_list)) {
- foreach ($class_list as $val) {
- if ($val['storegc_parent_id'] == 0) {
- $show_class[$val['storegc_id']] = $val;
- } else {
- if (isset($show_class[$val['storegc_parent_id']])) {
- $show_class[$val['storegc_parent_id']]['children'][] = $val;
- }
- }
- }
- }
- $info['info'] = serialize($show_class);
- $this->_wStoregoodsclassCache($store_id, $info);
- }
- $show_class = unserialize($info['info']);
- return $show_class;
- }
- /**
- * 取分类列表,按照深度归类
- * @access public
- * @author csdeshang
- * @param array $condition 检索条件
- * @param int $show_deep 显示深度
- * @return array 数组类型的返回结果
- */
- public function getTreeClassList($condition, $show_deep = '2')
- {
- $class_list = $this->getStoregoodsclassList($condition);
- $show_deep = intval($show_deep);
- $result = array();
- if (is_array($class_list) && !empty($class_list)) {
- $result = $this->_getTreeClassList($show_deep, $class_list);
- }
- return $result;
- }
- /**
- * 递归 整理分类
- * @access public
- * @author csdeshang
- * @param int $show_deep 显示深度
- * @param array $class_list 类别内容集合
- * @param int $deep 深度
- * @param int $parent_id 父类编号
- * @param int $i 上次循环编号
- * @return array 返回数组形式的查询结果
- */
- private function _getTreeClassList($show_deep, $class_list, $deep = 1, $parent_id = 0, $i = 0)
- {
- static $show_class = array(); //树状的平行数组
- if (is_array($class_list) && !empty($class_list)) {
- $size = count($class_list);
- if ($i == 0)
- $show_class = array(); //从0开始时清空数组,防止多次调用后出现重复
- for ($i; $i < $size; $i++) { //$i为上次循环到的分类编号,避免重新从第一条开始
- $val = $class_list[$i];
- $storegc_id = $val['storegc_id'];
- $storegc_parent_id = $val['storegc_parent_id'];
- if ($storegc_parent_id == $parent_id) {
- $val['deep'] = $deep;
- $show_class[] = $val;
- if ($deep < $show_deep && $deep < 2) { //本次深度小于显示深度时执行,避免取出的数据无用
- $this->_getTreeClassList($show_deep, $class_list, $deep + 1, $storegc_id, $i + 1);
- }
- }
- if ($storegc_parent_id > $parent_id)
- break; //当前分类的父编号大于本次递归的时退出循环
- }
- }
- return $show_class;
- }
- /**
- * 取分类列表
- * @access public
- * @author csdeshang
- * @param array $condition 条件
- * @return array
- */
- public function getClassTree($condition)
- {
- $class_list = $this->getStoregoodsclassList($condition);
- $d = array();
- if (is_array($class_list)) {
- foreach ($class_list as $v) {
- if ($v['storegc_parent_id'] == 0) {
- $d[$v['storegc_id']] = $v;
- } else {
- if (isset($d[$v['storegc_parent_id']]))
- $d[$v['storegc_parent_id']]['child'][] = $v; //防止出现父类不显示时子类被调出
- }
- }
- }
- return $d;
- }
- /**
- * 读取店铺商品分类缓存
- * @access public
- * @author csdeshang
- * @param INT $store_id 店铺ID
- * @return type
- */
- private function _rStoregoodsclassCache($store_id)
- {
- return rcache($store_id, 'store_goods_class');
- }
- /**
- * 写入店铺商品分类缓存
- * @access public
- * @author csdeshang
- * @param int $store_id 店铺ID
- * @param array $info 信息
- * @return boolean
- */
- private function _wStoregoodsclassCache($store_id, $info)
- {
- return wcache($store_id, $info, 'store_goods_class');
- }
- /**
- * 删除店铺商品分类缓存
- * @access public
- * @author csdeshang
- * @param int $store_id 店铺ID
- * @return boolean
- */
- private function _dStoregoodsclassCache($store_id)
- {
- return dcache($store_id, 'store_goods_class');
- }
- }
|